diff --git a/.github/workflows/deploy-beta.yml b/.github/workflows/deploy-beta.yml index 44df0310557..0894032c8ad 100644 --- a/.github/workflows/deploy-beta.yml +++ b/.github/workflows/deploy-beta.yml @@ -11,7 +11,7 @@ on: jobs: deploy: - if: github.repository == 'pagefaultgames/pokerogue' && github.ref_name == ${{ vars.BETA_DEPLOY_BRANCH || 'beta' }} + if: github.repository == 'pagefaultgames/pokerogue' && github.ref_name == (vars.BETA_DEPLOY_BRANCH || 'beta') runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 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/.ls-lint.yml b/.ls-lint.yml new file mode 100644 index 00000000000..09d626af624 --- /dev/null +++ b/.ls-lint.yml @@ -0,0 +1,27 @@ +# 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: + <<: *cfg + .dir: kebab-case | regex:@types + .js: exists:0 + src/system/version-migration/versions: + .ts: snake_case + <<: *cfg + +ignore: + - node_modules + - .vscode + - .github + - .git + - public diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5f4ee992cb3..2d56b868cff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,8 @@ Thank you for taking the time to contribute, every little bit helps. This project is entirely open-source and unmonetized - community contributions are what keep it alive! -Please make sure you understand everything relevant to your changes from the [Table of Contents](#-table-of-contents), and absolutely *feel free to reach out reach out in the **#dev-corner** channel on [Discord](https://discord.gg/pokerogue)*. We are here to help and the better you understand what you're working on, the easier it will be for it to find its way into the game. +Please make sure you understand everything relevant to your changes from the [Table of Contents](#-table-of-contents), and absolutely *feel free to reach out in the **#dev-corner** channel on [Discord](https://discord.gg/pokerogue)*. +We are here to help and the better you understand what you're working on, the easier it will be for it to find its way into the game. ## 📄 Table of Contents @@ -11,7 +12,6 @@ Please make sure you understand everything relevant to your changes from the [Ta - [Getting Started](#-getting-started) - [Documentation](#-documentation) - [Testing Your Changes](#-testing-your-changes) -- [Localization](#-localization) - [Development Save File (Unlock Everything)](#-development-save-file) ## 🛠️ Development Basics @@ -26,17 +26,14 @@ If you have the motivation and experience with Typescript/Javascript (or are wil - node: >=22.14.0 - [manage with pnpm](https://pnpm.io/cli/env) | [manage with fnm](https://github.com/Schniz/fnm) | [manage with nvm](https://github.com/nvm-sh/nvm) - pnpm: 10.x - [how to install](https://pnpm.io/installation) (not recommended to install via `npm` on Windows native) | [alternate method - volta.sh](https://volta.sh/) +- The repository [forked](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) and [cloned](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) locally on your device ### Running Locally -1. Clone the repo and in the root directory run `pnpm install` +1. Run `pnpm install` from the repository root - *if you run into any errors, reach out in the **#dev-corner** channel on Discord* 2. Run `pnpm start:dev` to locally run the project at `localhost:8000` -### Linting - -Check out our [in-depth file](./docs/linting.md) on linting and formatting! - ## 🚀 Getting Started A great way to develop an understanding of how the project works is to look at test cases (located in [the `test` folder](./test/)). @@ -60,8 +57,13 @@ You are free to comment on any issue so that you may be assigned to it and we ca ## 📚 Documentation You can find the auto-generated documentation [here](https://pagefaultgames.github.io/pokerogue/main/index.html). -For information on enemy AI, check out the [enemy-ai.md](./docs/enemy-ai.md) file. -For detailed guidelines on documenting your code, refer to the [comments.md](./docs/comments.md) file. + +Additionally, the [docs folder](./docs) contains a variety of in-depth documents and guides useful for aspiring contributors. +Notable topics include: +- [Commenting your code](./docs/comments.md) +- [Linting & Formatting](./docs/linting.md) +- [Localization](./docs/localization.md) +- [Enemy AI move selection](./docs/enemy-ai.md) Again, if you have unanswered questions please feel free to ask! @@ -101,64 +103,8 @@ Most non-trivial changes (*especially bug fixes*) should come along with new tes - As much as possible, are unit tests. If you have made two distinct changes, they should be tested in two separate cases. - 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. -## 📜 Localization - -The project intends for all text to be localized. That is, strings are pulled from translation files using keys (depending on the current language) and *never* hardcoded as a particular language. Note that there is a PDF in a message pinned in **#dev-corner** which gives the following information in greater detail. - -### Setting Up and Updating the Locales Submodule -> The locales (translation) files are set up as a git submodule. A project-in-a-project, if you will. - -To fetch translations when you first start development in your fork or to update them on your local branch, run: -```bash -git submodule update --progress --init --recursive -``` - -### How Localizations Work -> This project uses the [i18next](https://www.i18next.com/) library to integrate translations from public/locales -into the source code based on the user's settings or location. The basic process for -fetching translated text is as follows: -1. The source code fetches text by a given key, e.g. - - ```ts - i18next.t("fileName:keyName", { arg1: "Hello", arg2: "an example", ... }) - ``` -2. The game looks up the key in the corresponding JSON file in the user's -language, e.g. - - ```ts - // from "en/file-name.json"... - "keyName": "{{arg1}}! This is {{arg2}} of translated text!" - ``` - If the key doesn't exist for the user's language, the game will default to the -corresponding English key (in the case of LATAM Spanish, it will first default to ES Spanish). - -3. The game shows the text to the user: - - ```ts - "Hello! This is an example of translated text!" - ``` -### Adding Translated Text -> If your feature involves new or modified text in any form, then you will be modifying the [locales](https://github.com/pagefaultgames/pokerogue-locales) repository. ***Never hardcode new text in any language!*** - -The workflow is: - -1. Make a pull request to the main repository for your new feature. -If this feature requires new text, the text should be integrated into the code with a new i18next key pointing to where you plan to add it into the pokerogue-locales repository. - -2. Make another pull request -- this time to the [pokerogue-locales](https://github.com/pagefaultgames/pokerogue-locales) -repository -- adding a new entry to the English locale with text for each key -you added to your main PR. You *only* need to add the English key and value - the translation team will handle the rest. - -3. If your feature is pulled from the mainline Pokémon games (e.g. a Move or Ability implementation), add a source link for any added text within the locale PR. -[Poké Corpus](https://abcboy101.github.io/poke-corpus) is a great resource for finding text from the latest mainline games; otherwise, a YouTube video link showing the text in mainline is sufficient. - -4. Ping @lugiadrien in **#dev-corner** or the current callout thread to make sure your locales PR is seen. -It'll be merged into the locales repository after any necessary corrections, at which point you can test it in your main PR (after updating locales from remote) - -5. The Dev team will approve your main PR, and your changes will be in the beta environment! - ## 😈 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/CREDITS.md b/CREDITS.md index 6d884c8fd60..bca89c816ca 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -40,6 +40,7 @@ ## Backgrounds - Squip (Paid Commissions) - Contributions by Someonealive-QN +- Contributions by redactedinlight ## UI - GAMEFREAK diff --git a/biome.jsonc b/biome.jsonc index e517d3a18d0..d4cb67d33a6 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -38,14 +38,13 @@ ] }, - // TODO: Configure and enable import sorting "assist": { "actions": { "source": { "organizeImports": { - "level": "off", + "level": "on", "options": { - "groups": [] + "groups": [":ALIAS:", ":NODE:", ":PACKAGE_WITH_PROTOCOL:", ":PACKAGE:", ":PATH:"] } } } @@ -70,7 +69,10 @@ }, "style": { "useEnumInitializers": "off", // large enums like Moves/Species would make this cumbersome - "useBlockStatements": "error", + "useBlockStatements": { + "level": "error", + "fix": "safe" + }, "useConst": "error", "useImportType": "error", "noNonNullAssertion": "off", // TODO: Turn this on ASAP and fix all non-null assertions in non-test files @@ -137,7 +139,7 @@ "useAdjacentGetterSetter": "error", "noConstantBinaryExpression": "error", "noTsIgnore": "error", - "noAwaitInLoop": "warn", + "noAwaitInLoop": "off", "useJsonImportAttribute": "off", // "Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'nodenext', or 'preserve'. ts(2823)" "useIndexOf": "error", "useObjectSpread": "error", diff --git a/dependency-graph.js b/dependency-graph.js deleted file mode 100644 index dff960d8781..00000000000 --- a/dependency-graph.js +++ /dev/null @@ -1,13 +0,0 @@ -import { Graphviz } from "@hpcc-js/wasm/graphviz"; - -const graphviz = await Graphviz.load(); - -const inputFile = []; -for await (const chunk of process.stdin) { - inputFile.push(chunk); -} - -const file = Buffer.concat(inputFile).toString("utf-8"); - -const svg = graphviz.dot(file, "svg"); -process.stdout.write(svg); diff --git a/docs/localization.md b/docs/localization.md new file mode 100644 index 00000000000..0fe950a361d --- /dev/null +++ b/docs/localization.md @@ -0,0 +1,142 @@ +# Localization 101 + +PokéRogue's localization team puts immense effort into making the game accessible around the world, supporting over 12 different languages at the time of writing this document. +As a developer, it's important to help maintain global accessibility by effectively coordinating with the Translation Team on any new features or enhancements. + +This document aims to cover everything you need to know to help keep the integration process for localization smooth and simple. + +# Prerequisites +Before you continue, this document assumes: +- You have already forked the repository and set up a development environment according to [CONTRIBUTING.md](../CONTRIBUTING.md). +- You have a basic level of familiarity with Git commands and GitHub repositories. +- You have joined the [community Discord](https://discord.gg/pokerogue) and have access to `#dev-corner` and related channels via **[#select-roles](https://discord.com/channels/1125469663833370665/1194825607738052621)**. +This is the easiest way to keep in touch with both the Translation Team and other like-minded contributors! + +# About the `pokerogue-locales` submodule + +PokéRogue's translations are managed under a separate dedicated repository, [`pokerogue-locales`](https://github.com/pagefaultgames/pokerogue-locales/). +This repository is integrated into the main one as a [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules) within the `public/locales` folder. + +## What Is a Submodule? + +In essence, a submodule is a way for one repository (i.e. `pokerogue`) to use another repository (i.e. `pokerogue-locales`) internally. +The parent repo (the "superproject") houses a cloned version of the 2nd repository (the "submodule") inside it, making locales effectively a "repository within a repository", so to speak. + +>[!TIP] +> Many popular IDEs have integrated `git` support with special handling around submodules: +> ![Image showing Visual Studio Code's `git` integration in the File Explorer. A blue "S" in the top right hand corner indicates the `public/locales` folder is a submodule.](https://github.com/user-attachments/assets/bd42d354-c65b-4cbe-8873-23d760dc1714 "What the `public/locales` submodule looks like in VS Code's File Explorer") +> +> ![Image showing Visual Studio Code's Source Control tab. A separate dropdown can be seen for each individual submodule.](https://github.com/user-attachments/assets/8b4d3f64-aec1-4474-91df-03dc1252a2fa "Making commits on submodules without even changing directories!") + +## Fetching Changes from Submodules + +The following command will initialize your branch's locales repository and update its HEAD: +```bash +git submodule update --init --recursive +``` + +> [!TIP] +> This command is run _automatically_ after cloning, merging or changing branches, so you should rarely have to run it manually. + +> [!IMPORTANT] +> If you run into issues with the `locales` submodule, try deleting the `.git/modules/public` and `public/locales` folders before re-running the command. + +## How Are Translations Integrated? + +This project uses the [i18next library](https://www.i18next.com/) to integrate translations from `public/locales` into the source code. +The basic process for fetching translated text goes roughly as follows: +1. The source code fetches text by a given key. + ```ts + globalScene.phaseManager.queueMessage( + i18next.t("fileName:keyName", { arg1: "Hello", arg2: "an example", ... }) + ); + ``` +2. The game looks up the key in the corresponding JSON file for the user's language. + ```jsonc + // from "en/file-name.json"... + { + "keyName": "{{arg1}}! This is {{arg2}} of translated text!" + } + ``` + If the key doesn't exist for the given language, the game will default to an appropriate fallback (usually the corresponding English key). +3. The game shows the translated text to the user. + ```ts + "Hello! This is an example of translated text!" + ``` + +# Submitting Locales Changes +If you have a feature or enhancement that requires additions or changes to in-game text, you will need to make a fork of the `pokerogue-locales` repo and submit your text changes as a pull request _in addition_ to your pull request to the main project. +Since these two PRs aren't _technically_ linked, it's important to coordinate with the Translation Team to ensure that both PRs are integrated safely into the project. + +> [!CAUTION] +> **DO NOT HARDCODE PLAYER-FACING TEXT INTO THE CODE!** + +## Making Changes + +One perk of submodules is you don't actually _need_ to clone the locales repository to start contributing - initializing the submodule already does that for you. + +Given `pokerogue-locales` is a full-fledged `git` repository _inside_ `pokerogue`, making changes is roughly the same as normal, merely using `public/locales` as your root directory. + +> [!WARNING] +> Make sure to checkout or rebase onto `upstream/HEAD` **BEFORE** creating a PR! +> The checked-out commit is based on the superproject's SHA-1 by default, so hastily making changes may see you basing your commits on last week's `HEAD`. + +## Requirements for Adding Translated Text +When your new feature or enhancement requires adding a new locales key **without changing text in existing keys**, we require the following workflow with regards to localization: +1. You (the developer) make a pull request to the main repository for your new feature. +If this feature requires new text, the text should be integrated into the code with a new `i18next` key pointing to where you plan to add it into the locales repository. +2. You then make another pull request — this time to the `pokerogue-locales` repository — adding a new entry with text for each key you added to your main PR. + - You must add the corresponding **English keys** while making the PR; the Translation Team can take care of the rest[^2]. + - For any feature pulled from the mainline Pokémon games (e.g. a Move or Ability implementation), it's best practice to include a source link for any added text. + [Poké Corpus](https://abcboy101.github.io/poke-corpus/) is a great resource for finding text from the mainline games; otherwise, a video/picture showing the text being displayed should suffice. + - You should also [notify the current Head of Translation](#notifying-translation) to ensure a fast response. +3. At this point, you may begin [testing locales integration in your main PR](#documenting-locales-changes). +4. The Translation Team will approve the locale PR (after corrections, if necessary), then merge it into `pokerogue-locales`. +5. The Dev Team will approve your main PR for your feature, then merge it into PokéRogue's beta environment. + +[^2]: For those wondering, the reason for choosing English specifically is due to it being the master language set in Pontoon (the program used by the Translation Team to perform locale updates). +If a key is present in any language _except_ the master language, it won't appear anywhere else in the translation tool, rendering missing English keys quite a hassle. + +### Requirements for Modifying Translated Text + +PRs that modify existing text have different risks with respect to coordination between development and translation, so their requirements are slightly different: +- As above, you set up 2 PRs: one for the feature itself in the main repo, and another for the associated locales changes in the locale repo. +- Now, however, you need to have your main PR be approved by the Dev Team **before** your corresponding locale changes are merged in. +- After your main PR is approved, the Translation Team will merge your locale PR, and you may update the submodule and post video evidence of integration into the **locales PR**. +- A Lead or Senior Translator from the Translation Team will then approve your main PR (if all is well), clearing your feature for merging into `beta`. + +## Documenting Locales Changes + +After making a PR involving any outwards-facing behavior (but _especially_ locales-related ones), it's generally considered good practice to attach proof of those changes working in-game. + +The basic procedure is roughly as follows: +1. Update your locales submodule to point to **the branch you used to make the locales PR**. \ + Many IDEs with `git` integration support doing this from the GUI, \ + or you can simply do it via command-line: + ```bash + cd public/locales + git checkout your-branch-name-here + ``` +2. Set some of the [in-game overrides](../CONTRIBUTING.md#1---manual-testing) inside `overrides.ts` to values corresponding to the interactions being tested. +3. Start a local dev server (`pnpm start:dev`) and open localhost in your browser. +4. Take screenshots or record a video of the locales changes being displayed in-game using the software of your choice[^2]. + +[^2]: For those lacking a screen capture device, [OBS Studio](https://obsproject.com) is a popular open-source option. + +> [!NOTE] +> For those aiming to film their changes, bear in mind that GitHub has a hard **10mB limit** on uploaded media content. +> If your video is too large, consider making it shorter or downscaling the quality. + +## Notifying Translation +Put simply, stating that a PR exists makes it much easier to review and merge. + +The easiest way to do this is by **pinging the current Head of Translation** in the [community Discord](https://discord.gg/pokerogue) (ideally in `#dev-corner` or similar). + + +> [!IMPORTANT] +> The current Head of Translation is: \ +> ** @lugiadrien ** + +# Closing Remarks +If you have any questions about the developer process for localization, don't hesitate to ask! +Feel free to contact us on Discord - the Dev Team and Translation Team will be happy to answer any questions. diff --git a/global.d.ts b/global.d.ts index d2ed6438c0b..27e96a4d8b5 100644 --- a/global.d.ts +++ b/global.d.ts @@ -8,7 +8,7 @@ declare global { * 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; } diff --git a/lefthook.yml b/lefthook.yml index 28178432c31..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: @@ -15,4 +17,6 @@ post-merge: post-checkout: commands: update-submodules: - run: git submodule update --init --recursive \ No newline at end of file + # cf https://git-scm.com/docs/githooks#_post_checkout: + # The 3rd argument is 1 for branch checkouts and 0 for file checkouts. + run: if test {3} -eq "1"; then git submodule update --init --recursive; fi \ No newline at end of file diff --git a/package.json b/package.json index 43736c10db6..9bba5e56f89 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "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 .", @@ -21,44 +21,43 @@ "biome-ci": "biome ci --diagnostic-level=error --reporter=github --no-errors-on-unmatched", "docs": "typedoc", "depcruise": "depcruise src test", - "depcruise:graph": "depcruise src --output-type dot | node dependency-graph.js > dependency-graph.svg", - "postinstall": "lefthook install && lefthook run post-merge", + "postinstall": "lefthook install; git submodule update --init --recursive", "update-version:patch": "pnpm version patch --force --no-git-tag-version", "update-version:minor": "pnpm version minor --force --no-git-tag-version", "update-locales:remote": "git submodule update --progress --init --recursive --force --remote" }, "devDependencies": { "@biomejs/biome": "2.0.0", - "@hpcc-js/wasm": "^2.22.4", + "@ls-lint/ls-lint": "2.3.1", "@types/jsdom": "^21.1.7", - "@types/node": "^22.13.14", - "@vitest/coverage-istanbul": "^3.0.9", + "@types/node": "^22.16.3", + "@vitest/coverage-istanbul": "^3.2.4", "chalk": "^5.4.1", - "dependency-cruiser": "^16.3.10", - "inquirer": "^12.4.2", - "jsdom": "^26.0.0", - "lefthook": "^1.11.5", - "msw": "^2.7.3", + "dependency-cruiser": "^16.10.4", + "inquirer": "^12.7.0", + "jsdom": "^26.1.0", + "lefthook": "^1.12.2", + "msw": "^2.10.4", "phaser3spectorjs": "^0.0.8", - "typedoc": "^0.28.1", - "typescript": "^5.8.2", - "vite": "^6.3.4", + "typedoc": "^0.28.7", + "typescript": "^5.8.3", + "vite": "^6.3.5", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.0.9", + "vitest": "^3.2.4", "vitest-canvas-mock": "^0.3.3" }, "dependencies": { "@material/material-color-utilities": "^0.2.7", "compare-versions": "^6.1.1", "crypto-js": "^4.2.0", - "i18next": "^24.2.2", - "i18next-browser-languagedetector": "^8.0.4", + "i18next": "^24.2.3", + "i18next-browser-languagedetector": "^8.2.0", "i18next-http-backend": "^3.0.2", "i18next-korean-postposition-processor": "^1.0.0", - "json-stable-stringify": "^1.2.0", + "json-stable-stringify": "^1.3.0", "jszip": "^3.10.1", - "phaser": "^3.88.2", - "phaser3-rex-plugins": "^1.80.15" + "phaser": "^3.90.0", + "phaser3-rex-plugins": "^1.80.16" }, "engines": { "node": ">=22.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d218bc00eb..e77bf065fd5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,84 +18,84 @@ importers: specifier: ^4.2.0 version: 4.2.0 i18next: - specifier: ^24.2.2 - version: 24.2.3(typescript@5.8.2) + specifier: ^24.2.3 + version: 24.2.3(typescript@5.8.3) i18next-browser-languagedetector: - specifier: ^8.0.4 - version: 8.0.4 + specifier: ^8.2.0 + version: 8.2.0 i18next-http-backend: specifier: ^3.0.2 version: 3.0.2 i18next-korean-postposition-processor: specifier: ^1.0.0 - version: 1.0.0(i18next@24.2.3(typescript@5.8.2)) + version: 1.0.0(i18next@24.2.3(typescript@5.8.3)) json-stable-stringify: - specifier: ^1.2.0 - version: 1.2.1 + specifier: ^1.3.0 + version: 1.3.0 jszip: specifier: ^3.10.1 version: 3.10.1 phaser: - specifier: ^3.88.2 - version: 3.88.2 + specifier: ^3.90.0 + version: 3.90.0 phaser3-rex-plugins: - specifier: ^1.80.15 - version: 1.80.15(graphology-types@0.24.8) + specifier: ^1.80.16 + version: 1.80.16(graphology-types@0.24.8) devDependencies: '@biomejs/biome': specifier: 2.0.0 version: 2.0.0 - '@hpcc-js/wasm': - specifier: ^2.22.4 - version: 2.22.4 + '@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.13.14 - version: 22.13.14 + specifier: ^22.16.3 + version: 22.16.3 '@vitest/coverage-istanbul': - specifier: ^3.0.9 - version: 3.0.9(vitest@3.0.9(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(yaml@2.7.1)) + 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)) chalk: specifier: ^5.4.1 version: 5.4.1 dependency-cruiser: - specifier: ^16.3.10 - version: 16.3.10 + specifier: ^16.10.4 + version: 16.10.4 inquirer: - specifier: ^12.4.2 - version: 12.5.0(@types/node@22.13.14) + specifier: ^12.7.0 + version: 12.7.0(@types/node@22.16.3) jsdom: - specifier: ^26.0.0 - version: 26.0.0 + specifier: ^26.1.0 + version: 26.1.0 lefthook: - specifier: ^1.11.5 - version: 1.11.6 + specifier: ^1.12.2 + version: 1.12.2 msw: - specifier: ^2.7.3 - version: 2.7.3(@types/node@22.13.14)(typescript@5.8.2) + specifier: ^2.10.4 + version: 2.10.4(@types/node@22.16.3)(typescript@5.8.3) phaser3spectorjs: specifier: ^0.0.8 version: 0.0.8 typedoc: - specifier: ^0.28.1 - version: 0.28.1(typescript@5.8.2) + specifier: ^0.28.7 + version: 0.28.7(typescript@5.8.3) typescript: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.8.3 + version: 5.8.3 vite: - specifier: ^6.3.4 - version: 6.3.4(@types/node@22.13.14)(yaml@2.7.1) + specifier: ^6.3.5 + version: 6.3.5(@types/node@22.16.3)(yaml@2.8.0) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.2)(vite@6.3.4(@types/node@22.13.14)(yaml@2.7.1)) + version: 5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.16.3)(yaml@2.8.0)) vitest: - specifier: ^3.0.9 - version: 3.0.9(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(yaml@2.7.1) + 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) vitest-canvas-mock: specifier: ^0.3.3 - version: 0.3.3(vitest@3.0.9(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(yaml@2.7.1)) + 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)) packages: @@ -103,59 +103,43 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@asamuzakjp/css-color@3.1.1': - resolution: {integrity: sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==} + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.9': - resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} + '@babel/compat-data@7.28.0': + resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.9': - resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + '@babel/core@7.28.0': + resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.10': - resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} + '@babel/generator@7.28.0': + resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.24.8': - resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.24.7': - resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.24.7': - resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.24.9': - resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.24.7': - resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -164,33 +148,33 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} '@babel/helpers@7.27.6': resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.5': - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.27.0': - resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + '@babel/runtime@7.27.6': + resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.8': - resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} + '@babel/traverse@7.28.0': + resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.6': - resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} + '@babel/types@7.28.1': + resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} engines: {node: '>=6.9.0'} '@biomejs/biome@2.0.0': @@ -259,189 +243,191 @@ packages: resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} - '@csstools/css-calc@2.1.2': - resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.8': - resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + '@csstools/css-color-parser@3.0.10': + resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@esbuild/aix-ppc64@0.25.2': - resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} + '@esbuild/aix-ppc64@0.25.6': + resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.2': - resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} + '@esbuild/android-arm64@0.25.6': + resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.2': - resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} + '@esbuild/android-arm@0.25.6': + resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.2': - resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} + '@esbuild/android-x64@0.25.6': + resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.2': - resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} + '@esbuild/darwin-arm64@0.25.6': + resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.2': - resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} + '@esbuild/darwin-x64@0.25.6': + resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.2': - resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} + '@esbuild/freebsd-arm64@0.25.6': + resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.2': - resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} + '@esbuild/freebsd-x64@0.25.6': + resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.2': - resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} + '@esbuild/linux-arm64@0.25.6': + resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.2': - resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} + '@esbuild/linux-arm@0.25.6': + resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.2': - resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} + '@esbuild/linux-ia32@0.25.6': + resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.2': - resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} + '@esbuild/linux-loong64@0.25.6': + resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.2': - resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} + '@esbuild/linux-mips64el@0.25.6': + resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.2': - resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} + '@esbuild/linux-ppc64@0.25.6': + resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.2': - resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} + '@esbuild/linux-riscv64@0.25.6': + resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.2': - resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} + '@esbuild/linux-s390x@0.25.6': + resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.2': - resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} + '@esbuild/linux-x64@0.25.6': + resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.2': - resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} + '@esbuild/netbsd-arm64@0.25.6': + resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.2': - resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} + '@esbuild/netbsd-x64@0.25.6': + resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.2': - resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} + '@esbuild/openbsd-arm64@0.25.6': + resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.2': - resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} + '@esbuild/openbsd-x64@0.25.6': + resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.25.2': - resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} + '@esbuild/openharmony-arm64@0.25.6': + resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.6': + resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.2': - resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} + '@esbuild/win32-arm64@0.25.6': + resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.2': - resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} + '@esbuild/win32-ia32@0.25.6': + resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.2': - resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} + '@esbuild/win32-x64@0.25.6': + resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@gerrit0/mini-shiki@3.2.2': - resolution: {integrity: sha512-vaZNGhGLKMY14HbF53xxHNgFO9Wz+t5lTlGNpl2N9xFiKQ0I5oIe0vKjU9dh7Nb3Dw6lZ7wqUE0ri+zcdpnK+Q==} + '@gerrit0/mini-shiki@3.7.0': + resolution: {integrity: sha512-7iY9wg4FWXmeoFJpUL2u+tsmh0d0jcEJHAIzVxl3TG4KL493JNnisdLAILZ77zcD+z3J0keEXZ+lFzUgzQzPDg==} - '@hpcc-js/wasm@2.22.4': - resolution: {integrity: sha512-58JkRkxZffiBAbZhc7z+9iaaAOmn1cyxLL3rRwsUvco/I0Wwb7uVAlHM9HiU6XASe2k11jrIjCFff1t9QKjlqg==} - hasBin: true - - '@inquirer/checkbox@4.1.4': - resolution: {integrity: sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA==} + '@inquirer/checkbox@4.1.9': + resolution: {integrity: sha512-DBJBkzI5Wx4jFaYm221LHvAhpKYkhVS0k9plqHwaHhofGNxvYB7J3Bz8w+bFJ05zaMb0sZNHo4KdmENQFlNTuQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -449,8 +435,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.8': - resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==} + '@inquirer/confirm@5.1.13': + resolution: {integrity: sha512-EkCtvp67ICIVVzjsquUiVSd+V5HRGOGQfsqA4E4vMWhYnB7InUL0pa0TIWt1i+OfP16Gkds8CdIu6yGZwOM1Yw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -458,8 +444,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.9': - resolution: {integrity: sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==} + '@inquirer/core@10.1.14': + resolution: {integrity: sha512-Ma+ZpOJPewtIYl6HZHZckeX1STvDnHTCB2GVINNUlSEn2Am6LddWwfPkIGY0IUFVjUUrr/93XlBwTK6mfLjf0A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -467,8 +453,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.9': - resolution: {integrity: sha512-8HjOppAxO7O4wV1ETUlJFg6NDjp/W2NP5FB9ZPAcinAlNT4ZIWOLe2pUVwmmPRSV0NMdI5r/+lflN55AwZOKSw==} + '@inquirer/editor@4.2.14': + resolution: {integrity: sha512-yd2qtLl4QIIax9DTMZ1ZN2pFrrj+yL3kgIWxm34SS6uwCr0sIhsNyudUjAo5q3TqI03xx4SEBkUJqZuAInp9uA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -476,8 +462,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.11': - resolution: {integrity: sha512-OZSUW4hFMW2TYvX/Sv+NnOZgO8CHT2TU1roUCUIF2T+wfw60XFRRp9MRUPCT06cRnKL+aemt2YmTWwt7rOrNEA==} + '@inquirer/expand@4.0.16': + resolution: {integrity: sha512-oiDqafWzMtofeJyyGkb1CTPaxUkjIcSxePHHQCfif8t3HV9pHcw1Kgdw3/uGpDvaFfeTluwQtWiqzPVjAqS3zA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -485,12 +471,12 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.11': - resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} + '@inquirer/figures@1.0.12': + resolution: {integrity: sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==} engines: {node: '>=18'} - '@inquirer/input@4.1.8': - resolution: {integrity: sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==} + '@inquirer/input@4.2.0': + resolution: {integrity: sha512-opqpHPB1NjAmDISi3uvZOTrjEEU5CWVu/HBkDby8t93+6UxYX0Z7Ps0Ltjm5sZiEbWenjubwUkivAEYQmy9xHw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -498,8 +484,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.11': - resolution: {integrity: sha512-pQK68CsKOgwvU2eA53AG/4npRTH2pvs/pZ2bFvzpBhrznh8Mcwt19c+nMO7LHRr3Vreu1KPhNBF3vQAKrjIulw==} + '@inquirer/number@3.0.16': + resolution: {integrity: sha512-kMrXAaKGavBEoBYUCgualbwA9jWUx2TjMA46ek+pEKy38+LFpL9QHlTd8PO2kWPUgI/KB+qi02o4y2rwXbzr3Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -507,8 +493,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.11': - resolution: {integrity: sha512-dH6zLdv+HEv1nBs96Case6eppkRggMe8LoOTl30+Gq5Wf27AO/vHFgStTVz4aoevLdNXqwE23++IXGw4eiOXTg==} + '@inquirer/password@4.0.16': + resolution: {integrity: sha512-g8BVNBj5Zeb5/Y3cSN+hDUL7CsIFDIuVxb9EPty3lkxBaYpjL5BNRKSYOF9yOLe+JOcKFd+TSVeADQ4iSY7rbg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -516,8 +502,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.4.0': - resolution: {integrity: sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w==} + '@inquirer/prompts@7.6.0': + resolution: {integrity: sha512-jAhL7tyMxB3Gfwn4HIJ0yuJ5pvcB5maYUcouGcgd/ub79f9MqZ+aVnBtuFf+VC2GTkCBF+R+eo7Vi63w5VZlzw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -525,8 +511,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.0.11': - resolution: {integrity: sha512-uAYtTx0IF/PqUAvsRrF3xvnxJV516wmR6YVONOmCWJbbt87HcDHLfL9wmBQFbNJRv5kCjdYKrZcavDkH3sVJPg==} + '@inquirer/rawlist@4.1.4': + resolution: {integrity: sha512-5GGvxVpXXMmfZNtvWw4IsHpR7RzqAR624xtkPd1NxxlV5M+pShMqzL4oRddRkg8rVEOK9fKdJp1jjVML2Lr7TQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -534,8 +520,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.11': - resolution: {integrity: sha512-9CWQT0ikYcg6Ls3TOa7jljsD7PgjcsYEM0bYE+Gkz+uoW9u8eaJCRHJKkucpRE5+xKtaaDbrND+nPDoxzjYyew==} + '@inquirer/search@3.0.16': + resolution: {integrity: sha512-POCmXo+j97kTGU6aeRjsPyuCpQQfKcMXdeTMw708ZMtWrj5aykZvlUxH4Qgz3+Y1L/cAVZsSpA+UgZCu2GMOMg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -543,8 +529,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.1.0': - resolution: {integrity: sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==} + '@inquirer/select@4.2.4': + resolution: {integrity: sha512-unTppUcTjmnbl/q+h8XeQDhAqIOmwWYWNyiiP2e3orXrg6tOaa5DHXja9PChCSbChOsktyKgOieRZFnajzxoBg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -552,8 +538,8 @@ packages: '@types/node': optional: true - '@inquirer/type@3.0.5': - resolution: {integrity: sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==} + '@inquirer/type@3.0.7': + resolution: {integrity: sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -569,29 +555,30 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.12': + resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.5.4': + resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/trace-mapping@0.3.29': + resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@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.37.6': - resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==} + '@mswjs/interceptors@0.39.2': + resolution: {integrity: sha512-RuzCup9Ct91Y7V79xwCb146RaBRHZ7NBbrIUySumd1rpKqHL5OonaqrGIbug5hNwP/fRyxFMA6ISgw4FTtYFYg==} engines: {node: '>=18'} '@open-draft/deferred-promise@2.2.0': @@ -603,130 +590,176 @@ 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.40.1': - resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==} + '@rollup/rollup-android-arm-eabi@4.45.0': + resolution: {integrity: sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.40.1': - resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==} + '@rollup/rollup-android-arm64@4.45.0': + resolution: {integrity: sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.40.1': - resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==} + '@rollup/rollup-darwin-arm64@4.45.0': + resolution: {integrity: sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.40.1': - resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==} + '@rollup/rollup-darwin-x64@4.45.0': + resolution: {integrity: sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.40.1': - resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==} + '@rollup/rollup-freebsd-arm64@4.45.0': + resolution: {integrity: sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.40.1': - resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==} + '@rollup/rollup-freebsd-x64@4.45.0': + resolution: {integrity: sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.40.1': - resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==} + '@rollup/rollup-linux-arm-gnueabihf@4.45.0': + resolution: {integrity: sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.1': - resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==} + '@rollup/rollup-linux-arm-musleabihf@4.45.0': + resolution: {integrity: sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.40.1': - resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==} + '@rollup/rollup-linux-arm64-gnu@4.45.0': + resolution: {integrity: sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.1': - resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==} + '@rollup/rollup-linux-arm64-musl@4.45.0': + resolution: {integrity: sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.40.1': - resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.45.0': + resolution: {integrity: sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': - resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.45.0': + resolution: {integrity: sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.1': - resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==} + '@rollup/rollup-linux-riscv64-gnu@4.45.0': + resolution: {integrity: sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.1': - resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==} + '@rollup/rollup-linux-riscv64-musl@4.45.0': + resolution: {integrity: sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.40.1': - resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==} + '@rollup/rollup-linux-s390x-gnu@4.45.0': + resolution: {integrity: sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.40.1': - resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==} + '@rollup/rollup-linux-x64-gnu@4.45.0': + resolution: {integrity: sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.1': - resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==} + '@rollup/rollup-linux-x64-musl@4.45.0': + resolution: {integrity: sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.40.1': - resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==} + '@rollup/rollup-win32-arm64-msvc@4.45.0': + resolution: {integrity: sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.40.1': - resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==} + '@rollup/rollup-win32-ia32-msvc@4.45.0': + resolution: {integrity: sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.40.1': - resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==} + '@rollup/rollup-win32-x64-msvc@4.45.0': + resolution: {integrity: sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==} cpu: [x64] os: [win32] - '@shikijs/engine-oniguruma@3.2.1': - resolution: {integrity: sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==} + '@shikijs/engine-oniguruma@3.7.0': + resolution: {integrity: sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==} - '@shikijs/langs@3.2.1': - resolution: {integrity: sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==} + '@shikijs/langs@3.7.0': + resolution: {integrity: sha512-1zYtdfXLr9xDKLTGy5kb7O0zDQsxXiIsw1iIBcNOO8Yi5/Y1qDbJ+0VsFoqTlzdmneO8Ij35g7QKF8kcLyznCQ==} - '@shikijs/themes@3.2.1': - resolution: {integrity: sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==} + '@shikijs/themes@3.7.0': + resolution: {integrity: sha512-VJx8497iZPy5zLiiCTSIaOChIcKQwR0FebwE9S3rcN0+J/GTWwQ1v/bqhTbpbY3zybPKeO8wdammqkpXc4NVjQ==} - '@shikijs/types@3.2.1': - resolution: {integrity: sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==} + '@shikijs/types@3.7.0': + resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -734,11 +767,11 @@ packages: '@types/jsdom@21.1.7': resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} - '@types/node@22.13.14': - resolution: {integrity: sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==} + '@types/node@22.16.3': + resolution: {integrity: sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==} - '@types/statuses@2.0.5': - resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + '@types/statuses@2.0.6': + resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} @@ -746,39 +779,39 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@vitest/coverage-istanbul@3.0.9': - resolution: {integrity: sha512-/TXh2qmOhclmVPjOnPTpIO4Xr6l2P5EwyXQygenwq4/ZQ/vPsrz+GCRZF9kBeQi6xrGcHv368Si9PGImWQawVg==} + '@vitest/coverage-istanbul@3.2.4': + resolution: {integrity: sha512-IDlpuFJiWU9rhcKLkpzj8mFu/lpe64gVgnV15ZOrYx1iFzxxrxCzbExiUEKtwwXRvEiEMUS6iZeYgnMxgbqbxQ==} peerDependencies: - vitest: 3.0.9 + vitest: 3.2.4 - '@vitest/expect@3.0.9': - resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/mocker@3.0.9': - resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.0.9': - resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/runner@3.0.9': - resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} - '@vitest/snapshot@3.0.9': - resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} - '@vitest/spy@3.0.9': - resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/utils@3.0.9': - resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} acorn-jsx-walk@2.0.0: resolution: {integrity: sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA==} @@ -788,21 +821,21 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-loose@8.4.0: - resolution: {integrity: sha512-M0EUka6rb+QC4l9Z3T0nJEzNOO7JcoJlYMrBlyBCiFSXRyxjLKayd4TbQs2FDRWQU1h9FR7QVNHt+PEaoNL5rQ==} + acorn-loose@8.5.2: + resolution: {integrity: sha512-PPvV6g8UGMGgjrMu+n/f9E/tCSkNQ2Y97eFvuVdJfG11+xdIeDcLyNdC8SHcrHbRqkfwLASdplyR6B6sKM1U4A==} engines: {node: '>=0.4.0'} - acorn-walk@8.3.3: - resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} ajv@8.17.1: @@ -816,8 +849,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -835,17 +868,14 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - browserslist@4.23.2: - resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} + browserslist@4.25.1: + resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -865,12 +895,12 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - caniuse-lite@1.0.30001642: - resolution: {integrity: sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==} + caniuse-lite@1.0.30001727: + resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} + chai@5.2.1: + resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} + engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -902,12 +932,8 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} compare-versions@6.1.1: @@ -936,8 +962,8 @@ packages: cssfontparser@1.2.1: resolution: {integrity: sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==} - cssstyle@4.3.0: - resolution: {integrity: sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==} + cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} dagre@0.8.5: @@ -947,8 +973,8 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -956,8 +982,8 @@ packages: supports-color: optional: true - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} @@ -967,12 +993,8 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - dependency-cruiser@16.3.10: - resolution: {integrity: sha512-WkCnibHBfvaiaQ+S46LZ6h4AR6oj42Vsf5/0Vgtrwdwn7ZekMJdZ/ALoTwNp/RaGlKW+MbV/fhSZOvmhAWVWzQ==} + dependency-cruiser@16.10.4: + resolution: {integrity: sha512-hrxVOjIm8idZ9ZVDGSyyG3SHiNcEUPhL6RTEmO/3wfQWLepH5pA3nuDMMrcJ1DkZztFA7xg3tk8OVO+MmwwH9w==} engines: {node: ^18.17||>=20} hasBin: true @@ -983,8 +1005,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.4.830: - resolution: {integrity: sha512-TrPKKH20HeN0J1LHzsYLs2qwXrp8TF4nHdu4sq61ozGbzMpWhI7iIOPYPPkxeq1azMT9PZ8enPFcftbs/Npcjg==} + electron-to-chromium@1.5.182: + resolution: {integrity: sha512-Lv65Btwv9W4J9pyODI6EWpdnhfvrve/us5h1WspW8B2Fb0366REPtY3hX7ounk1CkV/TBjWCEvCBBbYbmV0qCA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -992,14 +1014,18 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + enhanced-resolve@5.18.2: + resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} engines: {node: '>=10.13.0'} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -1008,24 +1034,20 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - esbuild@0.25.2: - resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} + esbuild@0.25.6: + resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} engines: {node: '>=18'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} estree-walker@3.0.3: @@ -1041,8 +1063,8 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} external-editor@3.1.0: @@ -1052,25 +1074,21 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-uri@3.0.1: - resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - fdir@6.4.4: - resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true - foreground-child@3.2.1: - resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1103,10 +1121,6 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -1128,8 +1142,8 @@ packages: peerDependencies: graphology-types: '>=0.24.0' - graphql@16.9.0: - resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + graphql@16.11.0: + resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} has-flag@4.0.0: @@ -1143,10 +1157,6 @@ packages: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -1169,8 +1179,8 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - i18next-browser-languagedetector@8.0.4: - resolution: {integrity: sha512-f3frU3pIxD50/Tz20zx9TD9HobKYg47fmAETb117GKGPrhwcSSPJDoCposXlVycVebQ9GQohC3Efbpq7/nnJ5w==} + i18next-browser-languagedetector@8.2.0: + resolution: {integrity: sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==} i18next-http-backend@2.7.3: resolution: {integrity: sha512-FgZxrXdRA5u44xfYsJlEBL4/KH3f2IluBpgV/7riW0YW2VEyM8FzVt2XHAOi6id0Ppj7vZvCZVpp5LrGXnc8Ig==} @@ -1202,8 +1212,8 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} immediate@3.0.6: @@ -1216,8 +1226,8 @@ packages: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inquirer@12.5.0: - resolution: {integrity: sha512-aiBBq5aKF1k87MTxXDylLfwpRwToShiHrSv4EmB07EYyLgmnjEz5B3rn0aGw1X3JA/64Ngf2T54oGwc+BCsPIQ==} + inquirer@12.7.0: + resolution: {integrity: sha512-KKFRc++IONSyE2UYw9CJ1V0IWx5yQKomwB+pp3cWomWs+v2+ZsG11G2OVfAjFS6WWCppKw+RfKmpqGfSzD5QBQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1229,8 +1239,8 @@ packages: resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} engines: {node: '>=10.13.0'} - is-core-module@2.15.0: - resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} is-fullwidth-code-point@3.0.0: @@ -1289,12 +1299,15 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdom@26.0.0: - resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} engines: {node: '>=18'} peerDependencies: canvas: ^3.0.0 @@ -1302,16 +1315,16 @@ packages: canvas: optional: true - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} hasBin: true json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stable-stringify@1.2.1: - resolution: {integrity: sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==} + json-stable-stringify@1.3.0: + resolution: {integrity: sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==} engines: {node: '>= 0.4'} json5@2.2.3: @@ -1329,58 +1342,58 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - lefthook-darwin-arm64@1.11.6: - resolution: {integrity: sha512-gWgdWrKgZgX+bKc6Vs/x7JkO+58lLOpRzpteLx//82D0MKVPlNZwjd4zz4AbIBXtM4Hcj+6gSsOzQ7QDXxjVvQ==} + lefthook-darwin-arm64@1.12.2: + resolution: {integrity: sha512-fTxeI9tEskrHjc3QyEO+AG7impBXY2Ed8V5aiRc3fw9POfYtVh9b5jRx90fjk2+ld5hf+Z1DsyyLq/vOHDFskQ==} cpu: [arm64] os: [darwin] - lefthook-darwin-x64@1.11.6: - resolution: {integrity: sha512-Ia0TjTKuYcSaDTuoCnbWtpPZ2VEoKzgn33OB90VjNaSVs4ooE0PIdpO+w00x1elqIaf1pbrpq6HgeB26Du8KbQ==} + lefthook-darwin-x64@1.12.2: + resolution: {integrity: sha512-T1dCDKAAfdHgYZ8qtrS02SJSHoR52RFcrGArFNll9Mu4ZSV19Sp8BO+kTwDUOcLYdcPGNaqOp9PkRBQGZWQC7g==} cpu: [x64] os: [darwin] - lefthook-freebsd-arm64@1.11.6: - resolution: {integrity: sha512-PxIwj+hmjLahyzEmcIfalIBDhgklAQCavwM4sGCgbzDi4/+VQX+4aEs4pQqtd7v3aohmjtO/4n2emzTI8donww==} + lefthook-freebsd-arm64@1.12.2: + resolution: {integrity: sha512-2n9z7Q4BKeMBoB9cuEdv0UBQH82Z4GgBQpCrfjCtyzpDnYQwrH8Tkrlnlko4qPh9MM6nLLGIYMKsA5nltzo8Cg==} cpu: [arm64] os: [freebsd] - lefthook-freebsd-x64@1.11.6: - resolution: {integrity: sha512-3o1lMKxz1VtWaP/o117wgUn3ZOpefMoSf+8LuiTzI3/PDprIuzgyw2nXKlBZAMDpNPHMNnJeQNts9XLMRmkldg==} + lefthook-freebsd-x64@1.12.2: + resolution: {integrity: sha512-1hNY/irY+/3kjRzKoJYxG+m3BYI8QxopJUK1PQnknGo1Wy5u302SdX+tR7pnpz6JM5chrNw4ozSbKKOvdZ5VEw==} cpu: [x64] os: [freebsd] - lefthook-linux-arm64@1.11.6: - resolution: {integrity: sha512-nKPFZ5cA9f5tVn0ybDVqcXXlpTHZqo05N4KQRhWTj5Nem+JoD2YzJIlvZhdJhUrldERqj6deDMXChH5T3z4Rrw==} + lefthook-linux-arm64@1.12.2: + resolution: {integrity: sha512-1W4swYIVRkxq/LFTuuK4oVpd6NtTKY4E3VY2Uq2JDkIOJV46+8qGBF+C/QA9K3O9chLffgN7c+i+NhIuGiZ/Vw==} cpu: [arm64] os: [linux] - lefthook-linux-x64@1.11.6: - resolution: {integrity: sha512-naN8dllLCOEeP+wznLnq+oXrs1dvt/iMLkcl+pOPWLqFccPfDiHzr8V8GslaTa+rSFsAnvjR7SJIOi5C29xedA==} + lefthook-linux-x64@1.12.2: + resolution: {integrity: sha512-J6VGuMfhq5iCsg1Pv7xULbuXC63gP5LaikT0PhkyBNMi3HQneZFDJ8k/sp0Ue9HkQv6QfWIo3/FgB9gz38MCFw==} cpu: [x64] os: [linux] - lefthook-openbsd-arm64@1.11.6: - resolution: {integrity: sha512-dPxhJfYQ667T+U3pz1+O3mTRNHzXH/BvPlXSH+oy8uiSry4AtVNRXkVvXPUcpLlrAy6HuFYodsrpCIlWFeYwiQ==} + lefthook-openbsd-arm64@1.12.2: + resolution: {integrity: sha512-wncDRW3ml24DaOyH22KINumjvCohswbQqbxyH2GORRCykSnE859cTjOrRIchTKBIARF7PSeGPUtS7EK0+oDbaw==} cpu: [arm64] os: [openbsd] - lefthook-openbsd-x64@1.11.6: - resolution: {integrity: sha512-9D26kcSsjiW4D0AuVDdi+0ZqrsOzRWOpMS/kcUbLfrU99yCvma0rMTqKbbDMkVur/znS7qL53oGahXCXDNA+IQ==} + lefthook-openbsd-x64@1.12.2: + resolution: {integrity: sha512-2jDOkCHNnc/oK/vR62hAf3vZb1EQ6Md2GjIlgZ/V7A3ztOsM8QZ5IxwYN3D1UOIR5ZnwMBy7PtmTJC/HJrig5w==} cpu: [x64] os: [openbsd] - lefthook-windows-arm64@1.11.6: - resolution: {integrity: sha512-xdCenr4+BFnfBEhiXj6GJp02EPmcwTAGa7NYm6hVTfDwGXw24tuLv7lpnGjgK3kovN6EukgLH1FYkeyDOBEMnA==} + lefthook-windows-arm64@1.12.2: + resolution: {integrity: sha512-ZMH/q6UNSidhHEG/1QoqIl1n4yPTBWuVmKx5bONtKHicoz4QCQ+QEiNjKsG5OO4C62nfyHGThmweCzZVUQECJw==} cpu: [arm64] os: [win32] - lefthook-windows-x64@1.11.6: - resolution: {integrity: sha512-Fg2GzLhzeDV/GX8+ydrI0wBOytQWpPkNdngx+a8B/feCDbwjAiFklDG5oV4ytuWrtg1JPEEWLJd6nHefj4wtHA==} + lefthook-windows-x64@1.12.2: + resolution: {integrity: sha512-TqT2jIPcTQ9uwaw+v+DTmvnUHM/p7bbsSrPoPX+fRXSGLzFjyiY+12C9dObSwfCQq6rT70xqQJ9AmftJQsa5/Q==} cpu: [x64] os: [win32] - lefthook@1.11.6: - resolution: {integrity: sha512-j0VmMM50WlPDassmgvapRum9po29Tv1BXzBNFpzGkk9E91CEG9jKik/OHyH/r/na+q8qNIUUyPL6QQuTN/UhQQ==} + lefthook@1.12.2: + resolution: {integrity: sha512-2CeTu5NcmoT9YnqsHTq/TF36MlqlzHzhivGx3DrXHwcff4TdvrkIwUTA56huM3Nlo5ODAF/0hlPzaKLmNHCBnQ==} hasBin: true lie@3.3.0: @@ -1392,8 +1405,8 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + loupe@3.1.4: + resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -1425,18 +1438,10 @@ packages: mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - memoize@10.0.0: - resolution: {integrity: sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==} + memoize@10.1.0: + resolution: {integrity: sha512-MMbFhJzh4Jlg/poq1si90XRlTZRDHVqdlz2mPyGJ6kqMpyHUyVpDd5gpFAvVehW64+RA1eKE9Yt8aSLY7w2Kgg==} engines: {node: '>=18'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} @@ -1458,8 +1463,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.7.3: - resolution: {integrity: sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==} + msw@2.10.4: + resolution: {integrity: sha512-6R1or/qyele7q3RyPwNuvc0IxO8L8/Aim6Sz5ncXEgcWUNxSKE+udriTOWHtpMwmfkLYlacA2y7TIx4cL5lgHA==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -1490,8 +1495,8 @@ packages: encoding: optional: true - node-releases@2.0.17: - resolution: {integrity: sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==} + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} nwsapi@2.2.20: resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} @@ -1510,17 +1515,22 @@ packages: outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + 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==} pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - papaparse@5.4.1: - resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} + papaparse@5.5.3: + resolution: {integrity: sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==} - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -1539,21 +1549,18 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} - phaser3-rex-plugins@1.80.15: - resolution: {integrity: sha512-Ur973N1W5st6XEYBcJko8eTcEbdDHMM+m7VqvT3j/EJeJwYyJ3bVb33JJDsFgefk3A2iAz2itP/UY7CzxJOJVA==} + phaser3-rex-plugins@1.80.16: + resolution: {integrity: sha512-c34SfEjdK7rz8EbM7bDmJwB/xCb/YR77IaAaowzqkCLb7pLeI3E8PfLivm882iirN11XOHjYT2uYlvtdbNAtMA==} phaser3spectorjs@0.0.8: resolution: {integrity: sha512-0dSO7/aMjEUPrp5EcjRvRRsEf+jXDbmzalPeJ6VtTB2Pn1PeaKc+qlL/DmO3l1Dvc5lkzc+Sil1Ta+Hkyi5cbA==} - phaser@3.88.2: - resolution: {integrity: sha512-UBgd2sAFuRJbF2xKaQ5jpMWB8oETncChLnymLGHcrnT53vaqiGrQWbUKUDBawKLm24sghjKo4Bf+/xfv8espZQ==} - - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + phaser@3.90.0: + resolution: {integrity: sha512-/cziz/5ZIn02uDkC9RzN8VF9x3Gs3XdFFf9nkiMEQT3p7hQlWuyjy4QWosU802qqno2YSLn2BfqwOKLv/sSVfQ==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1562,10 +1569,15 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + 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==} @@ -1573,8 +1585,8 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} @@ -1594,9 +1606,6 @@ packages: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -1612,20 +1621,21 @@ packages: requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true - rollup@4.40.1: - resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==} + rollup@4.45.0: + resolution: {integrity: sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==} 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@3.0.0: - resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + run-async@4.0.4: + resolution: {integrity: sha512-2cgeRHnV11lSXBEhq7sN7a5UVjTKm9JTb9x8ApIT//16D7QL96AgnNeWSGoB4gIHc0iYw/Ha0Z+waBaCYZVNhg==} engines: {node: '>=0.12.0'} rxjs@7.8.2: @@ -1648,8 +1658,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true @@ -1685,12 +1695,12 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} @@ -1718,6 +1728,9 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -1729,8 +1742,8 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} teamcity-service-messages@0.1.14: @@ -1746,27 +1759,27 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.13: - resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@2.0.0: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + tinyspy@4.0.3: + resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} - tldts-core@6.1.85: - resolution: {integrity: sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - tldts@6.1.85: - resolution: {integrity: sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==} + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true tmp@0.0.33: @@ -1784,12 +1797,12 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.0: - resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} - tsconfck@3.1.1: - resolution: {integrity: sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==} + tsconfck@3.1.6: + resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} hasBin: true peerDependencies: @@ -1798,8 +1811,8 @@ packages: typescript: optional: true - tsconfig-paths-webpack-plugin@4.1.0: - resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} + tsconfig-paths-webpack-plugin@4.2.0: + resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} engines: {node: '>=10.13.0'} tsconfig-paths@4.2.0: @@ -1813,34 +1826,34 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@4.26.1: - resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - typedoc@0.28.1: - resolution: {integrity: sha512-Mn2VPNMaxoe/hlBiLriG4U55oyAa3Xo+8HbtEwV7F5WEOPXqtxzGuMZhJYHaqFJpajeQ6ZDUC2c990NAtTbdgw==} + typedoc@0.28.7: + resolution: {integrity: sha512-lpz0Oxl6aidFkmS90VQDQjk/Qf2iw0IUvFqirdONBdj7jPSN9mGXhy66BcGNDxx5ZMyKKiBVAREvPEzT6Uxipw==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x - typescript@5.8.2: - resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -1851,8 +1864,8 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vite-node@3.0.9: - resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -1864,8 +1877,8 @@ packages: vite: optional: true - vite@6.3.4: - resolution: {integrity: sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==} + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -1909,16 +1922,16 @@ packages: peerDependencies: vitest: '*' - vitest@3.0.9: - resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.9 - '@vitest/ui': 3.0.9 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -1941,8 +1954,8 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - watskeburt@4.1.0: - resolution: {integrity: sha512-KkY5H51ajqy9HYYI+u9SIURcWnqeVVhdH0I+ab6aXPGHfZYxgRCwnR6Lm3+TYB6jJVt5jFqw4GAKmwf1zHmGQw==} + watskeburt@4.2.3: + resolution: {integrity: sha512-uG9qtQYoHqAsnT711nG5iZc/8M5inSmkGCOp7pFaytKG2aTfIca7p//CjiVzAE4P7hzaYuCozMjNNaLgmhbK5g==} engines: {node: ^18||>=20} hasBin: true @@ -1993,8 +2006,8 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -2019,9 +2032,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.7.1: - resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} - engines: {node: '>= 14'} + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} hasBin: true yargs-parser@21.1.1: @@ -2040,15 +2053,15 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 - '@asamuzakjp/css-color@3.1.1': + '@asamuzakjp/css-color@3.2.0': dependencies: - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 '@babel/code-frame@7.27.1': @@ -2057,126 +2070,98 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.24.9': {} + '@babel/compat-data@7.28.0': {} - '@babel/core@7.24.9': + '@babel/core@7.28.0': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.24.10 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@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/parser': 7.27.5 + '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/traverse': 7.24.8 - '@babel/types': 7.27.6 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.24.10': + '@babel/generator@7.28.0': dependencies: - '@babel/types': 7.27.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.1 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.24.8': + '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.24.9 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.2 + '@babel/compat-data': 7.28.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.1 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-environment-visitor@7.24.7': - dependencies: - '@babel/types': 7.27.6 + '@babel/helper-globals@7.28.0': {} - '@babel/helper-function-name@7.24.7': + '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 - - '@babel/helper-hoist-variables@7.24.7': - dependencies: - '@babel/types': 7.27.6 - - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.27.6 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9)': + '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 + '@babel/core': 7.28.0 + '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.27.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-split-export-declaration@7.24.7': - dependencies: - '@babel/types': 7.27.6 - '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-validator-option@7.27.1': {} '@babel/helpers@7.27.6': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + '@babel/types': 7.28.1 - '@babel/parser@7.27.5': + '@babel/parser@7.28.0': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.28.1 - '@babel/runtime@7.27.0': - dependencies: - regenerator-runtime: 0.14.1 + '@babel/runtime@7.27.6': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.1 - '@babel/traverse@7.24.8': + '@babel/traverse@7.28.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.24.10 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - debug: 4.4.0 - globals: 11.12.0 + '@babel/generator': 7.28.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/types': 7.28.1 + debug: 4.4.1 transitivePeerDependencies: - supports-color - '@babel/types@7.27.6': + '@babel/types@7.28.1': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -2222,7 +2207,7 @@ snapshots: '@bundled-es-modules/statuses@1.0.1': dependencies: - statuses: 2.0.1 + statuses: 2.0.2 '@bundled-es-modules/tough-cookie@0.1.6': dependencies: @@ -2231,132 +2216,131 @@ snapshots: '@csstools/color-helpers@5.0.2': {} - '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.0.2 - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-tokenizer@3.0.3': {} + '@csstools/css-tokenizer@3.0.4': {} - '@esbuild/aix-ppc64@0.25.2': + '@esbuild/aix-ppc64@0.25.6': optional: true - '@esbuild/android-arm64@0.25.2': + '@esbuild/android-arm64@0.25.6': optional: true - '@esbuild/android-arm@0.25.2': + '@esbuild/android-arm@0.25.6': optional: true - '@esbuild/android-x64@0.25.2': + '@esbuild/android-x64@0.25.6': optional: true - '@esbuild/darwin-arm64@0.25.2': + '@esbuild/darwin-arm64@0.25.6': optional: true - '@esbuild/darwin-x64@0.25.2': + '@esbuild/darwin-x64@0.25.6': optional: true - '@esbuild/freebsd-arm64@0.25.2': + '@esbuild/freebsd-arm64@0.25.6': optional: true - '@esbuild/freebsd-x64@0.25.2': + '@esbuild/freebsd-x64@0.25.6': optional: true - '@esbuild/linux-arm64@0.25.2': + '@esbuild/linux-arm64@0.25.6': optional: true - '@esbuild/linux-arm@0.25.2': + '@esbuild/linux-arm@0.25.6': optional: true - '@esbuild/linux-ia32@0.25.2': + '@esbuild/linux-ia32@0.25.6': optional: true - '@esbuild/linux-loong64@0.25.2': + '@esbuild/linux-loong64@0.25.6': optional: true - '@esbuild/linux-mips64el@0.25.2': + '@esbuild/linux-mips64el@0.25.6': optional: true - '@esbuild/linux-ppc64@0.25.2': + '@esbuild/linux-ppc64@0.25.6': optional: true - '@esbuild/linux-riscv64@0.25.2': + '@esbuild/linux-riscv64@0.25.6': optional: true - '@esbuild/linux-s390x@0.25.2': + '@esbuild/linux-s390x@0.25.6': optional: true - '@esbuild/linux-x64@0.25.2': + '@esbuild/linux-x64@0.25.6': optional: true - '@esbuild/netbsd-arm64@0.25.2': + '@esbuild/netbsd-arm64@0.25.6': optional: true - '@esbuild/netbsd-x64@0.25.2': + '@esbuild/netbsd-x64@0.25.6': optional: true - '@esbuild/openbsd-arm64@0.25.2': + '@esbuild/openbsd-arm64@0.25.6': optional: true - '@esbuild/openbsd-x64@0.25.2': + '@esbuild/openbsd-x64@0.25.6': optional: true - '@esbuild/sunos-x64@0.25.2': + '@esbuild/openharmony-arm64@0.25.6': optional: true - '@esbuild/win32-arm64@0.25.2': + '@esbuild/sunos-x64@0.25.6': optional: true - '@esbuild/win32-ia32@0.25.2': + '@esbuild/win32-arm64@0.25.6': optional: true - '@esbuild/win32-x64@0.25.2': + '@esbuild/win32-ia32@0.25.6': optional: true - '@gerrit0/mini-shiki@3.2.2': + '@esbuild/win32-x64@0.25.6': + optional: true + + '@gerrit0/mini-shiki@3.7.0': dependencies: - '@shikijs/engine-oniguruma': 3.2.1 - '@shikijs/langs': 3.2.1 - '@shikijs/themes': 3.2.1 - '@shikijs/types': 3.2.1 + '@shikijs/engine-oniguruma': 3.7.0 + '@shikijs/langs': 3.7.0 + '@shikijs/themes': 3.7.0 + '@shikijs/types': 3.7.0 '@shikijs/vscode-textmate': 10.0.2 - '@hpcc-js/wasm@2.22.4': + '@inquirer/checkbox@4.1.9(@types/node@22.16.3)': dependencies: - yargs: 17.7.2 - - '@inquirer/checkbox@4.1.4(@types/node@22.13.14)': - dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@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) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/confirm@5.1.8(@types/node@22.13.14)': + '@inquirer/confirm@5.1.13(@types/node@22.16.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/core': 10.1.14(@types/node@22.16.3) + '@inquirer/type': 3.0.7(@types/node@22.16.3) optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/core@10.1.9(@types/node@22.13.14)': + '@inquirer/core@10.1.14(@types/node@22.16.3)': dependencies: - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/figures': 1.0.12 + '@inquirer/type': 3.0.7(@types/node@22.16.3) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -2364,93 +2348,93 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/editor@4.2.9(@types/node@22.13.14)': + '@inquirer/editor@4.2.14(@types/node@22.16.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/core': 10.1.14(@types/node@22.16.3) + '@inquirer/type': 3.0.7(@types/node@22.16.3) external-editor: 3.1.0 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/expand@4.0.11(@types/node@22.13.14)': + '@inquirer/expand@4.0.16(@types/node@22.16.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/core': 10.1.14(@types/node@22.16.3) + '@inquirer/type': 3.0.7(@types/node@22.16.3) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/figures@1.0.11': {} + '@inquirer/figures@1.0.12': {} - '@inquirer/input@4.1.8(@types/node@22.13.14)': + '@inquirer/input@4.2.0(@types/node@22.16.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/core': 10.1.14(@types/node@22.16.3) + '@inquirer/type': 3.0.7(@types/node@22.16.3) optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/number@3.0.11(@types/node@22.13.14)': + '@inquirer/number@3.0.16(@types/node@22.16.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/core': 10.1.14(@types/node@22.16.3) + '@inquirer/type': 3.0.7(@types/node@22.16.3) optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/password@4.0.11(@types/node@22.13.14)': + '@inquirer/password@4.0.16(@types/node@22.16.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/core': 10.1.14(@types/node@22.16.3) + '@inquirer/type': 3.0.7(@types/node@22.16.3) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/prompts@7.4.0(@types/node@22.13.14)': + '@inquirer/prompts@7.6.0(@types/node@22.16.3)': dependencies: - '@inquirer/checkbox': 4.1.4(@types/node@22.13.14) - '@inquirer/confirm': 5.1.8(@types/node@22.13.14) - '@inquirer/editor': 4.2.9(@types/node@22.13.14) - '@inquirer/expand': 4.0.11(@types/node@22.13.14) - '@inquirer/input': 4.1.8(@types/node@22.13.14) - '@inquirer/number': 3.0.11(@types/node@22.13.14) - '@inquirer/password': 4.0.11(@types/node@22.13.14) - '@inquirer/rawlist': 4.0.11(@types/node@22.13.14) - '@inquirer/search': 3.0.11(@types/node@22.13.14) - '@inquirer/select': 4.1.0(@types/node@22.13.14) + '@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) optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/rawlist@4.0.11(@types/node@22.13.14)': + '@inquirer/rawlist@4.1.4(@types/node@22.16.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@inquirer/core': 10.1.14(@types/node@22.16.3) + '@inquirer/type': 3.0.7(@types/node@22.16.3) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/search@3.0.11(@types/node@22.13.14)': + '@inquirer/search@3.0.16(@types/node@22.16.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@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) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/select@4.1.0(@types/node@22.13.14)': + '@inquirer/select@4.2.4(@types/node@22.16.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@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) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 - '@inquirer/type@3.0.5(@types/node@22.13.14)': + '@inquirer/type@3.0.7(@types/node@22.16.3)': optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 '@isaacs/cliui@8.0.2': dependencies: @@ -2463,26 +2447,25 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jridgewell/gen-mapping@0.3.5': + '@jridgewell/gen-mapping@0.3.12': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} + '@jridgewell/sourcemap-codec@1.5.4': {} - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': + '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 + + '@ls-lint/ls-lint@2.3.1': {} '@material/material-color-utilities@0.2.7': {} - '@mswjs/interceptors@0.37.6': + '@mswjs/interceptors@0.39.2': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -2500,92 +2483,122 @@ 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.40.1': + '@rollup/rollup-android-arm-eabi@4.45.0': optional: true - '@rollup/rollup-android-arm64@4.40.1': + '@rollup/rollup-android-arm64@4.45.0': optional: true - '@rollup/rollup-darwin-arm64@4.40.1': + '@rollup/rollup-darwin-arm64@4.45.0': optional: true - '@rollup/rollup-darwin-x64@4.40.1': + '@rollup/rollup-darwin-x64@4.45.0': optional: true - '@rollup/rollup-freebsd-arm64@4.40.1': + '@rollup/rollup-freebsd-arm64@4.45.0': optional: true - '@rollup/rollup-freebsd-x64@4.40.1': + '@rollup/rollup-freebsd-x64@4.45.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.1': + '@rollup/rollup-linux-arm-gnueabihf@4.45.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.1': + '@rollup/rollup-linux-arm-musleabihf@4.45.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.1': + '@rollup/rollup-linux-arm64-gnu@4.45.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.1': + '@rollup/rollup-linux-arm64-musl@4.45.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.1': + '@rollup/rollup-linux-loongarch64-gnu@4.45.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.45.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.1': + '@rollup/rollup-linux-riscv64-gnu@4.45.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.40.1': + '@rollup/rollup-linux-riscv64-musl@4.45.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.40.1': + '@rollup/rollup-linux-s390x-gnu@4.45.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.40.1': + '@rollup/rollup-linux-x64-gnu@4.45.0': optional: true - '@rollup/rollup-linux-x64-musl@4.40.1': + '@rollup/rollup-linux-x64-musl@4.45.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.40.1': + '@rollup/rollup-win32-arm64-msvc@4.45.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.40.1': + '@rollup/rollup-win32-ia32-msvc@4.45.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.40.1': + '@rollup/rollup-win32-x64-msvc@4.45.0': optional: true - '@shikijs/engine-oniguruma@3.2.1': + '@shikijs/engine-oniguruma@3.7.0': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.7.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.2.1': + '@shikijs/langs@3.7.0': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.7.0 - '@shikijs/themes@3.2.1': + '@shikijs/themes@3.7.0': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.7.0 - '@shikijs/types@3.2.1': + '@shikijs/types@3.7.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 '@shikijs/vscode-textmate@10.0.2': {} + '@types/chai@5.2.2': + dependencies: + '@types/deep-eql': 4.0.2 + '@types/cookie@0.6.0': {} - '@types/estree@1.0.7': {} + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.8': {} '@types/hast@3.0.4': dependencies: @@ -2593,24 +2606,24 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 '@types/tough-cookie': 4.0.5 - parse5: 7.2.1 + parse5: 7.3.0 - '@types/node@22.13.14': + '@types/node@22.16.3': dependencies: - undici-types: 6.20.0 + undici-types: 6.21.0 - '@types/statuses@2.0.5': {} + '@types/statuses@2.0.6': {} '@types/tough-cookie@4.0.5': {} '@types/unist@3.0.3': {} - '@vitest/coverage-istanbul@3.0.9(vitest@3.0.9(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(yaml@2.7.1))': + '@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))': dependencies: '@istanbuljs/schema': 0.1.3 - debug: 4.4.0 + debug: 4.4.1 istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 @@ -2619,73 +2632,75 @@ snapshots: magicast: 0.3.5 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.9(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(yaml@2.7.1) + 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) transitivePeerDependencies: - supports-color - '@vitest/expect@3.0.9': + '@vitest/expect@3.2.4': dependencies: - '@vitest/spy': 3.0.9 - '@vitest/utils': 3.0.9 - chai: 5.2.0 + '@types/chai': 5.2.2 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.9(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.3.4(@types/node@22.13.14)(yaml@2.7.1))': + '@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))': dependencies: - '@vitest/spy': 3.0.9 + '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.7.3(@types/node@22.13.14)(typescript@5.8.2) - vite: 6.3.4(@types/node@22.13.14)(yaml@2.7.1) + 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/pretty-format@3.0.9': + '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.9': + '@vitest/runner@3.2.4': dependencies: - '@vitest/utils': 3.0.9 + '@vitest/utils': 3.2.4 pathe: 2.0.3 + strip-literal: 3.0.0 - '@vitest/snapshot@3.0.9': + '@vitest/snapshot@3.2.4': dependencies: - '@vitest/pretty-format': 3.0.9 + '@vitest/pretty-format': 3.2.4 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.0.9': + '@vitest/spy@3.2.4': dependencies: - tinyspy: 3.0.2 + tinyspy: 4.0.3 - '@vitest/utils@3.0.9': + '@vitest/utils@3.2.4': dependencies: - '@vitest/pretty-format': 3.0.9 - loupe: 3.1.3 + '@vitest/pretty-format': 3.2.4 + loupe: 3.1.4 tinyrainbow: 2.0.0 acorn-jsx-walk@2.0.0: {} - acorn-jsx@5.3.2(acorn@8.12.1): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.12.1 + acorn: 8.15.0 - acorn-loose@8.4.0: + acorn-loose@8.5.2: dependencies: - acorn: 8.12.1 + acorn: 8.15.0 - acorn-walk@8.3.3: + acorn-walk@8.3.4: dependencies: - acorn: 8.12.1 + acorn: 8.15.0 - acorn@8.12.1: {} + acorn@8.15.0: {} - agent-base@7.1.3: {} + agent-base@7.1.4: {} ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.1 + fast-uri: 3.0.6 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -2695,7 +2710,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} + ansi-regex@6.1.0: {} ansi-styles@4.3.0: dependencies: @@ -2707,20 +2722,18 @@ snapshots: assertion-error@2.0.1: {} - asynckit@0.4.0: {} - balanced-match@1.0.2: {} brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 - browserslist@4.23.2: + browserslist@4.25.1: dependencies: - caniuse-lite: 1.0.30001642 - electron-to-chromium: 1.4.830 - node-releases: 2.0.17 - update-browserslist-db: 1.1.0(browserslist@4.23.2) + caniuse-lite: 1.0.30001727 + electron-to-chromium: 1.5.182 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.25.1) cac@6.7.14: {} @@ -2741,15 +2754,15 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - caniuse-lite@1.0.30001642: {} + caniuse-lite@1.0.30001727: {} - chai@5.2.0: + chai@5.2.1: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 + loupe: 3.1.4 + pathval: 2.0.1 chalk@4.1.2: dependencies: @@ -2776,11 +2789,7 @@ snapshots: color-name@1.1.4: {} - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - commander@12.1.0: {} + commander@13.1.0: {} compare-versions@6.1.1: {} @@ -2806,9 +2815,9 @@ snapshots: cssfontparser@1.2.1: {} - cssstyle@4.3.0: + cssstyle@4.6.0: dependencies: - '@asamuzakjp/css-color': 3.1.1 + '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 dagre@0.8.5: @@ -2821,11 +2830,11 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - debug@4.4.0: + debug@4.4.1: dependencies: ms: 2.1.3 - decimal.js@10.4.3: {} + decimal.js@10.6.0: {} deep-eql@5.0.2: {} @@ -2835,32 +2844,30 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - delayed-stream@1.0.0: {} - - dependency-cruiser@16.3.10: + dependency-cruiser@16.10.4: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) acorn-jsx-walk: 2.0.0 - acorn-loose: 8.4.0 - acorn-walk: 8.3.3 + acorn-loose: 8.5.2 + acorn-walk: 8.3.4 ajv: 8.17.1 - commander: 12.1.0 - enhanced-resolve: 5.17.1 - ignore: 5.3.1 + commander: 13.1.0 + enhanced-resolve: 5.18.2 + ignore: 7.0.5 interpret: 3.1.1 is-installed-globally: 1.0.0 json5: 2.2.3 - memoize: 10.0.0 - picocolors: 1.0.1 + memoize: 10.1.0 + picocolors: 1.1.1 picomatch: 4.0.2 prompts: 2.4.2 rechoir: 0.8.0 safe-regex: 2.1.1 - semver: 7.7.1 + semver: 7.7.2 teamcity-service-messages: 0.1.14 - tsconfig-paths-webpack-plugin: 4.1.0 - watskeburt: 4.1.0 + tsconfig-paths-webpack-plugin: 4.2.0 + watskeburt: 4.2.3 dunder-proto@1.0.1: dependencies: @@ -2870,69 +2877,65 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.4.830: {} + electron-to-chromium@1.5.182: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - enhanced-resolve@5.17.1: + enhanced-resolve@5.18.2: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.2.2 entities@4.5.0: {} + entities@6.0.1: {} + es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-module-lexer@1.6.0: {} + es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - esbuild@0.25.2: + esbuild@0.25.6: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.2 - '@esbuild/android-arm': 0.25.2 - '@esbuild/android-arm64': 0.25.2 - '@esbuild/android-x64': 0.25.2 - '@esbuild/darwin-arm64': 0.25.2 - '@esbuild/darwin-x64': 0.25.2 - '@esbuild/freebsd-arm64': 0.25.2 - '@esbuild/freebsd-x64': 0.25.2 - '@esbuild/linux-arm': 0.25.2 - '@esbuild/linux-arm64': 0.25.2 - '@esbuild/linux-ia32': 0.25.2 - '@esbuild/linux-loong64': 0.25.2 - '@esbuild/linux-mips64el': 0.25.2 - '@esbuild/linux-ppc64': 0.25.2 - '@esbuild/linux-riscv64': 0.25.2 - '@esbuild/linux-s390x': 0.25.2 - '@esbuild/linux-x64': 0.25.2 - '@esbuild/netbsd-arm64': 0.25.2 - '@esbuild/netbsd-x64': 0.25.2 - '@esbuild/openbsd-arm64': 0.25.2 - '@esbuild/openbsd-x64': 0.25.2 - '@esbuild/sunos-x64': 0.25.2 - '@esbuild/win32-arm64': 0.25.2 - '@esbuild/win32-ia32': 0.25.2 - '@esbuild/win32-x64': 0.25.2 + '@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 - escalade@3.1.2: {} + escalade@3.2.0: {} estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 eventemitter3@3.1.2: {} @@ -2940,7 +2943,7 @@ snapshots: events@3.3.0: {} - expect-type@1.1.0: {} + expect-type@1.2.2: {} external-editor@3.1.0: dependencies: @@ -2950,24 +2953,17 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-uri@3.0.1: {} + fast-uri@3.0.6: {} - fdir@6.4.4(picomatch@4.0.2): + fdir@6.4.6(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 - foreground-child@3.2.1: + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - fsevents@2.3.3: optional: true @@ -2997,19 +2993,17 @@ snapshots: glob@10.4.5: dependencies: - foreground-child: 3.2.1 + foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 - package-json-from-dist: 1.0.0 + package-json-from-dist: 1.0.1 path-scurry: 1.11.1 global-directory@4.0.1: dependencies: ini: 4.1.1 - globals@11.12.0: {} - globrex@0.1.2: {} gopd@1.2.0: {} @@ -3028,7 +3022,7 @@ snapshots: graphology-types: 0.24.8 obliterator: 2.0.5 - graphql@16.9.0: {} + graphql@16.11.0: {} has-flag@4.0.0: {} @@ -3038,10 +3032,6 @@ snapshots: has-symbols@1.1.0: {} - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -3056,21 +3046,21 @@ snapshots: http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.3 - debug: 4.4.0 + agent-base: 7.1.4 + debug: 4.4.1 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.3 - debug: 4.4.0 + agent-base: 7.1.4 + debug: 4.4.1 transitivePeerDependencies: - supports-color - i18next-browser-languagedetector@8.0.4: + i18next-browser-languagedetector@8.2.0: dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.6 i18next-http-backend@2.7.3: dependencies: @@ -3084,19 +3074,19 @@ snapshots: transitivePeerDependencies: - encoding - i18next-korean-postposition-processor@1.0.0(i18next@24.2.3(typescript@5.8.2)): + i18next-korean-postposition-processor@1.0.0(i18next@24.2.3(typescript@5.8.3)): dependencies: - i18next: 24.2.3(typescript@5.8.2) + i18next: 24.2.3(typescript@5.8.3) i18next@22.5.1: dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.6 - i18next@24.2.3(typescript@5.8.2): + i18next@24.2.3(typescript@5.8.3): dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.6 optionalDependencies: - typescript: 5.8.2 + typescript: 5.8.3 iconv-lite@0.4.24: dependencies: @@ -3106,7 +3096,7 @@ snapshots: dependencies: safer-buffer: 2.1.2 - ignore@5.3.1: {} + ignore@7.0.5: {} immediate@3.0.6: {} @@ -3114,21 +3104,21 @@ snapshots: ini@4.1.1: {} - inquirer@12.5.0(@types/node@22.13.14): + inquirer@12.7.0(@types/node@22.16.3): dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.14) - '@inquirer/prompts': 7.4.0(@types/node@22.13.14) - '@inquirer/type': 3.0.5(@types/node@22.13.14) + '@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) ansi-escapes: 4.3.2 mute-stream: 2.0.0 - run-async: 3.0.0 + run-async: 4.0.4 rxjs: 7.8.2 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 interpret@3.1.1: {} - is-core-module@2.15.0: + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -3155,11 +3145,11 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.24.9 - '@babel/parser': 7.27.5 + '@babel/core': 7.28.0 + '@babel/parser': 7.28.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -3171,8 +3161,8 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.0 + '@jridgewell/trace-mapping': 0.3.29 + debug: 4.4.1 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -3195,22 +3185,23 @@ snapshots: js-tokens@4.0.0: {} + js-tokens@9.0.1: {} + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - jsdom@26.0.0: + jsdom@26.1.0: dependencies: - cssstyle: 4.3.0 + cssstyle: 4.6.0 data-urls: 5.0.0 - decimal.js: 10.4.3 - form-data: 4.0.2 + decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.20 - parse5: 7.2.1 + parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -3220,18 +3211,18 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.18.0 + ws: 8.18.3 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - jsesc@2.5.2: {} + jsesc@3.1.0: {} json-schema-traverse@1.0.0: {} - json-stable-stringify@1.2.1: + json-stable-stringify@1.3.0: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 @@ -3252,48 +3243,48 @@ snapshots: kleur@3.0.3: {} - lefthook-darwin-arm64@1.11.6: + lefthook-darwin-arm64@1.12.2: optional: true - lefthook-darwin-x64@1.11.6: + lefthook-darwin-x64@1.12.2: optional: true - lefthook-freebsd-arm64@1.11.6: + lefthook-freebsd-arm64@1.12.2: optional: true - lefthook-freebsd-x64@1.11.6: + lefthook-freebsd-x64@1.12.2: optional: true - lefthook-linux-arm64@1.11.6: + lefthook-linux-arm64@1.12.2: optional: true - lefthook-linux-x64@1.11.6: + lefthook-linux-x64@1.12.2: optional: true - lefthook-openbsd-arm64@1.11.6: + lefthook-openbsd-arm64@1.12.2: optional: true - lefthook-openbsd-x64@1.11.6: + lefthook-openbsd-x64@1.12.2: optional: true - lefthook-windows-arm64@1.11.6: + lefthook-windows-arm64@1.12.2: optional: true - lefthook-windows-x64@1.11.6: + lefthook-windows-x64@1.12.2: optional: true - lefthook@1.11.6: + lefthook@1.12.2: optionalDependencies: - lefthook-darwin-arm64: 1.11.6 - lefthook-darwin-x64: 1.11.6 - lefthook-freebsd-arm64: 1.11.6 - lefthook-freebsd-x64: 1.11.6 - lefthook-linux-arm64: 1.11.6 - lefthook-linux-x64: 1.11.6 - lefthook-openbsd-arm64: 1.11.6 - lefthook-openbsd-x64: 1.11.6 - lefthook-windows-arm64: 1.11.6 - lefthook-windows-x64: 1.11.6 + lefthook-darwin-arm64: 1.12.2 + lefthook-darwin-x64: 1.12.2 + lefthook-freebsd-arm64: 1.12.2 + lefthook-freebsd-x64: 1.12.2 + lefthook-linux-arm64: 1.12.2 + lefthook-linux-x64: 1.12.2 + lefthook-openbsd-arm64: 1.12.2 + lefthook-openbsd-x64: 1.12.2 + lefthook-windows-arm64: 1.12.2 + lefthook-windows-x64: 1.12.2 lie@3.3.0: dependencies: @@ -3305,7 +3296,7 @@ snapshots: lodash@4.17.21: {} - loupe@3.1.3: {} + loupe@3.1.4: {} lru-cache@10.4.3: {} @@ -3317,17 +3308,17 @@ snapshots: magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 magicast@0.3.5: dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.1 source-map-js: 1.2.1 make-dir@4.0.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 markdown-it@14.1.0: dependencies: @@ -3342,16 +3333,10 @@ snapshots: mdurl@2.0.0: {} - memoize@10.0.0: + memoize@10.1.0: dependencies: mimic-function: 5.0.1 - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - mimic-function@5.0.1: {} minimatch@9.0.5: @@ -3368,28 +3353,28 @@ snapshots: ms@2.1.3: {} - msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2): + msw@2.10.4(@types/node@22.16.3)(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.8(@types/node@22.13.14) - '@mswjs/interceptors': 0.37.6 + '@inquirer/confirm': 5.1.13(@types/node@22.16.3) + '@mswjs/interceptors': 0.39.2 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 - '@types/statuses': 2.0.5 - graphql: 16.9.0 + '@types/statuses': 2.0.6 + graphql: 16.11.0 headers-polyfill: 4.0.3 is-node-process: 1.2.0 outvariant: 1.4.3 path-to-regexp: 6.3.0 picocolors: 1.1.1 strict-event-emitter: 0.5.1 - type-fest: 4.26.1 + type-fest: 4.41.0 yargs: 17.7.2 optionalDependencies: - typescript: 5.8.2 + typescript: 5.8.3 transitivePeerDependencies: - '@types/node' @@ -3403,7 +3388,7 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-releases@2.0.17: {} + node-releases@2.0.19: {} nwsapi@2.2.20: {} @@ -3415,15 +3400,26 @@ snapshots: outvariant@1.4.3: {} - package-json-from-dist@1.0.0: {} + 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: {} - papaparse@5.4.1: {} + papaparse@5.5.3: {} - parse5@7.2.1: + parse5@7.3.0: dependencies: - entities: 4.5.0 + entities: 6.0.1 path-key@3.1.1: {} @@ -3438,9 +3434,9 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.0: {} + pathval@2.0.1: {} - phaser3-rex-plugins@1.80.15(graphology-types@0.24.8): + phaser3-rex-plugins@1.80.16(graphology-types@0.24.8): dependencies: dagre: 0.8.5 eventemitter3: 3.1.2 @@ -3449,7 +3445,7 @@ snapshots: i18next-http-backend: 2.7.3 js-yaml: 4.1.0 mustache: 4.2.0 - papaparse: 5.4.1 + papaparse: 5.5.3 webfontloader: 1.6.28 transitivePeerDependencies: - encoding @@ -3457,22 +3453,22 @@ snapshots: phaser3spectorjs@0.0.8: {} - phaser@3.88.2: + phaser@3.90.0: dependencies: eventemitter3: 5.0.1 - picocolors@1.0.1: {} - picocolors@1.1.1: {} picomatch@4.0.2: {} - postcss@8.5.3: + postcss@8.5.6: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + prettier@3.6.2: {} + process-nextick-args@2.0.1: {} prompts@2.4.2: @@ -3480,7 +3476,9 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - psl@1.9.0: {} + psl@1.15.0: + dependencies: + punycode: 2.3.1 punycode.js@2.3.1: {} @@ -3500,9 +3498,7 @@ snapshots: rechoir@0.8.0: dependencies: - resolve: 1.22.8 - - regenerator-runtime@0.14.1: {} + resolve: 1.22.10 regexp-tree@0.1.27: {} @@ -3512,41 +3508,44 @@ snapshots: requires-port@1.0.0: {} - resolve@1.22.8: + resolve@1.22.10: dependencies: - is-core-module: 2.15.0 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - rollup@4.40.1: + rollup@4.45.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.1 - '@rollup/rollup-android-arm64': 4.40.1 - '@rollup/rollup-darwin-arm64': 4.40.1 - '@rollup/rollup-darwin-x64': 4.40.1 - '@rollup/rollup-freebsd-arm64': 4.40.1 - '@rollup/rollup-freebsd-x64': 4.40.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.1 - '@rollup/rollup-linux-arm-musleabihf': 4.40.1 - '@rollup/rollup-linux-arm64-gnu': 4.40.1 - '@rollup/rollup-linux-arm64-musl': 4.40.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.1 - '@rollup/rollup-linux-riscv64-gnu': 4.40.1 - '@rollup/rollup-linux-riscv64-musl': 4.40.1 - '@rollup/rollup-linux-s390x-gnu': 4.40.1 - '@rollup/rollup-linux-x64-gnu': 4.40.1 - '@rollup/rollup-linux-x64-musl': 4.40.1 - '@rollup/rollup-win32-arm64-msvc': 4.40.1 - '@rollup/rollup-win32-ia32-msvc': 4.40.1 - '@rollup/rollup-win32-x64-msvc': 4.40.1 + '@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 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} - run-async@3.0.0: {} + run-async@4.0.4: + dependencies: + oxlint: 1.6.0 + prettier: 3.6.2 rxjs@7.8.2: dependencies: @@ -3566,7 +3565,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.1: {} + semver@7.7.2: {} set-function-length@1.2.2: dependencies: @@ -3595,9 +3594,9 @@ snapshots: stackback@0.0.2: {} - statuses@2.0.1: {} + statuses@2.0.2: {} - std-env@3.8.0: {} + std-env@3.9.0: {} strict-event-emitter@0.5.1: {} @@ -3623,10 +3622,14 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 strip-bom@3.0.0: {} + strip-literal@3.0.0: + dependencies: + js-tokens: 9.0.1 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -3635,7 +3638,7 @@ snapshots: symbol-tree@3.2.4: {} - tapable@2.2.1: {} + tapable@2.2.2: {} teamcity-service-messages@0.1.14: {} @@ -3649,22 +3652,22 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.13: + tinyglobby@0.2.14: dependencies: - fdir: 6.4.4(picomatch@4.0.2) + fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 - tinypool@1.0.2: {} + tinypool@1.1.1: {} tinyrainbow@2.0.0: {} - tinyspy@3.0.2: {} + tinyspy@4.0.3: {} - tldts-core@6.1.85: {} + tldts-core@6.1.86: {} - tldts@6.1.85: + tldts@6.1.86: dependencies: - tldts-core: 6.1.85 + tldts-core: 6.1.86 tmp@0.0.33: dependencies: @@ -3672,29 +3675,30 @@ snapshots: tough-cookie@4.1.4: dependencies: - psl: 1.9.0 + psl: 1.15.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 tough-cookie@5.1.2: dependencies: - tldts: 6.1.85 + tldts: 6.1.86 tr46@0.0.3: {} - tr46@5.1.0: + tr46@5.1.1: dependencies: punycode: 2.3.1 - tsconfck@3.1.1(typescript@5.8.2): + tsconfck@3.1.6(typescript@5.8.3): optionalDependencies: - typescript: 5.8.2 + typescript: 5.8.3 - tsconfig-paths-webpack-plugin@4.1.0: + tsconfig-paths-webpack-plugin@4.2.0: dependencies: chalk: 4.1.2 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.2 + tapable: 2.2.2 tsconfig-paths: 4.2.0 tsconfig-paths@4.2.0: @@ -3707,29 +3711,29 @@ snapshots: type-fest@0.21.3: {} - type-fest@4.26.1: {} + type-fest@4.41.0: {} - typedoc@0.28.1(typescript@5.8.2): + typedoc@0.28.7(typescript@5.8.3): dependencies: - '@gerrit0/mini-shiki': 3.2.2 + '@gerrit0/mini-shiki': 3.7.0 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - typescript: 5.8.2 - yaml: 2.7.1 + typescript: 5.8.3 + yaml: 2.8.0 - typescript@5.8.2: {} + typescript@5.8.3: {} uc.micro@2.1.0: {} - undici-types@6.20.0: {} + undici-types@6.21.0: {} universalify@0.2.0: {} - update-browserslist-db@1.1.0(browserslist@4.23.2): + update-browserslist-db@1.1.3(browserslist@4.25.1): dependencies: - browserslist: 4.23.2 - escalade: 3.1.2 + browserslist: 4.25.1 + escalade: 3.2.0 picocolors: 1.1.1 url-parse@1.5.10: @@ -3739,13 +3743,13 @@ snapshots: util-deprecate@1.0.2: {} - vite-node@3.0.9(@types/node@22.13.14)(yaml@2.7.1): + vite-node@3.2.4(@types/node@22.16.3)(yaml@2.8.0): dependencies: cac: 6.7.14 - debug: 4.4.0 - es-module-lexer: 1.6.0 + debug: 4.4.1 + es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.4(@types/node@22.13.14)(yaml@2.7.1) + vite: 6.3.5(@types/node@22.16.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -3760,60 +3764,63 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.3.4(@types/node@22.13.14)(yaml@2.7.1)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.16.3)(yaml@2.8.0)): dependencies: - debug: 4.4.0 + debug: 4.4.1 globrex: 0.1.2 - tsconfck: 3.1.1(typescript@5.8.2) + tsconfck: 3.1.6(typescript@5.8.3) optionalDependencies: - vite: 6.3.4(@types/node@22.13.14)(yaml@2.7.1) + vite: 6.3.5(@types/node@22.16.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@6.3.4(@types/node@22.13.14)(yaml@2.7.1): + vite@6.3.5(@types/node@22.16.3)(yaml@2.8.0): dependencies: - esbuild: 0.25.2 - fdir: 6.4.4(picomatch@4.0.2) + esbuild: 0.25.6 + fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.40.1 - tinyglobby: 0.2.13 + postcss: 8.5.6 + rollup: 4.45.0 + tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 22.13.14 + '@types/node': 22.16.3 fsevents: 2.3.3 - yaml: 2.7.1 + yaml: 2.8.0 - vitest-canvas-mock@0.3.3(vitest@3.0.9(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(yaml@2.7.1)): + 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)): dependencies: jest-canvas-mock: 2.5.2 - vitest: 3.0.9(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(yaml@2.7.1) + 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.0.9(@types/node@22.13.14)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(yaml@2.7.1): + 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): dependencies: - '@vitest/expect': 3.0.9 - '@vitest/mocker': 3.0.9(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.3.4(@types/node@22.13.14)(yaml@2.7.1)) - '@vitest/pretty-format': 3.0.9 - '@vitest/runner': 3.0.9 - '@vitest/snapshot': 3.0.9 - '@vitest/spy': 3.0.9 - '@vitest/utils': 3.0.9 - chai: 5.2.0 - debug: 4.4.0 - expect-type: 1.1.0 + '@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/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.1 + debug: 4.4.1 + expect-type: 1.2.2 magic-string: 0.30.17 pathe: 2.0.3 - std-env: 3.8.0 + picomatch: 4.0.2 + std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinypool: 1.0.2 + tinyglobby: 0.2.14 + tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.4(@types/node@22.13.14)(yaml@2.7.1) - vite-node: 3.0.9(@types/node@22.13.14)(yaml@2.7.1) + 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) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.13.14 - jsdom: 26.0.0 + '@types/node': 22.16.3 + jsdom: 26.1.0 transitivePeerDependencies: - jiti - less @@ -3832,7 +3839,7 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - watskeburt@4.1.0: {} + watskeburt@4.2.3: {} webfontloader@1.6.28: {} @@ -3848,7 +3855,7 @@ snapshots: whatwg-url@14.2.0: dependencies: - tr46: 5.1.0 + tr46: 5.1.1 webidl-conversions: 7.0.0 whatwg-url@5.0.0: @@ -3883,7 +3890,7 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 - ws@8.18.0: {} + ws@8.18.3: {} xml-name-validator@5.0.0: {} @@ -3893,14 +3900,14 @@ snapshots: yallist@3.1.1: {} - yaml@2.7.1: {} + yaml@2.8.0: {} yargs-parser@21.1.1: {} yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000000..ec73d96e0db --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,6 @@ +onlyBuiltDependencies: + - esbuild + - msw + - lefthook + +shellEmulator: true diff --git a/public/audio/bgm/abyss.mp3 b/public/audio/bgm/abyss.mp3 index 08882ac7e09..778b2cd77e8 100644 Binary files a/public/audio/bgm/abyss.mp3 and b/public/audio/bgm/abyss.mp3 differ diff --git a/public/audio/bgm/battle_legendary_eternatus_p1.mp3 b/public/audio/bgm/battle_legendary_eternatus_p1.mp3 new file mode 100644 index 00000000000..742a3a198c7 Binary files /dev/null and b/public/audio/bgm/battle_legendary_eternatus_p1.mp3 differ diff --git a/public/audio/bgm/battle_legendary_eternatus_p2.mp3 b/public/audio/bgm/battle_legendary_eternatus_p2.mp3 new file mode 100644 index 00000000000..2015e735840 Binary files /dev/null and b/public/audio/bgm/battle_legendary_eternatus_p2.mp3 differ diff --git a/public/fonts/Galmuri11.subset.woff2 b/public/fonts/Galmuri11.subset.woff2 deleted file mode 100644 index 0b626506255..00000000000 Binary files a/public/fonts/Galmuri11.subset.woff2 and /dev/null differ diff --git a/public/fonts/Galmuri9.subset.woff2 b/public/fonts/Galmuri9.subset.woff2 deleted file mode 100644 index 5475af0cdad..00000000000 Binary files a/public/fonts/Galmuri9.subset.woff2 and /dev/null differ diff --git a/public/fonts/item-count.png b/public/fonts/item-count.png index 85cfe88e902..ea6ad8d8ee5 100644 Binary files a/public/fonts/item-count.png and b/public/fonts/item-count.png differ diff --git a/public/fonts/pokemon-bw.ttf b/public/fonts/pokemon-bw.ttf new file mode 100644 index 00000000000..b246be443e2 Binary files /dev/null and b/public/fonts/pokemon-bw.ttf differ diff --git a/public/images/arenas/abyss_a.png b/public/images/arenas/abyss_a.png index 1b3b9d287d3..9bd8f1a9032 100644 Binary files a/public/images/arenas/abyss_a.png and b/public/images/arenas/abyss_a.png differ diff --git a/public/images/arenas/abyss_b.png b/public/images/arenas/abyss_b.png index 2bcf8b6f243..98811c108f2 100644 Binary files a/public/images/arenas/abyss_b.png and b/public/images/arenas/abyss_b.png differ diff --git a/public/images/arenas/abyss_b_1.png b/public/images/arenas/abyss_b_1.png index 24f1340de48..91ab529e898 100644 Binary files a/public/images/arenas/abyss_b_1.png and b/public/images/arenas/abyss_b_1.png differ diff --git a/public/images/arenas/abyss_b_2.png b/public/images/arenas/abyss_b_2.png index 1ba1aa60e59..1a9bd1dc9f4 100644 Binary files a/public/images/arenas/abyss_b_2.png and b/public/images/arenas/abyss_b_2.png differ diff --git a/public/images/arenas/abyss_b_3.png b/public/images/arenas/abyss_b_3.png index 4dddce63274..823c36d6c8b 100644 Binary files a/public/images/arenas/abyss_b_3.png and b/public/images/arenas/abyss_b_3.png differ diff --git a/public/images/arenas/abyss_bg.png b/public/images/arenas/abyss_bg.png index 1abc378806a..224071c0dac 100644 Binary files a/public/images/arenas/abyss_bg.png and b/public/images/arenas/abyss_bg.png differ diff --git a/public/images/arenas/badlands_a.png b/public/images/arenas/badlands_a.png index 2e404d30253..f1118d46310 100644 Binary files a/public/images/arenas/badlands_a.png and b/public/images/arenas/badlands_a.png differ diff --git a/public/images/arenas/badlands_b.png b/public/images/arenas/badlands_b.png index 6232eddfede..355e82883f0 100644 Binary files a/public/images/arenas/badlands_b.png and b/public/images/arenas/badlands_b.png differ diff --git a/public/images/arenas/badlands_b_1.png b/public/images/arenas/badlands_b_1.png index a4cbe062061..f8568ff4163 100644 Binary files a/public/images/arenas/badlands_b_1.png and b/public/images/arenas/badlands_b_1.png differ diff --git a/public/images/arenas/badlands_b_2.png b/public/images/arenas/badlands_b_2.png index 64396591282..21da949a4ce 100644 Binary files a/public/images/arenas/badlands_b_2.png and b/public/images/arenas/badlands_b_2.png differ diff --git a/public/images/arenas/badlands_b_3.png b/public/images/arenas/badlands_b_3.png index ba8553182fd..4ab8d7d5520 100644 Binary files a/public/images/arenas/badlands_b_3.png and b/public/images/arenas/badlands_b_3.png differ diff --git a/public/images/arenas/badlands_bg.png b/public/images/arenas/badlands_bg.png index 71efce424fa..92a8562c21a 100644 Binary files a/public/images/arenas/badlands_bg.png and b/public/images/arenas/badlands_bg.png differ diff --git a/public/images/arenas/beach_a.png b/public/images/arenas/beach_a.png index 90e9189a4be..ea66c2d19d6 100644 Binary files a/public/images/arenas/beach_a.png and b/public/images/arenas/beach_a.png differ diff --git a/public/images/arenas/beach_b.png b/public/images/arenas/beach_b.png index e3b7e31ea96..233fb53358e 100644 Binary files a/public/images/arenas/beach_b.png and b/public/images/arenas/beach_b.png differ diff --git a/public/images/arenas/beach_b_1.png b/public/images/arenas/beach_b_1.png index 1441c75abde..73ad6db675b 100644 Binary files a/public/images/arenas/beach_b_1.png and b/public/images/arenas/beach_b_1.png differ diff --git a/public/images/arenas/beach_b_2.png b/public/images/arenas/beach_b_2.png index 8f79f5b59f2..50c9be97b0d 100644 Binary files a/public/images/arenas/beach_b_2.png and b/public/images/arenas/beach_b_2.png differ diff --git a/public/images/arenas/beach_b_3.png b/public/images/arenas/beach_b_3.png index 45904c68986..c31a4f6b7f6 100644 Binary files a/public/images/arenas/beach_b_3.png and b/public/images/arenas/beach_b_3.png differ diff --git a/public/images/arenas/beach_bg.png b/public/images/arenas/beach_bg.png index b1ee271c7b7..48c81a61336 100644 Binary files a/public/images/arenas/beach_bg.png and b/public/images/arenas/beach_bg.png differ diff --git a/public/images/arenas/cave_a.png b/public/images/arenas/cave_a.png index 23e79a31b43..071546b4411 100644 Binary files a/public/images/arenas/cave_a.png and b/public/images/arenas/cave_a.png differ diff --git a/public/images/arenas/cave_b.png b/public/images/arenas/cave_b.png index 884a2232b66..7b3f53c6465 100644 Binary files a/public/images/arenas/cave_b.png and b/public/images/arenas/cave_b.png differ diff --git a/public/images/arenas/cave_b_1.png b/public/images/arenas/cave_b_1.png index 4e6a3219081..fe9f07f6ebd 100644 Binary files a/public/images/arenas/cave_b_1.png and b/public/images/arenas/cave_b_1.png differ diff --git a/public/images/arenas/cave_b_2.png b/public/images/arenas/cave_b_2.png index cc2bdd98f27..f76560e1f03 100644 Binary files a/public/images/arenas/cave_b_2.png and b/public/images/arenas/cave_b_2.png differ diff --git a/public/images/arenas/cave_b_3.png b/public/images/arenas/cave_b_3.png index d05144c6d1e..346fd5f08e6 100644 Binary files a/public/images/arenas/cave_b_3.png and b/public/images/arenas/cave_b_3.png differ diff --git a/public/images/arenas/cave_bg.png b/public/images/arenas/cave_bg.png index 37f4b9c41ff..24c0462a231 100644 Binary files a/public/images/arenas/cave_bg.png and b/public/images/arenas/cave_bg.png differ diff --git a/public/images/arenas/construction_site_a.png b/public/images/arenas/construction_site_a.png index bbd63269244..8c8ea7d49fb 100644 Binary files a/public/images/arenas/construction_site_a.png and b/public/images/arenas/construction_site_a.png differ diff --git a/public/images/arenas/construction_site_b.png b/public/images/arenas/construction_site_b.png index 51884ff0453..4c1333c12d0 100644 Binary files a/public/images/arenas/construction_site_b.png and b/public/images/arenas/construction_site_b.png differ diff --git a/public/images/arenas/construction_site_b_1.png b/public/images/arenas/construction_site_b_1.png index cc01a5a86d5..4e3e22f1fae 100644 Binary files a/public/images/arenas/construction_site_b_1.png and b/public/images/arenas/construction_site_b_1.png differ diff --git a/public/images/arenas/construction_site_b_2.png b/public/images/arenas/construction_site_b_2.png index b4ad8d154d8..4dc1c383952 100644 Binary files a/public/images/arenas/construction_site_b_2.png and b/public/images/arenas/construction_site_b_2.png differ diff --git a/public/images/arenas/construction_site_b_3.png b/public/images/arenas/construction_site_b_3.png index fd00a05fb9f..484dd7197f4 100644 Binary files a/public/images/arenas/construction_site_b_3.png and b/public/images/arenas/construction_site_b_3.png differ diff --git a/public/images/arenas/construction_site_bg.png b/public/images/arenas/construction_site_bg.png index 79aaaef7cab..ff324a620b1 100644 Binary files a/public/images/arenas/construction_site_bg.png and b/public/images/arenas/construction_site_bg.png differ diff --git a/public/images/arenas/default_bg.png b/public/images/arenas/default_bg.png index 3c1ae88d032..f49ff0de8fa 100644 Binary files a/public/images/arenas/default_bg.png and b/public/images/arenas/default_bg.png differ diff --git a/public/images/arenas/desert_a.png b/public/images/arenas/desert_a.png index 0d8ead8251e..83e5a9d5122 100644 Binary files a/public/images/arenas/desert_a.png and b/public/images/arenas/desert_a.png differ diff --git a/public/images/arenas/desert_b.png b/public/images/arenas/desert_b.png index 85403341266..c03b5fa4d4b 100644 Binary files a/public/images/arenas/desert_b.png and b/public/images/arenas/desert_b.png differ diff --git a/public/images/arenas/desert_b_1.png b/public/images/arenas/desert_b_1.png index 1e8d33d48b7..f1f04caef99 100644 Binary files a/public/images/arenas/desert_b_1.png and b/public/images/arenas/desert_b_1.png differ diff --git a/public/images/arenas/desert_b_2.png b/public/images/arenas/desert_b_2.png index a907372731e..3c0561040c2 100644 Binary files a/public/images/arenas/desert_b_2.png and b/public/images/arenas/desert_b_2.png differ diff --git a/public/images/arenas/desert_b_3.png b/public/images/arenas/desert_b_3.png index 8016fe6c933..101b2bbada5 100644 Binary files a/public/images/arenas/desert_b_3.png and b/public/images/arenas/desert_b_3.png differ diff --git a/public/images/arenas/desert_bg.png b/public/images/arenas/desert_bg.png index 57c00d7bbc5..f4d44e69afc 100644 Binary files a/public/images/arenas/desert_bg.png and b/public/images/arenas/desert_bg.png differ diff --git a/public/images/arenas/dojo_a.png b/public/images/arenas/dojo_a.png index a68acc61a5a..969bd0c09cf 100644 Binary files a/public/images/arenas/dojo_a.png and b/public/images/arenas/dojo_a.png differ diff --git a/public/images/arenas/dojo_b.png b/public/images/arenas/dojo_b.png index 1797a371cf4..4a55429c4ec 100644 Binary files a/public/images/arenas/dojo_b.png and b/public/images/arenas/dojo_b.png differ diff --git a/public/images/arenas/dojo_bg.png b/public/images/arenas/dojo_bg.png index 2a23c835211..c1c9e883627 100644 Binary files a/public/images/arenas/dojo_bg.png and b/public/images/arenas/dojo_bg.png differ diff --git a/public/images/arenas/end_a.png b/public/images/arenas/end_a.png index eeaef65eb7a..06a82254e0c 100644 Binary files a/public/images/arenas/end_a.png and b/public/images/arenas/end_a.png differ diff --git a/public/images/arenas/end_b.png b/public/images/arenas/end_b.png index 37a59201d23..6093d09dd61 100644 Binary files a/public/images/arenas/end_b.png and b/public/images/arenas/end_b.png differ diff --git a/public/images/arenas/end_b_1.png b/public/images/arenas/end_b_1.png index a79e8d0e0ea..2cb508226f0 100644 Binary files a/public/images/arenas/end_b_1.png and b/public/images/arenas/end_b_1.png differ diff --git a/public/images/arenas/end_b_2.png b/public/images/arenas/end_b_2.png index 8753543b8b0..9c66867b5bc 100644 Binary files a/public/images/arenas/end_b_2.png and b/public/images/arenas/end_b_2.png differ diff --git a/public/images/arenas/end_b_3.png b/public/images/arenas/end_b_3.png index 2ce6e372487..3310c9b9c18 100644 Binary files a/public/images/arenas/end_b_3.png and b/public/images/arenas/end_b_3.png differ diff --git a/public/images/arenas/end_bg.png b/public/images/arenas/end_bg.png index 0f821d9e357..0cfae7f7b40 100644 Binary files a/public/images/arenas/end_bg.png and b/public/images/arenas/end_bg.png differ diff --git a/public/images/arenas/factory_a.png b/public/images/arenas/factory_a.png index 7752f08e938..aa1b1024619 100644 Binary files a/public/images/arenas/factory_a.png and b/public/images/arenas/factory_a.png differ diff --git a/public/images/arenas/factory_b.png b/public/images/arenas/factory_b.png index eea4397eac6..31242986bc0 100644 Binary files a/public/images/arenas/factory_b.png and b/public/images/arenas/factory_b.png differ diff --git a/public/images/arenas/factory_b_1.png b/public/images/arenas/factory_b_1.png index 73530a9acbe..c38ffe00b0d 100644 Binary files a/public/images/arenas/factory_b_1.png and b/public/images/arenas/factory_b_1.png differ diff --git a/public/images/arenas/factory_b_2.png b/public/images/arenas/factory_b_2.png index 4b60c243717..0b2347b36c4 100644 Binary files a/public/images/arenas/factory_b_2.png and b/public/images/arenas/factory_b_2.png differ diff --git a/public/images/arenas/factory_b_3.png b/public/images/arenas/factory_b_3.png index 83c0c29f80c..f2bb93128cf 100644 Binary files a/public/images/arenas/factory_b_3.png and b/public/images/arenas/factory_b_3.png differ diff --git a/public/images/arenas/factory_bg.png b/public/images/arenas/factory_bg.png index 1d3b7e7cfd6..5bc8939f3f7 100644 Binary files a/public/images/arenas/factory_bg.png and b/public/images/arenas/factory_bg.png differ diff --git a/public/images/arenas/fairy_cave_a.png b/public/images/arenas/fairy_cave_a.png index f2636d6f601..ffbe4397a9a 100644 Binary files a/public/images/arenas/fairy_cave_a.png and b/public/images/arenas/fairy_cave_a.png differ diff --git a/public/images/arenas/fairy_cave_b.png b/public/images/arenas/fairy_cave_b.png index 5d9f4e8cad0..0afd5cf86a9 100644 Binary files a/public/images/arenas/fairy_cave_b.png and b/public/images/arenas/fairy_cave_b.png differ diff --git a/public/images/arenas/fairy_cave_b_1.png b/public/images/arenas/fairy_cave_b_1.png index e1c86ddfc0e..c30fd89bdf3 100644 Binary files a/public/images/arenas/fairy_cave_b_1.png and b/public/images/arenas/fairy_cave_b_1.png differ diff --git a/public/images/arenas/fairy_cave_b_2.png b/public/images/arenas/fairy_cave_b_2.png index 2b73e8111b7..6738be06508 100644 Binary files a/public/images/arenas/fairy_cave_b_2.png and b/public/images/arenas/fairy_cave_b_2.png differ diff --git a/public/images/arenas/fairy_cave_b_3.png b/public/images/arenas/fairy_cave_b_3.png index 8e0459f94d0..44fe937fe25 100644 Binary files a/public/images/arenas/fairy_cave_b_3.png and b/public/images/arenas/fairy_cave_b_3.png differ diff --git a/public/images/arenas/fairy_cave_bg.png b/public/images/arenas/fairy_cave_bg.png index 0eee1df0796..3282bfc6736 100644 Binary files a/public/images/arenas/fairy_cave_bg.png and b/public/images/arenas/fairy_cave_bg.png differ diff --git a/public/images/arenas/forest_a.png b/public/images/arenas/forest_a.png index a19c6568caa..31cb7947951 100644 Binary files a/public/images/arenas/forest_a.png and b/public/images/arenas/forest_a.png differ diff --git a/public/images/arenas/forest_b.png b/public/images/arenas/forest_b.png index 0fc971d11b3..dcd1981a5e9 100644 Binary files a/public/images/arenas/forest_b.png and b/public/images/arenas/forest_b.png differ diff --git a/public/images/arenas/forest_bg.png b/public/images/arenas/forest_bg.png index 92219224dff..6d9eb8dbee5 100644 Binary files a/public/images/arenas/forest_bg.png and b/public/images/arenas/forest_bg.png differ diff --git a/public/images/arenas/grass_a.png b/public/images/arenas/grass_a.png index 90685819201..f3428ee9f30 100644 Binary files a/public/images/arenas/grass_a.png and b/public/images/arenas/grass_a.png differ diff --git a/public/images/arenas/grass_b.png b/public/images/arenas/grass_b.png index 88a31b5512a..e2056c9cac8 100644 Binary files a/public/images/arenas/grass_b.png and b/public/images/arenas/grass_b.png differ diff --git a/public/images/arenas/grass_bg.png b/public/images/arenas/grass_bg.png index 8ebfa5ae695..490198179d8 100644 Binary files a/public/images/arenas/grass_bg.png and b/public/images/arenas/grass_bg.png differ diff --git a/public/images/arenas/graveyard_a.png b/public/images/arenas/graveyard_a.png index c7ee580dddc..a77cda3f519 100644 Binary files a/public/images/arenas/graveyard_a.png and b/public/images/arenas/graveyard_a.png differ diff --git a/public/images/arenas/graveyard_b.png b/public/images/arenas/graveyard_b.png index e8980bd859c..77a7acd2dd7 100644 Binary files a/public/images/arenas/graveyard_b.png and b/public/images/arenas/graveyard_b.png differ diff --git a/public/images/arenas/graveyard_b_1.png b/public/images/arenas/graveyard_b_1.png index 1d693865691..2e4f524d5bc 100644 Binary files a/public/images/arenas/graveyard_b_1.png and b/public/images/arenas/graveyard_b_1.png differ diff --git a/public/images/arenas/graveyard_b_2.png b/public/images/arenas/graveyard_b_2.png index 7e99aa4a36d..04eec264773 100644 Binary files a/public/images/arenas/graveyard_b_2.png and b/public/images/arenas/graveyard_b_2.png differ diff --git a/public/images/arenas/graveyard_b_3.png b/public/images/arenas/graveyard_b_3.png index b7879e9df36..7e7e174552b 100644 Binary files a/public/images/arenas/graveyard_b_3.png and b/public/images/arenas/graveyard_b_3.png differ diff --git a/public/images/arenas/graveyard_bg.png b/public/images/arenas/graveyard_bg.png index 9beffdc817c..c49c05e0b6f 100644 Binary files a/public/images/arenas/graveyard_bg.png and b/public/images/arenas/graveyard_bg.png differ diff --git a/public/images/arenas/ice_cave_a.png b/public/images/arenas/ice_cave_a.png index 52f2e468e1b..30b1ccc675e 100644 Binary files a/public/images/arenas/ice_cave_a.png and b/public/images/arenas/ice_cave_a.png differ diff --git a/public/images/arenas/ice_cave_b.png b/public/images/arenas/ice_cave_b.png index 684c008b467..63878dbb4e9 100644 Binary files a/public/images/arenas/ice_cave_b.png and b/public/images/arenas/ice_cave_b.png differ diff --git a/public/images/arenas/ice_cave_b_1.png b/public/images/arenas/ice_cave_b_1.png index 8d287a2c526..a28dedb50a8 100644 Binary files a/public/images/arenas/ice_cave_b_1.png and b/public/images/arenas/ice_cave_b_1.png differ diff --git a/public/images/arenas/ice_cave_b_2.png b/public/images/arenas/ice_cave_b_2.png index 675d0e52b8d..d7e6fb1784e 100644 Binary files a/public/images/arenas/ice_cave_b_2.png and b/public/images/arenas/ice_cave_b_2.png differ diff --git a/public/images/arenas/ice_cave_b_3.png b/public/images/arenas/ice_cave_b_3.png index 44e4e25a8e6..f674ab8f796 100644 Binary files a/public/images/arenas/ice_cave_b_3.png and b/public/images/arenas/ice_cave_b_3.png differ diff --git a/public/images/arenas/ice_cave_bg.png b/public/images/arenas/ice_cave_bg.png index 3f3e809e5ed..a9675202932 100644 Binary files a/public/images/arenas/ice_cave_bg.png and b/public/images/arenas/ice_cave_bg.png differ diff --git a/public/images/arenas/island_a.png b/public/images/arenas/island_a.png index e48675aa59b..e57c28dfa82 100644 Binary files a/public/images/arenas/island_a.png and b/public/images/arenas/island_a.png differ diff --git a/public/images/arenas/island_b.png b/public/images/arenas/island_b.png index 53bd4f1fe4c..d2dbe8bf0b1 100644 Binary files a/public/images/arenas/island_b.png and b/public/images/arenas/island_b.png differ diff --git a/public/images/arenas/island_b_1.png b/public/images/arenas/island_b_1.png index 8619e406a3f..bf7f3cb32e1 100644 Binary files a/public/images/arenas/island_b_1.png and b/public/images/arenas/island_b_1.png differ diff --git a/public/images/arenas/island_b_2.png b/public/images/arenas/island_b_2.png index b6dfa077346..a414da194ee 100644 Binary files a/public/images/arenas/island_b_2.png and b/public/images/arenas/island_b_2.png differ diff --git a/public/images/arenas/island_b_3.png b/public/images/arenas/island_b_3.png index 192c06950ae..07595401d2a 100644 Binary files a/public/images/arenas/island_b_3.png and b/public/images/arenas/island_b_3.png differ diff --git a/public/images/arenas/island_bg.png b/public/images/arenas/island_bg.png index 5ecb6d8100d..e05c3afa775 100644 Binary files a/public/images/arenas/island_bg.png and b/public/images/arenas/island_bg.png differ diff --git a/public/images/arenas/jungle_a.png b/public/images/arenas/jungle_a.png index 5501593d9e1..48a801fb65f 100644 Binary files a/public/images/arenas/jungle_a.png and b/public/images/arenas/jungle_a.png differ diff --git a/public/images/arenas/jungle_b.png b/public/images/arenas/jungle_b.png index 29ec524298c..e6f239fda0a 100644 Binary files a/public/images/arenas/jungle_b.png and b/public/images/arenas/jungle_b.png differ diff --git a/public/images/arenas/jungle_b_1.png b/public/images/arenas/jungle_b_1.png index 462bd0df264..e1f45c38e85 100644 Binary files a/public/images/arenas/jungle_b_1.png and b/public/images/arenas/jungle_b_1.png differ diff --git a/public/images/arenas/jungle_b_2.png b/public/images/arenas/jungle_b_2.png index 1a395af55ae..dfcfa355960 100644 Binary files a/public/images/arenas/jungle_b_2.png and b/public/images/arenas/jungle_b_2.png differ diff --git a/public/images/arenas/jungle_b_3.png b/public/images/arenas/jungle_b_3.png index e579f4013ce..5bb08ec72e4 100644 Binary files a/public/images/arenas/jungle_b_3.png and b/public/images/arenas/jungle_b_3.png differ diff --git a/public/images/arenas/jungle_bg.png b/public/images/arenas/jungle_bg.png index ff2cda1c9da..e03de2a3223 100644 Binary files a/public/images/arenas/jungle_bg.png and b/public/images/arenas/jungle_bg.png differ diff --git a/public/images/arenas/laboratory_a.png b/public/images/arenas/laboratory_a.png index 628a6919ebb..56f080f49fb 100644 Binary files a/public/images/arenas/laboratory_a.png and b/public/images/arenas/laboratory_a.png differ diff --git a/public/images/arenas/laboratory_b.png b/public/images/arenas/laboratory_b.png index eabd398bada..7948b89f072 100644 Binary files a/public/images/arenas/laboratory_b.png and b/public/images/arenas/laboratory_b.png differ diff --git a/public/images/arenas/laboratory_b_1.png b/public/images/arenas/laboratory_b_1.png index b3ee7875943..57786e6b224 100644 Binary files a/public/images/arenas/laboratory_b_1.png and b/public/images/arenas/laboratory_b_1.png differ diff --git a/public/images/arenas/laboratory_b_2.png b/public/images/arenas/laboratory_b_2.png index 66ce17d947b..fcd945b8b86 100644 Binary files a/public/images/arenas/laboratory_b_2.png and b/public/images/arenas/laboratory_b_2.png differ diff --git a/public/images/arenas/laboratory_b_3.png b/public/images/arenas/laboratory_b_3.png index 99b23e95a1f..e2538fbef77 100644 Binary files a/public/images/arenas/laboratory_b_3.png and b/public/images/arenas/laboratory_b_3.png differ diff --git a/public/images/arenas/laboratory_bg.png b/public/images/arenas/laboratory_bg.png index 331e15f8db7..0e64877c0b6 100644 Binary files a/public/images/arenas/laboratory_bg.png and b/public/images/arenas/laboratory_bg.png differ diff --git a/public/images/arenas/lake_a.png b/public/images/arenas/lake_a.png index 6ca45fb4101..cce0a61a5f6 100644 Binary files a/public/images/arenas/lake_a.png and b/public/images/arenas/lake_a.png differ diff --git a/public/images/arenas/lake_b.png b/public/images/arenas/lake_b.png index c1c81f2b29c..c24893a1392 100644 Binary files a/public/images/arenas/lake_b.png and b/public/images/arenas/lake_b.png differ diff --git a/public/images/arenas/lake_b_1.png b/public/images/arenas/lake_b_1.png index be6db3451a8..5426dd1e8d9 100644 Binary files a/public/images/arenas/lake_b_1.png and b/public/images/arenas/lake_b_1.png differ diff --git a/public/images/arenas/lake_b_2.png b/public/images/arenas/lake_b_2.png index ee8af5049c3..b08ccd7b8e4 100644 Binary files a/public/images/arenas/lake_b_2.png and b/public/images/arenas/lake_b_2.png differ diff --git a/public/images/arenas/lake_b_3.png b/public/images/arenas/lake_b_3.png index f0cf92f5389..aff06718ecb 100644 Binary files a/public/images/arenas/lake_b_3.png and b/public/images/arenas/lake_b_3.png differ diff --git a/public/images/arenas/lake_bg.png b/public/images/arenas/lake_bg.png index 547d30782c2..15d8348e20c 100644 Binary files a/public/images/arenas/lake_bg.png and b/public/images/arenas/lake_bg.png differ diff --git a/public/images/arenas/loading_bg.png b/public/images/arenas/loading_bg.png index 79c249f6879..2ed3ca2333b 100644 Binary files a/public/images/arenas/loading_bg.png and b/public/images/arenas/loading_bg.png differ diff --git a/public/images/arenas/meadow_a.png b/public/images/arenas/meadow_a.png index 1069d0fab93..549ddadc549 100644 Binary files a/public/images/arenas/meadow_a.png and b/public/images/arenas/meadow_a.png differ diff --git a/public/images/arenas/meadow_b.png b/public/images/arenas/meadow_b.png index 50db0026271..42bbe50606f 100644 Binary files a/public/images/arenas/meadow_b.png and b/public/images/arenas/meadow_b.png differ diff --git a/public/images/arenas/meadow_b_1.png b/public/images/arenas/meadow_b_1.png index 82dbbdcda86..fcd599c9477 100644 Binary files a/public/images/arenas/meadow_b_1.png and b/public/images/arenas/meadow_b_1.png differ diff --git a/public/images/arenas/meadow_b_2.png b/public/images/arenas/meadow_b_2.png index 547e0a2b8a7..23a075e9215 100644 Binary files a/public/images/arenas/meadow_b_2.png and b/public/images/arenas/meadow_b_2.png differ diff --git a/public/images/arenas/meadow_b_3.png b/public/images/arenas/meadow_b_3.png index 5a763e19b0e..493ea6d0b78 100644 Binary files a/public/images/arenas/meadow_b_3.png and b/public/images/arenas/meadow_b_3.png differ diff --git a/public/images/arenas/meadow_bg.png b/public/images/arenas/meadow_bg.png index 8f4bbc5655c..7463051755e 100644 Binary files a/public/images/arenas/meadow_bg.png and b/public/images/arenas/meadow_bg.png differ diff --git a/public/images/arenas/metropolis_a.png b/public/images/arenas/metropolis_a.png index 5a51c500702..cbb1a17c7e9 100644 Binary files a/public/images/arenas/metropolis_a.png and b/public/images/arenas/metropolis_a.png differ diff --git a/public/images/arenas/metropolis_b.png b/public/images/arenas/metropolis_b.png index 638899f3e53..6ae764af398 100644 Binary files a/public/images/arenas/metropolis_b.png and b/public/images/arenas/metropolis_b.png differ diff --git a/public/images/arenas/metropolis_b_1.png b/public/images/arenas/metropolis_b_1.png index 6e543b4c55e..52a0df3a7f9 100644 Binary files a/public/images/arenas/metropolis_b_1.png and b/public/images/arenas/metropolis_b_1.png differ diff --git a/public/images/arenas/metropolis_b_2.png b/public/images/arenas/metropolis_b_2.png index bc609ddb300..8402a90a42d 100644 Binary files a/public/images/arenas/metropolis_b_2.png and b/public/images/arenas/metropolis_b_2.png differ diff --git a/public/images/arenas/metropolis_b_3.png b/public/images/arenas/metropolis_b_3.png index c29a3b7bb7c..7e8f9e7b825 100644 Binary files a/public/images/arenas/metropolis_b_3.png and b/public/images/arenas/metropolis_b_3.png differ diff --git a/public/images/arenas/metropolis_bg.png b/public/images/arenas/metropolis_bg.png index b84c5aa494d..374744f245e 100644 Binary files a/public/images/arenas/metropolis_bg.png and b/public/images/arenas/metropolis_bg.png differ diff --git a/public/images/arenas/mountain_a.png b/public/images/arenas/mountain_a.png index f3896fb409f..7f539ba0a7a 100644 Binary files a/public/images/arenas/mountain_a.png and b/public/images/arenas/mountain_a.png differ diff --git a/public/images/arenas/mountain_b.png b/public/images/arenas/mountain_b.png index 99b4399b1f3..9c970e74180 100644 Binary files a/public/images/arenas/mountain_b.png and b/public/images/arenas/mountain_b.png differ diff --git a/public/images/arenas/mountain_b_1.png b/public/images/arenas/mountain_b_1.png index aa7c1209f5a..1f895b64aec 100644 Binary files a/public/images/arenas/mountain_b_1.png and b/public/images/arenas/mountain_b_1.png differ diff --git a/public/images/arenas/mountain_b_2.png b/public/images/arenas/mountain_b_2.png index 377c3b16b23..9f60c9e15d7 100644 Binary files a/public/images/arenas/mountain_b_2.png and b/public/images/arenas/mountain_b_2.png differ diff --git a/public/images/arenas/mountain_b_3.png b/public/images/arenas/mountain_b_3.png index ba44117634a..55e892377cd 100644 Binary files a/public/images/arenas/mountain_b_3.png and b/public/images/arenas/mountain_b_3.png differ diff --git a/public/images/arenas/mountain_bg.png b/public/images/arenas/mountain_bg.png index 972a08a8695..102f331bcf9 100644 Binary files a/public/images/arenas/mountain_bg.png and b/public/images/arenas/mountain_bg.png differ diff --git a/public/images/arenas/plains_a.png b/public/images/arenas/plains_a.png index ada3c63ccd8..49a36b80844 100644 Binary files a/public/images/arenas/plains_a.png and b/public/images/arenas/plains_a.png differ diff --git a/public/images/arenas/plains_b.png b/public/images/arenas/plains_b.png index b75b9825b21..85e3439fb12 100644 Binary files a/public/images/arenas/plains_b.png and b/public/images/arenas/plains_b.png differ diff --git a/public/images/arenas/plains_b_1.png b/public/images/arenas/plains_b_1.png new file mode 100644 index 00000000000..4e4a0a46164 Binary files /dev/null and b/public/images/arenas/plains_b_1.png differ diff --git a/public/images/arenas/plains_b_2.png b/public/images/arenas/plains_b_2.png new file mode 100644 index 00000000000..a35dbec9917 Binary files /dev/null and b/public/images/arenas/plains_b_2.png differ diff --git a/public/images/arenas/plains_b_3.png b/public/images/arenas/plains_b_3.png new file mode 100644 index 00000000000..f61b9206a46 Binary files /dev/null and b/public/images/arenas/plains_b_3.png differ diff --git a/public/images/arenas/plains_bg.png b/public/images/arenas/plains_bg.png index 7815fd8843f..f2cbec9197c 100644 Binary files a/public/images/arenas/plains_bg.png and b/public/images/arenas/plains_bg.png differ diff --git a/public/images/arenas/power_plant_a.png b/public/images/arenas/power_plant_a.png index 15f7970d726..f5e99d62b3b 100644 Binary files a/public/images/arenas/power_plant_a.png and b/public/images/arenas/power_plant_a.png differ diff --git a/public/images/arenas/power_plant_b.png b/public/images/arenas/power_plant_b.png index 67fa01426c9..9f6647adf8d 100644 Binary files a/public/images/arenas/power_plant_b.png and b/public/images/arenas/power_plant_b.png differ diff --git a/public/images/arenas/power_plant_b_1.png b/public/images/arenas/power_plant_b_1.png index 43c4979214f..c97baf92450 100644 Binary files a/public/images/arenas/power_plant_b_1.png and b/public/images/arenas/power_plant_b_1.png differ diff --git a/public/images/arenas/power_plant_b_2.png b/public/images/arenas/power_plant_b_2.png index 1cecfa0e56a..cb8cdddc9cc 100644 Binary files a/public/images/arenas/power_plant_b_2.png and b/public/images/arenas/power_plant_b_2.png differ diff --git a/public/images/arenas/power_plant_b_3.png b/public/images/arenas/power_plant_b_3.png index 25d75ff53ed..228060e3a8d 100644 Binary files a/public/images/arenas/power_plant_b_3.png and b/public/images/arenas/power_plant_b_3.png differ diff --git a/public/images/arenas/power_plant_bg.png b/public/images/arenas/power_plant_bg.png index 578f2a141d4..f0a91431a04 100644 Binary files a/public/images/arenas/power_plant_bg.png and b/public/images/arenas/power_plant_bg.png differ diff --git a/public/images/arenas/ruins_a.png b/public/images/arenas/ruins_a.png index b264c82b452..e24bc129809 100644 Binary files a/public/images/arenas/ruins_a.png and b/public/images/arenas/ruins_a.png differ diff --git a/public/images/arenas/ruins_b.png b/public/images/arenas/ruins_b.png index 88a0c3f87d9..c019f4d0317 100644 Binary files a/public/images/arenas/ruins_b.png and b/public/images/arenas/ruins_b.png differ diff --git a/public/images/arenas/ruins_b_1.png b/public/images/arenas/ruins_b_1.png index 548b9266866..dd6643f5f36 100644 Binary files a/public/images/arenas/ruins_b_1.png and b/public/images/arenas/ruins_b_1.png differ diff --git a/public/images/arenas/ruins_b_2.png b/public/images/arenas/ruins_b_2.png index 4b2393cf886..f14eac400be 100644 Binary files a/public/images/arenas/ruins_b_2.png and b/public/images/arenas/ruins_b_2.png differ diff --git a/public/images/arenas/ruins_b_3.png b/public/images/arenas/ruins_b_3.png index b15755d0d81..bc34b12fe10 100644 Binary files a/public/images/arenas/ruins_b_3.png and b/public/images/arenas/ruins_b_3.png differ diff --git a/public/images/arenas/ruins_bg.png b/public/images/arenas/ruins_bg.png index 7e6448e14ef..616c586c8c6 100644 Binary files a/public/images/arenas/ruins_bg.png and b/public/images/arenas/ruins_bg.png differ diff --git a/public/images/arenas/sea_a.png b/public/images/arenas/sea_a.png index ef93c3159d5..05cc9c2880d 100644 Binary files a/public/images/arenas/sea_a.png and b/public/images/arenas/sea_a.png differ diff --git a/public/images/arenas/sea_b.png b/public/images/arenas/sea_b.png index 17081770fb6..31984c870ab 100644 Binary files a/public/images/arenas/sea_b.png and b/public/images/arenas/sea_b.png differ diff --git a/public/images/arenas/sea_bg.png b/public/images/arenas/sea_bg.png index 65c48634fc7..9ab7445681f 100644 Binary files a/public/images/arenas/sea_bg.png and b/public/images/arenas/sea_bg.png differ diff --git a/public/images/arenas/seabed_a.png b/public/images/arenas/seabed_a.png index b6a854e7807..f4f5408e218 100644 Binary files a/public/images/arenas/seabed_a.png and b/public/images/arenas/seabed_a.png differ diff --git a/public/images/arenas/seabed_b.png b/public/images/arenas/seabed_b.png index a9ded4f54a2..6743c67ea87 100644 Binary files a/public/images/arenas/seabed_b.png and b/public/images/arenas/seabed_b.png differ diff --git a/public/images/arenas/seabed_b_1.png b/public/images/arenas/seabed_b_1.png index e71de87d194..c913d219bc4 100644 Binary files a/public/images/arenas/seabed_b_1.png and b/public/images/arenas/seabed_b_1.png differ diff --git a/public/images/arenas/seabed_b_2.png b/public/images/arenas/seabed_b_2.png index e0a87d6a4b7..33eb117a70c 100644 Binary files a/public/images/arenas/seabed_b_2.png and b/public/images/arenas/seabed_b_2.png differ diff --git a/public/images/arenas/seabed_b_3.png b/public/images/arenas/seabed_b_3.png index 868c9951f2b..5389076edd9 100644 Binary files a/public/images/arenas/seabed_b_3.png and b/public/images/arenas/seabed_b_3.png differ diff --git a/public/images/arenas/seabed_bg.png b/public/images/arenas/seabed_bg.png index 9d3ea46a681..38b28453362 100644 Binary files a/public/images/arenas/seabed_bg.png and b/public/images/arenas/seabed_bg.png differ diff --git a/public/images/arenas/slum_a.png b/public/images/arenas/slum_a.png index 4756d7acfed..4230b89abd8 100644 Binary files a/public/images/arenas/slum_a.png and b/public/images/arenas/slum_a.png differ diff --git a/public/images/arenas/slum_b.png b/public/images/arenas/slum_b.png index 38bdadae526..82a36473ae4 100644 Binary files a/public/images/arenas/slum_b.png and b/public/images/arenas/slum_b.png differ diff --git a/public/images/arenas/slum_bg.png b/public/images/arenas/slum_bg.png index f3c39504204..ad2cf0e2951 100644 Binary files a/public/images/arenas/slum_bg.png and b/public/images/arenas/slum_bg.png differ diff --git a/public/images/arenas/snowy_forest_a.png b/public/images/arenas/snowy_forest_a.png index c44abbbce51..b1a049543ae 100644 Binary files a/public/images/arenas/snowy_forest_a.png and b/public/images/arenas/snowy_forest_a.png differ diff --git a/public/images/arenas/snowy_forest_b.png b/public/images/arenas/snowy_forest_b.png index e4ae9f4b180..e1675300279 100644 Binary files a/public/images/arenas/snowy_forest_b.png and b/public/images/arenas/snowy_forest_b.png differ diff --git a/public/images/arenas/snowy_forest_b_1.png b/public/images/arenas/snowy_forest_b_1.png index f47f4f91508..1631722b6e1 100644 Binary files a/public/images/arenas/snowy_forest_b_1.png and b/public/images/arenas/snowy_forest_b_1.png differ diff --git a/public/images/arenas/snowy_forest_b_2.png b/public/images/arenas/snowy_forest_b_2.png index 5bc27fc5161..aea120be719 100644 Binary files a/public/images/arenas/snowy_forest_b_2.png and b/public/images/arenas/snowy_forest_b_2.png differ diff --git a/public/images/arenas/snowy_forest_b_3.png b/public/images/arenas/snowy_forest_b_3.png index 521870232de..14c8f4c64aa 100644 Binary files a/public/images/arenas/snowy_forest_b_3.png and b/public/images/arenas/snowy_forest_b_3.png differ diff --git a/public/images/arenas/snowy_forest_bg.png b/public/images/arenas/snowy_forest_bg.png index c449ddb32ee..b0dcc3ddfc5 100644 Binary files a/public/images/arenas/snowy_forest_bg.png and b/public/images/arenas/snowy_forest_bg.png differ diff --git a/public/images/arenas/space_a.png b/public/images/arenas/space_a.png index 8176fd9217c..dbf5c18ecc3 100644 Binary files a/public/images/arenas/space_a.png and b/public/images/arenas/space_a.png differ diff --git a/public/images/arenas/space_b.png b/public/images/arenas/space_b.png index 1be1c0c5309..42cc73943d8 100644 Binary files a/public/images/arenas/space_b.png and b/public/images/arenas/space_b.png differ diff --git a/public/images/arenas/space_bg.png b/public/images/arenas/space_bg.png index a83db0fc6ff..4fdd53348c6 100644 Binary files a/public/images/arenas/space_bg.png and b/public/images/arenas/space_bg.png differ diff --git a/public/images/arenas/swamp_a.png b/public/images/arenas/swamp_a.png index ea037b85b9c..731092a2fe3 100644 Binary files a/public/images/arenas/swamp_a.png and b/public/images/arenas/swamp_a.png differ diff --git a/public/images/arenas/swamp_b.png b/public/images/arenas/swamp_b.png index 3e8f5f308e5..3a571027e3c 100644 Binary files a/public/images/arenas/swamp_b.png and b/public/images/arenas/swamp_b.png differ diff --git a/public/images/arenas/swamp_bg.png b/public/images/arenas/swamp_bg.png index 52cf79213e9..b48b72bed9f 100644 Binary files a/public/images/arenas/swamp_bg.png and b/public/images/arenas/swamp_bg.png differ diff --git a/public/images/arenas/tall_grass_a.png b/public/images/arenas/tall_grass_a.png index 5fa1421903d..8078351eaaa 100644 Binary files a/public/images/arenas/tall_grass_a.png and b/public/images/arenas/tall_grass_a.png differ diff --git a/public/images/arenas/tall_grass_b.png b/public/images/arenas/tall_grass_b.png index 39d23a2247f..a1b405fbf0c 100644 Binary files a/public/images/arenas/tall_grass_b.png and b/public/images/arenas/tall_grass_b.png differ diff --git a/public/images/arenas/tall_grass_bg.png b/public/images/arenas/tall_grass_bg.png index ea8e31d0e75..d76a0b4a4a6 100644 Binary files a/public/images/arenas/tall_grass_bg.png and b/public/images/arenas/tall_grass_bg.png differ diff --git a/public/images/arenas/temple_a.png b/public/images/arenas/temple_a.png index aa6b3b2eb55..245131d9ae1 100644 Binary files a/public/images/arenas/temple_a.png and b/public/images/arenas/temple_a.png differ diff --git a/public/images/arenas/temple_b.png b/public/images/arenas/temple_b.png index 07d4c2b86bb..cb910289119 100644 Binary files a/public/images/arenas/temple_b.png and b/public/images/arenas/temple_b.png differ diff --git a/public/images/arenas/temple_b_1.png b/public/images/arenas/temple_b_1.png index 971a890c8a3..ed7f6c9d3d6 100644 Binary files a/public/images/arenas/temple_b_1.png and b/public/images/arenas/temple_b_1.png differ diff --git a/public/images/arenas/temple_b_2.png b/public/images/arenas/temple_b_2.png index 30ab5653742..7e864271eaa 100644 Binary files a/public/images/arenas/temple_b_2.png and b/public/images/arenas/temple_b_2.png differ diff --git a/public/images/arenas/temple_b_3.png b/public/images/arenas/temple_b_3.png index 3ea8793526b..3d3c93b5d56 100644 Binary files a/public/images/arenas/temple_b_3.png and b/public/images/arenas/temple_b_3.png differ diff --git a/public/images/arenas/temple_bg.png b/public/images/arenas/temple_bg.png index 9296648d836..0510ff86bb0 100644 Binary files a/public/images/arenas/temple_bg.png and b/public/images/arenas/temple_bg.png differ diff --git a/public/images/arenas/town_a.png b/public/images/arenas/town_a.png index faeea0c4aee..0837806c678 100644 Binary files a/public/images/arenas/town_a.png and b/public/images/arenas/town_a.png differ diff --git a/public/images/arenas/town_b.png b/public/images/arenas/town_b.png index 10db2998a36..f1de28f625a 100644 Binary files a/public/images/arenas/town_b.png and b/public/images/arenas/town_b.png differ diff --git a/public/images/arenas/town_bg.png b/public/images/arenas/town_bg.png index e1dc5a9363e..b2f035135cc 100644 Binary files a/public/images/arenas/town_bg.png and b/public/images/arenas/town_bg.png differ diff --git a/public/images/arenas/volcano_a.png b/public/images/arenas/volcano_a.png index ab98acabda2..ecf086689cc 100644 Binary files a/public/images/arenas/volcano_a.png and b/public/images/arenas/volcano_a.png differ diff --git a/public/images/arenas/volcano_b.png b/public/images/arenas/volcano_b.png index 5a5b27d623c..f995e5b8c9b 100644 Binary files a/public/images/arenas/volcano_b.png and b/public/images/arenas/volcano_b.png differ diff --git a/public/images/arenas/volcano_b_1.png b/public/images/arenas/volcano_b_1.png index 0d6c291620d..68558800f9f 100644 Binary files a/public/images/arenas/volcano_b_1.png and b/public/images/arenas/volcano_b_1.png differ diff --git a/public/images/arenas/volcano_b_2.png b/public/images/arenas/volcano_b_2.png index 30677ca16af..3bef9ff5ae4 100644 Binary files a/public/images/arenas/volcano_b_2.png and b/public/images/arenas/volcano_b_2.png differ diff --git a/public/images/arenas/volcano_b_3.png b/public/images/arenas/volcano_b_3.png index 5b0401ebfde..ba4e493cd7e 100644 Binary files a/public/images/arenas/volcano_b_3.png and b/public/images/arenas/volcano_b_3.png differ diff --git a/public/images/arenas/volcano_bg.png b/public/images/arenas/volcano_bg.png index bb72170f70e..7c4d9d9e962 100644 Binary files a/public/images/arenas/volcano_bg.png and b/public/images/arenas/volcano_bg.png differ diff --git a/public/images/arenas/wasteland_a.png b/public/images/arenas/wasteland_a.png index 7a88f33feef..61e33b93c60 100644 Binary files a/public/images/arenas/wasteland_a.png and b/public/images/arenas/wasteland_a.png differ diff --git a/public/images/arenas/wasteland_b.png b/public/images/arenas/wasteland_b.png index 38234d4140a..6ac4a317b17 100644 Binary files a/public/images/arenas/wasteland_b.png and b/public/images/arenas/wasteland_b.png differ diff --git a/public/images/arenas/wasteland_b_1.png b/public/images/arenas/wasteland_b_1.png index 6cf27c532cd..d10a7f27699 100644 Binary files a/public/images/arenas/wasteland_b_1.png and b/public/images/arenas/wasteland_b_1.png differ diff --git a/public/images/arenas/wasteland_b_2.png b/public/images/arenas/wasteland_b_2.png index 1f5f23a86cd..e4102a19ce6 100644 Binary files a/public/images/arenas/wasteland_b_2.png and b/public/images/arenas/wasteland_b_2.png differ diff --git a/public/images/arenas/wasteland_b_3.png b/public/images/arenas/wasteland_b_3.png index b5329ada69b..cdc5a2bdd50 100644 Binary files a/public/images/arenas/wasteland_b_3.png and b/public/images/arenas/wasteland_b_3.png differ diff --git a/public/images/arenas/wasteland_bg.png b/public/images/arenas/wasteland_bg.png index 3c321a8568e..f1a94e1e22d 100644 Binary files a/public/images/arenas/wasteland_bg.png and b/public/images/arenas/wasteland_bg.png differ diff --git a/public/images/battle_anims/003-Attack01.png b/public/images/battle_anims/003-Attack01.png index 870fb592852..2b249874d6a 100644 Binary files a/public/images/battle_anims/003-Attack01.png and b/public/images/battle_anims/003-Attack01.png differ diff --git a/public/images/battle_anims/004-Attack02.png b/public/images/battle_anims/004-Attack02.png index e60f3cfc46f..061aa9dd706 100644 Binary files a/public/images/battle_anims/004-Attack02.png and b/public/images/battle_anims/004-Attack02.png differ diff --git a/public/images/battle_anims/007-Weapon02.png b/public/images/battle_anims/007-Weapon02.png index aab407081f7..e76da15bf4c 100644 Binary files a/public/images/battle_anims/007-Weapon02.png and b/public/images/battle_anims/007-Weapon02.png differ diff --git a/public/images/battle_anims/029-Emotion01.png b/public/images/battle_anims/029-Emotion01.png index 3fe970fb4ea..40d67887d00 100644 Binary files a/public/images/battle_anims/029-Emotion01.png and b/public/images/battle_anims/029-Emotion01.png differ diff --git a/public/images/battle_anims/Anima (2).png b/public/images/battle_anims/Anima (2).png index f4651241e03..c51c95c483e 100644 Binary files a/public/images/battle_anims/Anima (2).png and b/public/images/battle_anims/Anima (2).png differ diff --git a/public/images/battle_anims/GEN8- Aura Wheel Ally.png b/public/images/battle_anims/GEN8- Aura Wheel Ally.png index 97243d3f121..3c506b190b8 100644 Binary files a/public/images/battle_anims/GEN8- Aura Wheel Ally.png and b/public/images/battle_anims/GEN8- Aura Wheel Ally.png differ diff --git a/public/images/battle_anims/GEN8- Aura Wheel Opp.png b/public/images/battle_anims/GEN8- Aura Wheel Opp.png index 516b015f384..9849b68422e 100644 Binary files a/public/images/battle_anims/GEN8- Aura Wheel Opp.png and b/public/images/battle_anims/GEN8- Aura Wheel Opp.png differ diff --git a/public/images/battle_anims/GEN8- Behemoth Bash Sword.png b/public/images/battle_anims/GEN8- Behemoth Bash Sword.png index bfa2a645b5d..91677023868 100644 Binary files a/public/images/battle_anims/GEN8- Behemoth Bash Sword.png and b/public/images/battle_anims/GEN8- Behemoth Bash Sword.png differ diff --git a/public/images/battle_anims/GEN8- Fiery.png b/public/images/battle_anims/GEN8- Fiery.png index 329a0663c0e..51abe55cf88 100644 Binary files a/public/images/battle_anims/GEN8- Fiery.png and b/public/images/battle_anims/GEN8- Fiery.png differ diff --git a/public/images/battle_anims/GEN8- No Retreat.png b/public/images/battle_anims/GEN8- No Retreat.png index fa4f45c9bd8..42bf8eb6eda 100644 Binary files a/public/images/battle_anims/GEN8- No Retreat.png and b/public/images/battle_anims/GEN8- No Retreat.png differ diff --git a/public/images/battle_anims/GEN8- PrimalGroudon2.png b/public/images/battle_anims/GEN8- PrimalGroudon2.png index 781e38e77fc..dcb704c3f9a 100644 Binary files a/public/images/battle_anims/GEN8- PrimalGroudon2.png and b/public/images/battle_anims/GEN8- PrimalGroudon2.png differ diff --git a/public/images/battle_anims/GEN8- PrimalKyogre2.png b/public/images/battle_anims/GEN8- PrimalKyogre2.png index 120f9ecf67f..b4581bdeadb 100644 Binary files a/public/images/battle_anims/GEN8- PrimalKyogre2.png and b/public/images/battle_anims/GEN8- PrimalKyogre2.png differ diff --git a/public/images/battle_anims/GEN8- UltraBurst2.png b/public/images/battle_anims/GEN8- UltraBurst2.png index d0f33ea0d22..37a48d24a6c 100644 Binary files a/public/images/battle_anims/GEN8- UltraBurst2.png and b/public/images/battle_anims/GEN8- UltraBurst2.png differ diff --git a/public/images/battle_anims/Gen9- Bitter Blade.png b/public/images/battle_anims/Gen9- Bitter Blade.png index 763d4fcc063..7733e521b39 100644 Binary files a/public/images/battle_anims/Gen9- Bitter Blade.png and b/public/images/battle_anims/Gen9- Bitter Blade.png differ diff --git a/public/images/battle_anims/Light1.png b/public/images/battle_anims/Light1.png index 78e278fdcef..36af8bb5060 100644 Binary files a/public/images/battle_anims/Light1.png and b/public/images/battle_anims/Light1.png differ diff --git a/public/images/battle_anims/Majesty - Shed Tail.png b/public/images/battle_anims/Majesty - Shed Tail.png index 47969335b35..6cf1a8fd219 100644 Binary files a/public/images/battle_anims/Majesty - Shed Tail.png and b/public/images/battle_anims/Majesty - Shed Tail.png differ diff --git a/public/images/battle_anims/PRAS- All Out Pummeling.png b/public/images/battle_anims/PRAS- All Out Pummeling.png index f0528fe59ba..c54dfeb25aa 100644 Binary files a/public/images/battle_anims/PRAS- All Out Pummeling.png and b/public/images/battle_anims/PRAS- All Out Pummeling.png differ diff --git a/public/images/battle_anims/PRAS- Aqua Jet.png b/public/images/battle_anims/PRAS- Aqua Jet.png index 6079d67d384..284743c12e2 100644 Binary files a/public/images/battle_anims/PRAS- Aqua Jet.png and b/public/images/battle_anims/PRAS- Aqua Jet.png differ diff --git a/public/images/battle_anims/PRAS- Aurora Veil FG.png b/public/images/battle_anims/PRAS- Aurora Veil FG.png index 87061305e38..1ac8f7341c0 100644 Binary files a/public/images/battle_anims/PRAS- Aurora Veil FG.png and b/public/images/battle_anims/PRAS- Aurora Veil FG.png differ diff --git a/public/images/battle_anims/PRAS- Aurora Veil Opp FG.png b/public/images/battle_anims/PRAS- Aurora Veil Opp FG.png index 0a283cd59cb..186fa027eb2 100644 Binary files a/public/images/battle_anims/PRAS- Aurora Veil Opp FG.png and b/public/images/battle_anims/PRAS- Aurora Veil Opp FG.png differ diff --git a/public/images/battle_anims/PRAS- Barrier.png b/public/images/battle_anims/PRAS- Barrier.png index 2d0af4db9ba..afac47f8dbd 100644 Binary files a/public/images/battle_anims/PRAS- Barrier.png and b/public/images/battle_anims/PRAS- Barrier.png differ diff --git a/public/images/battle_anims/PRAS- Black Hole Eclipse.png b/public/images/battle_anims/PRAS- Black Hole Eclipse.png index 6963b4b2f3f..8f4c75237b3 100644 Binary files a/public/images/battle_anims/PRAS- Black Hole Eclipse.png and b/public/images/battle_anims/PRAS- Black Hole Eclipse.png differ diff --git a/public/images/battle_anims/PRAS- Blizzard BG.png b/public/images/battle_anims/PRAS- Blizzard BG.png index f83fde2e4f2..31c45ffa3a4 100644 Binary files a/public/images/battle_anims/PRAS- Blizzard BG.png and b/public/images/battle_anims/PRAS- Blizzard BG.png differ diff --git a/public/images/battle_anims/PRAS- Blizzard FG.png b/public/images/battle_anims/PRAS- Blizzard FG.png index d61f1e40f8b..b52ee422d66 100644 Binary files a/public/images/battle_anims/PRAS- Blizzard FG.png and b/public/images/battle_anims/PRAS- Blizzard FG.png differ diff --git a/public/images/battle_anims/PRAS- BoneMerang.png b/public/images/battle_anims/PRAS- BoneMerang.png index 8a548433ceb..40730f1c992 100644 Binary files a/public/images/battle_anims/PRAS- BoneMerang.png and b/public/images/battle_anims/PRAS- BoneMerang.png differ diff --git a/public/images/battle_anims/PRAS- Catastropika.png b/public/images/battle_anims/PRAS- Catastropika.png index b3b38200a23..5d69114429c 100644 Binary files a/public/images/battle_anims/PRAS- Catastropika.png and b/public/images/battle_anims/PRAS- Catastropika.png differ diff --git a/public/images/battle_anims/PRAS- Draining Kiss.png b/public/images/battle_anims/PRAS- Draining Kiss.png index 33f11acf9ae..8d5fe34a817 100644 Binary files a/public/images/battle_anims/PRAS- Draining Kiss.png and b/public/images/battle_anims/PRAS- Draining Kiss.png differ diff --git a/public/images/battle_anims/PRAS- Earthquake BG.png b/public/images/battle_anims/PRAS- Earthquake BG.png index 94895b238ff..c78f189188f 100644 Binary files a/public/images/battle_anims/PRAS- Earthquake BG.png and b/public/images/battle_anims/PRAS- Earthquake BG.png differ diff --git a/public/images/battle_anims/PRAS- Electric Terrain BG.png b/public/images/battle_anims/PRAS- Electric Terrain BG.png index 3ff1abf6318..934ed1067b1 100644 Binary files a/public/images/battle_anims/PRAS- Electric Terrain BG.png and b/public/images/battle_anims/PRAS- Electric Terrain BG.png differ diff --git a/public/images/battle_anims/PRAS- Elemental Fangs.png b/public/images/battle_anims/PRAS- Elemental Fangs.png index 5c631982488..da0900f6915 100644 Binary files a/public/images/battle_anims/PRAS- Elemental Fangs.png and b/public/images/battle_anims/PRAS- Elemental Fangs.png differ diff --git a/public/images/battle_anims/PRAS- False Swipe.png b/public/images/battle_anims/PRAS- False Swipe.png index 5e17c520d43..eca24570f26 100644 Binary files a/public/images/battle_anims/PRAS- False Swipe.png and b/public/images/battle_anims/PRAS- False Swipe.png differ diff --git a/public/images/battle_anims/PRAS- Frenzy Plant.png b/public/images/battle_anims/PRAS- Frenzy Plant.png index 756290186ff..65dd328e984 100644 Binary files a/public/images/battle_anims/PRAS- Frenzy Plant.png and b/public/images/battle_anims/PRAS- Frenzy Plant.png differ diff --git a/public/images/battle_anims/PRAS- Giga Impact Opp BG.png b/public/images/battle_anims/PRAS- Giga Impact Opp BG.png index 031483c4d4f..0b571c7bc18 100644 Binary files a/public/images/battle_anims/PRAS- Giga Impact Opp BG.png and b/public/images/battle_anims/PRAS- Giga Impact Opp BG.png differ diff --git a/public/images/battle_anims/PRAS- Glitch BG.png b/public/images/battle_anims/PRAS- Glitch BG.png index e8938f6d92b..f08383c48a6 100644 Binary files a/public/images/battle_anims/PRAS- Glitch BG.png and b/public/images/battle_anims/PRAS- Glitch BG.png differ diff --git a/public/images/battle_anims/PRAS- Gravity BG.png b/public/images/battle_anims/PRAS- Gravity BG.png index f5e7cb66a5a..f5ceb490677 100644 Binary files a/public/images/battle_anims/PRAS- Gravity BG.png and b/public/images/battle_anims/PRAS- Gravity BG.png differ diff --git a/public/images/battle_anims/PRAS- Heat Wave.png b/public/images/battle_anims/PRAS- Heat Wave.png index 6f1cba45fd0..8a88b7063aa 100644 Binary files a/public/images/battle_anims/PRAS- Heat Wave.png and b/public/images/battle_anims/PRAS- Heat Wave.png differ diff --git a/public/images/battle_anims/PRAS- Hyperspace Hole.png b/public/images/battle_anims/PRAS- Hyperspace Hole.png index 0f4d9016eee..ecf066c3207 100644 Binary files a/public/images/battle_anims/PRAS- Hyperspace Hole.png and b/public/images/battle_anims/PRAS- Hyperspace Hole.png differ diff --git a/public/images/battle_anims/PRAS- Leaf Tornado.png b/public/images/battle_anims/PRAS- Leaf Tornado.png index b3919b2dc9c..f1ade2553db 100644 Binary files a/public/images/battle_anims/PRAS- Leaf Tornado.png and b/public/images/battle_anims/PRAS- Leaf Tornado.png differ diff --git a/public/images/battle_anims/PRAS- Leech Life.png b/public/images/battle_anims/PRAS- Leech Life.png index cacb94faa93..dd3c64e86da 100644 Binary files a/public/images/battle_anims/PRAS- Leech Life.png and b/public/images/battle_anims/PRAS- Leech Life.png differ diff --git a/public/images/battle_anims/PRAS- Light Screen.png b/public/images/battle_anims/PRAS- Light Screen.png index 58a43861c80..830327f1739 100644 Binary files a/public/images/battle_anims/PRAS- Light Screen.png and b/public/images/battle_anims/PRAS- Light Screen.png differ diff --git a/public/images/battle_anims/PRAS- Luster Purge.png b/public/images/battle_anims/PRAS- Luster Purge.png index 1b1e7fea7b1..d165bc97ec3 100644 Binary files a/public/images/battle_anims/PRAS- Luster Purge.png and b/public/images/battle_anims/PRAS- Luster Purge.png differ diff --git a/public/images/battle_anims/PRAS- Magic Coat.png b/public/images/battle_anims/PRAS- Magic Coat.png index 769984806ad..fcaec4f6b07 100644 Binary files a/public/images/battle_anims/PRAS- Magic Coat.png and b/public/images/battle_anims/PRAS- Magic Coat.png differ diff --git a/public/images/battle_anims/PRAS- Magnet bomb.png b/public/images/battle_anims/PRAS- Magnet bomb.png index 17c58b03f97..2d9d7417f4a 100644 Binary files a/public/images/battle_anims/PRAS- Magnet bomb.png and b/public/images/battle_anims/PRAS- Magnet bomb.png differ diff --git a/public/images/battle_anims/PRAS- Mist FG.png b/public/images/battle_anims/PRAS- Mist FG.png index cee92715ba3..f75af146109 100644 Binary files a/public/images/battle_anims/PRAS- Mist FG.png and b/public/images/battle_anims/PRAS- Mist FG.png differ diff --git a/public/images/battle_anims/PRAS- Mist.png b/public/images/battle_anims/PRAS- Mist.png index 11a92964717..c9161afdf9a 100644 Binary files a/public/images/battle_anims/PRAS- Mist.png and b/public/images/battle_anims/PRAS- Mist.png differ diff --git a/public/images/battle_anims/PRAS- Odor Sleuth.png b/public/images/battle_anims/PRAS- Odor Sleuth.png index a0e76eef728..a3b832c24c6 100644 Binary files a/public/images/battle_anims/PRAS- Odor Sleuth.png and b/public/images/battle_anims/PRAS- Odor Sleuth.png differ diff --git a/public/images/battle_anims/PRAS- Ominous Wind BG.png b/public/images/battle_anims/PRAS- Ominous Wind BG.png index da7f1a85bef..a7cd026bef7 100644 Binary files a/public/images/battle_anims/PRAS- Ominous Wind BG.png and b/public/images/battle_anims/PRAS- Ominous Wind BG.png differ diff --git a/public/images/battle_anims/PRAS- Petal Blizzard FG.png b/public/images/battle_anims/PRAS- Petal Blizzard FG.png index 50730ac068a..d62cd4623ae 100644 Binary files a/public/images/battle_anims/PRAS- Petal Blizzard FG.png and b/public/images/battle_anims/PRAS- Petal Blizzard FG.png differ diff --git a/public/images/battle_anims/PRAS- Powder.png b/public/images/battle_anims/PRAS- Powder.png index 9656c31e6c9..e4283e53e73 100644 Binary files a/public/images/battle_anims/PRAS- Powder.png and b/public/images/battle_anims/PRAS- Powder.png differ diff --git a/public/images/battle_anims/PRAS- Psychic BG.png b/public/images/battle_anims/PRAS- Psychic BG.png index 67e4ea88af4..17ebbf41049 100644 Binary files a/public/images/battle_anims/PRAS- Psychic BG.png and b/public/images/battle_anims/PRAS- Psychic BG.png differ diff --git a/public/images/battle_anims/PRAS- Psychic Terrain BG.png b/public/images/battle_anims/PRAS- Psychic Terrain BG.png index eab6c8c5bf6..44cb39fc3d6 100644 Binary files a/public/images/battle_anims/PRAS- Psychic Terrain BG.png and b/public/images/battle_anims/PRAS- Psychic Terrain BG.png differ diff --git a/public/images/battle_anims/PRAS- Pulverizing Pancake BG.png b/public/images/battle_anims/PRAS- Pulverizing Pancake BG.png index a74d9c307a3..e235c7c2e68 100644 Binary files a/public/images/battle_anims/PRAS- Pulverizing Pancake BG.png and b/public/images/battle_anims/PRAS- Pulverizing Pancake BG.png differ diff --git a/public/images/battle_anims/PRAS- Pulverizing Pancake BG2.png b/public/images/battle_anims/PRAS- Pulverizing Pancake BG2.png index a2a0f9afed2..44b50a6d385 100644 Binary files a/public/images/battle_anims/PRAS- Pulverizing Pancake BG2.png and b/public/images/battle_anims/PRAS- Pulverizing Pancake BG2.png differ diff --git a/public/images/battle_anims/PRAS- Pulverizing Pancake.png b/public/images/battle_anims/PRAS- Pulverizing Pancake.png index 787015e0731..519a52c63c6 100644 Binary files a/public/images/battle_anims/PRAS- Pulverizing Pancake.png and b/public/images/battle_anims/PRAS- Pulverizing Pancake.png differ diff --git a/public/images/battle_anims/PRAS- Reflect.png b/public/images/battle_anims/PRAS- Reflect.png index d7db4a3561f..f82d2ce50d4 100644 Binary files a/public/images/battle_anims/PRAS- Reflect.png and b/public/images/battle_anims/PRAS- Reflect.png differ diff --git a/public/images/battle_anims/PRAS- Retaliate BG.png b/public/images/battle_anims/PRAS- Retaliate BG.png index 58ea9540ea8..82688e4bf88 100644 Binary files a/public/images/battle_anims/PRAS- Retaliate BG.png and b/public/images/battle_anims/PRAS- Retaliate BG.png differ diff --git a/public/images/battle_anims/PRAS- Roost.png b/public/images/battle_anims/PRAS- Roost.png index 5c9167ff393..6b9e70e0539 100644 Binary files a/public/images/battle_anims/PRAS- Roost.png and b/public/images/battle_anims/PRAS- Roost.png differ diff --git a/public/images/battle_anims/PRAS- Sky Uppercut BG.png b/public/images/battle_anims/PRAS- Sky Uppercut BG.png index e9780d3bb5a..5c6ae5e4484 100644 Binary files a/public/images/battle_anims/PRAS- Sky Uppercut BG.png and b/public/images/battle_anims/PRAS- Sky Uppercut BG.png differ diff --git a/public/images/battle_anims/PRAS- Space BG.png b/public/images/battle_anims/PRAS- Space BG.png index 6a72789df99..99aeded6f15 100644 Binary files a/public/images/battle_anims/PRAS- Space BG.png and b/public/images/battle_anims/PRAS- Space BG.png differ diff --git a/public/images/battle_anims/PRAS- Spectral thief BG.png b/public/images/battle_anims/PRAS- Spectral thief BG.png index 03d15aeee4a..35fc434fdca 100644 Binary files a/public/images/battle_anims/PRAS- Spectral thief BG.png and b/public/images/battle_anims/PRAS- Spectral thief BG.png differ diff --git a/public/images/battle_anims/PRAS- Speed BG.png b/public/images/battle_anims/PRAS- Speed BG.png index abb97f035ba..388065a2d49 100644 Binary files a/public/images/battle_anims/PRAS- Speed BG.png and b/public/images/battle_anims/PRAS- Speed BG.png differ diff --git a/public/images/battle_anims/PRAS- Spike Cannon.png b/public/images/battle_anims/PRAS- Spike Cannon.png index e2ee3ab8c3e..6d121870b3e 100644 Binary files a/public/images/battle_anims/PRAS- Spike Cannon.png and b/public/images/battle_anims/PRAS- Spike Cannon.png differ diff --git a/public/images/battle_anims/PRAS- Steam Eruption FG.png b/public/images/battle_anims/PRAS- Steam Eruption FG.png index 710d4d768f7..b3910fac9ff 100644 Binary files a/public/images/battle_anims/PRAS- Steam Eruption FG.png and b/public/images/battle_anims/PRAS- Steam Eruption FG.png differ diff --git a/public/images/battle_anims/PRAS- Underwater BG.png b/public/images/battle_anims/PRAS- Underwater BG.png index 9b8d1b255b2..8d5d8c83744 100644 Binary files a/public/images/battle_anims/PRAS- Underwater BG.png and b/public/images/battle_anims/PRAS- Underwater BG.png differ diff --git a/public/images/battle_anims/Rock Tomb.png b/public/images/battle_anims/Rock Tomb.png index d5d654a8dc8..02b7dbf403b 100644 Binary files a/public/images/battle_anims/Rock Tomb.png and b/public/images/battle_anims/Rock Tomb.png differ diff --git a/public/images/battle_anims/Sword6.png b/public/images/battle_anims/Sword6.png index 2a08c846b05..7f93457434c 100644 Binary files a/public/images/battle_anims/Sword6.png and b/public/images/battle_anims/Sword6.png differ diff --git a/public/images/battle_anims/Thunder2.png b/public/images/battle_anims/Thunder2.png index 97677830322..16284d300e8 100644 Binary files a/public/images/battle_anims/Thunder2.png and b/public/images/battle_anims/Thunder2.png differ diff --git a/public/images/battle_anims/Trovao.png b/public/images/battle_anims/Trovao.png index 14210e47551..7c3b67967d7 100644 Binary files a/public/images/battle_anims/Trovao.png and b/public/images/battle_anims/Trovao.png differ diff --git a/public/images/battle_anims/block.png b/public/images/battle_anims/block.png index ca4d8874df4..d2496d7390d 100644 Binary files a/public/images/battle_anims/block.png and b/public/images/battle_anims/block.png differ diff --git a/public/images/battle_anims/confused.png b/public/images/battle_anims/confused.png index 8e4823b79e1..267765e5701 100644 Binary files a/public/images/battle_anims/confused.png and b/public/images/battle_anims/confused.png differ diff --git a/public/images/battle_anims/finger.spoon.png b/public/images/battle_anims/finger.spoon.png index f8ea58fca81..268d3169ba0 100644 Binary files a/public/images/battle_anims/finger.spoon.png and b/public/images/battle_anims/finger.spoon.png differ diff --git a/public/images/battle_anims/fly copy.png b/public/images/battle_anims/fly copy.png index 78909303837..d3431d209e4 100644 Binary files a/public/images/battle_anims/fly copy.png and b/public/images/battle_anims/fly copy.png differ diff --git a/public/images/battle_anims/ghost2.png b/public/images/battle_anims/ghost2.png index eb58d716dc5..f2a29364257 100644 Binary files a/public/images/battle_anims/ghost2.png and b/public/images/battle_anims/ghost2.png differ diff --git a/public/images/battle_anims/mixed status.png b/public/images/battle_anims/mixed status.png index e95d3b457d2..c08f9f64dec 100644 Binary files a/public/images/battle_anims/mixed status.png and b/public/images/battle_anims/mixed status.png differ diff --git a/public/images/battle_anims/mixed.png b/public/images/battle_anims/mixed.png index 074dc10ae72..9b4da7d5626 100644 Binary files a/public/images/battle_anims/mixed.png and b/public/images/battle_anims/mixed.png differ diff --git a/public/images/battle_anims/terastallize.png b/public/images/battle_anims/terastallize.png index 78fbb7ec335..b322a8a89d0 100644 Binary files a/public/images/battle_anims/terastallize.png and b/public/images/battle_anims/terastallize.png differ diff --git a/public/images/categories.png b/public/images/categories.png index 0f683399495..56903fddd07 100644 Binary files a/public/images/categories.png and b/public/images/categories.png differ diff --git a/public/images/categories_legacy.png b/public/images/categories_legacy.png index 94ba1d4c4bc..54c90c36b18 100644 Binary files a/public/images/categories_legacy.png and b/public/images/categories_legacy.png differ diff --git a/public/images/cg/end_f.png b/public/images/cg/end_f.png index 84f94d7e05d..9fbb4514007 100644 Binary files a/public/images/cg/end_f.png and b/public/images/cg/end_f.png differ diff --git a/public/images/cg/end_m.png b/public/images/cg/end_m.png index abdcb49aff9..4ba892011b5 100644 Binary files a/public/images/cg/end_m.png and b/public/images/cg/end_m.png differ diff --git a/public/images/character/rival_f.png b/public/images/character/rival_f.png index b165cd8a760..2c78dd39fff 100644 Binary files a/public/images/character/rival_f.png and b/public/images/character/rival_f.png differ diff --git a/public/images/character/rival_m.png b/public/images/character/rival_m.png index b12e2787287..46fb12b53ba 100644 Binary files a/public/images/character/rival_m.png and b/public/images/character/rival_m.png differ diff --git a/public/images/effects/battle_stats.png b/public/images/effects/battle_stats.png index cc3bc279641..e1d4fd4eea7 100644 Binary files a/public/images/effects/battle_stats.png and b/public/images/effects/battle_stats.png differ diff --git a/public/images/effects/evo_sparkle.png b/public/images/effects/evo_sparkle.png index 46e1aebba81..b8e791f13e1 100644 Binary files a/public/images/effects/evo_sparkle.png and b/public/images/effects/evo_sparkle.png differ diff --git a/public/images/effects/pb_particles.png b/public/images/effects/pb_particles.png index 386ca9b29e7..a25b3cf7a09 100644 Binary files a/public/images/effects/pb_particles.png and b/public/images/effects/pb_particles.png differ diff --git a/public/images/effects/shiny.png b/public/images/effects/shiny.png index e508fcdf58a..fb05ab39eba 100644 Binary files a/public/images/effects/shiny.png and b/public/images/effects/shiny.png differ diff --git a/public/images/effects/shiny_2.png b/public/images/effects/shiny_2.png index 3f9e37c1643..717cf936685 100644 Binary files a/public/images/effects/shiny_2.png and b/public/images/effects/shiny_2.png differ diff --git a/public/images/effects/shiny_3.png b/public/images/effects/shiny_3.png index 53000bdb3d1..52cafa35259 100644 Binary files a/public/images/effects/shiny_3.png and b/public/images/effects/shiny_3.png differ diff --git a/public/images/effects/tera.png b/public/images/effects/tera.png index e378d1c051c..343565f0005 100644 Binary files a/public/images/effects/tera.png and b/public/images/effects/tera.png differ diff --git a/public/images/effects/tera_sparkle.png b/public/images/effects/tera_sparkle.png index 3385aaf23ad..2d6769a291b 100644 Binary files a/public/images/effects/tera_sparkle.png and b/public/images/effects/tera_sparkle.png differ diff --git a/public/images/egg/default.png b/public/images/egg/default.png index 160ac2542eb..94d6b34a4dc 100644 Binary files a/public/images/egg/default.png and b/public/images/egg/default.png differ diff --git a/public/images/egg/egg.png b/public/images/egg/egg.png index 2943e83b5ea..696b5a232cf 100644 Binary files a/public/images/egg/egg.png and b/public/images/egg/egg.png differ diff --git a/public/images/egg/egg_crack.png b/public/images/egg/egg_crack.png index b23b7703307..9d553ebf378 100644 Binary files a/public/images/egg/egg_crack.png and b/public/images/egg/egg_crack.png differ diff --git a/public/images/egg/egg_icons.png b/public/images/egg/egg_icons.png index c69187baa51..59891a9629e 100644 Binary files a/public/images/egg/egg_icons.png and b/public/images/egg/egg_icons.png differ diff --git a/public/images/egg/egg_lightrays.png b/public/images/egg/egg_lightrays.png index a457625454d..892134b8701 100644 Binary files a/public/images/egg/egg_lightrays.png and b/public/images/egg/egg_lightrays.png differ diff --git a/public/images/egg/egg_shard.png b/public/images/egg/egg_shard.png index a4084af17e1..774763be241 100644 Binary files a/public/images/egg/egg_shard.png and b/public/images/egg/egg_shard.png differ diff --git a/public/images/egg/gacha_eggs.png b/public/images/egg/gacha_eggs.png index 6e26addc450..8aa6420be1a 100644 Binary files a/public/images/egg/gacha_eggs.png and b/public/images/egg/gacha_eggs.png differ diff --git a/public/images/egg/gacha_glass.png b/public/images/egg/gacha_glass.png index b8c4a423454..ddeeb68f3a1 100644 Binary files a/public/images/egg/gacha_glass.png and b/public/images/egg/gacha_glass.png differ diff --git a/public/images/egg/gacha_hatch.png b/public/images/egg/gacha_hatch.png index 39fa7de58c1..0bdcae840e0 100644 Binary files a/public/images/egg/gacha_hatch.png and b/public/images/egg/gacha_hatch.png differ diff --git a/public/images/egg/gacha_knob.png b/public/images/egg/gacha_knob.png index 9b20c081cf2..10107ebd27f 100644 Binary files a/public/images/egg/gacha_knob.png and b/public/images/egg/gacha_knob.png differ diff --git a/public/images/egg/gacha_legendary.png b/public/images/egg/gacha_legendary.png index 6eb41e55099..f0ff27095b6 100644 Binary files a/public/images/egg/gacha_legendary.png and b/public/images/egg/gacha_legendary.png differ diff --git a/public/images/egg/gacha_move.png b/public/images/egg/gacha_move.png index 19b3668424a..f0559192a75 100644 Binary files a/public/images/egg/gacha_move.png and b/public/images/egg/gacha_move.png differ diff --git a/public/images/egg/gacha_shiny.png b/public/images/egg/gacha_shiny.png index ffc1314f597..a884fee5927 100644 Binary files a/public/images/egg/gacha_shiny.png and b/public/images/egg/gacha_shiny.png differ diff --git a/public/images/egg/gacha_underlay_legendary.png b/public/images/egg/gacha_underlay_legendary.png index 5d116d3e11f..0e7d29b1a79 100644 Binary files a/public/images/egg/gacha_underlay_legendary.png and b/public/images/egg/gacha_underlay_legendary.png differ diff --git a/public/images/egg/gacha_underlay_move.png b/public/images/egg/gacha_underlay_move.png index 437b2bca3ab..b3ce6b4a666 100644 Binary files a/public/images/egg/gacha_underlay_move.png and b/public/images/egg/gacha_underlay_move.png differ diff --git a/public/images/egg/gacha_underlay_shiny.png b/public/images/egg/gacha_underlay_shiny.png index a2b40fa2b0b..f9ea3733ca0 100644 Binary files a/public/images/egg/gacha_underlay_shiny.png and b/public/images/egg/gacha_underlay_shiny.png differ diff --git a/public/images/egg/open_hatch.png b/public/images/egg/open_hatch.png index fd91aca14d3..535f2fabff2 100644 Binary files a/public/images/egg/open_hatch.png and b/public/images/egg/open_hatch.png differ diff --git a/public/images/events/aprf25-de.png b/public/images/events/aprf25-de.png index d4bb7ebdc50..af0d2a63f70 100644 Binary files a/public/images/events/aprf25-de.png and b/public/images/events/aprf25-de.png differ diff --git a/public/images/events/aprf25-en.png b/public/images/events/aprf25-en.png index 8f7268b01b6..bb61b156a7b 100644 Binary files a/public/images/events/aprf25-en.png and b/public/images/events/aprf25-en.png differ diff --git a/public/images/events/aprf25-es-ES.png b/public/images/events/aprf25-es-ES.png index a6136a2c8de..c8f2e6a0d5a 100644 Binary files a/public/images/events/aprf25-es-ES.png and b/public/images/events/aprf25-es-ES.png differ diff --git a/public/images/events/aprf25-es-MX.png b/public/images/events/aprf25-es-MX.png index a6136a2c8de..c8f2e6a0d5a 100644 Binary files a/public/images/events/aprf25-es-MX.png and b/public/images/events/aprf25-es-MX.png differ diff --git a/public/images/events/aprf25-fr.png b/public/images/events/aprf25-fr.png index c68264c75dd..cad3045cf68 100644 Binary files a/public/images/events/aprf25-fr.png and b/public/images/events/aprf25-fr.png differ diff --git a/public/images/events/aprf25-it.png b/public/images/events/aprf25-it.png index 01bc0d2a1f0..70c57f92845 100644 Binary files a/public/images/events/aprf25-it.png and b/public/images/events/aprf25-it.png differ diff --git a/public/images/events/aprf25-ja.png b/public/images/events/aprf25-ja.png index c6b62a3672e..ae99dd72e52 100644 Binary files a/public/images/events/aprf25-ja.png and b/public/images/events/aprf25-ja.png differ diff --git a/public/images/events/aprf25-ko.png b/public/images/events/aprf25-ko.png index bcc87e33ac1..1c76f7ce6e9 100644 Binary files a/public/images/events/aprf25-ko.png and b/public/images/events/aprf25-ko.png differ diff --git a/public/images/events/aprf25-pt-BR.png b/public/images/events/aprf25-pt-BR.png index f56f5b5c1e9..bee4ed3f1e2 100644 Binary files a/public/images/events/aprf25-pt-BR.png and b/public/images/events/aprf25-pt-BR.png differ diff --git a/public/images/events/aprf25-zh-CN.png b/public/images/events/aprf25-zh-CN.png index 57b2c3ec5be..23322d12760 100644 Binary files a/public/images/events/aprf25-zh-CN.png and b/public/images/events/aprf25-zh-CN.png differ diff --git a/public/images/events/august-variant-update.png b/public/images/events/august-variant-update.png index 1c78aa2fe14..e2e429ae2e6 100644 Binary files a/public/images/events/august-variant-update.png and b/public/images/events/august-variant-update.png differ diff --git a/public/images/events/egg-update_de.png b/public/images/events/egg-update_de.png index 5de94877d5c..5b7c8e50881 100644 Binary files a/public/images/events/egg-update_de.png and b/public/images/events/egg-update_de.png differ diff --git a/public/images/events/egg-update_en.png b/public/images/events/egg-update_en.png index 7104d340ca0..5b407cf7c75 100644 Binary files a/public/images/events/egg-update_en.png and b/public/images/events/egg-update_en.png differ diff --git a/public/images/events/egg-update_es.png b/public/images/events/egg-update_es.png index ec5f5c46d17..4d1bfe7b2e8 100644 Binary files a/public/images/events/egg-update_es.png and b/public/images/events/egg-update_es.png differ diff --git a/public/images/events/egg-update_fr.png b/public/images/events/egg-update_fr.png index e0505fa96dd..e214ef46cbe 100644 Binary files a/public/images/events/egg-update_fr.png and b/public/images/events/egg-update_fr.png differ diff --git a/public/images/events/egg-update_it.png b/public/images/events/egg-update_it.png index fc347bce9cf..4665d7e9657 100644 Binary files a/public/images/events/egg-update_it.png and b/public/images/events/egg-update_it.png differ diff --git a/public/images/events/egg-update_ja.png b/public/images/events/egg-update_ja.png index 2259cbb4d9a..2a1403e752f 100644 Binary files a/public/images/events/egg-update_ja.png and b/public/images/events/egg-update_ja.png differ diff --git a/public/images/events/egg-update_ko.png b/public/images/events/egg-update_ko.png index 99dcc662402..5e22550cea8 100644 Binary files a/public/images/events/egg-update_ko.png and b/public/images/events/egg-update_ko.png differ diff --git a/public/images/events/egg-update_pt-BR.png b/public/images/events/egg-update_pt-BR.png index ee347d35654..68f3633f16a 100644 Binary files a/public/images/events/egg-update_pt-BR.png and b/public/images/events/egg-update_pt-BR.png differ diff --git a/public/images/events/egg-update_zh-CN.png b/public/images/events/egg-update_zh-CN.png index 02d780fab89..e646562f4cf 100644 Binary files a/public/images/events/egg-update_zh-CN.png and b/public/images/events/egg-update_zh-CN.png differ diff --git a/public/images/events/halloween2024-event-de.png b/public/images/events/halloween2024-event-de.png index a56053c73cc..8291991091e 100644 Binary files a/public/images/events/halloween2024-event-de.png and b/public/images/events/halloween2024-event-de.png differ diff --git a/public/images/events/halloween2024-event-en.png b/public/images/events/halloween2024-event-en.png index 3886fa796ae..dc2d241fb09 100644 Binary files a/public/images/events/halloween2024-event-en.png and b/public/images/events/halloween2024-event-en.png differ diff --git a/public/images/events/halloween2024-event-es-ES.png b/public/images/events/halloween2024-event-es-ES.png index dc9bac86cd0..5d3c4a1734f 100644 Binary files a/public/images/events/halloween2024-event-es-ES.png and b/public/images/events/halloween2024-event-es-ES.png differ diff --git a/public/images/events/halloween2024-event-fr.png b/public/images/events/halloween2024-event-fr.png index 21df18c7471..198e5d28de5 100644 Binary files a/public/images/events/halloween2024-event-fr.png and b/public/images/events/halloween2024-event-fr.png differ diff --git a/public/images/events/halloween2024-event-it.png b/public/images/events/halloween2024-event-it.png index ce2316b2ce5..461e9faf704 100644 Binary files a/public/images/events/halloween2024-event-it.png and b/public/images/events/halloween2024-event-it.png differ diff --git a/public/images/events/halloween2024-event-ja.png b/public/images/events/halloween2024-event-ja.png index 363f3b33b0d..4bd49b3d28a 100644 Binary files a/public/images/events/halloween2024-event-ja.png and b/public/images/events/halloween2024-event-ja.png differ diff --git a/public/images/events/halloween2024-event-ko.png b/public/images/events/halloween2024-event-ko.png index 3f52526a296..94b9859da97 100644 Binary files a/public/images/events/halloween2024-event-ko.png and b/public/images/events/halloween2024-event-ko.png differ diff --git a/public/images/events/halloween2024-event-pt-BR.png b/public/images/events/halloween2024-event-pt-BR.png index 764a9c1daa9..a89cfe5231f 100644 Binary files a/public/images/events/halloween2024-event-pt-BR.png and b/public/images/events/halloween2024-event-pt-BR.png differ diff --git a/public/images/events/halloween2024-event-zh-CN.png b/public/images/events/halloween2024-event-zh-CN.png index c2096a05d98..61c11b4ee95 100644 Binary files a/public/images/events/halloween2024-event-zh-CN.png and b/public/images/events/halloween2024-event-zh-CN.png differ diff --git a/public/images/events/pkmnday2025event-de.png b/public/images/events/pkmnday2025event-de.png index 4cc53546752..b3746a4623e 100644 Binary files a/public/images/events/pkmnday2025event-de.png and b/public/images/events/pkmnday2025event-de.png differ diff --git a/public/images/events/pkmnday2025event-en.png b/public/images/events/pkmnday2025event-en.png index e9caa9e19d6..54b6e7280ac 100644 Binary files a/public/images/events/pkmnday2025event-en.png and b/public/images/events/pkmnday2025event-en.png differ diff --git a/public/images/events/pkmnday2025event-es-ES.png b/public/images/events/pkmnday2025event-es-ES.png index e1ab096dffc..afdf051dc79 100644 Binary files a/public/images/events/pkmnday2025event-es-ES.png and b/public/images/events/pkmnday2025event-es-ES.png differ diff --git a/public/images/events/pkmnday2025event-fr.png b/public/images/events/pkmnday2025event-fr.png index 037d1e06e61..52ef02d474a 100644 Binary files a/public/images/events/pkmnday2025event-fr.png and b/public/images/events/pkmnday2025event-fr.png differ diff --git a/public/images/events/pkmnday2025event-it.png b/public/images/events/pkmnday2025event-it.png index f38a60330fa..6f3e8642e3d 100644 Binary files a/public/images/events/pkmnday2025event-it.png and b/public/images/events/pkmnday2025event-it.png differ diff --git a/public/images/events/pkmnday2025event-ja.png b/public/images/events/pkmnday2025event-ja.png index 94b02ad93a0..e7633edb5ed 100644 Binary files a/public/images/events/pkmnday2025event-ja.png and b/public/images/events/pkmnday2025event-ja.png differ diff --git a/public/images/events/pkmnday2025event-ko.png b/public/images/events/pkmnday2025event-ko.png index aed9ee3fb28..343687706ac 100644 Binary files a/public/images/events/pkmnday2025event-ko.png and b/public/images/events/pkmnday2025event-ko.png differ diff --git a/public/images/events/pkmnday2025event-pt-BR.png b/public/images/events/pkmnday2025event-pt-BR.png index 2190bbac535..67559a80068 100644 Binary files a/public/images/events/pkmnday2025event-pt-BR.png and b/public/images/events/pkmnday2025event-pt-BR.png differ diff --git a/public/images/events/pkmnday2025event-zh-CN.png b/public/images/events/pkmnday2025event-zh-CN.png index a3430482dd0..fc92405a149 100644 Binary files a/public/images/events/pkmnday2025event-zh-CN.png and b/public/images/events/pkmnday2025event-zh-CN.png differ diff --git a/public/images/events/pride-update.png b/public/images/events/pride-update.png index face6df1790..253101bd63a 100644 Binary files a/public/images/events/pride-update.png and b/public/images/events/pride-update.png differ diff --git a/public/images/events/pride2025-de.png b/public/images/events/pride2025-de.png index 8d205821b3c..06044f3c94e 100644 Binary files a/public/images/events/pride2025-de.png and b/public/images/events/pride2025-de.png differ diff --git a/public/images/events/pride2025-en.png b/public/images/events/pride2025-en.png index 5a81a32be5f..1dd3d3d97f1 100644 Binary files a/public/images/events/pride2025-en.png and b/public/images/events/pride2025-en.png differ diff --git a/public/images/events/pride2025-es-ES.png b/public/images/events/pride2025-es-ES.png index 52eba6ffe45..cd0f972266a 100644 Binary files a/public/images/events/pride2025-es-ES.png and b/public/images/events/pride2025-es-ES.png differ diff --git a/public/images/events/pride2025-es-MX.png b/public/images/events/pride2025-es-MX.png index cb2100cd601..4408bbcf9e1 100644 Binary files a/public/images/events/pride2025-es-MX.png and b/public/images/events/pride2025-es-MX.png differ diff --git a/public/images/events/pride2025-fr.png b/public/images/events/pride2025-fr.png index f583c83bbbc..78084fdbe89 100644 Binary files a/public/images/events/pride2025-fr.png and b/public/images/events/pride2025-fr.png differ diff --git a/public/images/events/pride2025-it.png b/public/images/events/pride2025-it.png index 293d1f92ad8..68d3910782e 100644 Binary files a/public/images/events/pride2025-it.png and b/public/images/events/pride2025-it.png differ diff --git a/public/images/events/pride2025-ja.png b/public/images/events/pride2025-ja.png index 562e43e7d8e..af4f837ab74 100644 Binary files a/public/images/events/pride2025-ja.png and b/public/images/events/pride2025-ja.png differ diff --git a/public/images/events/pride2025-ko.png b/public/images/events/pride2025-ko.png index 74be30ba4ef..fe8733dc2ae 100644 Binary files a/public/images/events/pride2025-ko.png and b/public/images/events/pride2025-ko.png differ diff --git a/public/images/events/pride2025-pt-BR.png b/public/images/events/pride2025-pt-BR.png index 99269bd1495..bc08dea5e6f 100644 Binary files a/public/images/events/pride2025-pt-BR.png and b/public/images/events/pride2025-pt-BR.png differ diff --git a/public/images/events/pride2025-zh-CN.png b/public/images/events/pride2025-zh-CN.png index 5be66a544cf..fbd9e9ff278 100644 Binary files a/public/images/events/pride2025-zh-CN.png and b/public/images/events/pride2025-zh-CN.png differ diff --git a/public/images/events/pride2025-zh-TW.png b/public/images/events/pride2025-zh-TW.png index aeffc354c7d..e64be2cd79c 100644 Binary files a/public/images/events/pride2025-zh-TW.png and b/public/images/events/pride2025-zh-TW.png differ diff --git a/public/images/events/september-update-de.png b/public/images/events/september-update-de.png index 1ecb46e408c..9947adaa222 100644 Binary files a/public/images/events/september-update-de.png and b/public/images/events/september-update-de.png differ diff --git a/public/images/events/september-update-en.png b/public/images/events/september-update-en.png index 57dd130b98d..1bcced18f68 100644 Binary files a/public/images/events/september-update-en.png and b/public/images/events/september-update-en.png differ diff --git a/public/images/events/september-update-es.png b/public/images/events/september-update-es.png index 8c294d21403..a43ae8d15fa 100644 Binary files a/public/images/events/september-update-es.png and b/public/images/events/september-update-es.png differ diff --git a/public/images/events/september-update-fr.png b/public/images/events/september-update-fr.png index 4be33c85e9a..7a6ae965226 100644 Binary files a/public/images/events/september-update-fr.png and b/public/images/events/september-update-fr.png differ diff --git a/public/images/events/september-update-it.png b/public/images/events/september-update-it.png index 62542f4eb9b..c97001c28d5 100644 Binary files a/public/images/events/september-update-it.png and b/public/images/events/september-update-it.png differ diff --git a/public/images/events/september-update-ja.png b/public/images/events/september-update-ja.png index 93e18c51223..11d1f34abdf 100644 Binary files a/public/images/events/september-update-ja.png and b/public/images/events/september-update-ja.png differ diff --git a/public/images/events/september-update-ko.png b/public/images/events/september-update-ko.png index 13585327fce..6e8adf31fcb 100644 Binary files a/public/images/events/september-update-ko.png and b/public/images/events/september-update-ko.png differ diff --git a/public/images/events/september-update-pt-BR.png b/public/images/events/september-update-pt-BR.png index 8dd8b8759e9..2960bb1c605 100644 Binary files a/public/images/events/september-update-pt-BR.png and b/public/images/events/september-update-pt-BR.png differ diff --git a/public/images/events/september-update-zh-CN.png b/public/images/events/september-update-zh-CN.png index ee56d644d24..31f660ceace 100644 Binary files a/public/images/events/september-update-zh-CN.png and b/public/images/events/september-update-zh-CN.png differ diff --git a/public/images/events/spr25event-de.png b/public/images/events/spr25event-de.png index 1ccd9557460..a91202d7334 100644 Binary files a/public/images/events/spr25event-de.png and b/public/images/events/spr25event-de.png differ diff --git a/public/images/events/spr25event-en.png b/public/images/events/spr25event-en.png index 0e73f9247e3..cb30dac4638 100644 Binary files a/public/images/events/spr25event-en.png and b/public/images/events/spr25event-en.png differ diff --git a/public/images/events/spr25event-es-ES.png b/public/images/events/spr25event-es-ES.png index 137f1c6e743..9d16d9ced6d 100644 Binary files a/public/images/events/spr25event-es-ES.png and b/public/images/events/spr25event-es-ES.png differ diff --git a/public/images/events/spr25event-es-MX.png b/public/images/events/spr25event-es-MX.png index 137f1c6e743..9d16d9ced6d 100644 Binary files a/public/images/events/spr25event-es-MX.png and b/public/images/events/spr25event-es-MX.png differ diff --git a/public/images/events/spr25event-fr.png b/public/images/events/spr25event-fr.png index 7730e16d4a3..f7b2618a3e3 100644 Binary files a/public/images/events/spr25event-fr.png and b/public/images/events/spr25event-fr.png differ diff --git a/public/images/events/spr25event-it.png b/public/images/events/spr25event-it.png index 2664b4367cc..384078c3e82 100644 Binary files a/public/images/events/spr25event-it.png and b/public/images/events/spr25event-it.png differ diff --git a/public/images/events/spr25event-ja.png b/public/images/events/spr25event-ja.png index 90b02af8050..523dc529539 100644 Binary files a/public/images/events/spr25event-ja.png and b/public/images/events/spr25event-ja.png differ diff --git a/public/images/events/spr25event-ko.png b/public/images/events/spr25event-ko.png index a8fe279617a..d8a470ffd7e 100644 Binary files a/public/images/events/spr25event-ko.png and b/public/images/events/spr25event-ko.png differ diff --git a/public/images/events/spr25event-pt-BR.png b/public/images/events/spr25event-pt-BR.png index ae195fecc97..42d4a404ca7 100644 Binary files a/public/images/events/spr25event-pt-BR.png and b/public/images/events/spr25event-pt-BR.png differ diff --git a/public/images/events/spr25event-zh-CN.png b/public/images/events/spr25event-zh-CN.png index 1d8ad35c166..88f9023170b 100644 Binary files a/public/images/events/spr25event-zh-CN.png and b/public/images/events/spr25event-zh-CN.png differ diff --git a/public/images/events/valentines2025event-de.png b/public/images/events/valentines2025event-de.png index 8dd41924a77..1c8696b1e37 100644 Binary files a/public/images/events/valentines2025event-de.png and b/public/images/events/valentines2025event-de.png differ diff --git a/public/images/events/valentines2025event-en.png b/public/images/events/valentines2025event-en.png index dc36dad3394..ab1d2c7fa19 100644 Binary files a/public/images/events/valentines2025event-en.png and b/public/images/events/valentines2025event-en.png differ diff --git a/public/images/events/valentines2025event-es-ES.png b/public/images/events/valentines2025event-es-ES.png index 0915299b7bd..905d7de92ff 100644 Binary files a/public/images/events/valentines2025event-es-ES.png and b/public/images/events/valentines2025event-es-ES.png differ diff --git a/public/images/events/valentines2025event-fr.png b/public/images/events/valentines2025event-fr.png index dbaf23101ed..f6300b01d28 100644 Binary files a/public/images/events/valentines2025event-fr.png and b/public/images/events/valentines2025event-fr.png differ diff --git a/public/images/events/valentines2025event-it.png b/public/images/events/valentines2025event-it.png index b10eb8083be..06927ff8d88 100644 Binary files a/public/images/events/valentines2025event-it.png and b/public/images/events/valentines2025event-it.png differ diff --git a/public/images/events/valentines2025event-ja.png b/public/images/events/valentines2025event-ja.png index 7e9fe5ad3d4..6c7cd449c76 100644 Binary files a/public/images/events/valentines2025event-ja.png and b/public/images/events/valentines2025event-ja.png differ diff --git a/public/images/events/valentines2025event-ko.png b/public/images/events/valentines2025event-ko.png index 558a402fc77..199a0538dd3 100644 Binary files a/public/images/events/valentines2025event-ko.png and b/public/images/events/valentines2025event-ko.png differ diff --git a/public/images/events/valentines2025event-pt-BR.png b/public/images/events/valentines2025event-pt-BR.png index 45fa40f30fc..bae78d11849 100644 Binary files a/public/images/events/valentines2025event-pt-BR.png and b/public/images/events/valentines2025event-pt-BR.png differ diff --git a/public/images/events/valentines2025event-zh-CN.png b/public/images/events/valentines2025event-zh-CN.png index 13256da720c..c8302d06cd6 100644 Binary files a/public/images/events/valentines2025event-zh-CN.png and b/public/images/events/valentines2025event-zh-CN.png differ diff --git a/public/images/events/winter_holidays2024-event-de.png b/public/images/events/winter_holidays2024-event-de.png index 1c2e10086f2..0d900058705 100644 Binary files a/public/images/events/winter_holidays2024-event-de.png and b/public/images/events/winter_holidays2024-event-de.png differ diff --git a/public/images/events/winter_holidays2024-event-en.png b/public/images/events/winter_holidays2024-event-en.png index 3a361e99bee..fa4e693f54c 100644 Binary files a/public/images/events/winter_holidays2024-event-en.png and b/public/images/events/winter_holidays2024-event-en.png differ diff --git a/public/images/events/winter_holidays2024-event-es-ES.png b/public/images/events/winter_holidays2024-event-es-ES.png index f7e64268ad5..6923e1e2c5f 100644 Binary files a/public/images/events/winter_holidays2024-event-es-ES.png and b/public/images/events/winter_holidays2024-event-es-ES.png differ diff --git a/public/images/events/winter_holidays2024-event-fr.png b/public/images/events/winter_holidays2024-event-fr.png index 278f5f2afd4..cf68c7221a8 100644 Binary files a/public/images/events/winter_holidays2024-event-fr.png and b/public/images/events/winter_holidays2024-event-fr.png differ diff --git a/public/images/events/winter_holidays2024-event-it.png b/public/images/events/winter_holidays2024-event-it.png index f3062f40d51..5c58c806dda 100644 Binary files a/public/images/events/winter_holidays2024-event-it.png and b/public/images/events/winter_holidays2024-event-it.png differ diff --git a/public/images/events/winter_holidays2024-event-ja.png b/public/images/events/winter_holidays2024-event-ja.png index 0a217c81d03..29cc129f7c2 100644 Binary files a/public/images/events/winter_holidays2024-event-ja.png and b/public/images/events/winter_holidays2024-event-ja.png differ diff --git a/public/images/events/winter_holidays2024-event-ko.png b/public/images/events/winter_holidays2024-event-ko.png index 83c9a8525f0..93033288093 100644 Binary files a/public/images/events/winter_holidays2024-event-ko.png and b/public/images/events/winter_holidays2024-event-ko.png differ diff --git a/public/images/events/winter_holidays2024-event-pt-BR.png b/public/images/events/winter_holidays2024-event-pt-BR.png index 1f003be5986..7a160f9efbd 100644 Binary files a/public/images/events/winter_holidays2024-event-pt-BR.png and b/public/images/events/winter_holidays2024-event-pt-BR.png differ diff --git a/public/images/events/winter_holidays2024-event-zh-CN.png b/public/images/events/winter_holidays2024-event-zh-CN.png index 03a9f57c6f2..2308ff99a38 100644 Binary files a/public/images/events/winter_holidays2024-event-zh-CN.png and b/public/images/events/winter_holidays2024-event-zh-CN.png differ diff --git a/public/images/events/yearofthesnakeevent-de.png b/public/images/events/yearofthesnakeevent-de.png index f5e684bbcd5..08cf799303d 100644 Binary files a/public/images/events/yearofthesnakeevent-de.png and b/public/images/events/yearofthesnakeevent-de.png differ diff --git a/public/images/events/yearofthesnakeevent-en.png b/public/images/events/yearofthesnakeevent-en.png index ddd34023b94..2b846528790 100644 Binary files a/public/images/events/yearofthesnakeevent-en.png and b/public/images/events/yearofthesnakeevent-en.png differ diff --git a/public/images/events/yearofthesnakeevent-es-ES.png b/public/images/events/yearofthesnakeevent-es-ES.png index 76474c475c5..b3d3330f05c 100644 Binary files a/public/images/events/yearofthesnakeevent-es-ES.png and b/public/images/events/yearofthesnakeevent-es-ES.png differ diff --git a/public/images/events/yearofthesnakeevent-fr.png b/public/images/events/yearofthesnakeevent-fr.png index 88ad3e770ca..edabe05527c 100644 Binary files a/public/images/events/yearofthesnakeevent-fr.png and b/public/images/events/yearofthesnakeevent-fr.png differ diff --git a/public/images/events/yearofthesnakeevent-it.png b/public/images/events/yearofthesnakeevent-it.png index a02e7048d2a..32c5d02ebb6 100644 Binary files a/public/images/events/yearofthesnakeevent-it.png and b/public/images/events/yearofthesnakeevent-it.png differ diff --git a/public/images/events/yearofthesnakeevent-ja.png b/public/images/events/yearofthesnakeevent-ja.png index ba13b5d281f..250efd2bd43 100644 Binary files a/public/images/events/yearofthesnakeevent-ja.png and b/public/images/events/yearofthesnakeevent-ja.png differ diff --git a/public/images/events/yearofthesnakeevent-ko.png b/public/images/events/yearofthesnakeevent-ko.png index dca6bcbbd15..072f310273b 100644 Binary files a/public/images/events/yearofthesnakeevent-ko.png and b/public/images/events/yearofthesnakeevent-ko.png differ diff --git a/public/images/events/yearofthesnakeevent-pt-BR.png b/public/images/events/yearofthesnakeevent-pt-BR.png index a535aec2aa5..9b192361373 100644 Binary files a/public/images/events/yearofthesnakeevent-pt-BR.png and b/public/images/events/yearofthesnakeevent-pt-BR.png differ diff --git a/public/images/events/yearofthesnakeevent-zh-CN.png b/public/images/events/yearofthesnakeevent-zh-CN.png index 3ab4fc565a7..49dc32e8141 100644 Binary files a/public/images/events/yearofthesnakeevent-zh-CN.png and b/public/images/events/yearofthesnakeevent-zh-CN.png differ diff --git a/public/images/inputs/dualshock.png b/public/images/inputs/dualshock.png index 264f03a298e..acdfd37aa79 100644 Binary files a/public/images/inputs/dualshock.png and b/public/images/inputs/dualshock.png differ diff --git a/public/images/inputs/keyboard.png b/public/images/inputs/keyboard.png index 0c33e579006..a1532bf667e 100644 Binary files a/public/images/inputs/keyboard.png and b/public/images/inputs/keyboard.png differ diff --git a/public/images/inputs/xbox.png b/public/images/inputs/xbox.png index 037fd8515ae..6f47d27fe5b 100644 Binary files a/public/images/inputs/xbox.png and b/public/images/inputs/xbox.png differ diff --git a/public/images/items.json b/public/images/items.json index 4312f2a58c4..7b332442f04 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4,8 +4,8 @@ "image": "items.png", "format": "RGBA8888", "size": { - "w": 432, - "h": 432 + "w": 434, + "h": 434 }, "scale": 1, "frames": [ @@ -409,7 +409,7 @@ } }, { - "filename": "choice_specs", + "filename": "chipped_pot", "rotated": false, "trimmed": true, "sourceSize": { @@ -417,16 +417,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 24, - "h": 18 + "x": 3, + "y": 6, + "w": 26, + "h": 20 }, "frame": { "x": 0, "y": 414, - "w": 24, - "h": 18 + "w": 26, + "h": 20 } }, { @@ -598,7 +598,7 @@ } }, { - "filename": "chipped_pot", + "filename": "cracked_pot", "rotated": false, "trimmed": true, "sourceSize": { @@ -618,27 +618,6 @@ "h": 20 } }, - { - "filename": "cracked_pot", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 3, - "y": 6, - "w": 26, - "h": 20 - }, - "frame": { - "x": 358, - "y": 0, - "w": 26, - "h": 20 - } - }, { "filename": "legend_plate", "rotated": false, @@ -654,14 +633,35 @@ "h": 20 }, "frame": { - "x": 384, + "x": 358, "y": 0, "w": 25, "h": 20 } }, { - "filename": "big_root", + "filename": "mystical_rock", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 25, + "h": 23 + }, + "frame": { + "x": 383, + "y": 0, + "w": 25, + "h": 23 + } + }, + { + "filename": "blank_plate", "rotated": false, "trimmed": true, "sourceSize": { @@ -671,13 +671,13 @@ "spriteSourceSize": { "x": 4, "y": 4, - "w": 23, + "w": 24, "h": 24 }, "frame": { - "x": 409, + "x": 408, "y": 0, - "w": 23, + "w": 24, "h": 24 } }, @@ -829,7 +829,7 @@ } }, { - "filename": "blank_plate", + "filename": "big_root", "rotated": false, "trimmed": true, "sourceSize": { @@ -839,13 +839,13 @@ "spriteSourceSize": { "x": 4, "y": 4, - "w": 24, + "w": 23, "h": 24 }, "frame": { "x": 22, "y": 290, - "w": 24, + "w": 23, "h": 24 } }, @@ -934,7 +934,7 @@ } }, { - "filename": "exp_balance", + "filename": "fist_plate", "rotated": false, "trimmed": true, "sourceSize": { @@ -943,15 +943,15 @@ }, "spriteSourceSize": { "x": 4, - "y": 5, + "y": 4, "w": 24, - "h": 22 + "h": 24 }, "frame": { - "x": 24, + "x": 26, "y": 410, "w": 24, - "h": 22 + "h": 24 } }, { @@ -997,7 +997,7 @@ } }, { - "filename": "mystical_rock", + "filename": "choice_specs", "rotated": false, "trimmed": true, "sourceSize": { @@ -1006,15 +1006,15 @@ }, "spriteSourceSize": { "x": 4, - "y": 5, - "w": 25, - "h": 23 + "y": 8, + "w": 24, + "h": 18 }, "frame": { "x": 59, "y": 53, - "w": 25, - "h": 23 + "w": 24, + "h": 18 } }, { @@ -1081,7 +1081,7 @@ } }, { - "filename": "fist_plate", + "filename": "flame_plate", "rotated": false, "trimmed": true, "sourceSize": { @@ -1102,7 +1102,7 @@ } }, { - "filename": "flame_plate", + "filename": "focus_band", "rotated": false, "trimmed": true, "sourceSize": { @@ -1123,7 +1123,7 @@ } }, { - "filename": "focus_band", + "filename": "golden_punch", "rotated": false, "trimmed": true, "sourceSize": { @@ -1144,7 +1144,7 @@ } }, { - "filename": "golden_punch", + "filename": "gracidea", "rotated": false, "trimmed": true, "sourceSize": { @@ -1165,7 +1165,7 @@ } }, { - "filename": "gracidea", + "filename": "grip_claw", "rotated": false, "trimmed": true, "sourceSize": { @@ -1185,27 +1185,6 @@ "h": 24 } }, - { - "filename": "grip_claw", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 55, - "y": 76, - "w": 24, - "h": 24 - } - }, { "filename": "icicle_plate", "rotated": false, @@ -1221,8 +1200,8 @@ "h": 24 }, "frame": { - "x": 55, - "y": 100, + "x": 45, + "y": 278, "w": 24, "h": 24 } @@ -1243,7 +1222,7 @@ }, "frame": { "x": 46, - "y": 278, + "y": 302, "w": 24, "h": 24 } @@ -1264,7 +1243,7 @@ }, "frame": { "x": 46, - "y": 302, + "y": 326, "w": 24, "h": 24 } @@ -1285,7 +1264,7 @@ }, "frame": { "x": 46, - "y": 326, + "y": 350, "w": 24, "h": 24 } @@ -1306,13 +1285,13 @@ }, "frame": { "x": 46, - "y": 350, + "y": 374, "w": 24, "h": 24 } }, { - "filename": "lucky_punch_master", + "filename": "silver_powder", "rotated": false, "trimmed": true, "sourceSize": { @@ -1321,14 +1300,119 @@ }, "spriteSourceSize": { "x": 4, - "y": 4, + "y": 11, "w": 24, + "h": 15 + }, + "frame": { + "x": 48, + "y": 71, + "w": 24, + "h": 15 + } + }, + { + "filename": "elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, "h": 24 }, "frame": { - "x": 46, - "y": 374, - "w": 24, + "x": 55, + "y": 86, + "w": 18, + "h": 24 + } + }, + { + "filename": "ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 55, + "y": 110, + "w": 18, + "h": 24 + } + }, + { + "filename": "full_restore", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 60, + "y": 134, + "w": 18, + "h": 24 + } + }, + { + "filename": "hp_up", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 63, + "y": 158, + "w": 16, + "h": 24 + } + }, + { + "filename": "iron", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 63, + "y": 182, + "w": 16, "h": 24 } }, @@ -1347,12 +1431,33 @@ "h": 24 }, "frame": { - "x": 48, - "y": 398, + "x": 68, + "y": 206, "w": 23, "h": 24 } }, + { + "filename": "lucky_punch_master", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 68, + "y": 230, + "w": 24, + "h": 24 + } + }, { "filename": "lucky_punch_ultra", "rotated": false, @@ -1368,8 +1473,8 @@ "h": 24 }, "frame": { - "x": 60, - "y": 124, + "x": 68, + "y": 254, "w": 24, "h": 24 } @@ -1389,8 +1494,8 @@ "h": 24 }, "frame": { - "x": 63, - "y": 148, + "x": 69, + "y": 278, "w": 24, "h": 24 } @@ -1410,33 +1515,12 @@ "h": 24 }, "frame": { - "x": 63, - "y": 172, + "x": 70, + "y": 302, "w": 24, "h": 24 } }, - { - "filename": "max_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 68, - "y": 196, - "w": 22, - "h": 24 - } - }, { "filename": "mind_plate", "rotated": false, @@ -1452,8 +1536,8 @@ "h": 24 }, "frame": { - "x": 68, - "y": 220, + "x": 70, + "y": 326, "w": 24, "h": 24 } @@ -1473,8 +1557,8 @@ "h": 24 }, "frame": { - "x": 68, - "y": 244, + "x": 70, + "y": 350, "w": 24, "h": 24 } @@ -1495,7 +1579,7 @@ }, "frame": { "x": 70, - "y": 268, + "y": 374, "w": 24, "h": 24 } @@ -1515,665 +1599,14 @@ "h": 24 }, "frame": { - "x": 70, - "y": 292, + "x": 50, + "y": 398, "w": 24, "h": 24 } }, { - "filename": "scanner", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 70, - "y": 316, - "w": 24, - "h": 24 - } - }, - { - "filename": "silk_scarf", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 70, - "y": 340, - "w": 24, - "h": 24 - } - }, - { - "filename": "sky_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 70, - "y": 364, - "w": 24, - "h": 24 - } - }, - { - "filename": "reveal_glass", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 71, - "y": 388, - "w": 23, - "h": 24 - } - }, - { - "filename": "icy_reins_of_unity", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 71, - "y": 412, - "w": 24, - "h": 20 - } - }, - { - "filename": "elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 79, - "y": 76, - "w": 18, - "h": 24 - } - }, - { - "filename": "ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 79, - "y": 100, - "w": 18, - "h": 24 - } - }, - { - "filename": "full_restore", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 84, - "y": 124, - "w": 18, - "h": 24 - } - }, - { - "filename": "hp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 87, - "y": 148, - "w": 16, - "h": 24 - } - }, - { - "filename": "iron", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 87, - "y": 172, - "w": 16, - "h": 24 - } - }, - { - "filename": "lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 90, - "y": 196, - "w": 17, - "h": 24 - } - }, - { - "filename": "max_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 92, - "y": 220, - "w": 18, - "h": 24 - } - }, - { - "filename": "max_ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 92, - "y": 244, - "w": 18, - "h": 24 - } - }, - { - "filename": "max_lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 94, - "y": 268, - "w": 17, - "h": 24 - } - }, - { - "filename": "max_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 94, - "y": 292, - "w": 18, - "h": 24 - } - }, - { - "filename": "oval_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 94, - "y": 316, - "w": 21, - "h": 24 - } - }, - { - "filename": "shiny_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 94, - "y": 340, - "w": 21, - "h": 24 - } - }, - { - "filename": "splash_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 94, - "y": 364, - "w": 24, - "h": 24 - } - }, - { - "filename": "spooky_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 94, - "y": 388, - "w": 24, - "h": 24 - } - }, - { - "filename": "metal_powder", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 24, - "h": 20 - }, - "frame": { - "x": 95, - "y": 412, - "w": 24, - "h": 20 - } - }, - { - "filename": "berry_pouch", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 84, - "y": 53, - "w": 23, - "h": 23 - } - }, - { - "filename": "max_repel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 97, - "y": 76, - "w": 16, - "h": 24 - } - }, - { - "filename": "pp_max", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 97, - "y": 100, - "w": 16, - "h": 24 - } - }, - { - "filename": "pp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 102, - "y": 124, - "w": 16, - "h": 24 - } - }, - { - "filename": "protein", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 103, - "y": 148, - "w": 16, - "h": 24 - } - }, - { - "filename": "red_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 103, - "y": 172, - "w": 20, - "h": 24 - } - }, - { - "filename": "repel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 107, - "y": 196, - "w": 16, - "h": 24 - } - }, - { - "filename": "stone_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 110, - "y": 220, - "w": 24, - "h": 24 - } - }, - { - "filename": "sun_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 110, - "y": 244, - "w": 24, - "h": 24 - } - }, - { - "filename": "toxic_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 111, - "y": 268, - "w": 24, - "h": 24 - } - }, - { - "filename": "zap_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 112, - "y": 292, - "w": 24, - "h": 24 - } - }, - { - "filename": "black_belt", + "filename": "max_revive", "rotated": false, "trimmed": true, "sourceSize": { @@ -2184,117 +1617,12 @@ "x": 5, "y": 4, "w": 22, - "h": 23 - }, - "frame": { - "x": 115, - "y": 316, - "w": 22, - "h": 23 - } - }, - { - "filename": "bug_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 115, - "y": 339, - "w": 22, - "h": 23 - } - }, - { - "filename": "clefairy_doll", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 118, - "y": 362, - "w": 24, - "h": 23 - } - }, - { - "filename": "coin_case", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 118, - "y": 385, - "w": 24, - "h": 23 - } - }, - { - "filename": "super_lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, "h": 24 }, "frame": { - "x": 119, - "y": 408, - "w": 17, - "h": 24 - } - }, - { - "filename": "super_repel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 136, - "y": 408, - "w": 16, + "x": 74, + "y": 398, + "w": 22, "h": 24 } }, @@ -2320,7 +1648,7 @@ } }, { - "filename": "black_glasses", + "filename": "lure", "rotated": false, "trimmed": true, "sourceSize": { @@ -2328,20 +1656,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 23, - "h": 17 + "x": 8, + "y": 4, + "w": 17, + "h": 24 }, "frame": { "x": 86, - "y": 36, - "w": 23, - "h": 17 + "y": 27, + "w": 17, + "h": 24 } }, { - "filename": "expert_belt", + "filename": "scanner", "rotated": false, "trimmed": true, "sourceSize": { @@ -2352,15 +1680,78 @@ "x": 4, "y": 4, "w": 24, + "h": 24 + }, + "frame": { + "x": 103, + "y": 26, + "w": 24, + "h": 24 + } + }, + { + "filename": "clefairy_doll", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, "h": 23 }, "frame": { - "x": 109, - "y": 26, + "x": 127, + "y": 36, "w": 24, "h": 23 } }, + { + "filename": "coin_case", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 103, + "y": 50, + "w": 24, + "h": 23 + } + }, + { + "filename": "big_nugget", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 83, + "y": 53, + "w": 20, + "h": 20 + } + }, { "filename": "dragon_scale", "rotated": false, @@ -2376,12 +1767,264 @@ "h": 18 }, "frame": { - "x": 133, - "y": 36, + "x": 127, + "y": 59, "w": 24, "h": 18 } }, + { + "filename": "max_elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 151, + "y": 36, + "w": 18, + "h": 24 + } + }, + { + "filename": "adamant_crystal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 151, + "y": 60, + "w": 23, + "h": 21 + } + }, + { + "filename": "silk_scarf", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 169, + "y": 21, + "w": 24, + "h": 24 + } + }, + { + "filename": "sky_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 193, + "y": 21, + "w": 24, + "h": 24 + } + }, + { + "filename": "splash_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 217, + "y": 21, + "w": 24, + "h": 24 + } + }, + { + "filename": "spooky_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 241, + "y": 21, + "w": 24, + "h": 24 + } + }, + { + "filename": "stone_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 265, + "y": 21, + "w": 24, + "h": 24 + } + }, + { + "filename": "sun_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 289, + "y": 21, + "w": 24, + "h": 24 + } + }, + { + "filename": "oval_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 313, + "y": 21, + "w": 21, + "h": 24 + } + }, + { + "filename": "toxic_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 334, + "y": 20, + "w": 24, + "h": 24 + } + }, + { + "filename": "zap_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 358, + "y": 20, + "w": 24, + "h": 24 + } + }, + { + "filename": "exp_balance", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 22 + }, + "frame": { + "x": 382, + "y": 23, + "w": 24, + "h": 22 + } + }, { "filename": "exp_share", "rotated": false, @@ -2397,14 +2040,35 @@ "h": 22 }, "frame": { - "x": 109, - "y": 49, + "x": 406, + "y": 24, "w": 24, "h": 22 } }, { - "filename": "golden_net", + "filename": "candy_overlay", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 12, + "w": 16, + "h": 15 + }, + "frame": { + "x": 169, + "y": 45, + "w": 16, + "h": 15 + } + }, + { + "filename": "expert_belt", "rotated": false, "trimmed": true, "sourceSize": { @@ -2413,98 +2077,14 @@ }, "spriteSourceSize": { "x": 4, - "y": 5, - "w": 24, - "h": 21 - }, - "frame": { - "x": 133, - "y": 54, - "w": 24, - "h": 21 - } - }, - { - "filename": "mystic_water", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 113, - "y": 71, - "w": 20, - "h": 23 - } - }, - { - "filename": "dark_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, "y": 4, - "w": 22, + "w": 24, "h": 23 }, "frame": { - "x": 113, - "y": 94, - "w": 22, - "h": 23 - } - }, - { - "filename": "coupon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 133, - "y": 75, - "w": 23, - "h": 19 - } - }, - { - "filename": "dragon_fang", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 135, - "y": 94, - "w": 21, + "x": 185, + "y": 45, + "w": 24, "h": 23 } }, @@ -2523,75 +2103,12 @@ "h": 23 }, "frame": { - "x": 118, - "y": 117, + "x": 209, + "y": 45, "w": 24, "h": 23 } }, - { - "filename": "dynamax_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 23, - "h": 23 - }, - "frame": { - "x": 119, - "y": 140, - "w": 23, - "h": 23 - } - }, - { - "filename": "unknown", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 142, - "y": 117, - "w": 16, - "h": 24 - } - }, - { - "filename": "berry_pot", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 18, - "h": 22 - }, - "frame": { - "x": 142, - "y": 141, - "w": 18, - "h": 22 - } - }, { "filename": "leppa_berry", "rotated": false, @@ -2607,8 +2124,8 @@ "h": 23 }, "frame": { - "x": 123, - "y": 163, + "x": 233, + "y": 45, "w": 24, "h": 23 } @@ -2628,96 +2145,12 @@ "h": 23 }, "frame": { - "x": 123, - "y": 186, + "x": 257, + "y": 45, "w": 24, "h": 23 } }, - { - "filename": "relic_gold", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 15, - "h": 11 - }, - "frame": { - "x": 123, - "y": 209, - "w": 15, - "h": 11 - } - }, - { - "filename": "zinc", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 147, - "y": 163, - "w": 16, - "h": 24 - } - }, - { - "filename": "bug_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 147, - "y": 187, - "w": 22, - "h": 22 - } - }, - { - "filename": "peat_block", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 138, - "y": 209, - "w": 24, - "h": 22 - } - }, { "filename": "twisted_spoon", "rotated": false, @@ -2733,56 +2166,14 @@ "h": 23 }, "frame": { - "x": 134, - "y": 231, + "x": 281, + "y": 45, "w": 24, "h": 23 } }, { - "filename": "griseous_core", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 135, - "y": 254, - "w": 23, - "h": 23 - } - }, - { - "filename": "silver_powder", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 24, - "h": 15 - }, - "frame": { - "x": 135, - "y": 277, - "w": 24, - "h": 15 - } - }, - { - "filename": "leek", + "filename": "berry_pouch", "rotated": false, "trimmed": true, "sourceSize": { @@ -2796,98 +2187,14 @@ "h": 23 }, "frame": { - "x": 136, - "y": 292, + "x": 305, + "y": 45, "w": 23, "h": 23 } }, { - "filename": "dragon_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 137, - "y": 315, - "w": 22, - "h": 23 - } - }, - { - "filename": "electric_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 137, - "y": 338, - "w": 22, - "h": 23 - } - }, - { - "filename": "fairy_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 142, - "y": 361, - "w": 22, - "h": 23 - } - }, - { - "filename": "fighting_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 142, - "y": 384, - "w": 22, - "h": 23 - } - }, - { - "filename": "fire_stone", + "filename": "black_belt", "rotated": false, "trimmed": true, "sourceSize": { @@ -2896,19 +2203,19 @@ }, "spriteSourceSize": { "x": 5, - "y": 5, + "y": 4, "w": 22, "h": 23 }, "frame": { - "x": 152, - "y": 407, + "x": 328, + "y": 45, "w": 22, "h": 23 } }, { - "filename": "charcoal", + "filename": "reveal_glass", "rotated": false, "trimmed": true, "sourceSize": { @@ -2916,20 +2223,83 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, + "x": 4, + "y": 4, + "w": 23, + "h": 24 + }, + "frame": { + "x": 350, + "y": 44, + "w": 23, + "h": 24 + } + }, + { + "filename": "dynamax_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 23, + "h": 23 + }, + "frame": { + "x": 373, + "y": 45, + "w": 23, + "h": 23 + } + }, + { + "filename": "peat_block", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, "y": 5, - "w": 22, + "w": 24, "h": 22 }, "frame": { - "x": 162, - "y": 209, - "w": 22, + "x": 396, + "y": 46, + "w": 24, "h": 22 } }, { - "filename": "macho_brace", + "filename": "revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 12, + "h": 17 + }, + "frame": { + "x": 420, + "y": 46, + "w": 12, + "h": 17 + } + }, + { + "filename": "golden_net", "rotated": false, "trimmed": true, "sourceSize": { @@ -2939,287 +2309,14 @@ "spriteSourceSize": { "x": 4, "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 158, - "y": 231, - "w": 23, - "h": 23 - } - }, - { - "filename": "rare_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 158, - "y": 254, - "w": 23, - "h": 23 - } - }, - { - "filename": "fire_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 159, - "y": 277, - "w": 22, - "h": 23 - } - }, - { - "filename": "focus_sash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 159, - "y": 300, - "w": 22, - "h": 23 - } - }, - { - "filename": "ghost_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 159, - "y": 323, - "w": 22, - "h": 23 - } - }, - { - "filename": "candy_overlay", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 12, - "w": 16, - "h": 15 - }, - "frame": { - "x": 159, - "y": 346, - "w": 16, - "h": 15 - } - }, - { - "filename": "full_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 15, - "h": 23 - }, - "frame": { - "x": 164, - "y": 361, - "w": 15, - "h": 23 - } - }, - { - "filename": "grass_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 164, - "y": 384, - "w": 22, - "h": 23 - } - }, - { - "filename": "ground_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 174, - "y": 407, - "w": 22, - "h": 23 - } - }, - { - "filename": "hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 157, - "y": 36, - "w": 17, - "h": 23 - } - }, - { - "filename": "adamant_crystal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, + "w": 24, "h": 21 }, - "frame": { - "x": 157, - "y": 59, - "w": 23, - "h": 21 - } - }, - { - "filename": "rarer_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 156, - "y": 80, - "w": 23, - "h": 23 - } - }, - { - "filename": "healing_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 23, - "h": 22 - }, "frame": { "x": 174, - "y": 21, - "w": 23, - "h": 22 - } - }, - { - "filename": "rusted_sword", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 22 - }, - "frame": { - "x": 197, - "y": 21, - "w": 23, - "h": 22 + "y": 68, + "w": 24, + "h": 21 } }, { @@ -3237,8 +2334,8 @@ "h": 21 }, "frame": { - "x": 220, - "y": 21, + "x": 198, + "y": 68, "w": 23, "h": 21 } @@ -3258,14 +2355,35 @@ "h": 21 }, "frame": { - "x": 243, - "y": 21, + "x": 221, + "y": 68, "w": 23, "h": 21 } }, { - "filename": "moon_stone", + "filename": "griseous_core", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 244, + "y": 68, + "w": 23, + "h": 23 + } + }, + { + "filename": "leek", "rotated": false, "trimmed": true, "sourceSize": { @@ -3274,19 +2392,19 @@ }, "spriteSourceSize": { "x": 4, - "y": 6, + "y": 5, "w": 23, - "h": 21 + "h": 23 }, "frame": { - "x": 266, - "y": 21, + "x": 267, + "y": 68, "w": 23, - "h": 21 + "h": 23 } }, { - "filename": "n_lunarizer", + "filename": "macho_brace", "rotated": false, "trimmed": true, "sourceSize": { @@ -3295,19 +2413,103 @@ }, "spriteSourceSize": { "x": 4, - "y": 6, + "y": 5, "w": 23, - "h": 21 + "h": 23 }, "frame": { - "x": 289, - "y": 21, + "x": 290, + "y": 68, "w": 23, - "h": 21 + "h": 23 } }, { - "filename": "berry_juice", + "filename": "rare_candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 313, + "y": 68, + "w": 23, + "h": 23 + } + }, + { + "filename": "rarer_candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 336, + "y": 68, + "w": 23, + "h": 23 + } + }, + { + "filename": "bug_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 359, + "y": 68, + "w": 22, + "h": 23 + } + }, + { + "filename": "dark_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 381, + "y": 68, + "w": 22, + "h": 23 + } + }, + { + "filename": "dragon_fang", "rotated": false, "trimmed": true, "sourceSize": { @@ -3317,18 +2519,18 @@ "spriteSourceSize": { "x": 5, "y": 5, - "w": 22, - "h": 21 + "w": 21, + "h": 23 }, "frame": { - "x": 312, - "y": 21, - "w": 22, - "h": 21 + "x": 403, + "y": 68, + "w": 21, + "h": 23 } }, { - "filename": "dark_memory", + "filename": "relic_gold", "rotated": false, "trimmed": true, "sourceSize": { @@ -3336,20 +2538,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 + "x": 9, + "y": 11, + "w": 15, + "h": 11 }, "frame": { - "x": 334, - "y": 20, - "w": 22, - "h": 22 + "x": 50, + "y": 422, + "w": 15, + "h": 11 } }, { - "filename": "dire_hit", + "filename": "icy_reins_of_unity", "rotated": false, "trimmed": true, "sourceSize": { @@ -3357,41 +2559,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 + "x": 4, + "y": 7, + "w": 24, + "h": 20 }, "frame": { - "x": 356, - "y": 20, - "w": 22, - "h": 22 + "x": 91, + "y": 73, + "w": 24, + "h": 20 } }, { - "filename": "dna_splicers", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 378, - "y": 20, - "w": 22, - "h": 22 - } - }, - { - "filename": "relic_band", + "filename": "max_ether", "rotated": false, "trimmed": true, "sourceSize": { @@ -3400,15 +2581,78 @@ }, "spriteSourceSize": { "x": 7, - "y": 9, - "w": 17, - "h": 16 + "y": 4, + "w": 18, + "h": 24 }, "frame": { - "x": 174, - "y": 43, - "w": 17, - "h": 16 + "x": 73, + "y": 73, + "w": 18, + "h": 24 + } + }, + { + "filename": "max_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 73, + "y": 97, + "w": 18, + "h": 24 + } + }, + { + "filename": "dragon_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 91, + "y": 93, + "w": 22, + "h": 23 + } + }, + { + "filename": "metal_powder", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 24, + "h": 20 + }, + "frame": { + "x": 115, + "y": 77, + "w": 24, + "h": 20 } }, { @@ -3426,12 +2670,33 @@ "h": 20 }, "frame": { - "x": 191, - "y": 43, + "x": 113, + "y": 97, "w": 24, "h": 20 } }, + { + "filename": "berry_juice_bad", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 21 + }, + "frame": { + "x": 91, + "y": 116, + "w": 22, + "h": 21 + } + }, { "filename": "rusted_shield", "rotated": false, @@ -3447,12 +2712,264 @@ "h": 20 }, "frame": { - "x": 400, - "y": 24, + "x": 113, + "y": 117, "w": 24, "h": 20 } }, + { + "filename": "moon_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 78, + "y": 137, + "w": 23, + "h": 21 + } + }, + { + "filename": "electric_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 79, + "y": 158, + "w": 22, + "h": 23 + } + }, + { + "filename": "fairy_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 101, + "y": 137, + "w": 22, + "h": 23 + } + }, + { + "filename": "fighting_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 79, + "y": 181, + "w": 22, + "h": 23 + } + }, + { + "filename": "fire_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 101, + "y": 160, + "w": 22, + "h": 23 + } + }, + { + "filename": "berry_juice_good", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 21 + }, + "frame": { + "x": 101, + "y": 183, + "w": 22, + "h": 21 + } + }, + { + "filename": "fire_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 91, + "y": 204, + "w": 22, + "h": 23 + } + }, + { + "filename": "shiny_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 92, + "y": 227, + "w": 21, + "h": 24 + } + }, + { + "filename": "focus_sash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 92, + "y": 251, + "w": 22, + "h": 23 + } + }, + { + "filename": "ghost_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 93, + "y": 274, + "w": 22, + "h": 23 + } + }, + { + "filename": "grass_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 94, + "y": 297, + "w": 22, + "h": 23 + } + }, + { + "filename": "ground_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 94, + "y": 320, + "w": 22, + "h": 23 + } + }, { "filename": "ice_tera_shard", "rotated": false, @@ -3468,35 +2985,14 @@ "h": 23 }, "frame": { - "x": 158, - "y": 103, + "x": 94, + "y": 343, "w": 22, "h": 23 } }, { - "filename": "eviolite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 15, - "h": 15 - }, - "frame": { - "x": 158, - "y": 126, - "w": 15, - "h": 15 - } - }, - { - "filename": "dragon_memory", + "filename": "never_melt_ice", "rotated": false, "trimmed": true, "sourceSize": { @@ -3507,15 +3003,120 @@ "x": 5, "y": 5, "w": 22, + "h": 23 + }, + "frame": { + "x": 94, + "y": 366, + "w": 22, + "h": 23 + } + }, + { + "filename": "max_lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 123, + "y": 137, + "w": 17, + "h": 24 + } + }, + { + "filename": "red_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 20, + "h": 24 + }, + "frame": { + "x": 123, + "y": 161, + "w": 20, + "h": 24 + } + }, + { + "filename": "binding_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 23, + "h": 20 + }, + "frame": { + "x": 123, + "y": 185, + "w": 23, + "h": 20 + } + }, + { + "filename": "healing_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 23, "h": 22 }, "frame": { - "x": 160, - "y": 141, - "w": 22, + "x": 113, + "y": 205, + "w": 23, "h": 22 } }, + { + "filename": "normal_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 113, + "y": 227, + "w": 22, + "h": 23 + } + }, { "filename": "lansat_berry", "rotated": false, @@ -3531,8 +3132,8 @@ "h": 23 }, "frame": { - "x": 163, - "y": 163, + "x": 114, + "y": 250, "w": 21, "h": 23 } @@ -3552,77 +3153,14 @@ "h": 23 }, "frame": { - "x": 169, - "y": 186, + "x": 115, + "y": 273, "w": 21, "h": 23 } }, { - "filename": "prism_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 15, - "h": 15 - }, - "frame": { - "x": 173, - "y": 126, - "w": 15, - "h": 15 - } - }, - { - "filename": "electirizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 182, - "y": 141, - "w": 22, - "h": 22 - } - }, - { - "filename": "never_melt_ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 184, - "y": 163, - "w": 22, - "h": 23 - } - }, - { - "filename": "normal_tera_shard", + "filename": "mystic_water", "rotated": false, "trimmed": true, "sourceSize": { @@ -3631,36 +3169,15 @@ }, "spriteSourceSize": { "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 190, - "y": 186, - "w": 22, - "h": 23 - } - }, - { - "filename": "electric_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, "y": 5, - "w": 22, - "h": 22 + "w": 20, + "h": 23 }, "frame": { - "x": 184, - "y": 209, - "w": 22, - "h": 22 + "x": 116, + "y": 296, + "w": 20, + "h": 23 } }, { @@ -3678,8 +3195,8 @@ "h": 23 }, "frame": { - "x": 181, - "y": 231, + "x": 116, + "y": 319, "w": 22, "h": 23 } @@ -3699,8 +3216,8 @@ "h": 23 }, "frame": { - "x": 181, - "y": 254, + "x": 116, + "y": 342, "w": 22, "h": 23 } @@ -3720,8 +3237,8 @@ "h": 23 }, "frame": { - "x": 181, - "y": 277, + "x": 116, + "y": 365, "w": 22, "h": 23 } @@ -3741,12 +3258,33 @@ "h": 23 }, "frame": { - "x": 181, - "y": 300, + "x": 96, + "y": 389, "w": 22, "h": 23 } }, + { + "filename": "rusted_sword", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 22 + }, + "frame": { + "x": 96, + "y": 412, + "w": 23, + "h": 22 + } + }, { "filename": "rock_tera_shard", "rotated": false, @@ -3762,54 +3300,12 @@ "h": 23 }, "frame": { - "x": 181, - "y": 323, + "x": 118, + "y": 388, "w": 22, "h": 23 } }, - { - "filename": "sacred_ash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 180, - "y": 63, - "w": 24, - "h": 20 - } - }, - { - "filename": "shadow_reins_of_unity", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 179, - "y": 83, - "w": 24, - "h": 20 - } - }, { "filename": "steel_tera_shard", "rotated": false, @@ -3825,14 +3321,14 @@ "h": 23 }, "frame": { - "x": 180, - "y": 103, + "x": 119, + "y": 411, "w": 22, "h": 23 } }, { - "filename": "apicot_berry", + "filename": "berry_pot", "rotated": false, "trimmed": true, "sourceSize": { @@ -3840,37 +3336,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 + "x": 7, + "y": 5, + "w": 18, + "h": 22 }, "frame": { - "x": 204, - "y": 63, - "w": 19, - "h": 20 - } - }, - { - "filename": "big_nugget", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 203, - "y": 83, - "w": 20, - "h": 20 + "x": 136, + "y": 205, + "w": 18, + "h": 22 } }, { @@ -3888,54 +3363,12 @@ "h": 23 }, "frame": { - "x": 202, - "y": 103, + "x": 135, + "y": 227, "w": 21, "h": 23 } }, - { - "filename": "binding_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 23, - "h": 20 - }, - "frame": { - "x": 215, - "y": 43, - "w": 23, - "h": 20 - } - }, - { - "filename": "n_solarizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 238, - "y": 42, - "w": 23, - "h": 21 - } - }, { "filename": "stellar_tera_shard", "rotated": false, @@ -3951,8 +3384,8 @@ "h": 23 }, "frame": { - "x": 223, - "y": 63, + "x": 135, + "y": 250, "w": 22, "h": 23 } @@ -3972,12 +3405,306 @@ "h": 23 }, "frame": { - "x": 223, - "y": 86, + "x": 136, + "y": 273, "w": 22, "h": 23 } }, + { + "filename": "wide_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 136, + "y": 296, + "w": 22, + "h": 23 + } + }, + { + "filename": "whipped_dream", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 21, + "h": 23 + }, + "frame": { + "x": 138, + "y": 319, + "w": 21, + "h": 23 + } + }, + { + "filename": "bug_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 138, + "y": 342, + "w": 22, + "h": 22 + } + }, + { + "filename": "charcoal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 138, + "y": 364, + "w": 22, + "h": 22 + } + }, + { + "filename": "dark_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 140, + "y": 386, + "w": 22, + "h": 22 + } + }, + { + "filename": "dire_hit", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 141, + "y": 408, + "w": 22, + "h": 22 + } + }, + { + "filename": "blue_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 154, + "y": 81, + "w": 20, + "h": 20 + } + }, + { + "filename": "full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 15, + "h": 23 + }, + "frame": { + "x": 139, + "y": 81, + "w": 15, + "h": 23 + } + }, + { + "filename": "super_lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 137, + "y": 104, + "w": 17, + "h": 24 + } + }, + { + "filename": "dna_splicers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 154, + "y": 101, + "w": 22, + "h": 22 + } + }, + { + "filename": "dragon_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 176, + "y": 89, + "w": 22, + "h": 22 + } + }, + { + "filename": "electirizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 198, + "y": 89, + "w": 22, + "h": 22 + } + }, + { + "filename": "sacred_ash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 220, + "y": 89, + "w": 24, + "h": 20 + } + }, + { + "filename": "shadow_reins_of_unity", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 244, + "y": 91, + "w": 24, + "h": 20 + } + }, { "filename": "soft_sand", "rotated": false, @@ -3993,14 +3720,14 @@ "h": 20 }, "frame": { - "x": 261, - "y": 42, + "x": 268, + "y": 91, "w": 24, "h": 20 } }, { - "filename": "reviver_seed", + "filename": "n_lunarizer", "rotated": false, "trimmed": true, "sourceSize": { @@ -4008,20 +3735,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 8, + "x": 4, + "y": 6, "w": 23, - "h": 20 + "h": 21 }, "frame": { - "x": 285, - "y": 42, + "x": 292, + "y": 91, "w": 23, - "h": 20 + "h": 21 } }, { - "filename": "shell_bell", + "filename": "n_solarizer", "rotated": false, "trimmed": true, "sourceSize": { @@ -4029,16 +3756,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 7, + "x": 4, + "y": 6, "w": 23, - "h": 20 + "h": 21 }, "frame": { - "x": 308, - "y": 42, + "x": 315, + "y": 91, "w": 23, - "h": 20 + "h": 21 } }, { @@ -4056,8 +3783,8 @@ "h": 21 }, "frame": { - "x": 331, - "y": 42, + "x": 338, + "y": 91, "w": 23, "h": 21 } @@ -4077,12 +3804,33 @@ "h": 21 }, "frame": { - "x": 354, - "y": 42, + "x": 361, + "y": 91, "w": 22, "h": 21 } }, + { + "filename": "electric_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 383, + "y": 91, + "w": 22, + "h": 22 + } + }, { "filename": "enigma_berry", "rotated": false, @@ -4098,14 +3846,14 @@ "h": 22 }, "frame": { - "x": 376, - "y": 42, + "x": 405, + "y": 91, "w": 22, "h": 22 } }, { - "filename": "deep_sea_scale", + "filename": "black_glasses", "rotated": false, "trimmed": true, "sourceSize": { @@ -4113,16 +3861,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 + "x": 4, + "y": 8, + "w": 23, + "h": 17 }, "frame": { - "x": 398, - "y": 44, - "w": 22, - "h": 20 + "x": 176, + "y": 111, + "w": 23, + "h": 17 } }, { @@ -4140,35 +3888,14 @@ "h": 19 }, "frame": { - "x": 223, - "y": 109, + "x": 199, + "y": 111, "w": 22, "h": 19 } }, { - "filename": "potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 245, - "y": 63, - "w": 17, - "h": 23 - } - }, - { - "filename": "wide_lens", + "filename": "reviver_seed", "rotated": false, "trimmed": true, "sourceSize": { @@ -4177,439 +3904,19 @@ }, "spriteSourceSize": { "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 262, - "y": 62, - "w": 22, - "h": 23 - } - }, - { - "filename": "fairy_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 284, - "y": 62, - "w": 22, - "h": 22 - } - }, - { - "filename": "fighting_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 306, - "y": 62, - "w": 22, - "h": 22 - } - }, - { - "filename": "fire_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 328, - "y": 63, - "w": 22, - "h": 22 - } - }, - { - "filename": "flying_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 350, - "y": 63, - "w": 22, - "h": 22 - } - }, - { - "filename": "sachet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 18, - "h": 23 - }, - "frame": { - "x": 245, - "y": 86, - "w": 18, - "h": 23 - } - }, - { - "filename": "whipped_dream", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 21, - "h": 23 - }, - "frame": { - "x": 263, - "y": 85, - "w": 21, - "h": 23 - } - }, - { - "filename": "ganlon_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 284, - "y": 84, - "w": 22, - "h": 22 - } - }, - { - "filename": "ghost_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 306, - "y": 84, - "w": 22, - "h": 22 - } - }, - { - "filename": "grass_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 328, - "y": 85, - "w": 22, - "h": 22 - } - }, - { - "filename": "ground_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 350, - "y": 85, - "w": 22, - "h": 22 - } - }, - { - "filename": "guard_spec", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 372, - "y": 64, - "w": 22, - "h": 22 - } - }, - { - "filename": "ice_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 394, - "y": 64, - "w": 22, - "h": 22 - } - }, - { - "filename": "ice_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 372, - "y": 86, - "w": 22, - "h": 22 - } - }, - { - "filename": "magmarizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 394, - "y": 86, - "w": 22, - "h": 22 - } - }, - { - "filename": "mystery_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, "y": 8, - "w": 16, - "h": 18 - }, - "frame": { - "x": 416, - "y": 64, - "w": 16, - "h": 18 - } - }, - { - "filename": "abomasite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 416, - "y": 82, - "w": 16, - "h": 16 - } - }, - { - "filename": "absolite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 416, - "y": 98, - "w": 16, - "h": 16 - } - }, - { - "filename": "revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 12, - "h": 17 - }, - "frame": { - "x": 420, - "y": 44, - "w": 12, - "h": 17 - } - }, - { - "filename": "big_mushroom", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 19 - }, - "frame": { - "x": 245, - "y": 109, - "w": 19, - "h": 19 - } - }, - { - "filename": "blue_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, + "w": 23, "h": 20 }, "frame": { - "x": 264, - "y": 108, - "w": 20, + "x": 221, + "y": 109, + "w": 23, "h": 20 } }, { - "filename": "mini_black_hole", + "filename": "coupon", "rotated": false, "trimmed": true, "sourceSize": { @@ -4617,499 +3924,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 + "x": 4, + "y": 7, + "w": 23, + "h": 19 }, "frame": { - "x": 284, - "y": 106, - "w": 22, - "h": 22 - } - }, - { - "filename": "moon_flute", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 306, - "y": 106, - "w": 22, - "h": 22 - } - }, - { - "filename": "liechi_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 328, - "y": 107, - "w": 22, - "h": 21 - } - }, - { - "filename": "normal_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 350, - "y": 107, - "w": 22, - "h": 22 - } - }, - { - "filename": "poison_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 372, - "y": 108, - "w": 22, - "h": 22 - } - }, - { - "filename": "protector", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 394, - "y": 108, - "w": 22, - "h": 22 - } - }, - { - "filename": "aerodactylite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 416, - "y": 114, - "w": 16, - "h": 16 - } - }, - { - "filename": "psychic_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 179, - "y": 346, - "w": 22, - "h": 22 - } - }, - { - "filename": "aggronite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 179, - "y": 368, - "w": 16, - "h": 16 - } - }, - { - "filename": "super_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 186, - "y": 384, - "w": 17, - "h": 23 - } - }, - { - "filename": "alakazite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 195, - "y": 368, - "w": 16, - "h": 16 - } - }, - { - "filename": "hard_meteorite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 201, - "y": 346, - "w": 20, - "h": 22 - } - }, - { - "filename": "leftovers", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 15, - "h": 22 - }, - "frame": { - "x": 203, - "y": 384, - "w": 15, - "h": 22 - } - }, - { - "filename": "altarianite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 211, - "y": 368, - "w": 16, - "h": 16 - } - }, - { - "filename": "lock_capsule", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 19, - "h": 22 - }, - "frame": { - "x": 218, - "y": 384, - "w": 19, - "h": 22 - } - }, - { - "filename": "metal_coat", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 19, - "h": 22 - }, - "frame": { - "x": 196, - "y": 407, - "w": 19, - "h": 22 - } - }, - { - "filename": "rock_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 215, - "y": 406, - "w": 22, - "h": 22 - } - }, - { - "filename": "metronome", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 206, - "y": 209, - "w": 17, - "h": 22 - } - }, - { - "filename": "scroll_of_darkness", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 203, - "y": 231, - "w": 22, - "h": 22 - } - }, - { - "filename": "scroll_of_waters", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 203, - "y": 253, - "w": 22, - "h": 22 - } - }, - { - "filename": "shed_shell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 203, - "y": 275, - "w": 22, - "h": 22 - } - }, - { - "filename": "starf_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 203, - "y": 297, - "w": 22, - "h": 22 - } - }, - { - "filename": "steel_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 203, - "y": 319, - "w": 22, - "h": 22 - } - }, - { - "filename": "quick_claw", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 21 - }, - "frame": { - "x": 204, - "y": 126, - "w": 19, - "h": 21 + "x": 244, + "y": 111, + "w": 23, + "h": 19 } }, { @@ -5127,8 +3951,8 @@ "h": 19 }, "frame": { - "x": 223, - "y": 128, + "x": 267, + "y": 111, "w": 23, "h": 19 } @@ -5148,8 +3972,8 @@ "h": 19 }, "frame": { - "x": 246, - "y": 128, + "x": 290, + "y": 112, "w": 23, "h": 19 } @@ -5169,12 +3993,54 @@ "h": 19 }, "frame": { - "x": 269, - "y": 128, + "x": 313, + "y": 112, "w": 23, "h": 19 } }, + { + "filename": "shell_bell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 23, + "h": 20 + }, + "frame": { + "x": 336, + "y": 112, + "w": 23, + "h": 20 + } + }, + { + "filename": "deep_sea_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 359, + "y": 112, + "w": 22, + "h": 20 + } + }, { "filename": "blunder_policy", "rotated": false, @@ -5190,8 +4056,8 @@ "h": 19 }, "frame": { - "x": 292, - "y": 128, + "x": 381, + "y": 113, "w": 22, "h": 19 } @@ -5211,14 +4077,14 @@ "h": 19 }, "frame": { - "x": 314, - "y": 128, + "x": 403, + "y": 113, "w": 22, "h": 19 } }, { - "filename": "ampharosite", + "filename": "fairy_feather", "rotated": false, "trimmed": true, "sourceSize": { @@ -5226,16 +4092,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 5, + "y": 7, + "w": 22, + "h": 20 }, "frame": { - "x": 204, - "y": 147, - "w": 16, - "h": 16 + "x": 154, + "y": 123, + "w": 22, + "h": 20 } }, { @@ -5253,8 +4119,8 @@ "h": 17 }, "frame": { - "x": 220, - "y": 147, + "x": 176, + "y": 128, "w": 23, "h": 17 } @@ -5274,14 +4140,14 @@ "h": 17 }, "frame": { - "x": 243, - "y": 147, + "x": 199, + "y": 130, "w": 23, "h": 17 } }, { - "filename": "douse_drive", + "filename": "fairy_memory", "rotated": false, "trimmed": true, "sourceSize": { @@ -5289,16 +4155,184 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 23, - "h": 17 + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 222, + "y": 129, + "w": 22, + "h": 22 + } + }, + { + "filename": "fighting_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 244, + "y": 130, + "w": 22, + "h": 22 + } + }, + { + "filename": "fire_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { "x": 266, - "y": 147, - "w": 23, - "h": 17 + "y": 130, + "w": 22, + "h": 22 + } + }, + { + "filename": "flying_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 288, + "y": 131, + "w": 22, + "h": 22 + } + }, + { + "filename": "ganlon_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 310, + "y": 131, + "w": 22, + "h": 22 + } + }, + { + "filename": "ghost_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 332, + "y": 132, + "w": 22, + "h": 22 + } + }, + { + "filename": "grass_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 354, + "y": 132, + "w": 22, + "h": 22 + } + }, + { + "filename": "ground_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 376, + "y": 132, + "w": 22, + "h": 22 + } + }, + { + "filename": "guard_spec", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 398, + "y": 132, + "w": 22, + "h": 22 } }, { @@ -5316,14 +4350,140 @@ "h": 18 }, "frame": { - "x": 289, - "y": 147, + "x": 140, + "y": 143, "w": 23, "h": 18 } }, { - "filename": "fairy_feather", + "filename": "max_repel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 143, + "y": 161, + "w": 16, + "h": 24 + } + }, + { + "filename": "apicot_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 146, + "y": 185, + "w": 19, + "h": 20 + } + }, + { + "filename": "hard_meteorite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 154, + "y": 205, + "w": 20, + "h": 22 + } + }, + { + "filename": "sachet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 18, + "h": 23 + }, + "frame": { + "x": 156, + "y": 227, + "w": 18, + "h": 23 + } + }, + { + "filename": "hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 157, + "y": 250, + "w": 17, + "h": 23 + } + }, + { + "filename": "pp_max", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 158, + "y": 273, + "w": 16, + "h": 24 + } + }, + { + "filename": "ice_memory", "rotated": false, "trimmed": true, "sourceSize": { @@ -5332,19 +4492,586 @@ }, "spriteSourceSize": { "x": 5, - "y": 7, + "y": 5, "w": 22, + "h": 22 + }, + "frame": { + "x": 158, + "y": 297, + "w": 22, + "h": 22 + } + }, + { + "filename": "ice_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 159, + "y": 319, + "w": 22, + "h": 22 + } + }, + { + "filename": "magmarizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 160, + "y": 341, + "w": 22, + "h": 22 + } + }, + { + "filename": "mini_black_hole", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 160, + "y": 363, + "w": 22, + "h": 22 + } + }, + { + "filename": "moon_flute", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 162, + "y": 385, + "w": 22, + "h": 22 + } + }, + { + "filename": "normal_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 163, + "y": 407, + "w": 22, + "h": 22 + } + }, + { + "filename": "pp_up", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 159, + "y": 161, + "w": 16, + "h": 24 + } + }, + { + "filename": "candy_jar", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, "h": 20 }, "frame": { - "x": 312, + "x": 165, + "y": 185, + "w": 19, + "h": 20 + } + }, + { + "filename": "protein", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 174, + "y": 205, + "w": 16, + "h": 24 + } + }, + { + "filename": "repel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 174, + "y": 229, + "w": 16, + "h": 24 + } + }, + { + "filename": "super_repel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 174, + "y": 253, + "w": 16, + "h": 24 + } + }, + { + "filename": "gb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 174, + "y": 277, + "w": 20, + "h": 20 + } + }, + { + "filename": "leftovers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 15, + "h": 22 + }, + "frame": { + "x": 180, + "y": 297, + "w": 15, + "h": 22 + } + }, + { + "filename": "lock_capsule", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 19, + "h": 22 + }, + "frame": { + "x": 181, + "y": 319, + "w": 19, + "h": 22 + } + }, + { + "filename": "metal_coat", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 19, + "h": 22 + }, + "frame": { + "x": 182, + "y": 341, + "w": 19, + "h": 22 + } + }, + { + "filename": "poison_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 182, + "y": 363, + "w": 22, + "h": 22 + } + }, + { + "filename": "protector", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 184, + "y": 385, + "w": 22, + "h": 22 + } + }, + { + "filename": "psychic_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 185, + "y": 407, + "w": 22, + "h": 22 + } + }, + { + "filename": "relic_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 9, + "w": 17, + "h": 16 + }, + "frame": { + "x": 163, + "y": 145, + "w": 17, + "h": 16 + } + }, + { + "filename": "unknown", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 175, + "y": 161, + "w": 16, + "h": 24 + } + }, + { + "filename": "abomasite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 180, + "y": 145, + "w": 16, + "h": 16 + } + }, + { + "filename": "douse_drive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 196, "y": 147, + "w": 23, + "h": 17 + } + }, + { + "filename": "liechi_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 191, + "y": 164, + "w": 22, + "h": 21 + } + }, + { + "filename": "malicious_armor", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 184, + "y": 185, "w": 22, "h": 20 } }, { - "filename": "sun_flute", + "filename": "zinc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 190, + "y": 205, + "w": 16, + "h": 24 + } + }, + { + "filename": "potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 190, + "y": 229, + "w": 17, + "h": 23 + } + }, + { + "filename": "super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 190, + "y": 252, + "w": 17, + "h": 23 + } + }, + { + "filename": "metronome", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 17, + "h": 22 + }, + "frame": { + "x": 194, + "y": 275, + "w": 17, + "h": 22 + } + }, + { + "filename": "rock_memory", "rotated": false, "trimmed": true, "sourceSize": { @@ -5358,14 +5085,14 @@ "h": 22 }, "frame": { - "x": 206, - "y": 164, + "x": 195, + "y": 297, "w": 22, "h": 22 } }, { - "filename": "thick_club", + "filename": "scroll_of_darkness", "rotated": false, "trimmed": true, "sourceSize": { @@ -5379,14 +5106,14 @@ "h": 22 }, "frame": { - "x": 228, - "y": 164, + "x": 200, + "y": 319, "w": 22, "h": 22 } }, { - "filename": "thunder_stone", + "filename": "scroll_of_waters", "rotated": false, "trimmed": true, "sourceSize": { @@ -5400,14 +5127,14 @@ "h": 22 }, "frame": { - "x": 212, - "y": 186, + "x": 201, + "y": 341, "w": 22, "h": 22 } }, { - "filename": "tm_bug", + "filename": "shed_shell", "rotated": false, "trimmed": true, "sourceSize": { @@ -5421,50 +5148,8 @@ "h": 22 }, "frame": { - "x": 250, - "y": 164, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_dark", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 234, - "y": 186, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_dragon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 223, - "y": 208, + "x": 204, + "y": 363, "w": 22, "h": 22 } @@ -5484,14 +5169,14 @@ "h": 22 }, "frame": { - "x": 225, - "y": 230, + "x": 206, + "y": 385, "w": 20, "h": 22 } }, { - "filename": "tm_electric", + "filename": "starf_berry", "rotated": false, "trimmed": true, "sourceSize": { @@ -5505,978 +5190,12 @@ "h": 22 }, "frame": { - "x": 225, - "y": 252, + "x": 207, + "y": 407, "w": 22, "h": 22 } }, - { - "filename": "tm_fairy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 225, - "y": 274, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_fighting", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 225, - "y": 296, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_fire", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 225, - "y": 318, - "w": 22, - "h": 22 - } - }, - { - "filename": "soothe_bell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 272, - "y": 164, - "w": 17, - "h": 22 - } - }, - { - "filename": "tm_flying", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 256, - "y": 186, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_ghost", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 245, - "y": 208, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_grass", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 245, - "y": 230, - "w": 22, - "h": 22 - } - }, - { - "filename": "sweet_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 289, - "y": 165, - "w": 22, - "h": 21 - } - }, - { - "filename": "tm_ground", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 278, - "y": 186, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 267, - "y": 208, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_normal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 267, - "y": 230, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_poison", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 247, - "y": 252, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_psychic", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 247, - "y": 274, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_rock", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 247, - "y": 296, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_steel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 247, - "y": 318, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_water", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 269, - "y": 252, - "w": 22, - "h": 22 - } - }, - { - "filename": "water_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 269, - "y": 274, - "w": 22, - "h": 22 - } - }, - { - "filename": "water_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 269, - "y": 296, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_accuracy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 269, - "y": 318, - "w": 22, - "h": 22 - } - }, - { - "filename": "malicious_armor", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 311, - "y": 167, - "w": 22, - "h": 20 - } - }, - { - "filename": "x_attack", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 289, - "y": 208, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_defense", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 289, - "y": 230, - "w": 22, - "h": 22 - } - }, - { - "filename": "syrupy_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 300, - "y": 187, - "w": 22, - "h": 21 - } - }, - { - "filename": "x_sp_atk", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 291, - "y": 252, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_sp_def", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 291, - "y": 274, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_speed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 291, - "y": 296, - "w": 22, - "h": 22 - } - }, - { - "filename": "tart_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 291, - "y": 318, - "w": 22, - "h": 21 - } - }, - { - "filename": "dawn_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 21 - }, - "frame": { - "x": 322, - "y": 187, - "w": 20, - "h": 21 - } - }, - { - "filename": "dusk_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 311, - "y": 208, - "w": 21, - "h": 21 - } - }, - { - "filename": "poison_barb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 311, - "y": 229, - "w": 21, - "h": 21 - } - }, - { - "filename": "flying_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 20, - "h": 21 - }, - "frame": { - "x": 313, - "y": 250, - "w": 20, - "h": 21 - } - }, - { - "filename": "shiny_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 313, - "y": 271, - "w": 21, - "h": 21 - } - }, - { - "filename": "zoom_lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 313, - "y": 292, - "w": 21, - "h": 21 - } - }, - { - "filename": "tera_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 313, - "y": 313, - "w": 22, - "h": 20 - } - }, - { - "filename": "spell_tag", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 19, - "h": 21 - }, - "frame": { - "x": 332, - "y": 208, - "w": 19, - "h": 21 - } - }, - { - "filename": "candy_jar", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 332, - "y": 229, - "w": 19, - "h": 20 - } - }, - { - "filename": "gb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 333, - "y": 249, - "w": 20, - "h": 20 - } - }, - { - "filename": "hard_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 334, - "y": 269, - "w": 19, - "h": 20 - } - }, - { - "filename": "magnet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 334, - "y": 289, - "w": 20, - "h": 20 - } - }, - { - "filename": "mb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 335, - "y": 309, - "w": 20, - "h": 20 - } - }, - { - "filename": "golden_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 - }, - "frame": { - "x": 333, - "y": 167, - "w": 17, - "h": 20 - } - }, - { - "filename": "lucky_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 - }, - "frame": { - "x": 334, - "y": 147, - "w": 17, - "h": 20 - } - }, - { - "filename": "masterpiece_teacup", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 21, - "h": 18 - }, - "frame": { - "x": 336, - "y": 129, - "w": 21, - "h": 18 - } - }, - { - "filename": "pb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 342, - "y": 187, - "w": 20, - "h": 20 - } - }, - { - "filename": "pb_gold", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 350, - "y": 167, - "w": 20, - "h": 20 - } - }, - { - "filename": "pb_silver", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 351, - "y": 147, - "w": 20, - "h": 20 - } - }, { "filename": "shock_drive", "rotated": false, @@ -6492,8 +5211,8 @@ "h": 17 }, "frame": { - "x": 357, - "y": 130, + "x": 219, + "y": 151, "w": 23, "h": 17 } @@ -6513,12 +5232,201 @@ "h": 17 }, "frame": { - "x": 380, - "y": 130, + "x": 242, + "y": 152, "w": 23, "h": 17 } }, + { + "filename": "steel_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 265, + "y": 152, + "w": 22, + "h": 22 + } + }, + { + "filename": "sun_flute", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 287, + "y": 153, + "w": 22, + "h": 22 + } + }, + { + "filename": "thick_club", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 309, + "y": 153, + "w": 22, + "h": 22 + } + }, + { + "filename": "sweet_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 331, + "y": 154, + "w": 22, + "h": 21 + } + }, + { + "filename": "syrupy_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 353, + "y": 154, + "w": 22, + "h": 21 + } + }, + { + "filename": "tart_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 375, + "y": 154, + "w": 22, + "h": 21 + } + }, + { + "filename": "thunder_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 397, + "y": 154, + "w": 22, + "h": 22 + } + }, + { + "filename": "tera_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 213, + "y": 168, + "w": 22, + "h": 20 + } + }, + { + "filename": "tm_bug", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 206, + "y": 188, + "w": 22, + "h": 22 + } + }, { "filename": "upgrade", "rotated": false, @@ -6534,12 +5442,663 @@ "h": 19 }, "frame": { - "x": 371, - "y": 147, + "x": 206, + "y": 210, "w": 22, "h": 19 } }, + { + "filename": "tm_dark", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 207, + "y": 229, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_dragon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 207, + "y": 251, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_electric", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 211, + "y": 273, + "w": 22, + "h": 22 + } + }, + { + "filename": "soothe_bell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 22 + }, + "frame": { + "x": 217, + "y": 295, + "w": 17, + "h": 22 + } + }, + { + "filename": "tm_fairy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 235, + "y": 169, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_fighting", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 228, + "y": 191, + "w": 22, + "h": 22 + } + }, + { + "filename": "absolite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 228, + "y": 213, + "w": 16, + "h": 16 + } + }, + { + "filename": "tm_fire", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 229, + "y": 229, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_flying", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 229, + "y": 251, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_ghost", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 233, + "y": 273, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_grass", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 234, + "y": 295, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_ground", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 222, + "y": 317, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 223, + "y": 339, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_normal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 226, + "y": 361, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_poison", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 226, + "y": 383, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_psychic", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 229, + "y": 405, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_rock", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 244, + "y": 317, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_steel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 245, + "y": 339, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_water", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 248, + "y": 361, + "w": 22, + "h": 22 + } + }, + { + "filename": "water_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 248, + "y": 383, + "w": 22, + "h": 22 + } + }, + { + "filename": "water_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 251, + "y": 405, + "w": 22, + "h": 22 + } + }, + { + "filename": "eviolite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 15, + "h": 15 + }, + "frame": { + "x": 419, + "y": 154, + "w": 15, + "h": 15 + } + }, + { + "filename": "prism_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 15, + "h": 15 + }, + "frame": { + "x": 419, + "y": 169, + "w": 15, + "h": 15 + } + }, + { + "filename": "x_accuracy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 257, + "y": 174, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_attack", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 279, + "y": 175, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_defense", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 301, + "y": 175, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_sp_atk", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 323, + "y": 175, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_sp_def", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 345, + "y": 175, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_speed", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 367, + "y": 175, + "w": 22, + "h": 22 + } + }, + { + "filename": "dusk_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 389, + "y": 176, + "w": 21, + "h": 21 + } + }, + { + "filename": "masterpiece_teacup", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 21, + "h": 18 + }, + "frame": { + "x": 250, + "y": 196, + "w": 21, + "h": 18 + } + }, { "filename": "metal_alloy", "rotated": false, @@ -6555,14 +6114,98 @@ "h": 19 }, "frame": { - "x": 403, - "y": 130, + "x": 271, + "y": 197, "w": 21, "h": 19 } }, { - "filename": "razor_fang", + "filename": "poison_barb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 292, + "y": 197, + "w": 21, + "h": 21 + } + }, + { + "filename": "shiny_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 313, + "y": 197, + "w": 21, + "h": 21 + } + }, + { + "filename": "zoom_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 334, + "y": 197, + "w": 21, + "h": 21 + } + }, + { + "filename": "dawn_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 21 + }, + "frame": { + "x": 355, + "y": 197, + "w": 20, + "h": 21 + } + }, + { + "filename": "flying_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -6571,19 +6214,40 @@ }, "spriteSourceSize": { "x": 7, - "y": 6, - "w": 18, - "h": 20 + "y": 5, + "w": 20, + "h": 21 }, "frame": { - "x": 351, - "y": 207, - "w": 18, - "h": 20 + "x": 375, + "y": 197, + "w": 20, + "h": 21 } }, { - "filename": "rb", + "filename": "quick_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 395, + "y": 197, + "w": 19, + "h": 21 + } + }, + { + "filename": "magnet", "rotated": false, "trimmed": true, "sourceSize": { @@ -6597,35 +6261,14 @@ "h": 20 }, "frame": { - "x": 351, - "y": 227, + "x": 414, + "y": 184, "w": 20, "h": 20 } }, { - "filename": "smooth_meteorite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 353, - "y": 247, - "w": 20, - "h": 20 - } - }, - { - "filename": "strange_ball", + "filename": "mb", "rotated": false, "trimmed": true, "sourceSize": { @@ -6639,14 +6282,14 @@ "h": 20 }, "frame": { - "x": 353, - "y": 267, + "x": 414, + "y": 204, "w": 20, "h": 20 } }, { - "filename": "ub", + "filename": "pb", "rotated": false, "trimmed": true, "sourceSize": { @@ -6660,8 +6303,50 @@ "h": 20 }, "frame": { - "x": 354, - "y": 287, + "x": 251, + "y": 214, + "w": 20, + "h": 20 + } + }, + { + "filename": "old_gateau", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 21, + "h": 18 + }, + "frame": { + "x": 271, + "y": 216, + "w": 21, + "h": 18 + } + }, + { + "filename": "pb_gold", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 251, + "y": 234, "w": 20, "h": 20 } @@ -6681,14 +6366,98 @@ "h": 19 }, "frame": { - "x": 355, - "y": 307, + "x": 251, + "y": 254, "w": 20, "h": 19 } }, { - "filename": "old_gateau", + "filename": "pb_silver", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 271, + "y": 234, + "w": 20, + "h": 20 + } + }, + { + "filename": "power_herb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 271, + "y": 254, + "w": 20, + "h": 19 + } + }, + { + "filename": "rb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 255, + "y": 273, + "w": 20, + "h": 20 + } + }, + { + "filename": "spell_tag", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 256, + "y": 293, + "w": 19, + "h": 21 + } + }, + { + "filename": "sharp_meteorite", "rotated": false, "trimmed": true, "sourceSize": { @@ -6702,14 +6471,14 @@ "h": 18 }, "frame": { - "x": 393, - "y": 149, + "x": 292, + "y": 218, "w": 21, "h": 18 } }, { - "filename": "oval_stone", + "filename": "smooth_meteorite", "rotated": false, "trimmed": true, "sourceSize": { @@ -6718,14 +6487,182 @@ }, "spriteSourceSize": { "x": 7, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 291, + "y": 236, + "w": 20, + "h": 20 + } + }, + { + "filename": "unremarkable_teacup", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, "y": 7, - "w": 18, + "w": 21, + "h": 18 + }, + "frame": { + "x": 313, + "y": 218, + "w": 21, + "h": 18 + } + }, + { + "filename": "strange_ball", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 311, + "y": 236, + "w": 20, + "h": 20 + } + }, + { + "filename": "razor_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, "h": 19 }, "frame": { - "x": 414, - "y": 149, - "w": 18, + "x": 334, + "y": 218, + "w": 20, + "h": 19 + } + }, + { + "filename": "ub", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 354, + "y": 218, + "w": 20, + "h": 20 + } + }, + { + "filename": "hard_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 374, + "y": 218, + "w": 19, + "h": 20 + } + }, + { + "filename": "white_herb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 393, + "y": 218, + "w": 20, + "h": 19 + } + }, + { + "filename": "everstone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 17 + }, + "frame": { + "x": 291, + "y": 256, + "w": 20, + "h": 17 + } + }, + { + "filename": "big_mushroom", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 19 + }, + "frame": { + "x": 275, + "y": 273, + "w": 19, "h": 19 } }, @@ -6744,14 +6681,14 @@ "h": 19 }, "frame": { - "x": 362, - "y": 187, + "x": 275, + "y": 292, "w": 19, "h": 19 } }, { - "filename": "power_herb", + "filename": "golden_egg", "rotated": false, "trimmed": true, "sourceSize": { @@ -6759,20 +6696,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 + "x": 7, + "y": 6, + "w": 17, + "h": 20 }, "frame": { - "x": 369, - "y": 206, - "w": 20, - "h": 19 + "x": 294, + "y": 273, + "w": 17, + "h": 20 } }, { - "filename": "razor_claw", + "filename": "razor_fang", "rotated": false, "trimmed": true, "sourceSize": { @@ -6780,20 +6717,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 + "x": 7, + "y": 6, + "w": 18, + "h": 20 }, "frame": { - "x": 371, - "y": 225, - "w": 20, - "h": 19 + "x": 311, + "y": 256, + "w": 18, + "h": 20 } }, { - "filename": "white_herb", + "filename": "baton", "rotated": false, "trimmed": true, "sourceSize": { @@ -6801,57 +6738,15 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, + "x": 7, "y": 7, - "w": 20, - "h": 19 - }, - "frame": { - "x": 373, - "y": 244, - "w": 20, - "h": 19 - } - }, - { - "filename": "sharp_meteorite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 21, + "w": 18, "h": 18 }, "frame": { - "x": 373, - "y": 263, - "w": 21, - "h": 18 - } - }, - { - "filename": "unremarkable_teacup", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 21, - "h": 18 - }, - "frame": { - "x": 374, - "y": 281, - "w": 21, + "x": 294, + "y": 293, + "w": 18, "h": 18 } }, @@ -6870,33 +6765,12 @@ "h": 18 }, "frame": { - "x": 375, - "y": 299, + "x": 331, + "y": 237, "w": 20, "h": 18 } }, - { - "filename": "everstone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 17 - }, - "frame": { - "x": 375, - "y": 317, - "w": 20, - "h": 17 - } - }, { "filename": "wl_antidote", "rotated": false, @@ -6912,8 +6786,8 @@ "h": 18 }, "frame": { - "x": 355, - "y": 326, + "x": 351, + "y": 238, "w": 20, "h": 18 } @@ -6933,12 +6807,54 @@ "h": 18 }, "frame": { - "x": 335, - "y": 329, + "x": 371, + "y": 238, "w": 20, "h": 18 } }, + { + "filename": "aerodactylite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 311, + "y": 276, + "w": 16, + "h": 16 + } + }, + { + "filename": "lucky_egg", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 20 + }, + "frame": { + "x": 312, + "y": 292, + "w": 17, + "h": 20 + } + }, { "filename": "wl_burn_heal", "rotated": false, @@ -6954,8 +6870,8 @@ "h": 18 }, "frame": { - "x": 375, - "y": 334, + "x": 413, + "y": 224, "w": 20, "h": 18 } @@ -6975,8 +6891,8 @@ "h": 18 }, "frame": { - "x": 355, - "y": 344, + "x": 393, + "y": 237, "w": 20, "h": 18 } @@ -6996,12 +6912,33 @@ "h": 18 }, "frame": { - "x": 375, - "y": 352, + "x": 413, + "y": 242, "w": 20, "h": 18 } }, + { + "filename": "oval_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 19 + }, + "frame": { + "x": 266, + "y": 314, + "w": 18, + "h": 19 + } + }, { "filename": "wl_elixir", "rotated": false, @@ -7017,12 +6954,33 @@ "h": 18 }, "frame": { - "x": 313, - "y": 333, + "x": 284, + "y": 311, "w": 20, "h": 18 } }, + { + "filename": "candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 11, + "w": 18, + "h": 18 + }, + "frame": { + "x": 267, + "y": 333, + "w": 18, + "h": 18 + } + }, { "filename": "wl_ether", "rotated": false, @@ -7038,12 +6996,96 @@ "h": 18 }, "frame": { - "x": 333, - "y": 347, + "x": 285, + "y": 329, "w": 20, "h": 18 } }, + { + "filename": "aggronite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 304, + "y": 312, + "w": 16, + "h": 16 + } + }, + { + "filename": "dark_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 18 + }, + "frame": { + "x": 305, + "y": 328, + "w": 18, + "h": 18 + } + }, + { + "filename": "alakazite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 320, + "y": 312, + "w": 16, + "h": 16 + } + }, + { + "filename": "flame_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 18 + }, + "frame": { + "x": 323, + "y": 328, + "w": 18, + "h": 18 + } + }, { "filename": "wl_full_heal", "rotated": false, @@ -7059,8 +7101,8 @@ "h": 18 }, "frame": { - "x": 371, - "y": 166, + "x": 285, + "y": 347, "w": 20, "h": 18 } @@ -7080,12 +7122,33 @@ "h": 18 }, "frame": { - "x": 391, - "y": 167, + "x": 305, + "y": 346, "w": 20, "h": 18 } }, + { + "filename": "light_ball", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 18 + }, + "frame": { + "x": 325, + "y": 346, + "w": 18, + "h": 18 + } + }, { "filename": "wl_guard_spec", "rotated": false, @@ -7101,8 +7164,8 @@ "h": 18 }, "frame": { - "x": 411, - "y": 168, + "x": 270, + "y": 365, "w": 20, "h": 18 } @@ -7122,14 +7185,14 @@ "h": 18 }, "frame": { - "x": 381, - "y": 185, + "x": 270, + "y": 383, "w": 20, "h": 18 } }, { - "filename": "baton", + "filename": "light_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -7143,71 +7206,8 @@ "h": 18 }, "frame": { - "x": 389, - "y": 203, - "w": 18, - "h": 18 - } - }, - { - "filename": "candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 11, - "w": 18, - "h": 18 - }, - "frame": { - "x": 391, - "y": 221, - "w": 18, - "h": 18 - } - }, - { - "filename": "dark_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 393, - "y": 239, - "w": 18, - "h": 18 - } - }, - { - "filename": "flame_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 394, - "y": 257, + "x": 290, + "y": 365, "w": 18, "h": 18 } @@ -7227,12 +7227,33 @@ "h": 18 }, "frame": { - "x": 412, - "y": 186, + "x": 308, + "y": 364, "w": 20, "h": 18 } }, + { + "filename": "toxic_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 18 + }, + "frame": { + "x": 290, + "y": 383, + "w": 18, + "h": 18 + } + }, { "filename": "wl_item_drop", "rotated": false, @@ -7248,8 +7269,8 @@ "h": 18 }, "frame": { - "x": 412, - "y": 204, + "x": 308, + "y": 382, "w": 20, "h": 18 } @@ -7269,12 +7290,33 @@ "h": 18 }, "frame": { - "x": 412, - "y": 222, + "x": 273, + "y": 401, "w": 20, "h": 18 } }, + { + "filename": "mystery_egg", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 18 + }, + "frame": { + "x": 328, + "y": 364, + "w": 16, + "h": 18 + } + }, { "filename": "wl_max_elixir", "rotated": false, @@ -7290,8 +7332,8 @@ "h": 18 }, "frame": { - "x": 412, - "y": 240, + "x": 328, + "y": 382, "w": 20, "h": 18 } @@ -7311,8 +7353,92 @@ "h": 18 }, "frame": { - "x": 412, - "y": 258, + "x": 293, + "y": 401, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 313, + "y": 400, + "w": 20, + "h": 18 + } + }, + { + "filename": "altarianite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 313, + "y": 418, + "w": 16, + "h": 16 + } + }, + { + "filename": "ampharosite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 329, + "y": 418, + "w": 16, + "h": 16 + } + }, + { + "filename": "wl_max_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 333, + "y": 400, "w": 20, "h": 18 } @@ -7332,117 +7458,12 @@ "h": 16 }, "frame": { - "x": 395, - "y": 275, + "x": 345, + "y": 418, "w": 16, "h": 16 } }, - { - "filename": "light_ball", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 395, - "y": 291, - "w": 18, - "h": 18 - } - }, - { - "filename": "light_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 395, - "y": 309, - "w": 18, - "h": 18 - } - }, - { - "filename": "toxic_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 395, - "y": 327, - "w": 18, - "h": 18 - } - }, - { - "filename": "wl_max_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 395, - "y": 345, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_max_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 395, - "y": 363, - "w": 20, - "h": 18 - } - }, { "filename": "wl_paralyze_heal", "rotated": false, @@ -7458,8 +7479,8 @@ "h": 18 }, "frame": { - "x": 225, - "y": 340, + "x": 331, + "y": 255, "w": 20, "h": 18 } @@ -7479,8 +7500,8 @@ "h": 18 }, "frame": { - "x": 245, - "y": 340, + "x": 351, + "y": 256, "w": 20, "h": 18 } @@ -7500,8 +7521,8 @@ "h": 18 }, "frame": { - "x": 265, - "y": 340, + "x": 371, + "y": 256, "w": 20, "h": 18 } @@ -7521,8 +7542,8 @@ "h": 18 }, "frame": { - "x": 227, - "y": 358, + "x": 391, + "y": 255, "w": 20, "h": 18 } @@ -7542,8 +7563,8 @@ "h": 18 }, "frame": { - "x": 247, - "y": 358, + "x": 411, + "y": 260, "w": 20, "h": 18 } @@ -7563,8 +7584,8 @@ "h": 16 }, "frame": { - "x": 267, - "y": 358, + "x": 327, + "y": 276, "w": 16, "h": 16 } @@ -7584,8 +7605,8 @@ "h": 16 }, "frame": { - "x": 237, - "y": 376, + "x": 329, + "y": 292, "w": 16, "h": 16 } @@ -7605,8 +7626,8 @@ "h": 16 }, "frame": { - "x": 237, - "y": 392, + "x": 343, + "y": 274, "w": 16, "h": 16 } @@ -7626,8 +7647,8 @@ "h": 16 }, "frame": { - "x": 237, - "y": 408, + "x": 359, + "y": 274, "w": 16, "h": 16 } @@ -7647,8 +7668,8 @@ "h": 16 }, "frame": { - "x": 253, - "y": 376, + "x": 375, + "y": 274, "w": 16, "h": 16 } @@ -7668,8 +7689,8 @@ "h": 16 }, "frame": { - "x": 253, - "y": 392, + "x": 391, + "y": 273, "w": 16, "h": 16 } @@ -7689,8 +7710,8 @@ "h": 16 }, "frame": { - "x": 253, - "y": 408, + "x": 345, + "y": 290, "w": 16, "h": 16 } @@ -7710,8 +7731,8 @@ "h": 16 }, "frame": { - "x": 269, - "y": 374, + "x": 361, + "y": 290, "w": 16, "h": 16 } @@ -7731,8 +7752,8 @@ "h": 16 }, "frame": { - "x": 269, - "y": 390, + "x": 377, + "y": 290, "w": 16, "h": 16 } @@ -7752,8 +7773,8 @@ "h": 16 }, "frame": { - "x": 269, - "y": 406, + "x": 393, + "y": 289, "w": 16, "h": 16 } @@ -7773,8 +7794,8 @@ "h": 16 }, "frame": { - "x": 285, - "y": 340, + "x": 336, + "y": 308, "w": 16, "h": 16 } @@ -7794,8 +7815,8 @@ "h": 16 }, "frame": { - "x": 283, - "y": 358, + "x": 352, + "y": 306, "w": 16, "h": 16 } @@ -7815,8 +7836,8 @@ "h": 16 }, "frame": { - "x": 285, - "y": 374, + "x": 368, + "y": 306, "w": 16, "h": 16 } @@ -7836,8 +7857,8 @@ "h": 16 }, "frame": { - "x": 285, - "y": 390, + "x": 384, + "y": 306, "w": 16, "h": 16 } @@ -7857,8 +7878,8 @@ "h": 16 }, "frame": { - "x": 285, - "y": 406, + "x": 400, + "y": 305, "w": 16, "h": 16 } @@ -7878,8 +7899,8 @@ "h": 16 }, "frame": { - "x": 353, - "y": 362, + "x": 341, + "y": 324, "w": 16, "h": 16 } @@ -7899,8 +7920,8 @@ "h": 16 }, "frame": { - "x": 369, - "y": 370, + "x": 357, + "y": 322, "w": 16, "h": 16 } @@ -7920,8 +7941,8 @@ "h": 16 }, "frame": { - "x": 413, - "y": 276, + "x": 373, + "y": 322, "w": 16, "h": 16 } @@ -7941,8 +7962,8 @@ "h": 16 }, "frame": { - "x": 413, - "y": 292, + "x": 389, + "y": 322, "w": 16, "h": 16 } @@ -7962,8 +7983,8 @@ "h": 16 }, "frame": { - "x": 413, - "y": 308, + "x": 405, + "y": 321, "w": 16, "h": 16 } @@ -7983,8 +8004,8 @@ "h": 16 }, "frame": { - "x": 413, - "y": 324, + "x": 343, + "y": 340, "w": 16, "h": 16 } @@ -8004,8 +8025,8 @@ "h": 16 }, "frame": { - "x": 415, - "y": 340, + "x": 359, + "y": 338, "w": 16, "h": 16 } @@ -8025,8 +8046,8 @@ "h": 16 }, "frame": { - "x": 415, - "y": 356, + "x": 375, + "y": 338, "w": 16, "h": 16 } @@ -8046,8 +8067,8 @@ "h": 16 }, "frame": { - "x": 415, - "y": 372, + "x": 391, + "y": 338, "w": 16, "h": 16 } @@ -8067,8 +8088,8 @@ "h": 16 }, "frame": { - "x": 299, - "y": 356, + "x": 407, + "y": 337, "w": 16, "h": 16 } @@ -8088,8 +8109,8 @@ "h": 16 }, "frame": { - "x": 301, - "y": 372, + "x": 344, + "y": 356, "w": 16, "h": 16 } @@ -8109,8 +8130,8 @@ "h": 16 }, "frame": { - "x": 301, - "y": 388, + "x": 360, + "y": 354, "w": 16, "h": 16 } @@ -8130,8 +8151,8 @@ "h": 16 }, "frame": { - "x": 301, - "y": 404, + "x": 376, + "y": 354, "w": 16, "h": 16 } @@ -8151,8 +8172,8 @@ "h": 16 }, "frame": { - "x": 317, - "y": 351, + "x": 392, + "y": 354, "w": 16, "h": 16 } @@ -8172,8 +8193,8 @@ "h": 16 }, "frame": { - "x": 317, - "y": 367, + "x": 408, + "y": 353, "w": 16, "h": 16 } @@ -8193,8 +8214,8 @@ "h": 16 }, "frame": { - "x": 333, - "y": 365, + "x": 409, + "y": 278, "w": 16, "h": 16 } @@ -8214,8 +8235,8 @@ "h": 16 }, "frame": { - "x": 317, - "y": 383, + "x": 348, + "y": 372, "w": 16, "h": 16 } @@ -8235,8 +8256,8 @@ "h": 16 }, "frame": { - "x": 333, - "y": 381, + "x": 364, + "y": 370, "w": 16, "h": 16 } @@ -8256,8 +8277,8 @@ "h": 16 }, "frame": { - "x": 317, - "y": 399, + "x": 380, + "y": 370, "w": 16, "h": 16 } @@ -8277,8 +8298,8 @@ "h": 16 }, "frame": { - "x": 333, - "y": 397, + "x": 396, + "y": 370, "w": 16, "h": 16 } @@ -8298,8 +8319,8 @@ "h": 16 }, "frame": { - "x": 349, - "y": 378, + "x": 412, + "y": 369, "w": 16, "h": 16 } @@ -8319,8 +8340,8 @@ "h": 16 }, "frame": { - "x": 349, - "y": 394, + "x": 364, + "y": 386, "w": 16, "h": 16 } @@ -8340,7 +8361,7 @@ "h": 16 }, "frame": { - "x": 365, + "x": 380, "y": 386, "w": 16, "h": 16 @@ -8361,8 +8382,8 @@ "h": 16 }, "frame": { - "x": 365, - "y": 402, + "x": 396, + "y": 386, "w": 16, "h": 16 } @@ -8382,8 +8403,8 @@ "h": 16 }, "frame": { - "x": 349, - "y": 410, + "x": 412, + "y": 385, "w": 16, "h": 16 } @@ -8403,8 +8424,8 @@ "h": 16 }, "frame": { - "x": 333, - "y": 413, + "x": 353, + "y": 402, "w": 16, "h": 16 } @@ -8424,8 +8445,8 @@ "h": 16 }, "frame": { - "x": 317, - "y": 415, + "x": 361, + "y": 418, "w": 16, "h": 16 } @@ -8445,8 +8466,8 @@ "h": 16 }, "frame": { - "x": 381, - "y": 386, + "x": 369, + "y": 402, "w": 16, "h": 16 } @@ -8457,6 +8478,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:c228145ca625236e53edc95aac265d56:86524cdf0e3043482141d77259bc4d47:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:9b6fc7b241128f4f61686fe287e090cd:46e9caafcc91f3c30ff85a6e8d3f5227:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index eb9878a5bfc..f0f11e9443e 100644 Binary files a/public/images/items.png and b/public/images/items.png differ diff --git a/public/images/items/ability_capsule.png b/public/images/items/ability_capsule.png index ee8aec6b346..92171d5296a 100644 Binary files a/public/images/items/ability_capsule.png and b/public/images/items/ability_capsule.png differ diff --git a/public/images/items/ability_charm.png b/public/images/items/ability_charm.png index 2e9e0368667..c8a168e315d 100644 Binary files a/public/images/items/ability_charm.png and b/public/images/items/ability_charm.png differ diff --git a/public/images/items/abomasite.png b/public/images/items/abomasite.png index 0758786bb0f..eae8422bdaf 100644 Binary files a/public/images/items/abomasite.png and b/public/images/items/abomasite.png differ diff --git a/public/images/items/absolite.png b/public/images/items/absolite.png index f7fe8b7ac12..8043b2969bb 100644 Binary files a/public/images/items/absolite.png and b/public/images/items/absolite.png differ diff --git a/public/images/items/adamant_crystal.png b/public/images/items/adamant_crystal.png index eb35af1540e..f9aea1fda30 100644 Binary files a/public/images/items/adamant_crystal.png and b/public/images/items/adamant_crystal.png differ diff --git a/public/images/items/aerodactylite.png b/public/images/items/aerodactylite.png index 4feb04f3702..8065e19de5e 100644 Binary files a/public/images/items/aerodactylite.png and b/public/images/items/aerodactylite.png differ diff --git a/public/images/items/aggronite.png b/public/images/items/aggronite.png index 8feb64633ec..a7c1f990ffa 100644 Binary files a/public/images/items/aggronite.png and b/public/images/items/aggronite.png differ diff --git a/public/images/items/alakazite.png b/public/images/items/alakazite.png index ed6acab02ca..470987bc13b 100644 Binary files a/public/images/items/alakazite.png and b/public/images/items/alakazite.png differ diff --git a/public/images/items/altarianite.png b/public/images/items/altarianite.png index 0bb6be23819..03ef291faa5 100644 Binary files a/public/images/items/altarianite.png and b/public/images/items/altarianite.png differ diff --git a/public/images/items/ampharosite.png b/public/images/items/ampharosite.png index 3084c05c1a9..154f7ea5609 100644 Binary files a/public/images/items/ampharosite.png and b/public/images/items/ampharosite.png differ diff --git a/public/images/items/amulet_coin.png b/public/images/items/amulet_coin.png index 3cda2b2a53b..727562836c4 100644 Binary files a/public/images/items/amulet_coin.png and b/public/images/items/amulet_coin.png differ diff --git a/public/images/items/apicot_berry.png b/public/images/items/apicot_berry.png index 4719671eaf3..7681645c114 100644 Binary files a/public/images/items/apicot_berry.png and b/public/images/items/apicot_berry.png differ diff --git a/public/images/items/audinite.png b/public/images/items/audinite.png index f7c21bf8e3b..b73c11bfbf2 100644 Binary files a/public/images/items/audinite.png and b/public/images/items/audinite.png differ diff --git a/public/images/items/auspicious_armor.png b/public/images/items/auspicious_armor.png index 27c40ae0bd0..d484b01f8b8 100644 Binary files a/public/images/items/auspicious_armor.png and b/public/images/items/auspicious_armor.png differ diff --git a/public/images/items/banettite.png b/public/images/items/banettite.png index b6bcadd72fc..9361e0e3da5 100644 Binary files a/public/images/items/banettite.png and b/public/images/items/banettite.png differ diff --git a/public/images/items/baton.png b/public/images/items/baton.png index ece81f82b2f..f814d93728e 100644 Binary files a/public/images/items/baton.png and b/public/images/items/baton.png differ diff --git a/public/images/items/beedrillite.png b/public/images/items/beedrillite.png index 99e516446d7..f1eb43f5488 100644 Binary files a/public/images/items/beedrillite.png and b/public/images/items/beedrillite.png differ diff --git a/public/images/items/berry_juice.png b/public/images/items/berry_juice.png deleted file mode 100644 index 2f6272eca7c..00000000000 Binary files a/public/images/items/berry_juice.png and /dev/null differ diff --git a/public/images/items/berry_juice_bad.png b/public/images/items/berry_juice_bad.png new file mode 100644 index 00000000000..3b0805fff81 Binary files /dev/null and b/public/images/items/berry_juice_bad.png differ diff --git a/public/images/items/berry_juice_good.png b/public/images/items/berry_juice_good.png new file mode 100644 index 00000000000..b4d9907576f Binary files /dev/null and b/public/images/items/berry_juice_good.png differ diff --git a/public/images/items/berry_pot.png b/public/images/items/berry_pot.png index 3cb9b90dc53..d80ac4a4cc0 100644 Binary files a/public/images/items/berry_pot.png and b/public/images/items/berry_pot.png differ diff --git a/public/images/items/berry_pouch.png b/public/images/items/berry_pouch.png index d14d71358a9..6fd84402bca 100644 Binary files a/public/images/items/berry_pouch.png and b/public/images/items/berry_pouch.png differ diff --git a/public/images/items/big_mushroom.png b/public/images/items/big_mushroom.png index eb203a7374c..37b53cdb6bb 100644 Binary files a/public/images/items/big_mushroom.png and b/public/images/items/big_mushroom.png differ diff --git a/public/images/items/big_nugget.png b/public/images/items/big_nugget.png index e8839daa0b6..21f83672a2e 100644 Binary files a/public/images/items/big_nugget.png and b/public/images/items/big_nugget.png differ diff --git a/public/images/items/big_root.png b/public/images/items/big_root.png index 24b863ee238..8f32b006495 100644 Binary files a/public/images/items/big_root.png and b/public/images/items/big_root.png differ diff --git a/public/images/items/binding_band.png b/public/images/items/binding_band.png index b33256b7b8c..ee91f14a36c 100644 Binary files a/public/images/items/binding_band.png and b/public/images/items/binding_band.png differ diff --git a/public/images/items/black_augurite.png b/public/images/items/black_augurite.png index b34127e2942..d448c7b888c 100644 Binary files a/public/images/items/black_augurite.png and b/public/images/items/black_augurite.png differ diff --git a/public/images/items/black_belt.png b/public/images/items/black_belt.png index 9dde3ff83cd..4d303e2f645 100644 Binary files a/public/images/items/black_belt.png and b/public/images/items/black_belt.png differ diff --git a/public/images/items/black_glasses.png b/public/images/items/black_glasses.png index 4b18d828964..fd512c9763d 100644 Binary files a/public/images/items/black_glasses.png and b/public/images/items/black_glasses.png differ diff --git a/public/images/items/black_sludge.png b/public/images/items/black_sludge.png index fe308586dd3..04a1cabd9f5 100644 Binary files a/public/images/items/black_sludge.png and b/public/images/items/black_sludge.png differ diff --git a/public/images/items/blank_plate.png b/public/images/items/blank_plate.png index c08d25aa3c3..aa881d228f2 100644 Binary files a/public/images/items/blank_plate.png and b/public/images/items/blank_plate.png differ diff --git a/public/images/items/blastoisinite.png b/public/images/items/blastoisinite.png index ea2ddef0640..9d4f29cce8f 100644 Binary files a/public/images/items/blastoisinite.png and b/public/images/items/blastoisinite.png differ diff --git a/public/images/items/blazikenite.png b/public/images/items/blazikenite.png index 9b6e9e59212..4269cb18710 100644 Binary files a/public/images/items/blazikenite.png and b/public/images/items/blazikenite.png differ diff --git a/public/images/items/blue_orb.png b/public/images/items/blue_orb.png index 34c19c8aea8..f523a868c30 100644 Binary files a/public/images/items/blue_orb.png and b/public/images/items/blue_orb.png differ diff --git a/public/images/items/blunder_policy.png b/public/images/items/blunder_policy.png index 8d5b11cb3f6..8104d00c40c 100644 Binary files a/public/images/items/blunder_policy.png and b/public/images/items/blunder_policy.png differ diff --git a/public/images/items/bronze_ribbon.png b/public/images/items/bronze_ribbon.png index cab218e09f5..13eeb7254ca 100644 Binary files a/public/images/items/bronze_ribbon.png and b/public/images/items/bronze_ribbon.png differ diff --git a/public/images/items/bug_memory.png b/public/images/items/bug_memory.png index 004b499ba7a..a71637ceb5a 100644 Binary files a/public/images/items/bug_memory.png and b/public/images/items/bug_memory.png differ diff --git a/public/images/items/bug_tera_shard.png b/public/images/items/bug_tera_shard.png index 5711fe193bd..bc722e4698f 100644 Binary files a/public/images/items/bug_tera_shard.png and b/public/images/items/bug_tera_shard.png differ diff --git a/public/images/items/burn_drive.png b/public/images/items/burn_drive.png index 02ee18c02bd..b45ffc76d7e 100644 Binary files a/public/images/items/burn_drive.png and b/public/images/items/burn_drive.png differ diff --git a/public/images/items/calcium.png b/public/images/items/calcium.png index 4c42228d724..0ec70b68fec 100644 Binary files a/public/images/items/calcium.png and b/public/images/items/calcium.png differ diff --git a/public/images/items/cameruptite.png b/public/images/items/cameruptite.png index 9eda37e14e1..1653ff8f33a 100644 Binary files a/public/images/items/cameruptite.png and b/public/images/items/cameruptite.png differ diff --git a/public/images/items/candy.png b/public/images/items/candy.png index 81cf5e19ee2..fcbdaa1b13d 100644 Binary files a/public/images/items/candy.png and b/public/images/items/candy.png differ diff --git a/public/images/items/candy_jar.png b/public/images/items/candy_jar.png index 0338b64a86d..ddd7922bdce 100644 Binary files a/public/images/items/candy_jar.png and b/public/images/items/candy_jar.png differ diff --git a/public/images/items/candy_overlay.png b/public/images/items/candy_overlay.png index a1cb428cdee..567df8b3606 100644 Binary files a/public/images/items/candy_overlay.png and b/public/images/items/candy_overlay.png differ diff --git a/public/images/items/carbos.png b/public/images/items/carbos.png index 7dd09f2ec12..c824ddd5b82 100644 Binary files a/public/images/items/carbos.png and b/public/images/items/carbos.png differ diff --git a/public/images/items/catching_charm.png b/public/images/items/catching_charm.png index 57545622131..4699b8c3d85 100644 Binary files a/public/images/items/catching_charm.png and b/public/images/items/catching_charm.png differ diff --git a/public/images/items/charcoal.png b/public/images/items/charcoal.png index e10f8f20fd6..ce456f7b1fc 100644 Binary files a/public/images/items/charcoal.png and b/public/images/items/charcoal.png differ diff --git a/public/images/items/charizardite_x.png b/public/images/items/charizardite_x.png index d238a77a9e2..37838c5919c 100644 Binary files a/public/images/items/charizardite_x.png and b/public/images/items/charizardite_x.png differ diff --git a/public/images/items/charizardite_y.png b/public/images/items/charizardite_y.png index 5a3ea59d091..ba4672dd3f3 100644 Binary files a/public/images/items/charizardite_y.png and b/public/images/items/charizardite_y.png differ diff --git a/public/images/items/chill_drive.png b/public/images/items/chill_drive.png index fbf7462479a..6126b295328 100644 Binary files a/public/images/items/chill_drive.png and b/public/images/items/chill_drive.png differ diff --git a/public/images/items/chipped_pot.png b/public/images/items/chipped_pot.png index 969c3dc3c16..c78d7581ea8 100644 Binary files a/public/images/items/chipped_pot.png and b/public/images/items/chipped_pot.png differ diff --git a/public/images/items/choice_scarf.png b/public/images/items/choice_scarf.png index 2ddf7d3be16..e4be436ca73 100644 Binary files a/public/images/items/choice_scarf.png and b/public/images/items/choice_scarf.png differ diff --git a/public/images/items/choice_specs.png b/public/images/items/choice_specs.png index 09b58f64381..24163f48bf9 100644 Binary files a/public/images/items/choice_specs.png and b/public/images/items/choice_specs.png differ diff --git a/public/images/items/clefairy_doll.png b/public/images/items/clefairy_doll.png index 3b54c83df47..cd618cd80ab 100644 Binary files a/public/images/items/clefairy_doll.png and b/public/images/items/clefairy_doll.png differ diff --git a/public/images/items/coin_case.png b/public/images/items/coin_case.png index 3c17c2b13f8..733a0c95e76 100644 Binary files a/public/images/items/coin_case.png and b/public/images/items/coin_case.png differ diff --git a/public/images/items/cornerstone_mask.png b/public/images/items/cornerstone_mask.png index 205bdef9805..e92be7ea813 100644 Binary files a/public/images/items/cornerstone_mask.png and b/public/images/items/cornerstone_mask.png differ diff --git a/public/images/items/coupon.png b/public/images/items/coupon.png index b08fa65fecc..81cfa676705 100644 Binary files a/public/images/items/coupon.png and b/public/images/items/coupon.png differ diff --git a/public/images/items/cracked_pot.png b/public/images/items/cracked_pot.png index 4afc2caf2c8..36a73cd0884 100644 Binary files a/public/images/items/cracked_pot.png and b/public/images/items/cracked_pot.png differ diff --git a/public/images/items/dark_memory.png b/public/images/items/dark_memory.png index e1e503bd036..0d0ccb42664 100644 Binary files a/public/images/items/dark_memory.png and b/public/images/items/dark_memory.png differ diff --git a/public/images/items/dark_stone.png b/public/images/items/dark_stone.png index c28a93ecabc..f97da5f3394 100644 Binary files a/public/images/items/dark_stone.png and b/public/images/items/dark_stone.png differ diff --git a/public/images/items/dark_tera_shard.png b/public/images/items/dark_tera_shard.png index ca24664b74e..2472fc812f9 100644 Binary files a/public/images/items/dark_tera_shard.png and b/public/images/items/dark_tera_shard.png differ diff --git a/public/images/items/dawn_stone.png b/public/images/items/dawn_stone.png index b29d2016a56..91b50dca7b2 100644 Binary files a/public/images/items/dawn_stone.png and b/public/images/items/dawn_stone.png differ diff --git a/public/images/items/deep_sea_scale.png b/public/images/items/deep_sea_scale.png index cf40e652319..6027c618afc 100644 Binary files a/public/images/items/deep_sea_scale.png and b/public/images/items/deep_sea_scale.png differ diff --git a/public/images/items/deep_sea_tooth.png b/public/images/items/deep_sea_tooth.png index 2cd1980aeb4..0a7a74f0c9a 100644 Binary files a/public/images/items/deep_sea_tooth.png and b/public/images/items/deep_sea_tooth.png differ diff --git a/public/images/items/diancite.png b/public/images/items/diancite.png index 293d327524e..fbb0267fb59 100644 Binary files a/public/images/items/diancite.png and b/public/images/items/diancite.png differ diff --git a/public/images/items/dire_hit.png b/public/images/items/dire_hit.png index 0c060710ff2..49011c7f86d 100644 Binary files a/public/images/items/dire_hit.png and b/public/images/items/dire_hit.png differ diff --git a/public/images/items/dna_splicers.png b/public/images/items/dna_splicers.png index 51c1524076e..918c156ba53 100644 Binary files a/public/images/items/dna_splicers.png and b/public/images/items/dna_splicers.png differ diff --git a/public/images/items/douse_drive.png b/public/images/items/douse_drive.png index fb8e7623184..6ecf6125fcf 100644 Binary files a/public/images/items/douse_drive.png and b/public/images/items/douse_drive.png differ diff --git a/public/images/items/draco_plate.png b/public/images/items/draco_plate.png index b4702aadba3..0dfae0ef0e1 100644 Binary files a/public/images/items/draco_plate.png and b/public/images/items/draco_plate.png differ diff --git a/public/images/items/dragon_fang.png b/public/images/items/dragon_fang.png index 4a9904e0ef3..b5c028d1e92 100644 Binary files a/public/images/items/dragon_fang.png and b/public/images/items/dragon_fang.png differ diff --git a/public/images/items/dragon_memory.png b/public/images/items/dragon_memory.png index 01a14cadf3e..9a383fc5f0a 100644 Binary files a/public/images/items/dragon_memory.png and b/public/images/items/dragon_memory.png differ diff --git a/public/images/items/dragon_scale.png b/public/images/items/dragon_scale.png index 9cec39b22f6..6b82ce88b01 100644 Binary files a/public/images/items/dragon_scale.png and b/public/images/items/dragon_scale.png differ diff --git a/public/images/items/dragon_tera_shard.png b/public/images/items/dragon_tera_shard.png index 51f20d9f5cb..c140671fbfc 100644 Binary files a/public/images/items/dragon_tera_shard.png and b/public/images/items/dragon_tera_shard.png differ diff --git a/public/images/items/dread_plate.png b/public/images/items/dread_plate.png index 6537320bc0a..ce40b216eea 100644 Binary files a/public/images/items/dread_plate.png and b/public/images/items/dread_plate.png differ diff --git a/public/images/items/dubious_disc.png b/public/images/items/dubious_disc.png index 122958f9550..eb907164f05 100644 Binary files a/public/images/items/dubious_disc.png and b/public/images/items/dubious_disc.png differ diff --git a/public/images/items/dusk_stone.png b/public/images/items/dusk_stone.png index e2cf73d04f3..fd4879d48fe 100644 Binary files a/public/images/items/dusk_stone.png and b/public/images/items/dusk_stone.png differ diff --git a/public/images/items/dynamax_band.png b/public/images/items/dynamax_band.png index 57b9a0caef5..df9f4460884 100644 Binary files a/public/images/items/dynamax_band.png and b/public/images/items/dynamax_band.png differ diff --git a/public/images/items/earth_plate.png b/public/images/items/earth_plate.png index 79fbbad5a84..8d298d92722 100644 Binary files a/public/images/items/earth_plate.png and b/public/images/items/earth_plate.png differ diff --git a/public/images/items/electirizer.png b/public/images/items/electirizer.png index a5589a27e42..2ef85308755 100644 Binary files a/public/images/items/electirizer.png and b/public/images/items/electirizer.png differ diff --git a/public/images/items/electric_memory.png b/public/images/items/electric_memory.png index d0595356482..2801bb7d03c 100644 Binary files a/public/images/items/electric_memory.png and b/public/images/items/electric_memory.png differ diff --git a/public/images/items/electric_tera_shard.png b/public/images/items/electric_tera_shard.png index 2195be32929..a836a5587f8 100644 Binary files a/public/images/items/electric_tera_shard.png and b/public/images/items/electric_tera_shard.png differ diff --git a/public/images/items/elixir.png b/public/images/items/elixir.png index b4bf7834e17..2d365d259af 100644 Binary files a/public/images/items/elixir.png and b/public/images/items/elixir.png differ diff --git a/public/images/items/enigma_berry.png b/public/images/items/enigma_berry.png index 1a1a20854ed..7a13e643d68 100644 Binary files a/public/images/items/enigma_berry.png and b/public/images/items/enigma_berry.png differ diff --git a/public/images/items/ether.png b/public/images/items/ether.png index 44a6e79de8e..76003bb7696 100644 Binary files a/public/images/items/ether.png and b/public/images/items/ether.png differ diff --git a/public/images/items/everstone.png b/public/images/items/everstone.png index 194f7b63baf..27c205f9132 100644 Binary files a/public/images/items/everstone.png and b/public/images/items/everstone.png differ diff --git a/public/images/items/eviolite.png b/public/images/items/eviolite.png index 8591791a5a1..30da75fd71d 100644 Binary files a/public/images/items/eviolite.png and b/public/images/items/eviolite.png differ diff --git a/public/images/items/exp_balance.png b/public/images/items/exp_balance.png index 6a03556a3a2..a00a5d599a4 100644 Binary files a/public/images/items/exp_balance.png and b/public/images/items/exp_balance.png differ diff --git a/public/images/items/exp_charm.png b/public/images/items/exp_charm.png index 2635e4d8020..1c3fe829993 100644 Binary files a/public/images/items/exp_charm.png and b/public/images/items/exp_charm.png differ diff --git a/public/images/items/exp_share.png b/public/images/items/exp_share.png index 6b866c63427..611056743e6 100644 Binary files a/public/images/items/exp_share.png and b/public/images/items/exp_share.png differ diff --git a/public/images/items/expert_belt.png b/public/images/items/expert_belt.png index 86cfd7170de..e4e903d7507 100644 Binary files a/public/images/items/expert_belt.png and b/public/images/items/expert_belt.png differ diff --git a/public/images/items/fairy_feather.png b/public/images/items/fairy_feather.png index 44923a1db94..7e087db48d5 100644 Binary files a/public/images/items/fairy_feather.png and b/public/images/items/fairy_feather.png differ diff --git a/public/images/items/fairy_memory.png b/public/images/items/fairy_memory.png index b5d0b32ff95..20d088762e6 100644 Binary files a/public/images/items/fairy_memory.png and b/public/images/items/fairy_memory.png differ diff --git a/public/images/items/fairy_tera_shard.png b/public/images/items/fairy_tera_shard.png index 36fb5e88f1c..1984581c74d 100644 Binary files a/public/images/items/fairy_tera_shard.png and b/public/images/items/fairy_tera_shard.png differ diff --git a/public/images/items/fighting_memory.png b/public/images/items/fighting_memory.png index 13789836880..58dd3ecf8a1 100644 Binary files a/public/images/items/fighting_memory.png and b/public/images/items/fighting_memory.png differ diff --git a/public/images/items/fighting_tera_shard.png b/public/images/items/fighting_tera_shard.png index 8423a41cbe8..c76f50b48e4 100644 Binary files a/public/images/items/fighting_tera_shard.png and b/public/images/items/fighting_tera_shard.png differ diff --git a/public/images/items/fire_memory.png b/public/images/items/fire_memory.png index 4f341417b6e..c066c1be42b 100644 Binary files a/public/images/items/fire_memory.png and b/public/images/items/fire_memory.png differ diff --git a/public/images/items/fire_stone.png b/public/images/items/fire_stone.png index 3db1942dfed..2f9cb737064 100644 Binary files a/public/images/items/fire_stone.png and b/public/images/items/fire_stone.png differ diff --git a/public/images/items/fire_tera_shard.png b/public/images/items/fire_tera_shard.png index 5783a5e9720..4a620eec220 100644 Binary files a/public/images/items/fire_tera_shard.png and b/public/images/items/fire_tera_shard.png differ diff --git a/public/images/items/fist_plate.png b/public/images/items/fist_plate.png index d992e4ab1c2..c3304c41e07 100644 Binary files a/public/images/items/fist_plate.png and b/public/images/items/fist_plate.png differ diff --git a/public/images/items/flame_orb.png b/public/images/items/flame_orb.png index 5132bbb6153..6c9d05fc8a0 100644 Binary files a/public/images/items/flame_orb.png and b/public/images/items/flame_orb.png differ diff --git a/public/images/items/flame_plate.png b/public/images/items/flame_plate.png index 7633773eee1..c7b7eb6bef1 100644 Binary files a/public/images/items/flame_plate.png and b/public/images/items/flame_plate.png differ diff --git a/public/images/items/flying_memory.png b/public/images/items/flying_memory.png index 8d3efbf1401..8b73abd8264 100644 Binary files a/public/images/items/flying_memory.png and b/public/images/items/flying_memory.png differ diff --git a/public/images/items/flying_tera_shard.png b/public/images/items/flying_tera_shard.png index 97d3013f70b..42e2b16c4d2 100644 Binary files a/public/images/items/flying_tera_shard.png and b/public/images/items/flying_tera_shard.png differ diff --git a/public/images/items/focus_band.png b/public/images/items/focus_band.png index 3a04ae17023..c49d74a5ae9 100644 Binary files a/public/images/items/focus_band.png and b/public/images/items/focus_band.png differ diff --git a/public/images/items/focus_sash.png b/public/images/items/focus_sash.png index 7700ceecf6b..17dc0fd8fe6 100644 Binary files a/public/images/items/focus_sash.png and b/public/images/items/focus_sash.png differ diff --git a/public/images/items/full_heal.png b/public/images/items/full_heal.png index 4e59dcf44fa..e378291efe0 100644 Binary files a/public/images/items/full_heal.png and b/public/images/items/full_heal.png differ diff --git a/public/images/items/full_restore.png b/public/images/items/full_restore.png index ba64f2edad8..d6e8c7f33e8 100644 Binary files a/public/images/items/full_restore.png and b/public/images/items/full_restore.png differ diff --git a/public/images/items/galarica_cuff.png b/public/images/items/galarica_cuff.png index 56523da5230..4706279c43d 100644 Binary files a/public/images/items/galarica_cuff.png and b/public/images/items/galarica_cuff.png differ diff --git a/public/images/items/galarica_wreath.png b/public/images/items/galarica_wreath.png index 20356bafd8a..6b1838c78dc 100644 Binary files a/public/images/items/galarica_wreath.png and b/public/images/items/galarica_wreath.png differ diff --git a/public/images/items/galladite.png b/public/images/items/galladite.png index 15c93cd9c7e..3fccc2d9b61 100644 Binary files a/public/images/items/galladite.png and b/public/images/items/galladite.png differ diff --git a/public/images/items/ganlon_berry.png b/public/images/items/ganlon_berry.png index f9b88fc563a..72dfb41c4a5 100644 Binary files a/public/images/items/ganlon_berry.png and b/public/images/items/ganlon_berry.png differ diff --git a/public/images/items/garchompite.png b/public/images/items/garchompite.png index 4276146a858..b1938a6979d 100644 Binary files a/public/images/items/garchompite.png and b/public/images/items/garchompite.png differ diff --git a/public/images/items/gardevoirite.png b/public/images/items/gardevoirite.png index 66a90b93bce..9180b369df4 100644 Binary files a/public/images/items/gardevoirite.png and b/public/images/items/gardevoirite.png differ diff --git a/public/images/items/gb.png b/public/images/items/gb.png index 4b437277849..bcc88593fad 100644 Binary files a/public/images/items/gb.png and b/public/images/items/gb.png differ diff --git a/public/images/items/gengarite.png b/public/images/items/gengarite.png index 4ccaae6ee8d..4a6a40d2f99 100644 Binary files a/public/images/items/gengarite.png and b/public/images/items/gengarite.png differ diff --git a/public/images/items/ghost_memory.png b/public/images/items/ghost_memory.png index cb3c31ea4de..cde6f45e735 100644 Binary files a/public/images/items/ghost_memory.png and b/public/images/items/ghost_memory.png differ diff --git a/public/images/items/ghost_tera_shard.png b/public/images/items/ghost_tera_shard.png index 8b9c6e750a9..859c0b9778f 100644 Binary files a/public/images/items/ghost_tera_shard.png and b/public/images/items/ghost_tera_shard.png differ diff --git a/public/images/items/glalitite.png b/public/images/items/glalitite.png index ed7858c631c..e3830e7b6e7 100644 Binary files a/public/images/items/glalitite.png and b/public/images/items/glalitite.png differ diff --git a/public/images/items/golden_egg.png b/public/images/items/golden_egg.png index 5727b4cb513..743a32729f3 100644 Binary files a/public/images/items/golden_egg.png and b/public/images/items/golden_egg.png differ diff --git a/public/images/items/golden_exp_charm.png b/public/images/items/golden_exp_charm.png index 1895bfaa6b9..75067eb0eea 100644 Binary files a/public/images/items/golden_exp_charm.png and b/public/images/items/golden_exp_charm.png differ diff --git a/public/images/items/golden_mystic_ticket.png b/public/images/items/golden_mystic_ticket.png index 57f5b9efca6..6886c815099 100644 Binary files a/public/images/items/golden_mystic_ticket.png and b/public/images/items/golden_mystic_ticket.png differ diff --git a/public/images/items/golden_net.png b/public/images/items/golden_net.png index 3205d545e27..95ac08c1132 100644 Binary files a/public/images/items/golden_net.png and b/public/images/items/golden_net.png differ diff --git a/public/images/items/golden_punch.png b/public/images/items/golden_punch.png index 291ff7e248f..80c4729a227 100644 Binary files a/public/images/items/golden_punch.png and b/public/images/items/golden_punch.png differ diff --git a/public/images/items/gracidea.png b/public/images/items/gracidea.png index 6e464390f17..3fca2378d87 100644 Binary files a/public/images/items/gracidea.png and b/public/images/items/gracidea.png differ diff --git a/public/images/items/grass_memory.png b/public/images/items/grass_memory.png index 9d7d27de770..aacb8e7e98a 100644 Binary files a/public/images/items/grass_memory.png and b/public/images/items/grass_memory.png differ diff --git a/public/images/items/grass_tera_shard.png b/public/images/items/grass_tera_shard.png index 30e8762b5b6..218474660c4 100644 Binary files a/public/images/items/grass_tera_shard.png and b/public/images/items/grass_tera_shard.png differ diff --git a/public/images/items/great_ribbon.png b/public/images/items/great_ribbon.png index e7d7e452122..e246d8db981 100644 Binary files a/public/images/items/great_ribbon.png and b/public/images/items/great_ribbon.png differ diff --git a/public/images/items/grip_claw.png b/public/images/items/grip_claw.png index 61cbb89e9b2..ccef5828f8d 100644 Binary files a/public/images/items/grip_claw.png and b/public/images/items/grip_claw.png differ diff --git a/public/images/items/griseous_core.png b/public/images/items/griseous_core.png index 7f3f683eda8..b067ffc7ef6 100644 Binary files a/public/images/items/griseous_core.png and b/public/images/items/griseous_core.png differ diff --git a/public/images/items/ground_memory.png b/public/images/items/ground_memory.png index 808a4e13eeb..66d31446dd9 100644 Binary files a/public/images/items/ground_memory.png and b/public/images/items/ground_memory.png differ diff --git a/public/images/items/ground_tera_shard.png b/public/images/items/ground_tera_shard.png index d7760f7dc1b..46a1cab5f4e 100644 Binary files a/public/images/items/ground_tera_shard.png and b/public/images/items/ground_tera_shard.png differ diff --git a/public/images/items/guard_spec.png b/public/images/items/guard_spec.png index 95a37d0d28e..d65f5a8c07f 100644 Binary files a/public/images/items/guard_spec.png and b/public/images/items/guard_spec.png differ diff --git a/public/images/items/gyaradosite.png b/public/images/items/gyaradosite.png index e4cae1366ab..7765f443dbd 100644 Binary files a/public/images/items/gyaradosite.png and b/public/images/items/gyaradosite.png differ diff --git a/public/images/items/hard_meteorite.png b/public/images/items/hard_meteorite.png index 8e8a2b5688b..5a38e06c9ac 100644 Binary files a/public/images/items/hard_meteorite.png and b/public/images/items/hard_meteorite.png differ diff --git a/public/images/items/hard_stone.png b/public/images/items/hard_stone.png index 571d96afaa8..98463a6a391 100644 Binary files a/public/images/items/hard_stone.png and b/public/images/items/hard_stone.png differ diff --git a/public/images/items/healing_charm.png b/public/images/items/healing_charm.png index 4601eeef593..42bcc0eab06 100644 Binary files a/public/images/items/healing_charm.png and b/public/images/items/healing_charm.png differ diff --git a/public/images/items/hearthflame_mask.png b/public/images/items/hearthflame_mask.png index deed3d0cde8..b76556c8baf 100644 Binary files a/public/images/items/hearthflame_mask.png and b/public/images/items/hearthflame_mask.png differ diff --git a/public/images/items/heracronite.png b/public/images/items/heracronite.png index ffcfc440c19..29c8e8285fb 100644 Binary files a/public/images/items/heracronite.png and b/public/images/items/heracronite.png differ diff --git a/public/images/items/houndoominite.png b/public/images/items/houndoominite.png index c9ea1954dfa..9ae4982694e 100644 Binary files a/public/images/items/houndoominite.png and b/public/images/items/houndoominite.png differ diff --git a/public/images/items/hp_up.png b/public/images/items/hp_up.png index 5c6baff0673..b9284383978 100644 Binary files a/public/images/items/hp_up.png and b/public/images/items/hp_up.png differ diff --git a/public/images/items/hyper_potion.png b/public/images/items/hyper_potion.png index 197aaac690c..140c74b638e 100644 Binary files a/public/images/items/hyper_potion.png and b/public/images/items/hyper_potion.png differ diff --git a/public/images/items/ice_memory.png b/public/images/items/ice_memory.png index 812548cf36c..e41e27c888b 100644 Binary files a/public/images/items/ice_memory.png and b/public/images/items/ice_memory.png differ diff --git a/public/images/items/ice_stone.png b/public/images/items/ice_stone.png index 945714b759c..6920d78ab37 100644 Binary files a/public/images/items/ice_stone.png and b/public/images/items/ice_stone.png differ diff --git a/public/images/items/ice_tera_shard.png b/public/images/items/ice_tera_shard.png index 5644d647c2b..946d5e2dd0c 100644 Binary files a/public/images/items/ice_tera_shard.png and b/public/images/items/ice_tera_shard.png differ diff --git a/public/images/items/icicle_plate.png b/public/images/items/icicle_plate.png index f9797d91f6a..dc4bb74c1d6 100644 Binary files a/public/images/items/icicle_plate.png and b/public/images/items/icicle_plate.png differ diff --git a/public/images/items/icy_reins_of_unity.png b/public/images/items/icy_reins_of_unity.png index b7af48d6a81..1b7d9c6399d 100644 Binary files a/public/images/items/icy_reins_of_unity.png and b/public/images/items/icy_reins_of_unity.png differ diff --git a/public/images/items/insect_plate.png b/public/images/items/insect_plate.png index 5bcc0eebaf5..23e8012d580 100644 Binary files a/public/images/items/insect_plate.png and b/public/images/items/insect_plate.png differ diff --git a/public/images/items/inverse.png b/public/images/items/inverse.png index 0d77ce77dde..059cb2f22ea 100644 Binary files a/public/images/items/inverse.png and b/public/images/items/inverse.png differ diff --git a/public/images/items/iron.png b/public/images/items/iron.png index 5cfff11b059..9c459388385 100644 Binary files a/public/images/items/iron.png and b/public/images/items/iron.png differ diff --git a/public/images/items/iron_plate.png b/public/images/items/iron_plate.png index 65d660e34eb..1a8365ac2af 100644 Binary files a/public/images/items/iron_plate.png and b/public/images/items/iron_plate.png differ diff --git a/public/images/items/kangaskhanite.png b/public/images/items/kangaskhanite.png index 3d65d2cc5ca..8e27c75332c 100644 Binary files a/public/images/items/kangaskhanite.png and b/public/images/items/kangaskhanite.png differ diff --git a/public/images/items/kings_rock.png b/public/images/items/kings_rock.png index bfda9d559d3..52dd6d04938 100644 Binary files a/public/images/items/kings_rock.png and b/public/images/items/kings_rock.png differ diff --git a/public/images/items/lansat_berry.png b/public/images/items/lansat_berry.png index 223bff3eb26..b9c244194b7 100644 Binary files a/public/images/items/lansat_berry.png and b/public/images/items/lansat_berry.png differ diff --git a/public/images/items/latiasite.png b/public/images/items/latiasite.png index 486a542576f..055e74d50bb 100644 Binary files a/public/images/items/latiasite.png and b/public/images/items/latiasite.png differ diff --git a/public/images/items/latiosite.png b/public/images/items/latiosite.png index 69708835c7b..60fdf81f708 100644 Binary files a/public/images/items/latiosite.png and b/public/images/items/latiosite.png differ diff --git a/public/images/items/leaders_crest.png b/public/images/items/leaders_crest.png index 86b71f1eb6d..3f9ddd4b89a 100644 Binary files a/public/images/items/leaders_crest.png and b/public/images/items/leaders_crest.png differ diff --git a/public/images/items/leaf_stone.png b/public/images/items/leaf_stone.png index dc68e916bcf..e4c85f2b0ba 100644 Binary files a/public/images/items/leaf_stone.png and b/public/images/items/leaf_stone.png differ diff --git a/public/images/items/leek.png b/public/images/items/leek.png index 1cb136aa78c..528392264c7 100644 Binary files a/public/images/items/leek.png and b/public/images/items/leek.png differ diff --git a/public/images/items/leftovers.png b/public/images/items/leftovers.png index 4732d149b64..c06eaf073d9 100644 Binary files a/public/images/items/leftovers.png and b/public/images/items/leftovers.png differ diff --git a/public/images/items/legend_plate.png b/public/images/items/legend_plate.png index e96f12b45f5..2304d587346 100644 Binary files a/public/images/items/legend_plate.png and b/public/images/items/legend_plate.png differ diff --git a/public/images/items/leppa_berry.png b/public/images/items/leppa_berry.png index 7a0f13b5199..611acba6a1a 100644 Binary files a/public/images/items/leppa_berry.png and b/public/images/items/leppa_berry.png differ diff --git a/public/images/items/liechi_berry.png b/public/images/items/liechi_berry.png index 192d8f001ef..8ce788a36aa 100644 Binary files a/public/images/items/liechi_berry.png and b/public/images/items/liechi_berry.png differ diff --git a/public/images/items/light_ball.png b/public/images/items/light_ball.png index 7748f735d37..a5fe2859e63 100644 Binary files a/public/images/items/light_ball.png and b/public/images/items/light_ball.png differ diff --git a/public/images/items/light_stone.png b/public/images/items/light_stone.png index 97258cf3970..f9f40130b48 100644 Binary files a/public/images/items/light_stone.png and b/public/images/items/light_stone.png differ diff --git a/public/images/items/linking_cord.png b/public/images/items/linking_cord.png index 4cde9da3f14..414378222f7 100644 Binary files a/public/images/items/linking_cord.png and b/public/images/items/linking_cord.png differ diff --git a/public/images/items/lock_capsule.png b/public/images/items/lock_capsule.png index 25d0cc14cff..be5a5e02c99 100644 Binary files a/public/images/items/lock_capsule.png and b/public/images/items/lock_capsule.png differ diff --git a/public/images/items/lopunnite.png b/public/images/items/lopunnite.png index bd67cf159ed..7f9364e3755 100644 Binary files a/public/images/items/lopunnite.png and b/public/images/items/lopunnite.png differ diff --git a/public/images/items/lucarionite.png b/public/images/items/lucarionite.png index b97161df68c..b964cb0b039 100644 Binary files a/public/images/items/lucarionite.png and b/public/images/items/lucarionite.png differ diff --git a/public/images/items/lucky_egg.png b/public/images/items/lucky_egg.png index fa9a1e4b390..8f99d3f37d0 100644 Binary files a/public/images/items/lucky_egg.png and b/public/images/items/lucky_egg.png differ diff --git a/public/images/items/lucky_punch.png b/public/images/items/lucky_punch.png index 97887631d9a..c70c084e3bc 100644 Binary files a/public/images/items/lucky_punch.png and b/public/images/items/lucky_punch.png differ diff --git a/public/images/items/lucky_punch_great.png b/public/images/items/lucky_punch_great.png index 77c77daf535..2b2c60d6f3a 100644 Binary files a/public/images/items/lucky_punch_great.png and b/public/images/items/lucky_punch_great.png differ diff --git a/public/images/items/lucky_punch_master.png b/public/images/items/lucky_punch_master.png index 89fc1b67cf4..97d5d22aea0 100644 Binary files a/public/images/items/lucky_punch_master.png and b/public/images/items/lucky_punch_master.png differ diff --git a/public/images/items/lucky_punch_ultra.png b/public/images/items/lucky_punch_ultra.png index a95c23666bb..fbe09c35cd1 100644 Binary files a/public/images/items/lucky_punch_ultra.png and b/public/images/items/lucky_punch_ultra.png differ diff --git a/public/images/items/lum_berry.png b/public/images/items/lum_berry.png index d19c4fba583..97d3167eec4 100644 Binary files a/public/images/items/lum_berry.png and b/public/images/items/lum_berry.png differ diff --git a/public/images/items/lure.png b/public/images/items/lure.png index 1c3ea6cc8e8..883181158e5 100644 Binary files a/public/images/items/lure.png and b/public/images/items/lure.png differ diff --git a/public/images/items/lustrous_globe.png b/public/images/items/lustrous_globe.png index 2a854db742b..0aee9500272 100644 Binary files a/public/images/items/lustrous_globe.png and b/public/images/items/lustrous_globe.png differ diff --git a/public/images/items/macho_brace.png b/public/images/items/macho_brace.png index 760139cf7f8..b5063258fc2 100644 Binary files a/public/images/items/macho_brace.png and b/public/images/items/macho_brace.png differ diff --git a/public/images/items/magmarizer.png b/public/images/items/magmarizer.png index 4f4d5f45851..785816b6ad5 100644 Binary files a/public/images/items/magmarizer.png and b/public/images/items/magmarizer.png differ diff --git a/public/images/items/magnet.png b/public/images/items/magnet.png index 9ce8b686e9f..f8668e72abd 100644 Binary files a/public/images/items/magnet.png and b/public/images/items/magnet.png differ diff --git a/public/images/items/malicious_armor.png b/public/images/items/malicious_armor.png index b7bfb55195b..62c93b3b817 100644 Binary files a/public/images/items/malicious_armor.png and b/public/images/items/malicious_armor.png differ diff --git a/public/images/items/manectite.png b/public/images/items/manectite.png index c9df61669bc..ca82d2cee9f 100644 Binary files a/public/images/items/manectite.png and b/public/images/items/manectite.png differ diff --git a/public/images/items/map.png b/public/images/items/map.png index dc2fc6b95d8..9fda9174744 100644 Binary files a/public/images/items/map.png and b/public/images/items/map.png differ diff --git a/public/images/items/master_ribbon.png b/public/images/items/master_ribbon.png index 0443215c1f9..a8a181a52a0 100644 Binary files a/public/images/items/master_ribbon.png and b/public/images/items/master_ribbon.png differ diff --git a/public/images/items/masterpiece_teacup.png b/public/images/items/masterpiece_teacup.png index ec2455c0763..71d8e5a8cf8 100644 Binary files a/public/images/items/masterpiece_teacup.png and b/public/images/items/masterpiece_teacup.png differ diff --git a/public/images/items/mawilite.png b/public/images/items/mawilite.png index 60ea4017f56..da9f74a43be 100644 Binary files a/public/images/items/mawilite.png and b/public/images/items/mawilite.png differ diff --git a/public/images/items/max_elixir.png b/public/images/items/max_elixir.png index 1f528c2bb61..7afaf6581ea 100644 Binary files a/public/images/items/max_elixir.png and b/public/images/items/max_elixir.png differ diff --git a/public/images/items/max_ether.png b/public/images/items/max_ether.png index 8cee7152a86..451e7fa302f 100644 Binary files a/public/images/items/max_ether.png and b/public/images/items/max_ether.png differ diff --git a/public/images/items/max_lure.png b/public/images/items/max_lure.png index 812229d140a..dfc86583dd3 100644 Binary files a/public/images/items/max_lure.png and b/public/images/items/max_lure.png differ diff --git a/public/images/items/max_mushrooms.png b/public/images/items/max_mushrooms.png index 8d5c015c963..10ff9f5a72f 100644 Binary files a/public/images/items/max_mushrooms.png and b/public/images/items/max_mushrooms.png differ diff --git a/public/images/items/max_potion.png b/public/images/items/max_potion.png index d8fadc9cb93..94f3828e7eb 100644 Binary files a/public/images/items/max_potion.png and b/public/images/items/max_potion.png differ diff --git a/public/images/items/max_repel.png b/public/images/items/max_repel.png index 4d88ae6d0b5..6e0621f5f0f 100644 Binary files a/public/images/items/max_repel.png and b/public/images/items/max_repel.png differ diff --git a/public/images/items/max_revive.png b/public/images/items/max_revive.png index 609fd17c3b9..e440b940dec 100644 Binary files a/public/images/items/max_revive.png and b/public/images/items/max_revive.png differ diff --git a/public/images/items/mb.png b/public/images/items/mb.png index d80b3b89108..2ba762c5853 100644 Binary files a/public/images/items/mb.png and b/public/images/items/mb.png differ diff --git a/public/images/items/meadow_plate.png b/public/images/items/meadow_plate.png index e2b991776ba..f3358e3df96 100644 Binary files a/public/images/items/meadow_plate.png and b/public/images/items/meadow_plate.png differ diff --git a/public/images/items/medichamite.png b/public/images/items/medichamite.png index 42f22ed6cd6..f99b8af2edd 100644 Binary files a/public/images/items/medichamite.png and b/public/images/items/medichamite.png differ diff --git a/public/images/items/mega_bracelet.png b/public/images/items/mega_bracelet.png index 5e8ff02be8c..674c59a8f5a 100644 Binary files a/public/images/items/mega_bracelet.png and b/public/images/items/mega_bracelet.png differ diff --git a/public/images/items/metagrossite.png b/public/images/items/metagrossite.png index c245368758d..1ec22fb09db 100644 Binary files a/public/images/items/metagrossite.png and b/public/images/items/metagrossite.png differ diff --git a/public/images/items/metal_alloy.png b/public/images/items/metal_alloy.png index 41f22df4254..33b0f556d70 100644 Binary files a/public/images/items/metal_alloy.png and b/public/images/items/metal_alloy.png differ diff --git a/public/images/items/metal_coat.png b/public/images/items/metal_coat.png index 88f055c3fb3..07344dfe724 100644 Binary files a/public/images/items/metal_coat.png and b/public/images/items/metal_coat.png differ diff --git a/public/images/items/metal_powder.png b/public/images/items/metal_powder.png index 64af0b144fe..a56b6aa1d70 100644 Binary files a/public/images/items/metal_powder.png and b/public/images/items/metal_powder.png differ diff --git a/public/images/items/metronome.png b/public/images/items/metronome.png index 837d75b4c03..2ae5ed6d1fa 100644 Binary files a/public/images/items/metronome.png and b/public/images/items/metronome.png differ diff --git a/public/images/items/mewtwonite_x.png b/public/images/items/mewtwonite_x.png index 507d17e54e8..0639c28e33e 100644 Binary files a/public/images/items/mewtwonite_x.png and b/public/images/items/mewtwonite_x.png differ diff --git a/public/images/items/mewtwonite_y.png b/public/images/items/mewtwonite_y.png index ff0c53396d2..f78e7d7e1fc 100644 Binary files a/public/images/items/mewtwonite_y.png and b/public/images/items/mewtwonite_y.png differ diff --git a/public/images/items/mind_plate.png b/public/images/items/mind_plate.png index ff6fcc4f3af..e8964d64816 100644 Binary files a/public/images/items/mind_plate.png and b/public/images/items/mind_plate.png differ diff --git a/public/images/items/mini_black_hole.png b/public/images/items/mini_black_hole.png index 6edcaad16e3..16589cad227 100644 Binary files a/public/images/items/mini_black_hole.png and b/public/images/items/mini_black_hole.png differ diff --git a/public/images/items/mint_atk.png b/public/images/items/mint_atk.png index 88315c0cd07..f42e0cccfc0 100644 Binary files a/public/images/items/mint_atk.png and b/public/images/items/mint_atk.png differ diff --git a/public/images/items/mint_def.png b/public/images/items/mint_def.png index 584c610ffd7..5e45103f199 100644 Binary files a/public/images/items/mint_def.png and b/public/images/items/mint_def.png differ diff --git a/public/images/items/mint_neutral.png b/public/images/items/mint_neutral.png index f5287539e78..ccf97113000 100644 Binary files a/public/images/items/mint_neutral.png and b/public/images/items/mint_neutral.png differ diff --git a/public/images/items/mint_spatk.png b/public/images/items/mint_spatk.png index 90a57c5608b..94b60ed1597 100644 Binary files a/public/images/items/mint_spatk.png and b/public/images/items/mint_spatk.png differ diff --git a/public/images/items/mint_spd.png b/public/images/items/mint_spd.png index 5420b0997b3..f3f1a1308a9 100644 Binary files a/public/images/items/mint_spd.png and b/public/images/items/mint_spd.png differ diff --git a/public/images/items/mint_spdef.png b/public/images/items/mint_spdef.png index 54a1b4ed21d..4b378953644 100644 Binary files a/public/images/items/mint_spdef.png and b/public/images/items/mint_spdef.png differ diff --git a/public/images/items/miracle_seed.png b/public/images/items/miracle_seed.png index 8be7ba72d33..fac8d792c85 100644 Binary files a/public/images/items/miracle_seed.png and b/public/images/items/miracle_seed.png differ diff --git a/public/images/items/moon_flute.png b/public/images/items/moon_flute.png index 5d3c0caf5f2..e22ea1e0c84 100644 Binary files a/public/images/items/moon_flute.png and b/public/images/items/moon_flute.png differ diff --git a/public/images/items/moon_stone.png b/public/images/items/moon_stone.png index f002fb18073..1f1644946f8 100644 Binary files a/public/images/items/moon_stone.png and b/public/images/items/moon_stone.png differ diff --git a/public/images/items/muscle_band.png b/public/images/items/muscle_band.png index 0be9d010767..0038fc4d65d 100644 Binary files a/public/images/items/muscle_band.png and b/public/images/items/muscle_band.png differ diff --git a/public/images/items/mystery_egg.png b/public/images/items/mystery_egg.png index ac631cec7c8..1630e9c69f3 100644 Binary files a/public/images/items/mystery_egg.png and b/public/images/items/mystery_egg.png differ diff --git a/public/images/items/mystic_ticket.png b/public/images/items/mystic_ticket.png index cab03fa5470..8a1e4ccd937 100644 Binary files a/public/images/items/mystic_ticket.png and b/public/images/items/mystic_ticket.png differ diff --git a/public/images/items/mystic_water.png b/public/images/items/mystic_water.png index 2128895b385..9ab0c0544dc 100644 Binary files a/public/images/items/mystic_water.png and b/public/images/items/mystic_water.png differ diff --git a/public/images/items/mystical_rock.png b/public/images/items/mystical_rock.png index 81a397e4c2d..39c5da781dd 100644 Binary files a/public/images/items/mystical_rock.png and b/public/images/items/mystical_rock.png differ diff --git a/public/images/items/n_lunarizer.png b/public/images/items/n_lunarizer.png index a03b48ad387..fc67271346c 100644 Binary files a/public/images/items/n_lunarizer.png and b/public/images/items/n_lunarizer.png differ diff --git a/public/images/items/n_solarizer.png b/public/images/items/n_solarizer.png index 69153fd38dd..787d2b49bc4 100644 Binary files a/public/images/items/n_solarizer.png and b/public/images/items/n_solarizer.png differ diff --git a/public/images/items/never_melt_ice.png b/public/images/items/never_melt_ice.png index 35b1ada771d..58bbb01788a 100644 Binary files a/public/images/items/never_melt_ice.png and b/public/images/items/never_melt_ice.png differ diff --git a/public/images/items/normal_memory.png b/public/images/items/normal_memory.png index e1ff89a9993..e7aa8336820 100644 Binary files a/public/images/items/normal_memory.png and b/public/images/items/normal_memory.png differ diff --git a/public/images/items/normal_tera_shard.png b/public/images/items/normal_tera_shard.png index 1c7a41ea0ec..b63640ca94a 100644 Binary files a/public/images/items/normal_tera_shard.png and b/public/images/items/normal_tera_shard.png differ diff --git a/public/images/items/nugget.png b/public/images/items/nugget.png index 0340f5d4000..ce70209b164 100644 Binary files a/public/images/items/nugget.png and b/public/images/items/nugget.png differ diff --git a/public/images/items/old_gateau.png b/public/images/items/old_gateau.png index dd5f0e05a94..52aaf5a3b73 100644 Binary files a/public/images/items/old_gateau.png and b/public/images/items/old_gateau.png differ diff --git a/public/images/items/oval_charm.png b/public/images/items/oval_charm.png index fcdb914ec22..5c47c169157 100644 Binary files a/public/images/items/oval_charm.png and b/public/images/items/oval_charm.png differ diff --git a/public/images/items/oval_stone.png b/public/images/items/oval_stone.png index d58ffde18e3..6437a6dd821 100644 Binary files a/public/images/items/oval_stone.png and b/public/images/items/oval_stone.png differ diff --git a/public/images/items/pair_of_tickets.png b/public/images/items/pair_of_tickets.png index b06c9a8727f..68274208196 100644 Binary files a/public/images/items/pair_of_tickets.png and b/public/images/items/pair_of_tickets.png differ diff --git a/public/images/items/pb.png b/public/images/items/pb.png index 37c37edb8c1..d54f6b02b5b 100644 Binary files a/public/images/items/pb.png and b/public/images/items/pb.png differ diff --git a/public/images/items/pb_gold.png b/public/images/items/pb_gold.png index 6dff6824158..86842760431 100644 Binary files a/public/images/items/pb_gold.png and b/public/images/items/pb_gold.png differ diff --git a/public/images/items/pb_silver.png b/public/images/items/pb_silver.png index 9528517a77a..674cf646fd3 100644 Binary files a/public/images/items/pb_silver.png and b/public/images/items/pb_silver.png differ diff --git a/public/images/items/peat_block.png b/public/images/items/peat_block.png index f3c65449b87..357a9496aa8 100644 Binary files a/public/images/items/peat_block.png and b/public/images/items/peat_block.png differ diff --git a/public/images/items/petaya_berry.png b/public/images/items/petaya_berry.png index 0fba884c2e2..434165e6e20 100644 Binary files a/public/images/items/petaya_berry.png and b/public/images/items/petaya_berry.png differ diff --git a/public/images/items/pidgeotite.png b/public/images/items/pidgeotite.png index 52cb40852d6..cd7c1d2d01c 100644 Binary files a/public/images/items/pidgeotite.png and b/public/images/items/pidgeotite.png differ diff --git a/public/images/items/pinsirite.png b/public/images/items/pinsirite.png index 88ecc8e9ea9..5a63465f882 100644 Binary files a/public/images/items/pinsirite.png and b/public/images/items/pinsirite.png differ diff --git a/public/images/items/pixie_plate.png b/public/images/items/pixie_plate.png index e123ae6a49a..7d29f030a76 100644 Binary files a/public/images/items/pixie_plate.png and b/public/images/items/pixie_plate.png differ diff --git a/public/images/items/poison_barb.png b/public/images/items/poison_barb.png index 3f9d714b08c..b85f7d3b777 100644 Binary files a/public/images/items/poison_barb.png and b/public/images/items/poison_barb.png differ diff --git a/public/images/items/poison_memory.png b/public/images/items/poison_memory.png index 6c2b0aea77b..4de0993adbf 100644 Binary files a/public/images/items/poison_memory.png and b/public/images/items/poison_memory.png differ diff --git a/public/images/items/poison_tera_shard.png b/public/images/items/poison_tera_shard.png index 4f21d158a41..bd213f1a91e 100644 Binary files a/public/images/items/poison_tera_shard.png and b/public/images/items/poison_tera_shard.png differ diff --git a/public/images/items/potion.png b/public/images/items/potion.png index f69c3210f03..e24a483970e 100644 Binary files a/public/images/items/potion.png and b/public/images/items/potion.png differ diff --git a/public/images/items/power_herb.png b/public/images/items/power_herb.png index ba156c62122..477e32e3271 100644 Binary files a/public/images/items/power_herb.png and b/public/images/items/power_herb.png differ diff --git a/public/images/items/pp_max.png b/public/images/items/pp_max.png index 787641e26ac..9c449b2e564 100644 Binary files a/public/images/items/pp_max.png and b/public/images/items/pp_max.png differ diff --git a/public/images/items/pp_up.png b/public/images/items/pp_up.png index 463c3a0578d..16f1c7558fd 100644 Binary files a/public/images/items/pp_up.png and b/public/images/items/pp_up.png differ diff --git a/public/images/items/prism_scale.png b/public/images/items/prism_scale.png index 2436e96bf73..807031bf268 100644 Binary files a/public/images/items/prism_scale.png and b/public/images/items/prism_scale.png differ diff --git a/public/images/items/prison_bottle.png b/public/images/items/prison_bottle.png index 06217988364..e8f24568da3 100644 Binary files a/public/images/items/prison_bottle.png and b/public/images/items/prison_bottle.png differ diff --git a/public/images/items/protector.png b/public/images/items/protector.png index 8f65be09b2f..028fd793988 100644 Binary files a/public/images/items/protector.png and b/public/images/items/protector.png differ diff --git a/public/images/items/protein.png b/public/images/items/protein.png index 54df13c6753..6165202f37d 100644 Binary files a/public/images/items/protein.png and b/public/images/items/protein.png differ diff --git a/public/images/items/psychic_memory.png b/public/images/items/psychic_memory.png index 21d62daa483..5ac912cfb10 100644 Binary files a/public/images/items/psychic_memory.png and b/public/images/items/psychic_memory.png differ diff --git a/public/images/items/psychic_tera_shard.png b/public/images/items/psychic_tera_shard.png index f4b1cf7b259..cb575d7bb69 100644 Binary files a/public/images/items/psychic_tera_shard.png and b/public/images/items/psychic_tera_shard.png differ diff --git a/public/images/items/quick_claw.png b/public/images/items/quick_claw.png index ff4f76d0576..94999fa3c09 100644 Binary files a/public/images/items/quick_claw.png and b/public/images/items/quick_claw.png differ diff --git a/public/images/items/quick_powder.png b/public/images/items/quick_powder.png index 58a8a1187a9..731d6fce025 100644 Binary files a/public/images/items/quick_powder.png and b/public/images/items/quick_powder.png differ diff --git a/public/images/items/rare_candy.png b/public/images/items/rare_candy.png index a860a116905..cd27e2002ba 100644 Binary files a/public/images/items/rare_candy.png and b/public/images/items/rare_candy.png differ diff --git a/public/images/items/rarer_candy.png b/public/images/items/rarer_candy.png index 4424caa659a..92af7fe43bf 100644 Binary files a/public/images/items/rarer_candy.png and b/public/images/items/rarer_candy.png differ diff --git a/public/images/items/rayquazite.png b/public/images/items/rayquazite.png index b39957b857d..6617924c434 100644 Binary files a/public/images/items/rayquazite.png and b/public/images/items/rayquazite.png differ diff --git a/public/images/items/razor_claw.png b/public/images/items/razor_claw.png index 0ba506e8706..48fc80d7f00 100644 Binary files a/public/images/items/razor_claw.png and b/public/images/items/razor_claw.png differ diff --git a/public/images/items/razor_fang.png b/public/images/items/razor_fang.png index 75306db5c4c..a55dbb3ee13 100644 Binary files a/public/images/items/razor_fang.png and b/public/images/items/razor_fang.png differ diff --git a/public/images/items/rb.png b/public/images/items/rb.png index 020f2ff878b..2dcccceb57e 100644 Binary files a/public/images/items/rb.png and b/public/images/items/rb.png differ diff --git a/public/images/items/reaper_cloth.png b/public/images/items/reaper_cloth.png index 9caf7665e95..8bb722c241d 100644 Binary files a/public/images/items/reaper_cloth.png and b/public/images/items/reaper_cloth.png differ diff --git a/public/images/items/red_orb.png b/public/images/items/red_orb.png index cee83740ca5..8e9a3bd4f74 100644 Binary files a/public/images/items/red_orb.png and b/public/images/items/red_orb.png differ diff --git a/public/images/items/relic_band.png b/public/images/items/relic_band.png index adbd73bc46b..7f783d26647 100644 Binary files a/public/images/items/relic_band.png and b/public/images/items/relic_band.png differ diff --git a/public/images/items/relic_crown.png b/public/images/items/relic_crown.png index de090041c1c..1f3c9c3a7df 100644 Binary files a/public/images/items/relic_crown.png and b/public/images/items/relic_crown.png differ diff --git a/public/images/items/relic_gold.png b/public/images/items/relic_gold.png index af5b1797938..650c610d4e2 100644 Binary files a/public/images/items/relic_gold.png and b/public/images/items/relic_gold.png differ diff --git a/public/images/items/repel.png b/public/images/items/repel.png index 80c7738e9ff..12c0111b794 100644 Binary files a/public/images/items/repel.png and b/public/images/items/repel.png differ diff --git a/public/images/items/reveal_glass.png b/public/images/items/reveal_glass.png index 469d20a2752..2f9d45a8932 100644 Binary files a/public/images/items/reveal_glass.png and b/public/images/items/reveal_glass.png differ diff --git a/public/images/items/revive.png b/public/images/items/revive.png index e84659867d8..2e2185088d5 100644 Binary files a/public/images/items/revive.png and b/public/images/items/revive.png differ diff --git a/public/images/items/reviver_seed.png b/public/images/items/reviver_seed.png index 10bc5c32451..2ba0919ea5a 100644 Binary files a/public/images/items/reviver_seed.png and b/public/images/items/reviver_seed.png differ diff --git a/public/images/items/ribbon_gen1.png b/public/images/items/ribbon_gen1.png index 1d731cf2e98..cb992589d36 100644 Binary files a/public/images/items/ribbon_gen1.png and b/public/images/items/ribbon_gen1.png differ diff --git a/public/images/items/ribbon_gen2.png b/public/images/items/ribbon_gen2.png index 2ff54112105..26268987fbe 100644 Binary files a/public/images/items/ribbon_gen2.png and b/public/images/items/ribbon_gen2.png differ diff --git a/public/images/items/ribbon_gen3.png b/public/images/items/ribbon_gen3.png index 14a5eb09f7d..501885bc952 100644 Binary files a/public/images/items/ribbon_gen3.png and b/public/images/items/ribbon_gen3.png differ diff --git a/public/images/items/ribbon_gen4.png b/public/images/items/ribbon_gen4.png index c482ac1d04a..ad4cb139a7e 100644 Binary files a/public/images/items/ribbon_gen4.png and b/public/images/items/ribbon_gen4.png differ diff --git a/public/images/items/ribbon_gen5.png b/public/images/items/ribbon_gen5.png index 52560cde636..a4f99ffb7f2 100644 Binary files a/public/images/items/ribbon_gen5.png and b/public/images/items/ribbon_gen5.png differ diff --git a/public/images/items/ribbon_gen6.png b/public/images/items/ribbon_gen6.png index 3dd04927acd..4c9281fa8a7 100644 Binary files a/public/images/items/ribbon_gen6.png and b/public/images/items/ribbon_gen6.png differ diff --git a/public/images/items/ribbon_gen7.png b/public/images/items/ribbon_gen7.png index 225b40da419..5d088392bd5 100644 Binary files a/public/images/items/ribbon_gen7.png and b/public/images/items/ribbon_gen7.png differ diff --git a/public/images/items/ribbon_gen8.png b/public/images/items/ribbon_gen8.png index 32aaa803699..537d64605b3 100644 Binary files a/public/images/items/ribbon_gen8.png and b/public/images/items/ribbon_gen8.png differ diff --git a/public/images/items/ribbon_gen9.png b/public/images/items/ribbon_gen9.png index ad489005e23..a702b6241c3 100644 Binary files a/public/images/items/ribbon_gen9.png and b/public/images/items/ribbon_gen9.png differ diff --git a/public/images/items/rock_memory.png b/public/images/items/rock_memory.png index cfa71c851c0..963ea849d8c 100644 Binary files a/public/images/items/rock_memory.png and b/public/images/items/rock_memory.png differ diff --git a/public/images/items/rock_tera_shard.png b/public/images/items/rock_tera_shard.png index a07ca7955a4..279722e455b 100644 Binary files a/public/images/items/rock_tera_shard.png and b/public/images/items/rock_tera_shard.png differ diff --git a/public/images/items/rogue_ribbon.png b/public/images/items/rogue_ribbon.png index c3cfdcd85f3..6864b6a1fb7 100644 Binary files a/public/images/items/rogue_ribbon.png and b/public/images/items/rogue_ribbon.png differ diff --git a/public/images/items/rusted_shield.png b/public/images/items/rusted_shield.png index 3748f13dc4b..065309fc1b7 100644 Binary files a/public/images/items/rusted_shield.png and b/public/images/items/rusted_shield.png differ diff --git a/public/images/items/rusted_sword.png b/public/images/items/rusted_sword.png index 249233374e0..ad7123dc56d 100644 Binary files a/public/images/items/rusted_sword.png and b/public/images/items/rusted_sword.png differ diff --git a/public/images/items/sablenite.png b/public/images/items/sablenite.png index 48eac2d5875..771480aa918 100644 Binary files a/public/images/items/sablenite.png and b/public/images/items/sablenite.png differ diff --git a/public/images/items/sachet.png b/public/images/items/sachet.png index 6d91fa210fc..3d9d6e6c7c7 100644 Binary files a/public/images/items/sachet.png and b/public/images/items/sachet.png differ diff --git a/public/images/items/sacred_ash.png b/public/images/items/sacred_ash.png index 4fab9dc0dc7..741afe59ef2 100644 Binary files a/public/images/items/sacred_ash.png and b/public/images/items/sacred_ash.png differ diff --git a/public/images/items/salac_berry.png b/public/images/items/salac_berry.png index 846dbb4f160..a01a824b4ba 100644 Binary files a/public/images/items/salac_berry.png and b/public/images/items/salac_berry.png differ diff --git a/public/images/items/salamencite.png b/public/images/items/salamencite.png index f175f39d351..f54a8d3dae9 100644 Binary files a/public/images/items/salamencite.png and b/public/images/items/salamencite.png differ diff --git a/public/images/items/scanner.png b/public/images/items/scanner.png index a291d3f43f8..f56f696638c 100644 Binary files a/public/images/items/scanner.png and b/public/images/items/scanner.png differ diff --git a/public/images/items/sceptilite.png b/public/images/items/sceptilite.png index ff81c4a55fe..4b255b1ff6d 100644 Binary files a/public/images/items/sceptilite.png and b/public/images/items/sceptilite.png differ diff --git a/public/images/items/scizorite.png b/public/images/items/scizorite.png index 8ffca143835..9d357bbd0b6 100644 Binary files a/public/images/items/scizorite.png and b/public/images/items/scizorite.png differ diff --git a/public/images/items/scope_lens.png b/public/images/items/scope_lens.png index d3b1f354313..2cf77cbde77 100644 Binary files a/public/images/items/scope_lens.png and b/public/images/items/scope_lens.png differ diff --git a/public/images/items/scroll_of_darkness.png b/public/images/items/scroll_of_darkness.png index ff6a6065e40..72044c62d8b 100644 Binary files a/public/images/items/scroll_of_darkness.png and b/public/images/items/scroll_of_darkness.png differ diff --git a/public/images/items/scroll_of_waters.png b/public/images/items/scroll_of_waters.png index e4a0cb725eb..9195a26abe1 100644 Binary files a/public/images/items/scroll_of_waters.png and b/public/images/items/scroll_of_waters.png differ diff --git a/public/images/items/shadow_reins_of_unity.png b/public/images/items/shadow_reins_of_unity.png index 85cbc446851..668033ff166 100644 Binary files a/public/images/items/shadow_reins_of_unity.png and b/public/images/items/shadow_reins_of_unity.png differ diff --git a/public/images/items/sharp_beak.png b/public/images/items/sharp_beak.png index f22019e658b..a19e77d2e6e 100644 Binary files a/public/images/items/sharp_beak.png and b/public/images/items/sharp_beak.png differ diff --git a/public/images/items/sharp_meteorite.png b/public/images/items/sharp_meteorite.png index 61a139fab05..97f89e5893b 100644 Binary files a/public/images/items/sharp_meteorite.png and b/public/images/items/sharp_meteorite.png differ diff --git a/public/images/items/sharpedonite.png b/public/images/items/sharpedonite.png index b3eabd5650f..c409b9afef7 100644 Binary files a/public/images/items/sharpedonite.png and b/public/images/items/sharpedonite.png differ diff --git a/public/images/items/shed_shell.png b/public/images/items/shed_shell.png index 17981864897..855b9034e49 100644 Binary files a/public/images/items/shed_shell.png and b/public/images/items/shed_shell.png differ diff --git a/public/images/items/shell_bell.png b/public/images/items/shell_bell.png index 6367d134672..9a99aeebae6 100644 Binary files a/public/images/items/shell_bell.png and b/public/images/items/shell_bell.png differ diff --git a/public/images/items/shiny_charm.png b/public/images/items/shiny_charm.png index 9f692828d04..de2ca39bf5b 100644 Binary files a/public/images/items/shiny_charm.png and b/public/images/items/shiny_charm.png differ diff --git a/public/images/items/shiny_stone.png b/public/images/items/shiny_stone.png index d2fabe6ec8b..01919d39107 100644 Binary files a/public/images/items/shiny_stone.png and b/public/images/items/shiny_stone.png differ diff --git a/public/images/items/shock_drive.png b/public/images/items/shock_drive.png index 592b0085a8f..6bf2602386f 100644 Binary files a/public/images/items/shock_drive.png and b/public/images/items/shock_drive.png differ diff --git a/public/images/items/silk_scarf.png b/public/images/items/silk_scarf.png index 83f056c8b41..993e9841dd7 100644 Binary files a/public/images/items/silk_scarf.png and b/public/images/items/silk_scarf.png differ diff --git a/public/images/items/silver_powder.png b/public/images/items/silver_powder.png index eb717fc6776..fee080a8612 100644 Binary files a/public/images/items/silver_powder.png and b/public/images/items/silver_powder.png differ diff --git a/public/images/items/sitrus_berry.png b/public/images/items/sitrus_berry.png index 703657ad8dd..d26f506e403 100644 Binary files a/public/images/items/sitrus_berry.png and b/public/images/items/sitrus_berry.png differ diff --git a/public/images/items/sky_plate.png b/public/images/items/sky_plate.png index 293bb8f5dc2..be463d5dbdf 100644 Binary files a/public/images/items/sky_plate.png and b/public/images/items/sky_plate.png differ diff --git a/public/images/items/slowbronite.png b/public/images/items/slowbronite.png index 3dc21ffb550..6e0ff2ad294 100644 Binary files a/public/images/items/slowbronite.png and b/public/images/items/slowbronite.png differ diff --git a/public/images/items/smooth_meteorite.png b/public/images/items/smooth_meteorite.png index 059e8e91a30..9e0361e8be2 100644 Binary files a/public/images/items/smooth_meteorite.png and b/public/images/items/smooth_meteorite.png differ diff --git a/public/images/items/soft_sand.png b/public/images/items/soft_sand.png index feda8cd3858..380be0052a5 100644 Binary files a/public/images/items/soft_sand.png and b/public/images/items/soft_sand.png differ diff --git a/public/images/items/soothe_bell.png b/public/images/items/soothe_bell.png index fbceb808c56..d21da03f663 100644 Binary files a/public/images/items/soothe_bell.png and b/public/images/items/soothe_bell.png differ diff --git a/public/images/items/soul_dew.png b/public/images/items/soul_dew.png index 56b9655714b..8458cb04cfd 100644 Binary files a/public/images/items/soul_dew.png and b/public/images/items/soul_dew.png differ diff --git a/public/images/items/spell_tag.png b/public/images/items/spell_tag.png index f9270c6e0a6..0dc730371d5 100644 Binary files a/public/images/items/spell_tag.png and b/public/images/items/spell_tag.png differ diff --git a/public/images/items/splash_plate.png b/public/images/items/splash_plate.png index d86ae5eab57..57a310c7d4f 100644 Binary files a/public/images/items/splash_plate.png and b/public/images/items/splash_plate.png differ diff --git a/public/images/items/spooky_plate.png b/public/images/items/spooky_plate.png index d7df7d25e32..0de26ac30ea 100644 Binary files a/public/images/items/spooky_plate.png and b/public/images/items/spooky_plate.png differ diff --git a/public/images/items/starf_berry.png b/public/images/items/starf_berry.png index cbf423e8343..6c1fb5fd0d4 100644 Binary files a/public/images/items/starf_berry.png and b/public/images/items/starf_berry.png differ diff --git a/public/images/items/steel_memory.png b/public/images/items/steel_memory.png index 8c45bc8b640..764ba8d6022 100644 Binary files a/public/images/items/steel_memory.png and b/public/images/items/steel_memory.png differ diff --git a/public/images/items/steel_tera_shard.png b/public/images/items/steel_tera_shard.png index c93f8c52f60..1cd37754648 100644 Binary files a/public/images/items/steel_tera_shard.png and b/public/images/items/steel_tera_shard.png differ diff --git a/public/images/items/steelixite.png b/public/images/items/steelixite.png index 429c668e656..92a73b854b7 100644 Binary files a/public/images/items/steelixite.png and b/public/images/items/steelixite.png differ diff --git a/public/images/items/stellar_tera_shard.png b/public/images/items/stellar_tera_shard.png index 1d5982f5b94..7d0644646a1 100644 Binary files a/public/images/items/stellar_tera_shard.png and b/public/images/items/stellar_tera_shard.png differ diff --git a/public/images/items/stone_plate.png b/public/images/items/stone_plate.png index dfc3a0cd132..782874f7ca7 100644 Binary files a/public/images/items/stone_plate.png and b/public/images/items/stone_plate.png differ diff --git a/public/images/items/strange_ball.png b/public/images/items/strange_ball.png index 2ddce33d7ac..3c8c7d71aa4 100644 Binary files a/public/images/items/strange_ball.png and b/public/images/items/strange_ball.png differ diff --git a/public/images/items/strawberry_sweet.png b/public/images/items/strawberry_sweet.png index 5df6e1cd8be..0089247b6b9 100644 Binary files a/public/images/items/strawberry_sweet.png and b/public/images/items/strawberry_sweet.png differ diff --git a/public/images/items/sun_flute.png b/public/images/items/sun_flute.png index f81d35fde9c..a792d42244c 100644 Binary files a/public/images/items/sun_flute.png and b/public/images/items/sun_flute.png differ diff --git a/public/images/items/sun_stone.png b/public/images/items/sun_stone.png index 33a7e8f8387..cc26cdf4a63 100644 Binary files a/public/images/items/sun_stone.png and b/public/images/items/sun_stone.png differ diff --git a/public/images/items/super_exp_charm.png b/public/images/items/super_exp_charm.png index ccd73f558cc..fd12fcdbc34 100644 Binary files a/public/images/items/super_exp_charm.png and b/public/images/items/super_exp_charm.png differ diff --git a/public/images/items/super_lure.png b/public/images/items/super_lure.png index 9c2213cd964..56c9abe59d2 100644 Binary files a/public/images/items/super_lure.png and b/public/images/items/super_lure.png differ diff --git a/public/images/items/super_potion.png b/public/images/items/super_potion.png index 16205cb0fff..def35f4d363 100644 Binary files a/public/images/items/super_potion.png and b/public/images/items/super_potion.png differ diff --git a/public/images/items/super_repel.png b/public/images/items/super_repel.png index 628cdbc5c1d..a8a0394832c 100644 Binary files a/public/images/items/super_repel.png and b/public/images/items/super_repel.png differ diff --git a/public/images/items/swampertite.png b/public/images/items/swampertite.png index d4d6415f6f4..5b4b422e034 100644 Binary files a/public/images/items/swampertite.png and b/public/images/items/swampertite.png differ diff --git a/public/images/items/sweet_apple.png b/public/images/items/sweet_apple.png index cfdf79a9eac..de183d1c644 100644 Binary files a/public/images/items/sweet_apple.png and b/public/images/items/sweet_apple.png differ diff --git a/public/images/items/syrupy_apple.png b/public/images/items/syrupy_apple.png index 9c9d05e2e0a..e6bebc8f3c8 100644 Binary files a/public/images/items/syrupy_apple.png and b/public/images/items/syrupy_apple.png differ diff --git a/public/images/items/tart_apple.png b/public/images/items/tart_apple.png index ad9a1728bb5..67f90802382 100644 Binary files a/public/images/items/tart_apple.png and b/public/images/items/tart_apple.png differ diff --git a/public/images/items/tera_orb.png b/public/images/items/tera_orb.png index d8720e41669..52348dc95fc 100644 Binary files a/public/images/items/tera_orb.png and b/public/images/items/tera_orb.png differ diff --git a/public/images/items/thick_club.png b/public/images/items/thick_club.png index f15885f0190..193540ff0b1 100644 Binary files a/public/images/items/thick_club.png and b/public/images/items/thick_club.png differ diff --git a/public/images/items/thunder_stone.png b/public/images/items/thunder_stone.png index 9e87909516b..dc54772c294 100644 Binary files a/public/images/items/thunder_stone.png and b/public/images/items/thunder_stone.png differ diff --git a/public/images/items/tm_bug.png b/public/images/items/tm_bug.png index 229230198c4..191f6b93c82 100644 Binary files a/public/images/items/tm_bug.png and b/public/images/items/tm_bug.png differ diff --git a/public/images/items/tm_dark.png b/public/images/items/tm_dark.png index 6856b1d5444..f2aab224ff9 100644 Binary files a/public/images/items/tm_dark.png and b/public/images/items/tm_dark.png differ diff --git a/public/images/items/tm_dragon.png b/public/images/items/tm_dragon.png index 62405519132..bf31cf2565e 100644 Binary files a/public/images/items/tm_dragon.png and b/public/images/items/tm_dragon.png differ diff --git a/public/images/items/tm_electric.png b/public/images/items/tm_electric.png index 34e4fe8de7b..96022151293 100644 Binary files a/public/images/items/tm_electric.png and b/public/images/items/tm_electric.png differ diff --git a/public/images/items/tm_fairy.png b/public/images/items/tm_fairy.png index 056783a8d63..f62104d0ba0 100644 Binary files a/public/images/items/tm_fairy.png and b/public/images/items/tm_fairy.png differ diff --git a/public/images/items/tm_fighting.png b/public/images/items/tm_fighting.png index 144d75826cd..0359997d820 100644 Binary files a/public/images/items/tm_fighting.png and b/public/images/items/tm_fighting.png differ diff --git a/public/images/items/tm_fire.png b/public/images/items/tm_fire.png index ae19e381873..f4880a6c888 100644 Binary files a/public/images/items/tm_fire.png and b/public/images/items/tm_fire.png differ diff --git a/public/images/items/tm_flying.png b/public/images/items/tm_flying.png index 3db06a69e68..ebadc39a88a 100644 Binary files a/public/images/items/tm_flying.png and b/public/images/items/tm_flying.png differ diff --git a/public/images/items/tm_ghost.png b/public/images/items/tm_ghost.png index a7e8928aa7e..ef0fd9f6927 100644 Binary files a/public/images/items/tm_ghost.png and b/public/images/items/tm_ghost.png differ diff --git a/public/images/items/tm_grass.png b/public/images/items/tm_grass.png index 42f11f590eb..f81d27b7ff0 100644 Binary files a/public/images/items/tm_grass.png and b/public/images/items/tm_grass.png differ diff --git a/public/images/items/tm_ground.png b/public/images/items/tm_ground.png index ff9dc7c7384..e8bf5d4da04 100644 Binary files a/public/images/items/tm_ground.png and b/public/images/items/tm_ground.png differ diff --git a/public/images/items/tm_ice.png b/public/images/items/tm_ice.png index 4edbb447a3e..eece8623654 100644 Binary files a/public/images/items/tm_ice.png and b/public/images/items/tm_ice.png differ diff --git a/public/images/items/tm_normal.png b/public/images/items/tm_normal.png index 19afe85d442..cede4cb96e2 100644 Binary files a/public/images/items/tm_normal.png and b/public/images/items/tm_normal.png differ diff --git a/public/images/items/tm_poison.png b/public/images/items/tm_poison.png index 83cb4488f33..5cea7211e95 100644 Binary files a/public/images/items/tm_poison.png and b/public/images/items/tm_poison.png differ diff --git a/public/images/items/tm_psychic.png b/public/images/items/tm_psychic.png index 4296914eda2..8767e879b21 100644 Binary files a/public/images/items/tm_psychic.png and b/public/images/items/tm_psychic.png differ diff --git a/public/images/items/tm_rock.png b/public/images/items/tm_rock.png index 6e13a1835e7..1a6be381a1a 100644 Binary files a/public/images/items/tm_rock.png and b/public/images/items/tm_rock.png differ diff --git a/public/images/items/tm_steel.png b/public/images/items/tm_steel.png index 32071b0843b..3fbb61b47df 100644 Binary files a/public/images/items/tm_steel.png and b/public/images/items/tm_steel.png differ diff --git a/public/images/items/tm_water.png b/public/images/items/tm_water.png index 85403f20be7..3f9122a3862 100644 Binary files a/public/images/items/tm_water.png and b/public/images/items/tm_water.png differ diff --git a/public/images/items/toxic_orb.png b/public/images/items/toxic_orb.png index 3483c13ba2b..8b8a1026f92 100644 Binary files a/public/images/items/toxic_orb.png and b/public/images/items/toxic_orb.png differ diff --git a/public/images/items/toxic_plate.png b/public/images/items/toxic_plate.png index efb2cff129c..721b275f7d7 100644 Binary files a/public/images/items/toxic_plate.png and b/public/images/items/toxic_plate.png differ diff --git a/public/images/items/twisted_spoon.png b/public/images/items/twisted_spoon.png index 9bb23b04386..07908d6cd0f 100644 Binary files a/public/images/items/twisted_spoon.png and b/public/images/items/twisted_spoon.png differ diff --git a/public/images/items/tyranitarite.png b/public/images/items/tyranitarite.png index 691f8c6123d..3873e7784b1 100644 Binary files a/public/images/items/tyranitarite.png and b/public/images/items/tyranitarite.png differ diff --git a/public/images/items/ub.png b/public/images/items/ub.png index 6ad0702223a..76fe1f28675 100644 Binary files a/public/images/items/ub.png and b/public/images/items/ub.png differ diff --git a/public/images/items/ultra_ribbon.png b/public/images/items/ultra_ribbon.png index a63ec63e394..f1342eb3bae 100644 Binary files a/public/images/items/ultra_ribbon.png and b/public/images/items/ultra_ribbon.png differ diff --git a/public/images/items/ultranecrozium_z.png b/public/images/items/ultranecrozium_z.png index cdcb29e6c26..f95d722873e 100644 Binary files a/public/images/items/ultranecrozium_z.png and b/public/images/items/ultranecrozium_z.png differ diff --git a/public/images/items/unknown.png b/public/images/items/unknown.png index 2d0637048ae..17697d0d640 100644 Binary files a/public/images/items/unknown.png and b/public/images/items/unknown.png differ diff --git a/public/images/items/unremarkable_teacup.png b/public/images/items/unremarkable_teacup.png index 340214b6a5c..154d8284e0d 100644 Binary files a/public/images/items/unremarkable_teacup.png and b/public/images/items/unremarkable_teacup.png differ diff --git a/public/images/items/upgrade.png b/public/images/items/upgrade.png index 11a7ade4d6a..3fe4f03d15a 100644 Binary files a/public/images/items/upgrade.png and b/public/images/items/upgrade.png differ diff --git a/public/images/items/venusaurite.png b/public/images/items/venusaurite.png index 845d1cef75a..853b37417e3 100644 Binary files a/public/images/items/venusaurite.png and b/public/images/items/venusaurite.png differ diff --git a/public/images/items/water_memory.png b/public/images/items/water_memory.png index a0cf8b3c5c9..fb3d33dfbce 100644 Binary files a/public/images/items/water_memory.png and b/public/images/items/water_memory.png differ diff --git a/public/images/items/water_stone.png b/public/images/items/water_stone.png index fa3d924960b..6972b36573c 100644 Binary files a/public/images/items/water_stone.png and b/public/images/items/water_stone.png differ diff --git a/public/images/items/water_tera_shard.png b/public/images/items/water_tera_shard.png index eec8caf1245..1cab0ad8f33 100644 Binary files a/public/images/items/water_tera_shard.png and b/public/images/items/water_tera_shard.png differ diff --git a/public/images/items/wellspring_mask.png b/public/images/items/wellspring_mask.png index 921c71e1493..bec005856e3 100644 Binary files a/public/images/items/wellspring_mask.png and b/public/images/items/wellspring_mask.png differ diff --git a/public/images/items/whipped_dream.png b/public/images/items/whipped_dream.png index 16090ccaac0..d02a3fb9807 100644 Binary files a/public/images/items/whipped_dream.png and b/public/images/items/whipped_dream.png differ diff --git a/public/images/items/white_herb.png b/public/images/items/white_herb.png index 829c64f188e..0729602fd15 100644 Binary files a/public/images/items/white_herb.png and b/public/images/items/white_herb.png differ diff --git a/public/images/items/wide_lens.png b/public/images/items/wide_lens.png index f7dbe9843fa..dcfb43378a0 100644 Binary files a/public/images/items/wide_lens.png and b/public/images/items/wide_lens.png differ diff --git a/public/images/items/wise_glasses.png b/public/images/items/wise_glasses.png index b48d2cb3ffd..765c88524d0 100644 Binary files a/public/images/items/wise_glasses.png and b/public/images/items/wise_glasses.png differ diff --git a/public/images/items/wl_ability_urge.png b/public/images/items/wl_ability_urge.png index b6b2c8bd398..7312de48a94 100644 Binary files a/public/images/items/wl_ability_urge.png and b/public/images/items/wl_ability_urge.png differ diff --git a/public/images/items/wl_antidote.png b/public/images/items/wl_antidote.png index 93e4757938b..18a74292dcf 100644 Binary files a/public/images/items/wl_antidote.png and b/public/images/items/wl_antidote.png differ diff --git a/public/images/items/wl_awakening.png b/public/images/items/wl_awakening.png index 57e83b30cda..4fa59e2d10d 100644 Binary files a/public/images/items/wl_awakening.png and b/public/images/items/wl_awakening.png differ diff --git a/public/images/items/wl_burn_heal.png b/public/images/items/wl_burn_heal.png index 3565af12d62..98fa6c11766 100644 Binary files a/public/images/items/wl_burn_heal.png and b/public/images/items/wl_burn_heal.png differ diff --git a/public/images/items/wl_custom_spliced.png b/public/images/items/wl_custom_spliced.png index 8aef30edb27..de344ae5704 100644 Binary files a/public/images/items/wl_custom_spliced.png and b/public/images/items/wl_custom_spliced.png differ diff --git a/public/images/items/wl_custom_thief.png b/public/images/items/wl_custom_thief.png index de6d62a48bc..aa6f9e0acc7 100644 Binary files a/public/images/items/wl_custom_thief.png and b/public/images/items/wl_custom_thief.png differ diff --git a/public/images/items/wl_elixir.png b/public/images/items/wl_elixir.png index 05eb590c484..e9b7b48ab87 100644 Binary files a/public/images/items/wl_elixir.png and b/public/images/items/wl_elixir.png differ diff --git a/public/images/items/wl_ether.png b/public/images/items/wl_ether.png index 114e8ffc941..457f2bf0649 100644 Binary files a/public/images/items/wl_ether.png and b/public/images/items/wl_ether.png differ diff --git a/public/images/items/wl_full_heal.png b/public/images/items/wl_full_heal.png index 215f9801d65..361d432781a 100644 Binary files a/public/images/items/wl_full_heal.png and b/public/images/items/wl_full_heal.png differ diff --git a/public/images/items/wl_full_restore.png b/public/images/items/wl_full_restore.png index d6d4ffe720f..0e9399f7c77 100644 Binary files a/public/images/items/wl_full_restore.png and b/public/images/items/wl_full_restore.png differ diff --git a/public/images/items/wl_guard_spec.png b/public/images/items/wl_guard_spec.png index 9d22029e927..4207e5094b9 100644 Binary files a/public/images/items/wl_guard_spec.png and b/public/images/items/wl_guard_spec.png differ diff --git a/public/images/items/wl_hyper_potion.png b/public/images/items/wl_hyper_potion.png index 1eb075445e4..016c257a1eb 100644 Binary files a/public/images/items/wl_hyper_potion.png and b/public/images/items/wl_hyper_potion.png differ diff --git a/public/images/items/wl_ice_heal.png b/public/images/items/wl_ice_heal.png index 9ac297c0e7c..619d30d9ca9 100644 Binary files a/public/images/items/wl_ice_heal.png and b/public/images/items/wl_ice_heal.png differ diff --git a/public/images/items/wl_item_drop.png b/public/images/items/wl_item_drop.png index 73425749670..66e81677917 100644 Binary files a/public/images/items/wl_item_drop.png and b/public/images/items/wl_item_drop.png differ diff --git a/public/images/items/wl_item_urge.png b/public/images/items/wl_item_urge.png index 17a6343058f..766751fa329 100644 Binary files a/public/images/items/wl_item_urge.png and b/public/images/items/wl_item_urge.png differ diff --git a/public/images/items/wl_max_elixir.png b/public/images/items/wl_max_elixir.png index 4a33dc853fd..4df3eaff10a 100644 Binary files a/public/images/items/wl_max_elixir.png and b/public/images/items/wl_max_elixir.png differ diff --git a/public/images/items/wl_max_ether.png b/public/images/items/wl_max_ether.png index d3f69ce053d..0e174f9eba4 100644 Binary files a/public/images/items/wl_max_ether.png and b/public/images/items/wl_max_ether.png differ diff --git a/public/images/items/wl_max_potion.png b/public/images/items/wl_max_potion.png index 6b58c07e86a..2f334795489 100644 Binary files a/public/images/items/wl_max_potion.png and b/public/images/items/wl_max_potion.png differ diff --git a/public/images/items/wl_max_revive.png b/public/images/items/wl_max_revive.png index f2eabaa8d5b..89528b0fe8a 100644 Binary files a/public/images/items/wl_max_revive.png and b/public/images/items/wl_max_revive.png differ diff --git a/public/images/items/wl_paralyze_heal.png b/public/images/items/wl_paralyze_heal.png index 8e89e54c156..ba9c172fa17 100644 Binary files a/public/images/items/wl_paralyze_heal.png and b/public/images/items/wl_paralyze_heal.png differ diff --git a/public/images/items/wl_potion.png b/public/images/items/wl_potion.png index 619c5d2b014..a70bba17b2f 100644 Binary files a/public/images/items/wl_potion.png and b/public/images/items/wl_potion.png differ diff --git a/public/images/items/wl_reset_urge.png b/public/images/items/wl_reset_urge.png index 0d2f94504f0..197bcc829fa 100644 Binary files a/public/images/items/wl_reset_urge.png and b/public/images/items/wl_reset_urge.png differ diff --git a/public/images/items/wl_revive.png b/public/images/items/wl_revive.png index c01b5f68853..36ac67d5a60 100644 Binary files a/public/images/items/wl_revive.png and b/public/images/items/wl_revive.png differ diff --git a/public/images/items/wl_super_potion.png b/public/images/items/wl_super_potion.png index eaf60d6c882..5bf5dd8fc89 100644 Binary files a/public/images/items/wl_super_potion.png and b/public/images/items/wl_super_potion.png differ diff --git a/public/images/items/x_accuracy.png b/public/images/items/x_accuracy.png index e7af52fc684..4e51324faef 100644 Binary files a/public/images/items/x_accuracy.png and b/public/images/items/x_accuracy.png differ diff --git a/public/images/items/x_attack.png b/public/images/items/x_attack.png index 711aca7269c..a66167121f6 100644 Binary files a/public/images/items/x_attack.png and b/public/images/items/x_attack.png differ diff --git a/public/images/items/x_defense.png b/public/images/items/x_defense.png index ee8d3fa5e2d..a4f9675fc82 100644 Binary files a/public/images/items/x_defense.png and b/public/images/items/x_defense.png differ diff --git a/public/images/items/x_sp_atk.png b/public/images/items/x_sp_atk.png index f0e674e4d45..853df12a909 100644 Binary files a/public/images/items/x_sp_atk.png and b/public/images/items/x_sp_atk.png differ diff --git a/public/images/items/x_sp_def.png b/public/images/items/x_sp_def.png index 2ab43574af9..04cb91cd73f 100644 Binary files a/public/images/items/x_sp_def.png and b/public/images/items/x_sp_def.png differ diff --git a/public/images/items/x_speed.png b/public/images/items/x_speed.png index daebb295d77..7d9541531d3 100644 Binary files a/public/images/items/x_speed.png and b/public/images/items/x_speed.png differ diff --git a/public/images/items/zap_plate.png b/public/images/items/zap_plate.png index a966fb76cd3..a291624b7a3 100644 Binary files a/public/images/items/zap_plate.png and b/public/images/items/zap_plate.png differ diff --git a/public/images/items/zinc.png b/public/images/items/zinc.png index c1dfd47a9fc..fccbc59e9e8 100644 Binary files a/public/images/items/zinc.png and b/public/images/items/zinc.png differ diff --git a/public/images/items/zoom_lens.png b/public/images/items/zoom_lens.png index 30b3ed55bdf..4f1e5cc9e4b 100644 Binary files a/public/images/items/zoom_lens.png and b/public/images/items/zoom_lens.png differ diff --git a/public/images/logo.png b/public/images/logo.png index 16e559d9c38..bf6c0b19ef2 100644 Binary files a/public/images/logo.png and b/public/images/logo.png differ diff --git a/public/images/mystery-encounters/berries_abound_bush.png b/public/images/mystery-encounters/berries_abound_bush.png index e9be20b4863..741191d71c9 100644 Binary files a/public/images/mystery-encounters/berries_abound_bush.png and b/public/images/mystery-encounters/berries_abound_bush.png differ diff --git a/public/images/mystery-encounters/dark_deal_porygon.png b/public/images/mystery-encounters/dark_deal_porygon.png index 168999fb0f4..97013af65a1 100644 Binary files a/public/images/mystery-encounters/dark_deal_porygon.png and b/public/images/mystery-encounters/dark_deal_porygon.png differ diff --git a/public/images/mystery-encounters/dark_deal_scientist.png b/public/images/mystery-encounters/dark_deal_scientist.png index 453cb767ec1..980f5109f30 100644 Binary files a/public/images/mystery-encounters/dark_deal_scientist.png and b/public/images/mystery-encounters/dark_deal_scientist.png differ diff --git a/public/images/mystery-encounters/department_store_sale_lady.png b/public/images/mystery-encounters/department_store_sale_lady.png index 9dcc1281c9e..b11034d3c99 100644 Binary files a/public/images/mystery-encounters/department_store_sale_lady.png and b/public/images/mystery-encounters/department_store_sale_lady.png differ diff --git a/public/images/mystery-encounters/encounter_exclaim.png b/public/images/mystery-encounters/encounter_exclaim.png index a7727f4da2e..25b288c9700 100644 Binary files a/public/images/mystery-encounters/encounter_exclaim.png and b/public/images/mystery-encounters/encounter_exclaim.png differ diff --git a/public/images/mystery-encounters/encounter_radar.png b/public/images/mystery-encounters/encounter_radar.png index deb9426c269..9af44cd452e 100644 Binary files a/public/images/mystery-encounters/encounter_radar.png and b/public/images/mystery-encounters/encounter_radar.png differ diff --git a/public/images/mystery-encounters/field_trip_teacher.png b/public/images/mystery-encounters/field_trip_teacher.png index b4332bc0032..22a6a316297 100644 Binary files a/public/images/mystery-encounters/field_trip_teacher.png and b/public/images/mystery-encounters/field_trip_teacher.png differ diff --git a/public/images/mystery-encounters/fun_and_games_game.png b/public/images/mystery-encounters/fun_and_games_game.png index 03a3b9c9cbc..8b087c7a31b 100644 Binary files a/public/images/mystery-encounters/fun_and_games_game.png and b/public/images/mystery-encounters/fun_and_games_game.png differ diff --git a/public/images/mystery-encounters/fun_and_games_man.png b/public/images/mystery-encounters/fun_and_games_man.png index 05f94dbd33d..42c3b4996fa 100644 Binary files a/public/images/mystery-encounters/fun_and_games_man.png and b/public/images/mystery-encounters/fun_and_games_man.png differ diff --git a/public/images/mystery-encounters/fun_and_games_wobbuffet.png b/public/images/mystery-encounters/fun_and_games_wobbuffet.png index 37e7220196a..71997be5692 100644 Binary files a/public/images/mystery-encounters/fun_and_games_wobbuffet.png and b/public/images/mystery-encounters/fun_and_games_wobbuffet.png differ diff --git a/public/images/mystery-encounters/global_trade_system.png b/public/images/mystery-encounters/global_trade_system.png index cb0ffb0ab20..fb6815c0240 100644 Binary files a/public/images/mystery-encounters/global_trade_system.png and b/public/images/mystery-encounters/global_trade_system.png differ diff --git a/public/images/mystery-encounters/lost_at_sea_buoy.png b/public/images/mystery-encounters/lost_at_sea_buoy.png index fb957ac29f0..0c7400b7760 100644 Binary files a/public/images/mystery-encounters/lost_at_sea_buoy.png and b/public/images/mystery-encounters/lost_at_sea_buoy.png differ diff --git a/public/images/mystery-encounters/mysterious_chest_blue.png b/public/images/mystery-encounters/mysterious_chest_blue.png index e67bdcafa04..f959db13aa7 100644 Binary files a/public/images/mystery-encounters/mysterious_chest_blue.png and b/public/images/mystery-encounters/mysterious_chest_blue.png differ diff --git a/public/images/mystery-encounters/mysterious_chest_red.png b/public/images/mystery-encounters/mysterious_chest_red.png index c20a8218be6..c312911040e 100644 Binary files a/public/images/mystery-encounters/mysterious_chest_red.png and b/public/images/mystery-encounters/mysterious_chest_red.png differ diff --git a/public/images/mystery-encounters/part_timer_crate.png b/public/images/mystery-encounters/part_timer_crate.png index fb70a6e534a..dd02c243613 100644 Binary files a/public/images/mystery-encounters/part_timer_crate.png and b/public/images/mystery-encounters/part_timer_crate.png differ diff --git a/public/images/mystery-encounters/pokemon_salesman.png b/public/images/mystery-encounters/pokemon_salesman.png index 1251dd8eda7..e5195cf6999 100644 Binary files a/public/images/mystery-encounters/pokemon_salesman.png and b/public/images/mystery-encounters/pokemon_salesman.png differ diff --git a/public/images/mystery-encounters/safari_zone.png b/public/images/mystery-encounters/safari_zone.png index 375d66ebbe9..54bf097656c 100644 Binary files a/public/images/mystery-encounters/safari_zone.png and b/public/images/mystery-encounters/safari_zone.png differ diff --git a/public/images/mystery-encounters/safari_zone_bait.png b/public/images/mystery-encounters/safari_zone_bait.png index 7de9169d187..2133aea6567 100644 Binary files a/public/images/mystery-encounters/safari_zone_bait.png and b/public/images/mystery-encounters/safari_zone_bait.png differ diff --git a/public/images/mystery-encounters/safari_zone_mud.png b/public/images/mystery-encounters/safari_zone_mud.png index 2ba7cb00047..750ff585353 100644 Binary files a/public/images/mystery-encounters/safari_zone_mud.png and b/public/images/mystery-encounters/safari_zone_mud.png differ diff --git a/public/images/mystery-encounters/shady_vitamin_dealer.png b/public/images/mystery-encounters/shady_vitamin_dealer.png index 967d82973e6..f63eadc6799 100644 Binary files a/public/images/mystery-encounters/shady_vitamin_dealer.png and b/public/images/mystery-encounters/shady_vitamin_dealer.png differ diff --git a/public/images/mystery-encounters/teleporting_hijinks_teleporter.png b/public/images/mystery-encounters/teleporting_hijinks_teleporter.png index 9a049c30ab1..178f1571194 100644 Binary files a/public/images/mystery-encounters/teleporting_hijinks_teleporter.png and b/public/images/mystery-encounters/teleporting_hijinks_teleporter.png differ diff --git a/public/images/mystery-encounters/training_session_gear.png b/public/images/mystery-encounters/training_session_gear.png index 42c3a9bb7d4..9ebc7530f64 100644 Binary files a/public/images/mystery-encounters/training_session_gear.png and b/public/images/mystery-encounters/training_session_gear.png differ diff --git a/public/images/mystery-encounters/weird_dream_woman.png b/public/images/mystery-encounters/weird_dream_woman.png index 50d04667152..65fe2f30841 100644 Binary files a/public/images/mystery-encounters/weird_dream_woman.png and b/public/images/mystery-encounters/weird_dream_woman.png differ diff --git a/public/images/pb.png b/public/images/pb.png index acb3a96f066..364d864f7fe 100644 Binary files a/public/images/pb.png and b/public/images/pb.png differ diff --git a/public/images/pokeball/gb.png b/public/images/pokeball/gb.png index 94f278c8ef1..54980d63766 100644 Binary files a/public/images/pokeball/gb.png and b/public/images/pokeball/gb.png differ diff --git a/public/images/pokeball/gb_open.png b/public/images/pokeball/gb_open.png index 26d8956fd27..c5a6e43e705 100644 Binary files a/public/images/pokeball/gb_open.png and b/public/images/pokeball/gb_open.png differ diff --git a/public/images/pokeball/gb_opening.png b/public/images/pokeball/gb_opening.png index 9947f7ceb37..075aafeb460 100644 Binary files a/public/images/pokeball/gb_opening.png and b/public/images/pokeball/gb_opening.png differ diff --git a/public/images/pokeball/lb.png b/public/images/pokeball/lb.png index 1a5639d48e9..2aedfafec3c 100644 Binary files a/public/images/pokeball/lb.png and b/public/images/pokeball/lb.png differ diff --git a/public/images/pokeball/lb_open.png b/public/images/pokeball/lb_open.png index fd2b9c71953..6ec104da2d8 100644 Binary files a/public/images/pokeball/lb_open.png and b/public/images/pokeball/lb_open.png differ diff --git a/public/images/pokeball/lb_opening.png b/public/images/pokeball/lb_opening.png index e62517bd67a..b5f0cffa55a 100644 Binary files a/public/images/pokeball/lb_opening.png and b/public/images/pokeball/lb_opening.png differ diff --git a/public/images/pokeball/mb.png b/public/images/pokeball/mb.png index de374e0fd7c..cc7b7d3164b 100644 Binary files a/public/images/pokeball/mb.png and b/public/images/pokeball/mb.png differ diff --git a/public/images/pokeball/mb_open.png b/public/images/pokeball/mb_open.png index f4e0145dcd4..b0d21c800c2 100644 Binary files a/public/images/pokeball/mb_open.png and b/public/images/pokeball/mb_open.png differ diff --git a/public/images/pokeball/mb_opening.png b/public/images/pokeball/mb_opening.png index 9c483fbbb9c..a13437ba70a 100644 Binary files a/public/images/pokeball/mb_opening.png and b/public/images/pokeball/mb_opening.png differ diff --git a/public/images/pokeball/pb.png b/public/images/pokeball/pb.png index 684ed6b0a5f..7404b3129b7 100644 Binary files a/public/images/pokeball/pb.png and b/public/images/pokeball/pb.png differ diff --git a/public/images/pokeball/pb_open.png b/public/images/pokeball/pb_open.png index 62db56cddde..0fdfa7b98fa 100644 Binary files a/public/images/pokeball/pb_open.png and b/public/images/pokeball/pb_open.png differ diff --git a/public/images/pokeball/pb_opening.png b/public/images/pokeball/pb_opening.png index 4f13a9b46cb..1a7136f186d 100644 Binary files a/public/images/pokeball/pb_opening.png and b/public/images/pokeball/pb_opening.png differ diff --git a/public/images/pokeball/rb.png b/public/images/pokeball/rb.png index e2e1f1b077e..5c4c616d72d 100644 Binary files a/public/images/pokeball/rb.png and b/public/images/pokeball/rb.png differ diff --git a/public/images/pokeball/rb_open.png b/public/images/pokeball/rb_open.png index 94d480b5828..3fe5f6e81c7 100644 Binary files a/public/images/pokeball/rb_open.png and b/public/images/pokeball/rb_open.png differ diff --git a/public/images/pokeball/rb_opening.png b/public/images/pokeball/rb_opening.png index 76aae3c1772..76f4989755d 100644 Binary files a/public/images/pokeball/rb_opening.png and b/public/images/pokeball/rb_opening.png differ diff --git a/public/images/pokeball/ub.png b/public/images/pokeball/ub.png index 306cb168428..92f11481dce 100644 Binary files a/public/images/pokeball/ub.png and b/public/images/pokeball/ub.png differ diff --git a/public/images/pokeball/ub_open.png b/public/images/pokeball/ub_open.png index 2ccf2ae366d..29e5ddac92f 100644 Binary files a/public/images/pokeball/ub_open.png and b/public/images/pokeball/ub_open.png differ diff --git a/public/images/pokeball/ub_opening.png b/public/images/pokeball/ub_opening.png index 6c8e7711201..0696c666d95 100644 Binary files a/public/images/pokeball/ub_opening.png and b/public/images/pokeball/ub_opening.png differ 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/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.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/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/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/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.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/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/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/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/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/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.png b/public/images/pokemon/exp/672.png index 1c261d8d51a..f112522bea2 100644 Binary files a/public/images/pokemon/exp/672.png and b/public/images/pokemon/exp/672.png 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.png b/public/images/pokemon/exp/692.png index a22655931a8..daa9db0a203 100644 Binary files a/public/images/pokemon/exp/692.png and b/public/images/pokemon/exp/692.png differ diff --git a/public/images/pokemon/exp/693.png b/public/images/pokemon/exp/693.png index 2e8f1ccd05c..28f3bd88282 100644 Binary files a/public/images/pokemon/exp/693.png and b/public/images/pokemon/exp/693.png 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/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.png b/public/images/pokemon/exp/back/672.png index ef5cf63938e..2201da3b627 100644 Binary files a/public/images/pokemon/exp/back/672.png and b/public/images/pokemon/exp/back/672.png 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.png b/public/images/pokemon/exp/back/692.png index 33059d53c05..b1d83831d2b 100644 Binary files a/public/images/pokemon/exp/back/692.png and b/public/images/pokemon/exp/back/692.png differ diff --git a/public/images/pokemon/exp/back/693.png b/public/images/pokemon/exp/back/693.png index 4772c64f8d0..1ff5db69b60 100644 Binary files a/public/images/pokemon/exp/back/693.png and b/public/images/pokemon/exp/back/693.png 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/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.png b/public/images/pokemon/exp/back/shiny/672.png index 848b2e35962..09d65dffbb2 100644 Binary files a/public/images/pokemon/exp/back/shiny/672.png and b/public/images/pokemon/exp/back/shiny/672.png differ diff --git a/public/images/pokemon/exp/back/shiny/692.png b/public/images/pokemon/exp/back/shiny/692.png index baee2adcd4f..dfad01dd446 100644 Binary files a/public/images/pokemon/exp/back/shiny/692.png and b/public/images/pokemon/exp/back/shiny/692.png differ diff --git a/public/images/pokemon/exp/back/shiny/693.png b/public/images/pokemon/exp/back/shiny/693.png index 10b639004ae..6884c2e28c7 100644 Binary files a/public/images/pokemon/exp/back/shiny/693.png and b/public/images/pokemon/exp/back/shiny/693.png 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/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.png b/public/images/pokemon/exp/shiny/672.png index 605e79f1889..55badb6b2af 100644 Binary files a/public/images/pokemon/exp/shiny/672.png and b/public/images/pokemon/exp/shiny/672.png 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.png b/public/images/pokemon/exp/shiny/692.png index d46c585bdfb..86f8cf51e92 100644 Binary files a/public/images/pokemon/exp/shiny/692.png and b/public/images/pokemon/exp/shiny/692.png differ diff --git a/public/images/pokemon/exp/shiny/693.png b/public/images/pokemon/exp/shiny/693.png index 60f40ad0c40..3b995e1493d 100644 Binary files a/public/images/pokemon/exp/shiny/693.png and b/public/images/pokemon/exp/shiny/693.png 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/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/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/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/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_3.png b/public/images/pokemon/variant/672_3.png index 02d2fe283b9..f59d36c4ff6 100644 Binary files a/public/images/pokemon/variant/672_3.png and b/public/images/pokemon/variant/672_3.png 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/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/754_2.png b/public/images/pokemon/variant/back/754_2.png index af52b9c5f44..254fd2413e1 100644 Binary files a/public/images/pokemon/variant/back/754_2.png and b/public/images/pokemon/variant/back/754_2.png differ diff --git a/public/images/pokemon/variant/back/754_3.png b/public/images/pokemon/variant/back/754_3.png index e00a2353a60..e691523edb3 100644 Binary files a/public/images/pokemon/variant/back/754_3.png and b/public/images/pokemon/variant/back/754_3.png 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/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/754_2.png b/public/images/pokemon/variant/exp/754_2.png index c1c55966656..0022093945c 100644 Binary files a/public/images/pokemon/variant/exp/754_2.png and b/public/images/pokemon/variant/exp/754_2.png differ diff --git a/public/images/pokemon/variant/exp/754_3.png b/public/images/pokemon/variant/exp/754_3.png index dca99a4eb83..5ad95aa743c 100644 Binary files a/public/images/pokemon/variant/exp/754_3.png and b/public/images/pokemon/variant/exp/754_3.png 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/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/754_2.png b/public/images/pokemon/variant/exp/back/754_2.png index 057d90eb009..85eadd7428f 100644 Binary files a/public/images/pokemon/variant/exp/back/754_2.png and b/public/images/pokemon/variant/exp/back/754_2.png differ diff --git a/public/images/pokemon/variant/exp/back/754_3.png b/public/images/pokemon/variant/exp/back/754_3.png index 3a3c01f7095..31d33eb0319 100644 Binary files a/public/images/pokemon/variant/exp/back/754_3.png and b/public/images/pokemon/variant/exp/back/754_3.png 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/pokemon_icons_0.png b/public/images/pokemon_icons_0.png index 134fe8c1bee..dd91c8358a2 100644 Binary files a/public/images/pokemon_icons_0.png and b/public/images/pokemon_icons_0.png differ diff --git a/public/images/pokemon_icons_1.png b/public/images/pokemon_icons_1.png index 4091f15165f..de7342ad141 100644 Binary files a/public/images/pokemon_icons_1.png and b/public/images/pokemon_icons_1.png differ diff --git a/public/images/pokemon_icons_1v.png b/public/images/pokemon_icons_1v.png index 025c1ab025a..8e62eef7c76 100644 Binary files a/public/images/pokemon_icons_1v.png and b/public/images/pokemon_icons_1v.png differ diff --git a/public/images/pokemon_icons_2.png b/public/images/pokemon_icons_2.png index fed696d7154..218c4345069 100644 Binary files a/public/images/pokemon_icons_2.png and b/public/images/pokemon_icons_2.png differ diff --git a/public/images/pokemon_icons_2v.png b/public/images/pokemon_icons_2v.png index fea0fb339ce..e6b0a58fe96 100644 Binary files a/public/images/pokemon_icons_2v.png and b/public/images/pokemon_icons_2v.png differ diff --git a/public/images/pokemon_icons_3.png b/public/images/pokemon_icons_3.png index a0eec0a5290..cf0c1b2c3c9 100644 Binary files a/public/images/pokemon_icons_3.png and b/public/images/pokemon_icons_3.png differ diff --git a/public/images/pokemon_icons_3v.png b/public/images/pokemon_icons_3v.png index b151e36e72c..ba4bcfdeb57 100644 Binary files a/public/images/pokemon_icons_3v.png and b/public/images/pokemon_icons_3v.png differ diff --git a/public/images/pokemon_icons_4.png b/public/images/pokemon_icons_4.png index 5b271a3930c..38bb31617f9 100644 Binary files a/public/images/pokemon_icons_4.png and b/public/images/pokemon_icons_4.png differ diff --git a/public/images/pokemon_icons_4v.png b/public/images/pokemon_icons_4v.png index 972bff8b777..0b207777830 100644 Binary files a/public/images/pokemon_icons_4v.png and b/public/images/pokemon_icons_4v.png differ diff --git a/public/images/pokemon_icons_5.png b/public/images/pokemon_icons_5.png index 12fa2e99e24..5f80eaaff67 100644 Binary files a/public/images/pokemon_icons_5.png and b/public/images/pokemon_icons_5.png differ diff --git a/public/images/pokemon_icons_5v.png b/public/images/pokemon_icons_5v.png index 881f430447e..7ca76312c2b 100644 Binary files a/public/images/pokemon_icons_5v.png and b/public/images/pokemon_icons_5v.png differ diff --git a/public/images/pokemon_icons_6.png b/public/images/pokemon_icons_6.png index 272018b672b..47a5274c3d1 100644 Binary files a/public/images/pokemon_icons_6.png and b/public/images/pokemon_icons_6.png differ diff --git a/public/images/pokemon_icons_6v.png b/public/images/pokemon_icons_6v.png index d8bd10eaa71..be2bd1621fb 100644 Binary files a/public/images/pokemon_icons_6v.png and b/public/images/pokemon_icons_6v.png differ diff --git a/public/images/pokemon_icons_7.png b/public/images/pokemon_icons_7.png index e541af01c2d..c2ffe6ad9f3 100644 Binary files a/public/images/pokemon_icons_7.png and b/public/images/pokemon_icons_7.png differ diff --git a/public/images/pokemon_icons_7v.png b/public/images/pokemon_icons_7v.png index 732e67e5219..8164a6bb37b 100644 Binary files a/public/images/pokemon_icons_7v.png and b/public/images/pokemon_icons_7v.png differ diff --git a/public/images/pokemon_icons_8.png b/public/images/pokemon_icons_8.png index 3003f3b9e0e..4bcbb68ac35 100644 Binary files a/public/images/pokemon_icons_8.png and b/public/images/pokemon_icons_8.png differ diff --git a/public/images/pokemon_icons_8v.png b/public/images/pokemon_icons_8v.png index 4017b0945d6..183a87bbad4 100644 Binary files a/public/images/pokemon_icons_8v.png and b/public/images/pokemon_icons_8v.png differ diff --git a/public/images/pokemon_icons_9.png b/public/images/pokemon_icons_9.png index 2985fb800d6..2cfc7c6272d 100644 Binary files a/public/images/pokemon_icons_9.png and b/public/images/pokemon_icons_9.png differ diff --git a/public/images/pokemon_icons_9v.png b/public/images/pokemon_icons_9v.png index 3636c3059d8..cc93a28d120 100644 Binary files a/public/images/pokemon_icons_9v.png and b/public/images/pokemon_icons_9v.png differ diff --git a/public/images/statuses.png b/public/images/statuses.png index d372b989be9..f678b9cb700 100644 Binary files a/public/images/statuses.png and b/public/images/statuses.png differ diff --git a/public/images/statuses/burn.png b/public/images/statuses/burn.png deleted file mode 100644 index e77cd88af3b..00000000000 Binary files a/public/images/statuses/burn.png and /dev/null differ diff --git a/public/images/statuses/faint.png b/public/images/statuses/faint.png deleted file mode 100644 index 12297bdab22..00000000000 Binary files a/public/images/statuses/faint.png and /dev/null differ diff --git a/public/images/statuses/freeze.png b/public/images/statuses/freeze.png deleted file mode 100644 index 5f768a5cef4..00000000000 Binary files a/public/images/statuses/freeze.png and /dev/null differ diff --git a/public/images/statuses/paralysis.png b/public/images/statuses/paralysis.png deleted file mode 100644 index ceda9071708..00000000000 Binary files a/public/images/statuses/paralysis.png and /dev/null differ diff --git a/public/images/statuses/poison.png b/public/images/statuses/poison.png deleted file mode 100644 index b9ed12adcfc..00000000000 Binary files a/public/images/statuses/poison.png and /dev/null differ diff --git a/public/images/statuses/pokerus.png b/public/images/statuses/pokerus.png deleted file mode 100644 index 2963d0081f8..00000000000 Binary files a/public/images/statuses/pokerus.png and /dev/null differ diff --git a/public/images/statuses/sleep.png b/public/images/statuses/sleep.png deleted file mode 100644 index 8a54bbab717..00000000000 Binary files a/public/images/statuses/sleep.png and /dev/null differ diff --git a/public/images/statuses/toxic.png b/public/images/statuses/toxic.png deleted file mode 100644 index c34fcb71d85..00000000000 Binary files a/public/images/statuses/toxic.png and /dev/null differ diff --git a/public/images/statuses_ca.png b/public/images/statuses_ca.png index fe05e243f7a..d6fb8fd0415 100644 Binary files a/public/images/statuses_ca.png and b/public/images/statuses_ca.png differ diff --git a/public/images/statuses_da.png b/public/images/statuses_da.png index 02780bddd98..274e960a565 100644 Binary files a/public/images/statuses_da.png and b/public/images/statuses_da.png differ diff --git a/public/images/statuses_de.png b/public/images/statuses_de.png index ab85384d591..140ba6326ca 100644 Binary files a/public/images/statuses_de.png and b/public/images/statuses_de.png differ diff --git a/public/images/statuses_es-ES.png b/public/images/statuses_es-ES.png index dc845d6fb1f..fbe87996506 100644 Binary files a/public/images/statuses_es-ES.png and b/public/images/statuses_es-ES.png differ diff --git a/public/images/statuses_es-MX.png b/public/images/statuses_es-MX.png index dc845d6fb1f..fbe87996506 100644 Binary files a/public/images/statuses_es-MX.png and b/public/images/statuses_es-MX.png differ diff --git a/public/images/statuses_fr.png b/public/images/statuses_fr.png index 95989cd5d97..611e6226a17 100644 Binary files a/public/images/statuses_fr.png and b/public/images/statuses_fr.png differ diff --git a/public/images/statuses_it.png b/public/images/statuses_it.png index af3107018f8..4ca1e908d94 100644 Binary files a/public/images/statuses_it.png and b/public/images/statuses_it.png differ diff --git a/public/images/statuses_ja.png b/public/images/statuses_ja.png index 305fbe9168c..433c54f04bd 100644 Binary files a/public/images/statuses_ja.png and b/public/images/statuses_ja.png differ diff --git a/public/images/statuses_ko.png b/public/images/statuses_ko.png index d372b989be9..a600231df7b 100644 Binary files a/public/images/statuses_ko.png and b/public/images/statuses_ko.png differ diff --git a/public/images/statuses_pt-BR.png b/public/images/statuses_pt-BR.png index 3073540e8a2..0c5124f12d8 100644 Binary files a/public/images/statuses_pt-BR.png and b/public/images/statuses_pt-BR.png differ diff --git a/public/images/statuses_ro.png b/public/images/statuses_ro.png index 537b634c520..0eb8e1fc32c 100644 Binary files a/public/images/statuses_ro.png and b/public/images/statuses_ro.png differ diff --git a/public/images/statuses_ru.png b/public/images/statuses_ru.png index 1da8b66a4f8..c579e454c0f 100644 Binary files a/public/images/statuses_ru.png and b/public/images/statuses_ru.png differ diff --git a/public/images/statuses_tr.png b/public/images/statuses_tr.png index d372b989be9..f678b9cb700 100644 Binary files a/public/images/statuses_tr.png and b/public/images/statuses_tr.png differ diff --git a/public/images/statuses_zh-CN.png b/public/images/statuses_zh-CN.png index d372b989be9..f678b9cb700 100644 Binary files a/public/images/statuses_zh-CN.png and b/public/images/statuses_zh-CN.png differ diff --git a/public/images/statuses_zh-TW.png b/public/images/statuses_zh-TW.png index d372b989be9..f678b9cb700 100644 Binary files a/public/images/statuses_zh-TW.png and b/public/images/statuses_zh-TW.png differ diff --git a/public/images/trainer/aaron.png b/public/images/trainer/aaron.png index a63f49849a6..e392942b43b 100644 Binary files a/public/images/trainer/aaron.png and b/public/images/trainer/aaron.png differ diff --git a/public/images/trainer/ace_trainer_f.png b/public/images/trainer/ace_trainer_f.png index 8774ba08044..c4bd56a4e97 100644 Binary files a/public/images/trainer/ace_trainer_f.png and b/public/images/trainer/ace_trainer_f.png differ diff --git a/public/images/trainer/ace_trainer_m.png b/public/images/trainer/ace_trainer_m.png index a7922b1b2d1..4b8524bd83c 100644 Binary files a/public/images/trainer/ace_trainer_m.png and b/public/images/trainer/ace_trainer_m.png differ diff --git a/public/images/trainer/acerola.png b/public/images/trainer/acerola.png index 3804d2986a3..49215970f25 100644 Binary files a/public/images/trainer/acerola.png and b/public/images/trainer/acerola.png differ diff --git a/public/images/trainer/aether_grunt_f.png b/public/images/trainer/aether_grunt_f.png index a5088c9e1de..30e1adea75f 100644 Binary files a/public/images/trainer/aether_grunt_f.png and b/public/images/trainer/aether_grunt_f.png differ diff --git a/public/images/trainer/aether_grunt_m.png b/public/images/trainer/aether_grunt_m.png index 1b1e092a340..c61970f4c98 100644 Binary files a/public/images/trainer/aether_grunt_m.png and b/public/images/trainer/aether_grunt_m.png differ diff --git a/public/images/trainer/agatha.png b/public/images/trainer/agatha.png index 71eed676318..d342f258577 100644 Binary files a/public/images/trainer/agatha.png and b/public/images/trainer/agatha.png differ diff --git a/public/images/trainer/alder.png b/public/images/trainer/alder.png index 552fe694929..83f4025d90c 100644 Binary files a/public/images/trainer/alder.png and b/public/images/trainer/alder.png differ diff --git a/public/images/trainer/allister.png b/public/images/trainer/allister.png index 07c20c1b275..c29781660d1 100644 Binary files a/public/images/trainer/allister.png and b/public/images/trainer/allister.png differ diff --git a/public/images/trainer/amarys.png b/public/images/trainer/amarys.png index a342c909f69..e4b43a2c82b 100644 Binary files a/public/images/trainer/amarys.png and b/public/images/trainer/amarys.png differ diff --git a/public/images/trainer/aqua_grunt_f.png b/public/images/trainer/aqua_grunt_f.png index 4db237bf9e7..61d6fd258bc 100644 Binary files a/public/images/trainer/aqua_grunt_f.png and b/public/images/trainer/aqua_grunt_f.png differ diff --git a/public/images/trainer/aqua_grunt_m.png b/public/images/trainer/aqua_grunt_m.png index 4fe230ca119..bddb6e9fa3c 100644 Binary files a/public/images/trainer/aqua_grunt_m.png and b/public/images/trainer/aqua_grunt_m.png differ diff --git a/public/images/trainer/archie.png b/public/images/trainer/archie.png index d4c003fd348..7b047322bfb 100644 Binary files a/public/images/trainer/archie.png and b/public/images/trainer/archie.png differ diff --git a/public/images/trainer/artist.png b/public/images/trainer/artist.png index 3843508aa36..99e5264d250 100644 Binary files a/public/images/trainer/artist.png and b/public/images/trainer/artist.png differ diff --git a/public/images/trainer/atticus.png b/public/images/trainer/atticus.png index 75cd70b72d8..6ed82233976 100644 Binary files a/public/images/trainer/atticus.png and b/public/images/trainer/atticus.png differ diff --git a/public/images/trainer/backers_f.png b/public/images/trainer/backers_f.png index 2d9a08ea89a..ac39e36e80b 100644 Binary files a/public/images/trainer/backers_f.png and b/public/images/trainer/backers_f.png differ diff --git a/public/images/trainer/backers_m.png b/public/images/trainer/backers_m.png index 0b5fda670ca..26d2bf9c70a 100644 Binary files a/public/images/trainer/backers_m.png and b/public/images/trainer/backers_m.png differ diff --git a/public/images/trainer/backpacker_f.png b/public/images/trainer/backpacker_f.png index 11e471a4649..89d70dca204 100644 Binary files a/public/images/trainer/backpacker_f.png and b/public/images/trainer/backpacker_f.png differ diff --git a/public/images/trainer/backpacker_m.png b/public/images/trainer/backpacker_m.png index b7397aa2555..295046b42c1 100644 Binary files a/public/images/trainer/backpacker_m.png and b/public/images/trainer/backpacker_m.png differ diff --git a/public/images/trainer/baker.png b/public/images/trainer/baker.png index 1f97fea2323..16a3079d181 100644 Binary files a/public/images/trainer/baker.png and b/public/images/trainer/baker.png differ diff --git a/public/images/trainer/bea.png b/public/images/trainer/bea.png index 844abc3df9f..1054b16f590 100644 Binary files a/public/images/trainer/bea.png and b/public/images/trainer/bea.png differ diff --git a/public/images/trainer/beauty.png b/public/images/trainer/beauty.png index 881bbead794..c3e209e30f2 100644 Binary files a/public/images/trainer/beauty.png and b/public/images/trainer/beauty.png differ diff --git a/public/images/trainer/bede.png b/public/images/trainer/bede.png index 7db54c785d9..b48920e8098 100644 Binary files a/public/images/trainer/bede.png and b/public/images/trainer/bede.png differ diff --git a/public/images/trainer/benga.png b/public/images/trainer/benga.png index a3ad1a93c8c..e9a268a105b 100644 Binary files a/public/images/trainer/benga.png and b/public/images/trainer/benga.png differ diff --git a/public/images/trainer/bertha.png b/public/images/trainer/bertha.png index 6b8f0b3e3e5..83a9f23d3fa 100644 Binary files a/public/images/trainer/bertha.png and b/public/images/trainer/bertha.png differ diff --git a/public/images/trainer/biker.png b/public/images/trainer/biker.png index 79ec6d15ec9..9b067958d8d 100644 Binary files a/public/images/trainer/biker.png and b/public/images/trainer/biker.png differ diff --git a/public/images/trainer/black_belt_f.png b/public/images/trainer/black_belt_f.png index 8567cd35cf7..b4a333c9d41 100644 Binary files a/public/images/trainer/black_belt_f.png and b/public/images/trainer/black_belt_f.png differ diff --git a/public/images/trainer/black_belt_m.png b/public/images/trainer/black_belt_m.png index c620c2d0e77..3d84251773b 100644 Binary files a/public/images/trainer/black_belt_m.png and b/public/images/trainer/black_belt_m.png differ diff --git a/public/images/trainer/blaine.png b/public/images/trainer/blaine.png index 86b1e3fef2d..389f8fc331c 100644 Binary files a/public/images/trainer/blaine.png and b/public/images/trainer/blaine.png differ diff --git a/public/images/trainer/blue.png b/public/images/trainer/blue.png index ff5c0883e13..0a1b7296d69 100644 Binary files a/public/images/trainer/blue.png and b/public/images/trainer/blue.png differ diff --git a/public/images/trainer/brassius.png b/public/images/trainer/brassius.png index 9e736d32f45..0b1c928b47a 100644 Binary files a/public/images/trainer/brassius.png and b/public/images/trainer/brassius.png differ diff --git a/public/images/trainer/brawly.png b/public/images/trainer/brawly.png index 11b2f7807ca..1a31cfa4d06 100644 Binary files a/public/images/trainer/brawly.png and b/public/images/trainer/brawly.png differ diff --git a/public/images/trainer/breeder_f.png b/public/images/trainer/breeder_f.png index 9995c61c217..2fa7ebdd36c 100644 Binary files a/public/images/trainer/breeder_f.png and b/public/images/trainer/breeder_f.png differ diff --git a/public/images/trainer/breeder_m.png b/public/images/trainer/breeder_m.png index 0ae024e3767..16588225352 100644 Binary files a/public/images/trainer/breeder_m.png and b/public/images/trainer/breeder_m.png differ diff --git a/public/images/trainer/brock.png b/public/images/trainer/brock.png index e4e06a63c55..91790be27ad 100644 Binary files a/public/images/trainer/brock.png and b/public/images/trainer/brock.png differ diff --git a/public/images/trainer/bruno.png b/public/images/trainer/bruno.png index 5dc90107ec2..10c394fbd68 100644 Binary files a/public/images/trainer/bruno.png and b/public/images/trainer/bruno.png differ diff --git a/public/images/trainer/brycen.png b/public/images/trainer/brycen.png index 7b26705b0e7..3f8e2be9100 100644 Binary files a/public/images/trainer/brycen.png and b/public/images/trainer/brycen.png differ diff --git a/public/images/trainer/buck.png b/public/images/trainer/buck.png index 2384fb42a33..fcf66000b47 100644 Binary files a/public/images/trainer/buck.png and b/public/images/trainer/buck.png differ diff --git a/public/images/trainer/bug_type_superfan.png b/public/images/trainer/bug_type_superfan.png index 0d2fd7a68ae..db622948152 100644 Binary files a/public/images/trainer/bug_type_superfan.png and b/public/images/trainer/bug_type_superfan.png differ diff --git a/public/images/trainer/bugsy.png b/public/images/trainer/bugsy.png index 59316fe6ed8..091f8a1219c 100644 Binary files a/public/images/trainer/bugsy.png and b/public/images/trainer/bugsy.png differ diff --git a/public/images/trainer/burgh.png b/public/images/trainer/burgh.png index fc41dafa7e3..24fd8f7bb31 100644 Binary files a/public/images/trainer/burgh.png and b/public/images/trainer/burgh.png differ diff --git a/public/images/trainer/byron.png b/public/images/trainer/byron.png index 0d815c94eaf..52830777c00 100644 Binary files a/public/images/trainer/byron.png and b/public/images/trainer/byron.png differ diff --git a/public/images/trainer/caitlin.png b/public/images/trainer/caitlin.png index 78ed7cc94dd..ecf96cb8a68 100644 Binary files a/public/images/trainer/caitlin.png and b/public/images/trainer/caitlin.png differ diff --git a/public/images/trainer/candice.png b/public/images/trainer/candice.png index 32539cdea8c..c0337b94a71 100644 Binary files a/public/images/trainer/candice.png and b/public/images/trainer/candice.png differ diff --git a/public/images/trainer/cheren.png b/public/images/trainer/cheren.png index cb230d910c4..f56accbb01b 100644 Binary files a/public/images/trainer/cheren.png and b/public/images/trainer/cheren.png differ diff --git a/public/images/trainer/cheryl.png b/public/images/trainer/cheryl.png index c46505f6b25..390ae7d88af 100644 Binary files a/public/images/trainer/cheryl.png and b/public/images/trainer/cheryl.png differ diff --git a/public/images/trainer/chili.png b/public/images/trainer/chili.png index f66b5aa841d..20f26201c44 100644 Binary files a/public/images/trainer/chili.png and b/public/images/trainer/chili.png differ diff --git a/public/images/trainer/chuck.png b/public/images/trainer/chuck.png index 511283ff5f5..852bc80a69c 100644 Binary files a/public/images/trainer/chuck.png and b/public/images/trainer/chuck.png differ diff --git a/public/images/trainer/cilan.png b/public/images/trainer/cilan.png index b5249c30e47..cbcf6f14b5d 100644 Binary files a/public/images/trainer/cilan.png and b/public/images/trainer/cilan.png differ diff --git a/public/images/trainer/clair.png b/public/images/trainer/clair.png index 9299c73a2f7..6e70dfab397 100644 Binary files a/public/images/trainer/clair.png and b/public/images/trainer/clair.png differ diff --git a/public/images/trainer/clay.png b/public/images/trainer/clay.png index 1aa788d7d72..a6418f382e2 100644 Binary files a/public/images/trainer/clay.png and b/public/images/trainer/clay.png differ diff --git a/public/images/trainer/clemont.png b/public/images/trainer/clemont.png index a93aa428002..8cc7e3cf8fb 100644 Binary files a/public/images/trainer/clemont.png and b/public/images/trainer/clemont.png differ diff --git a/public/images/trainer/clerk_f.png b/public/images/trainer/clerk_f.png index 7d522ed31a2..431dac64d75 100644 Binary files a/public/images/trainer/clerk_f.png and b/public/images/trainer/clerk_f.png differ diff --git a/public/images/trainer/clerk_m.png b/public/images/trainer/clerk_m.png index 69531b2a0dd..765094fea95 100644 Binary files a/public/images/trainer/clerk_m.png and b/public/images/trainer/clerk_m.png differ diff --git a/public/images/trainer/clerk_m_2.png b/public/images/trainer/clerk_m_2.png index 13f2f76c7cd..4ee3e07e810 100644 Binary files a/public/images/trainer/clerk_m_2.png and b/public/images/trainer/clerk_m_2.png differ diff --git a/public/images/trainer/colress.png b/public/images/trainer/colress.png index 49a316c95d5..f9bc0ecb01b 100644 Binary files a/public/images/trainer/colress.png and b/public/images/trainer/colress.png differ diff --git a/public/images/trainer/courtney.png b/public/images/trainer/courtney.png index 3db5151e61c..5e24995ebee 100644 Binary files a/public/images/trainer/courtney.png and b/public/images/trainer/courtney.png differ diff --git a/public/images/trainer/crasher_wake.png b/public/images/trainer/crasher_wake.png index 42bbf3a69c6..41ef2bff7c4 100644 Binary files a/public/images/trainer/crasher_wake.png and b/public/images/trainer/crasher_wake.png differ diff --git a/public/images/trainer/cress.png b/public/images/trainer/cress.png index 97448e0c561..6183dafdc4d 100644 Binary files a/public/images/trainer/cress.png and b/public/images/trainer/cress.png differ diff --git a/public/images/trainer/crispin.png b/public/images/trainer/crispin.png index 865e1ac1990..d6b21a30edc 100644 Binary files a/public/images/trainer/crispin.png and b/public/images/trainer/crispin.png differ diff --git a/public/images/trainer/cyclist_f.png b/public/images/trainer/cyclist_f.png index 8a809efb985..c1fad64a8b6 100644 Binary files a/public/images/trainer/cyclist_f.png and b/public/images/trainer/cyclist_f.png differ diff --git a/public/images/trainer/cyclist_m.png b/public/images/trainer/cyclist_m.png index 002b880babf..78015bf74a6 100644 Binary files a/public/images/trainer/cyclist_m.png and b/public/images/trainer/cyclist_m.png differ diff --git a/public/images/trainer/cynthia.png b/public/images/trainer/cynthia.png index 078c4522abd..6dbef7cc81b 100644 Binary files a/public/images/trainer/cynthia.png and b/public/images/trainer/cynthia.png differ diff --git a/public/images/trainer/cyrus.png b/public/images/trainer/cyrus.png index f7351340568..fc087b3d428 100644 Binary files a/public/images/trainer/cyrus.png and b/public/images/trainer/cyrus.png differ diff --git a/public/images/trainer/dancer.png b/public/images/trainer/dancer.png index f43feed6972..ae22fc4926d 100644 Binary files a/public/images/trainer/dancer.png and b/public/images/trainer/dancer.png differ diff --git a/public/images/trainer/depot_agent.png b/public/images/trainer/depot_agent.png index 6a7ac6326e9..41670eeb681 100644 Binary files a/public/images/trainer/depot_agent.png and b/public/images/trainer/depot_agent.png differ diff --git a/public/images/trainer/diantha.png b/public/images/trainer/diantha.png index 663eb3613ba..25ccaa08347 100644 Binary files a/public/images/trainer/diantha.png and b/public/images/trainer/diantha.png differ diff --git a/public/images/trainer/doctor_f.png b/public/images/trainer/doctor_f.png index eb9730f17fc..c386059cf6a 100644 Binary files a/public/images/trainer/doctor_f.png and b/public/images/trainer/doctor_f.png differ diff --git a/public/images/trainer/doctor_m.png b/public/images/trainer/doctor_m.png index 6fd41266ab1..03dc3c1add0 100644 Binary files a/public/images/trainer/doctor_m.png and b/public/images/trainer/doctor_m.png differ diff --git a/public/images/trainer/drake.png b/public/images/trainer/drake.png index 80d663d1149..322e9e247e5 100644 Binary files a/public/images/trainer/drake.png and b/public/images/trainer/drake.png differ diff --git a/public/images/trainer/drasna.png b/public/images/trainer/drasna.png index a6e1824f3a8..799c77c7536 100644 Binary files a/public/images/trainer/drasna.png and b/public/images/trainer/drasna.png differ diff --git a/public/images/trainer/drayden.png b/public/images/trainer/drayden.png index 76845bb7a93..97c56b4e3c1 100644 Binary files a/public/images/trainer/drayden.png and b/public/images/trainer/drayden.png differ diff --git a/public/images/trainer/drayton.png b/public/images/trainer/drayton.png index bd575b25937..e4108f87744 100644 Binary files a/public/images/trainer/drayton.png and b/public/images/trainer/drayton.png differ diff --git a/public/images/trainer/elesa.png b/public/images/trainer/elesa.png index 84c3f31b687..c0ff42ea16d 100644 Binary files a/public/images/trainer/elesa.png and b/public/images/trainer/elesa.png differ diff --git a/public/images/trainer/emmet.png b/public/images/trainer/emmet.png index 15019e1b4c7..dd18339a28d 100644 Binary files a/public/images/trainer/emmet.png and b/public/images/trainer/emmet.png differ diff --git a/public/images/trainer/eri.png b/public/images/trainer/eri.png index cb38f96b030..1ad9c948ef9 100644 Binary files a/public/images/trainer/eri.png and b/public/images/trainer/eri.png differ diff --git a/public/images/trainer/erika.png b/public/images/trainer/erika.png index f3018cde454..408da0444cd 100644 Binary files a/public/images/trainer/erika.png and b/public/images/trainer/erika.png differ diff --git a/public/images/trainer/expert_pokemon_breeder.png b/public/images/trainer/expert_pokemon_breeder.png index 0625f5255c3..0c53da6f2dc 100644 Binary files a/public/images/trainer/expert_pokemon_breeder.png and b/public/images/trainer/expert_pokemon_breeder.png differ diff --git a/public/images/trainer/faba.png b/public/images/trainer/faba.png index 1c509da8a78..c5dc107fe99 100644 Binary files a/public/images/trainer/faba.png and b/public/images/trainer/faba.png differ diff --git a/public/images/trainer/falkner.png b/public/images/trainer/falkner.png index b5ca8944620..ab628366d2c 100644 Binary files a/public/images/trainer/falkner.png and b/public/images/trainer/falkner.png differ diff --git a/public/images/trainer/fantina.png b/public/images/trainer/fantina.png index a0bea745d6e..f0f53f8e042 100644 Binary files a/public/images/trainer/fantina.png and b/public/images/trainer/fantina.png differ diff --git a/public/images/trainer/firebreather.png b/public/images/trainer/firebreather.png index 829496bd56e..daf0d2d1c1f 100644 Binary files a/public/images/trainer/firebreather.png and b/public/images/trainer/firebreather.png differ diff --git a/public/images/trainer/fisherman.png b/public/images/trainer/fisherman.png index b2656dbf360..b7344ac611a 100644 Binary files a/public/images/trainer/fisherman.png and b/public/images/trainer/fisherman.png differ diff --git a/public/images/trainer/flannery.png b/public/images/trainer/flannery.png index d909ee145fe..f538797b539 100644 Binary files a/public/images/trainer/flannery.png and b/public/images/trainer/flannery.png differ diff --git a/public/images/trainer/flare_grunt_f.png b/public/images/trainer/flare_grunt_f.png index e2a4dd7fe92..c7a3177d45f 100644 Binary files a/public/images/trainer/flare_grunt_f.png and b/public/images/trainer/flare_grunt_f.png differ diff --git a/public/images/trainer/flare_grunt_m.png b/public/images/trainer/flare_grunt_m.png index eb14dbed0e2..88dd10d10c5 100644 Binary files a/public/images/trainer/flare_grunt_m.png and b/public/images/trainer/flare_grunt_m.png differ diff --git a/public/images/trainer/flint.png b/public/images/trainer/flint.png index 46fc32c5796..d3d775da7f6 100644 Binary files a/public/images/trainer/flint.png and b/public/images/trainer/flint.png differ diff --git a/public/images/trainer/future_self_f.png b/public/images/trainer/future_self_f.png index e75c5e5e65b..9493d712ce0 100644 Binary files a/public/images/trainer/future_self_f.png and b/public/images/trainer/future_self_f.png differ diff --git a/public/images/trainer/future_self_m.png b/public/images/trainer/future_self_m.png index edd15cb6ea3..f6e7be1c38d 100644 Binary files a/public/images/trainer/future_self_m.png and b/public/images/trainer/future_self_m.png differ diff --git a/public/images/trainer/galactic_grunt_f.png b/public/images/trainer/galactic_grunt_f.png index 209d8ae09ba..27fe101d0e7 100644 Binary files a/public/images/trainer/galactic_grunt_f.png and b/public/images/trainer/galactic_grunt_f.png differ diff --git a/public/images/trainer/galactic_grunt_m.png b/public/images/trainer/galactic_grunt_m.png index 1fff818266c..5ccbc2ff194 100644 Binary files a/public/images/trainer/galactic_grunt_m.png and b/public/images/trainer/galactic_grunt_m.png differ diff --git a/public/images/trainer/gardenia.png b/public/images/trainer/gardenia.png index 3d28f2257f8..13cbdfccc47 100644 Binary files a/public/images/trainer/gardenia.png and b/public/images/trainer/gardenia.png differ diff --git a/public/images/trainer/geeta.png b/public/images/trainer/geeta.png index c14ff9deb56..2319cb21ecd 100644 Binary files a/public/images/trainer/geeta.png and b/public/images/trainer/geeta.png differ diff --git a/public/images/trainer/ghetsis.png b/public/images/trainer/ghetsis.png index e17bd7d7b95..00597b74a1e 100644 Binary files a/public/images/trainer/ghetsis.png and b/public/images/trainer/ghetsis.png differ diff --git a/public/images/trainer/giacomo.png b/public/images/trainer/giacomo.png index 352acaddf95..2a756c804b1 100644 Binary files a/public/images/trainer/giacomo.png and b/public/images/trainer/giacomo.png differ diff --git a/public/images/trainer/giovanni.png b/public/images/trainer/giovanni.png index 360f444c409..d372fcc0db5 100644 Binary files a/public/images/trainer/giovanni.png and b/public/images/trainer/giovanni.png differ diff --git a/public/images/trainer/glacia.png b/public/images/trainer/glacia.png index c73b9b69bab..3a6203096d5 100644 Binary files a/public/images/trainer/glacia.png and b/public/images/trainer/glacia.png differ diff --git a/public/images/trainer/gordie.png b/public/images/trainer/gordie.png index a91f7dacaa7..c588c956209 100644 Binary files a/public/images/trainer/gordie.png and b/public/images/trainer/gordie.png differ diff --git a/public/images/trainer/grant.png b/public/images/trainer/grant.png index 60cf5b8d493..56092076792 100644 Binary files a/public/images/trainer/grant.png and b/public/images/trainer/grant.png differ diff --git a/public/images/trainer/grimsley.png b/public/images/trainer/grimsley.png index 02b04d486d4..e8abca3adc1 100644 Binary files a/public/images/trainer/grimsley.png and b/public/images/trainer/grimsley.png differ diff --git a/public/images/trainer/grusha.png b/public/images/trainer/grusha.png index 73d6a8708b3..80963763465 100644 Binary files a/public/images/trainer/grusha.png and b/public/images/trainer/grusha.png differ diff --git a/public/images/trainer/guitarist.png b/public/images/trainer/guitarist.png index 94fdeb0fafd..7b86da2d9de 100644 Binary files a/public/images/trainer/guitarist.png and b/public/images/trainer/guitarist.png differ diff --git a/public/images/trainer/guzma.png b/public/images/trainer/guzma.png index 1ae6d8eb8d1..ffb17930b47 100644 Binary files a/public/images/trainer/guzma.png and b/public/images/trainer/guzma.png differ diff --git a/public/images/trainer/hala.png b/public/images/trainer/hala.png index 4f26cbb8ff3..d0972fb43ae 100644 Binary files a/public/images/trainer/hala.png and b/public/images/trainer/hala.png differ diff --git a/public/images/trainer/harlequin.png b/public/images/trainer/harlequin.png index e810db5c849..bed24c10510 100644 Binary files a/public/images/trainer/harlequin.png and b/public/images/trainer/harlequin.png differ diff --git a/public/images/trainer/hassel.png b/public/images/trainer/hassel.png index d78bc4dd5db..3c3d42ef8f8 100644 Binary files a/public/images/trainer/hassel.png and b/public/images/trainer/hassel.png differ diff --git a/public/images/trainer/hau.png b/public/images/trainer/hau.png index 7aa673a6fe9..4f4696779ad 100644 Binary files a/public/images/trainer/hau.png and b/public/images/trainer/hau.png differ diff --git a/public/images/trainer/hex_maniac.png b/public/images/trainer/hex_maniac.png index 7557dbf7797..5ed9deeea92 100644 Binary files a/public/images/trainer/hex_maniac.png and b/public/images/trainer/hex_maniac.png differ diff --git a/public/images/trainer/hiker.png b/public/images/trainer/hiker.png index 4d151cdf6f7..44d87b45e32 100644 Binary files a/public/images/trainer/hiker.png and b/public/images/trainer/hiker.png differ diff --git a/public/images/trainer/hooligans.png b/public/images/trainer/hooligans.png index e639e46f3ed..4a216f17a63 100644 Binary files a/public/images/trainer/hooligans.png and b/public/images/trainer/hooligans.png differ diff --git a/public/images/trainer/hoopster.png b/public/images/trainer/hoopster.png index c9ab835029c..5576224d0aa 100644 Binary files a/public/images/trainer/hoopster.png and b/public/images/trainer/hoopster.png differ diff --git a/public/images/trainer/hugh.png b/public/images/trainer/hugh.png index 638c7d350d8..8fa09efef64 100644 Binary files a/public/images/trainer/hugh.png and b/public/images/trainer/hugh.png differ diff --git a/public/images/trainer/infielder.png b/public/images/trainer/infielder.png index 0a8e22ac10c..7ad913cd0bf 100644 Binary files a/public/images/trainer/infielder.png and b/public/images/trainer/infielder.png differ diff --git a/public/images/trainer/ingo.png b/public/images/trainer/ingo.png index 638833acba6..d4e31c4c344 100644 Binary files a/public/images/trainer/ingo.png and b/public/images/trainer/ingo.png differ diff --git a/public/images/trainer/iono.png b/public/images/trainer/iono.png index e2637beba08..5e78c70dea4 100644 Binary files a/public/images/trainer/iono.png and b/public/images/trainer/iono.png differ diff --git a/public/images/trainer/iris.png b/public/images/trainer/iris.png index 943f49846b0..49526059f30 100644 Binary files a/public/images/trainer/iris.png and b/public/images/trainer/iris.png differ diff --git a/public/images/trainer/janine.png b/public/images/trainer/janine.png index 7caa31d487b..79a728d2c96 100644 Binary files a/public/images/trainer/janine.png and b/public/images/trainer/janine.png differ diff --git a/public/images/trainer/janitor.png b/public/images/trainer/janitor.png index c95f2f2e97e..0cb2f399944 100644 Binary files a/public/images/trainer/janitor.png and b/public/images/trainer/janitor.png differ diff --git a/public/images/trainer/jasmine.png b/public/images/trainer/jasmine.png index bb14acd7bcf..2fd744fe3f4 100644 Binary files a/public/images/trainer/jasmine.png and b/public/images/trainer/jasmine.png differ diff --git a/public/images/trainer/juan.png b/public/images/trainer/juan.png index fb7a376693b..add2de7bf5a 100644 Binary files a/public/images/trainer/juan.png and b/public/images/trainer/juan.png differ diff --git a/public/images/trainer/kabu.png b/public/images/trainer/kabu.png index bffcec47e1e..c6de5929d2a 100644 Binary files a/public/images/trainer/kabu.png and b/public/images/trainer/kabu.png differ diff --git a/public/images/trainer/kahili.png b/public/images/trainer/kahili.png index 94dea140f4c..c60873d31be 100644 Binary files a/public/images/trainer/kahili.png and b/public/images/trainer/kahili.png differ diff --git a/public/images/trainer/karen.png b/public/images/trainer/karen.png index 3ed1ef2d8ad..a5d90c9fc94 100644 Binary files a/public/images/trainer/karen.png and b/public/images/trainer/karen.png differ diff --git a/public/images/trainer/katy.png b/public/images/trainer/katy.png index 74da023252b..534abca0397 100644 Binary files a/public/images/trainer/katy.png and b/public/images/trainer/katy.png differ diff --git a/public/images/trainer/kieran.png b/public/images/trainer/kieran.png index c857052e2eb..9c167c4b30f 100644 Binary files a/public/images/trainer/kieran.png and b/public/images/trainer/kieran.png differ diff --git a/public/images/trainer/kofu.png b/public/images/trainer/kofu.png index ae7f364f7f6..bfbc8898ede 100644 Binary files a/public/images/trainer/kofu.png and b/public/images/trainer/kofu.png differ diff --git a/public/images/trainer/koga.png b/public/images/trainer/koga.png index f763d7eff6d..4ed714d63c0 100644 Binary files a/public/images/trainer/koga.png and b/public/images/trainer/koga.png differ diff --git a/public/images/trainer/korrina.png b/public/images/trainer/korrina.png index 8994afdddb1..db7d5102ce6 100644 Binary files a/public/images/trainer/korrina.png and b/public/images/trainer/korrina.png differ diff --git a/public/images/trainer/kukui.png b/public/images/trainer/kukui.png index aacf1c197ee..e06972b1dbb 100644 Binary files a/public/images/trainer/kukui.png and b/public/images/trainer/kukui.png differ diff --git a/public/images/trainer/lacey.png b/public/images/trainer/lacey.png index 0e71e6976c9..b62b524fa86 100644 Binary files a/public/images/trainer/lacey.png and b/public/images/trainer/lacey.png differ diff --git a/public/images/trainer/lance.png b/public/images/trainer/lance.png index 464a8da55b2..091dd5f8790 100644 Binary files a/public/images/trainer/lance.png and b/public/images/trainer/lance.png differ diff --git a/public/images/trainer/larry.png b/public/images/trainer/larry.png index 08dfa0bdc4b..486acf68078 100644 Binary files a/public/images/trainer/larry.png and b/public/images/trainer/larry.png differ diff --git a/public/images/trainer/lenora.png b/public/images/trainer/lenora.png index 11a58822296..df01b993925 100644 Binary files a/public/images/trainer/lenora.png and b/public/images/trainer/lenora.png differ diff --git a/public/images/trainer/leon.png b/public/images/trainer/leon.png index c907f0dc87c..c16132a95c3 100644 Binary files a/public/images/trainer/leon.png and b/public/images/trainer/leon.png differ diff --git a/public/images/trainer/linebacker.png b/public/images/trainer/linebacker.png index e82dd76b25c..315ca22c8f1 100644 Binary files a/public/images/trainer/linebacker.png and b/public/images/trainer/linebacker.png differ diff --git a/public/images/trainer/liza.png b/public/images/trainer/liza.png index 525607739cc..9412f90dc1f 100644 Binary files a/public/images/trainer/liza.png and b/public/images/trainer/liza.png differ diff --git a/public/images/trainer/lorelei.png b/public/images/trainer/lorelei.png index 30b6643d834..9dc7852887d 100644 Binary files a/public/images/trainer/lorelei.png and b/public/images/trainer/lorelei.png differ diff --git a/public/images/trainer/lt_surge.png b/public/images/trainer/lt_surge.png index df207e92bdd..483ba989759 100644 Binary files a/public/images/trainer/lt_surge.png and b/public/images/trainer/lt_surge.png differ diff --git a/public/images/trainer/lucian.png b/public/images/trainer/lucian.png index fabf59aad08..d10db6ea578 100644 Binary files a/public/images/trainer/lucian.png and b/public/images/trainer/lucian.png differ diff --git a/public/images/trainer/lusamine.png b/public/images/trainer/lusamine.png index 1619dc11e2d..b1b35f1fbeb 100644 Binary files a/public/images/trainer/lusamine.png and b/public/images/trainer/lusamine.png differ diff --git a/public/images/trainer/lysandre.png b/public/images/trainer/lysandre.png index fe6dafb00f8..71ee7998de2 100644 Binary files a/public/images/trainer/lysandre.png and b/public/images/trainer/lysandre.png differ diff --git a/public/images/trainer/macro_grunt_f.png b/public/images/trainer/macro_grunt_f.png index 85586126da1..0a7e20b8ab5 100644 Binary files a/public/images/trainer/macro_grunt_f.png and b/public/images/trainer/macro_grunt_f.png differ diff --git a/public/images/trainer/macro_grunt_m.png b/public/images/trainer/macro_grunt_m.png index 464c735c75d..980db918ac6 100644 Binary files a/public/images/trainer/macro_grunt_m.png and b/public/images/trainer/macro_grunt_m.png differ diff --git a/public/images/trainer/magma_grunt_f.png b/public/images/trainer/magma_grunt_f.png index 5ea582ad067..fa3d74b4049 100644 Binary files a/public/images/trainer/magma_grunt_f.png and b/public/images/trainer/magma_grunt_f.png differ diff --git a/public/images/trainer/magma_grunt_m.png b/public/images/trainer/magma_grunt_m.png index b2432a79d28..c2477104fb8 100644 Binary files a/public/images/trainer/magma_grunt_m.png and b/public/images/trainer/magma_grunt_m.png differ diff --git a/public/images/trainer/maid.png b/public/images/trainer/maid.png index 824c2f1a46c..b17a90a2358 100644 Binary files a/public/images/trainer/maid.png and b/public/images/trainer/maid.png differ diff --git a/public/images/trainer/malva.png b/public/images/trainer/malva.png index 850818e761b..cdff3f0cf58 100644 Binary files a/public/images/trainer/malva.png and b/public/images/trainer/malva.png differ diff --git a/public/images/trainer/marley.png b/public/images/trainer/marley.png index 8e78e11e8ad..2fc9ce88a76 100644 Binary files a/public/images/trainer/marley.png and b/public/images/trainer/marley.png differ diff --git a/public/images/trainer/marlon.png b/public/images/trainer/marlon.png index 657ae5eef0e..edf735d8d1e 100644 Binary files a/public/images/trainer/marlon.png and b/public/images/trainer/marlon.png differ diff --git a/public/images/trainer/marnie.png b/public/images/trainer/marnie.png index 1cbac5f67a5..65b03c2a66c 100644 Binary files a/public/images/trainer/marnie.png and b/public/images/trainer/marnie.png differ diff --git a/public/images/trainer/marshal.png b/public/images/trainer/marshal.png index b705a547a28..5bfcdb032d0 100644 Binary files a/public/images/trainer/marshal.png and b/public/images/trainer/marshal.png differ diff --git a/public/images/trainer/maxie.png b/public/images/trainer/maxie.png index 232082f869f..741c439ff97 100644 Binary files a/public/images/trainer/maxie.png and b/public/images/trainer/maxie.png differ diff --git a/public/images/trainer/maylene.png b/public/images/trainer/maylene.png index 09fbbd72982..69ab563b79c 100644 Binary files a/public/images/trainer/maylene.png and b/public/images/trainer/maylene.png differ diff --git a/public/images/trainer/mela.png b/public/images/trainer/mela.png index a98547d6380..7e2eceef1a1 100644 Binary files a/public/images/trainer/mela.png and b/public/images/trainer/mela.png differ diff --git a/public/images/trainer/melony.png b/public/images/trainer/melony.png index 01a148396da..3a58cf1c431 100644 Binary files a/public/images/trainer/melony.png and b/public/images/trainer/melony.png differ diff --git a/public/images/trainer/milo.png b/public/images/trainer/milo.png index dbc7878185e..859500024da 100644 Binary files a/public/images/trainer/milo.png and b/public/images/trainer/milo.png differ diff --git a/public/images/trainer/mira.png b/public/images/trainer/mira.png index 5c1afe5d241..4e6b08d7c87 100644 Binary files a/public/images/trainer/mira.png and b/public/images/trainer/mira.png differ diff --git a/public/images/trainer/misty.png b/public/images/trainer/misty.png index 56b9beae28c..9c90330a4c3 100644 Binary files a/public/images/trainer/misty.png and b/public/images/trainer/misty.png differ diff --git a/public/images/trainer/molayne.png b/public/images/trainer/molayne.png index c400e5be33d..89ff5dd4678 100644 Binary files a/public/images/trainer/molayne.png and b/public/images/trainer/molayne.png differ diff --git a/public/images/trainer/morty.png b/public/images/trainer/morty.png index 5aad41ca1b6..15ec18c6822 100644 Binary files a/public/images/trainer/morty.png and b/public/images/trainer/morty.png differ diff --git a/public/images/trainer/musician.png b/public/images/trainer/musician.png index 72f5ec495c2..db9373c9764 100644 Binary files a/public/images/trainer/musician.png and b/public/images/trainer/musician.png differ diff --git a/public/images/trainer/mustard.png b/public/images/trainer/mustard.png index 0acba02db45..2a58de341dd 100644 Binary files a/public/images/trainer/mustard.png and b/public/images/trainer/mustard.png differ diff --git a/public/images/trainer/nate.png b/public/images/trainer/nate.png index aebbe7a2da9..6798b80efdd 100644 Binary files a/public/images/trainer/nate.png and b/public/images/trainer/nate.png differ diff --git a/public/images/trainer/nemona.png b/public/images/trainer/nemona.png index 83a9e803df4..c30b46602d3 100644 Binary files a/public/images/trainer/nemona.png and b/public/images/trainer/nemona.png differ diff --git a/public/images/trainer/nessa.png b/public/images/trainer/nessa.png index b645ff7159a..53f4f1edf94 100644 Binary files a/public/images/trainer/nessa.png and b/public/images/trainer/nessa.png differ diff --git a/public/images/trainer/norman.png b/public/images/trainer/norman.png index 16dd4d5b2ba..39ab24236bf 100644 Binary files a/public/images/trainer/norman.png and b/public/images/trainer/norman.png differ diff --git a/public/images/trainer/nursery_aide.png b/public/images/trainer/nursery_aide.png index a0cbb549864..a49b12c0729 100644 Binary files a/public/images/trainer/nursery_aide.png and b/public/images/trainer/nursery_aide.png differ diff --git a/public/images/trainer/officer.png b/public/images/trainer/officer.png index 6a6da4cdcc0..b2b2af2f0c3 100644 Binary files a/public/images/trainer/officer.png and b/public/images/trainer/officer.png differ diff --git a/public/images/trainer/oleana.png b/public/images/trainer/oleana.png index e74fb6ab2eb..811e5a81b15 100644 Binary files a/public/images/trainer/oleana.png and b/public/images/trainer/oleana.png differ diff --git a/public/images/trainer/olivia.png b/public/images/trainer/olivia.png index 60b4336efdb..d9e47ae3ca5 100644 Binary files a/public/images/trainer/olivia.png and b/public/images/trainer/olivia.png differ diff --git a/public/images/trainer/olympia.png b/public/images/trainer/olympia.png index 5faa566d31b..a84068a7148 100644 Binary files a/public/images/trainer/olympia.png and b/public/images/trainer/olympia.png differ diff --git a/public/images/trainer/opal.png b/public/images/trainer/opal.png index 8fbf608526f..f7eb342bdf8 100644 Binary files a/public/images/trainer/opal.png and b/public/images/trainer/opal.png differ diff --git a/public/images/trainer/ortega.png b/public/images/trainer/ortega.png index cede7b6c311..8b9b6ce7409 100644 Binary files a/public/images/trainer/ortega.png and b/public/images/trainer/ortega.png differ diff --git a/public/images/trainer/parasol_lady.png b/public/images/trainer/parasol_lady.png index 8610320dca4..53855f00100 100644 Binary files a/public/images/trainer/parasol_lady.png and b/public/images/trainer/parasol_lady.png differ diff --git a/public/images/trainer/penny.png b/public/images/trainer/penny.png index 67c90a41462..1fd8dd8aa4d 100644 Binary files a/public/images/trainer/penny.png and b/public/images/trainer/penny.png differ diff --git a/public/images/trainer/phoebe.png b/public/images/trainer/phoebe.png index eb0bf9f61bb..44506d6bc66 100644 Binary files a/public/images/trainer/phoebe.png and b/public/images/trainer/phoebe.png differ diff --git a/public/images/trainer/piers.png b/public/images/trainer/piers.png index 7730a2d54ca..155b39bcb09 100644 Binary files a/public/images/trainer/piers.png and b/public/images/trainer/piers.png differ diff --git a/public/images/trainer/pilot.png b/public/images/trainer/pilot.png index 0956c048ed9..393742c4941 100644 Binary files a/public/images/trainer/pilot.png and b/public/images/trainer/pilot.png differ diff --git a/public/images/trainer/plasma_grunt_f.png b/public/images/trainer/plasma_grunt_f.png index 7fa804cc39d..c2198d815ad 100644 Binary files a/public/images/trainer/plasma_grunt_f.png and b/public/images/trainer/plasma_grunt_f.png differ diff --git a/public/images/trainer/plasma_grunt_m.png b/public/images/trainer/plasma_grunt_m.png index 801e91b1d6d..040b602e272 100644 Binary files a/public/images/trainer/plasma_grunt_m.png and b/public/images/trainer/plasma_grunt_m.png differ diff --git a/public/images/trainer/player_alt_f.png b/public/images/trainer/player_alt_f.png index b244076da83..c03b7792be1 100644 Binary files a/public/images/trainer/player_alt_f.png and b/public/images/trainer/player_alt_f.png differ diff --git a/public/images/trainer/player_alt_m.png b/public/images/trainer/player_alt_m.png index 935c7b8ba1b..659f21aa530 100644 Binary files a/public/images/trainer/player_alt_m.png and b/public/images/trainer/player_alt_m.png differ diff --git a/public/images/trainer/player_f.png b/public/images/trainer/player_f.png index f2f9169d6aa..c775fdf84ea 100644 Binary files a/public/images/trainer/player_f.png and b/public/images/trainer/player_f.png differ diff --git a/public/images/trainer/player_m.png b/public/images/trainer/player_m.png index 7dd60695fb2..96e73e271f1 100644 Binary files a/public/images/trainer/player_m.png and b/public/images/trainer/player_m.png differ diff --git a/public/images/trainer/plumeria.png b/public/images/trainer/plumeria.png index 4528c3e2053..f1903a9ca8e 100644 Binary files a/public/images/trainer/plumeria.png and b/public/images/trainer/plumeria.png differ diff --git a/public/images/trainer/pokefan_f.png b/public/images/trainer/pokefan_f.png index 9464d4ee858..4818584f15f 100644 Binary files a/public/images/trainer/pokefan_f.png and b/public/images/trainer/pokefan_f.png differ diff --git a/public/images/trainer/pokefan_m.png b/public/images/trainer/pokefan_m.png index ffba222874d..8057f5417b2 100644 Binary files a/public/images/trainer/pokefan_m.png and b/public/images/trainer/pokefan_m.png differ diff --git a/public/images/trainer/poppy.png b/public/images/trainer/poppy.png index 750043084c0..8055562ed19 100644 Binary files a/public/images/trainer/poppy.png and b/public/images/trainer/poppy.png differ diff --git a/public/images/trainer/preschooler_f.png b/public/images/trainer/preschooler_f.png index 1d265ffc97f..0668e5a22a0 100644 Binary files a/public/images/trainer/preschooler_f.png and b/public/images/trainer/preschooler_f.png differ diff --git a/public/images/trainer/preschooler_m.png b/public/images/trainer/preschooler_m.png index bfbc6d8fb53..3b2376c7ae3 100644 Binary files a/public/images/trainer/preschooler_m.png and b/public/images/trainer/preschooler_m.png differ diff --git a/public/images/trainer/pryce.png b/public/images/trainer/pryce.png index 90d884085e5..0da1d3f13f8 100644 Binary files a/public/images/trainer/pryce.png and b/public/images/trainer/pryce.png differ diff --git a/public/images/trainer/psychic_f.png b/public/images/trainer/psychic_f.png index 45978bc4ee1..f3e8ea6c795 100644 Binary files a/public/images/trainer/psychic_f.png and b/public/images/trainer/psychic_f.png differ diff --git a/public/images/trainer/psychic_m.png b/public/images/trainer/psychic_m.png index af62c9ae440..a871f261ff6 100644 Binary files a/public/images/trainer/psychic_m.png and b/public/images/trainer/psychic_m.png differ diff --git a/public/images/trainer/raihan.png b/public/images/trainer/raihan.png index a23c2b61e14..651482ff439 100644 Binary files a/public/images/trainer/raihan.png and b/public/images/trainer/raihan.png differ diff --git a/public/images/trainer/ramos.png b/public/images/trainer/ramos.png index ad47c93cbe5..76855734a90 100644 Binary files a/public/images/trainer/ramos.png and b/public/images/trainer/ramos.png differ diff --git a/public/images/trainer/ranger_f.png b/public/images/trainer/ranger_f.png index 713d793e65e..82fe5bb82fd 100644 Binary files a/public/images/trainer/ranger_f.png and b/public/images/trainer/ranger_f.png differ diff --git a/public/images/trainer/ranger_m.png b/public/images/trainer/ranger_m.png index 785502a9326..1c03cc6800d 100644 Binary files a/public/images/trainer/ranger_m.png and b/public/images/trainer/ranger_m.png differ diff --git a/public/images/trainer/red.png b/public/images/trainer/red.png index fd0da367b25..8f2573dda89 100644 Binary files a/public/images/trainer/red.png and b/public/images/trainer/red.png differ diff --git a/public/images/trainer/rich_f.png b/public/images/trainer/rich_f.png index 05b4e4c0d87..2d781ec1982 100644 Binary files a/public/images/trainer/rich_f.png and b/public/images/trainer/rich_f.png differ diff --git a/public/images/trainer/rich_kid_f.png b/public/images/trainer/rich_kid_f.png index 9985a098e03..c172f40b969 100644 Binary files a/public/images/trainer/rich_kid_f.png and b/public/images/trainer/rich_kid_f.png differ diff --git a/public/images/trainer/rich_kid_m.png b/public/images/trainer/rich_kid_m.png index 86b5428ae99..0f1ba099691 100644 Binary files a/public/images/trainer/rich_kid_m.png and b/public/images/trainer/rich_kid_m.png differ diff --git a/public/images/trainer/rich_m.png b/public/images/trainer/rich_m.png index 56f674536eb..8718fdc669e 100644 Binary files a/public/images/trainer/rich_m.png and b/public/images/trainer/rich_m.png differ diff --git a/public/images/trainer/rika.png b/public/images/trainer/rika.png index f5848fda219..e7c0bea47f0 100644 Binary files a/public/images/trainer/rika.png and b/public/images/trainer/rika.png differ diff --git a/public/images/trainer/riley.png b/public/images/trainer/riley.png index a9f0e3b53a9..8f6088a3982 100644 Binary files a/public/images/trainer/riley.png and b/public/images/trainer/riley.png differ diff --git a/public/images/trainer/rival_f.png b/public/images/trainer/rival_f.png index 2495192d1fc..9b5519ac98c 100644 Binary files a/public/images/trainer/rival_f.png and b/public/images/trainer/rival_f.png differ diff --git a/public/images/trainer/rival_m.png b/public/images/trainer/rival_m.png index 86e4bfac879..243c9ca8534 100644 Binary files a/public/images/trainer/rival_m.png and b/public/images/trainer/rival_m.png differ diff --git a/public/images/trainer/roark.png b/public/images/trainer/roark.png index 37354c5afd7..c29d629f15f 100644 Binary files a/public/images/trainer/roark.png and b/public/images/trainer/roark.png differ diff --git a/public/images/trainer/rocket_grunt_f.png b/public/images/trainer/rocket_grunt_f.png index c4f6e96dec4..b69e4c95638 100644 Binary files a/public/images/trainer/rocket_grunt_f.png and b/public/images/trainer/rocket_grunt_f.png differ diff --git a/public/images/trainer/rocket_grunt_m.png b/public/images/trainer/rocket_grunt_m.png index 027da6cacb0..0dffe2aa7b4 100644 Binary files a/public/images/trainer/rocket_grunt_m.png and b/public/images/trainer/rocket_grunt_m.png differ diff --git a/public/images/trainer/rood.png b/public/images/trainer/rood.png index b2bc88aa1c4..198f32405ec 100644 Binary files a/public/images/trainer/rood.png and b/public/images/trainer/rood.png differ diff --git a/public/images/trainer/rosa.png b/public/images/trainer/rosa.png index 87d35510dda..7cba799b0c0 100644 Binary files a/public/images/trainer/rosa.png and b/public/images/trainer/rosa.png differ diff --git a/public/images/trainer/rose.png b/public/images/trainer/rose.png index 4c448e3302b..0365f1463ce 100644 Binary files a/public/images/trainer/rose.png and b/public/images/trainer/rose.png differ diff --git a/public/images/trainer/roughneck.png b/public/images/trainer/roughneck.png index 7ddff3373a0..5dee090991b 100644 Binary files a/public/images/trainer/roughneck.png and b/public/images/trainer/roughneck.png differ diff --git a/public/images/trainer/roxanne.png b/public/images/trainer/roxanne.png index ab0b88c6491..9bf9cad24be 100644 Binary files a/public/images/trainer/roxanne.png and b/public/images/trainer/roxanne.png differ diff --git a/public/images/trainer/roxie.png b/public/images/trainer/roxie.png index f0189c961b7..356377da04a 100644 Binary files a/public/images/trainer/roxie.png and b/public/images/trainer/roxie.png differ diff --git a/public/images/trainer/ryme.png b/public/images/trainer/ryme.png index f7756e94c94..efa70c27ad1 100644 Binary files a/public/images/trainer/ryme.png and b/public/images/trainer/ryme.png differ diff --git a/public/images/trainer/sabrina.png b/public/images/trainer/sabrina.png index da3e0550023..adaf8baf826 100644 Binary files a/public/images/trainer/sabrina.png and b/public/images/trainer/sabrina.png differ diff --git a/public/images/trainer/sailor.png b/public/images/trainer/sailor.png index ec61152bce3..80668a3e8fb 100644 Binary files a/public/images/trainer/sailor.png and b/public/images/trainer/sailor.png differ diff --git a/public/images/trainer/school_kid_f.png b/public/images/trainer/school_kid_f.png index 53814a045c3..4016ab433ea 100644 Binary files a/public/images/trainer/school_kid_f.png and b/public/images/trainer/school_kid_f.png differ diff --git a/public/images/trainer/school_kid_m.png b/public/images/trainer/school_kid_m.png index 3ae8eee89ae..8c80854078e 100644 Binary files a/public/images/trainer/school_kid_m.png and b/public/images/trainer/school_kid_m.png differ diff --git a/public/images/trainer/scientist_f.png b/public/images/trainer/scientist_f.png index b8d520f3e0c..e91b73fd5ce 100644 Binary files a/public/images/trainer/scientist_f.png and b/public/images/trainer/scientist_f.png differ diff --git a/public/images/trainer/scientist_m.png b/public/images/trainer/scientist_m.png index b4d200a0e27..184638085ac 100644 Binary files a/public/images/trainer/scientist_m.png and b/public/images/trainer/scientist_m.png differ diff --git a/public/images/trainer/shauntal.png b/public/images/trainer/shauntal.png index 9b64ff966f4..3bdad41bf68 100644 Binary files a/public/images/trainer/shauntal.png and b/public/images/trainer/shauntal.png differ diff --git a/public/images/trainer/shelly.png b/public/images/trainer/shelly.png index 95e6a07310d..4be79909123 100644 Binary files a/public/images/trainer/shelly.png and b/public/images/trainer/shelly.png differ diff --git a/public/images/trainer/sidney.png b/public/images/trainer/sidney.png index 72e6db5e4af..bc6226b58d1 100644 Binary files a/public/images/trainer/sidney.png and b/public/images/trainer/sidney.png differ diff --git a/public/images/trainer/siebold.png b/public/images/trainer/siebold.png index 0ac8038f87e..521a6fc911b 100644 Binary files a/public/images/trainer/siebold.png and b/public/images/trainer/siebold.png differ diff --git a/public/images/trainer/skull_grunt_f.png b/public/images/trainer/skull_grunt_f.png index c26e8d7f882..e92cdaf26ff 100644 Binary files a/public/images/trainer/skull_grunt_f.png and b/public/images/trainer/skull_grunt_f.png differ diff --git a/public/images/trainer/skull_grunt_m.png b/public/images/trainer/skull_grunt_m.png index 8babb09ec74..e1d3fc24713 100644 Binary files a/public/images/trainer/skull_grunt_m.png and b/public/images/trainer/skull_grunt_m.png differ diff --git a/public/images/trainer/skyla.png b/public/images/trainer/skyla.png index bdf9200eef3..209a672764c 100644 Binary files a/public/images/trainer/skyla.png and b/public/images/trainer/skyla.png differ diff --git a/public/images/trainer/smasher.png b/public/images/trainer/smasher.png index 7cda7f48365..74832f72bdb 100644 Binary files a/public/images/trainer/smasher.png and b/public/images/trainer/smasher.png differ diff --git a/public/images/trainer/snow_worker.png b/public/images/trainer/snow_worker.png index 0e39505cc8d..805d6e70e56 100644 Binary files a/public/images/trainer/snow_worker.png and b/public/images/trainer/snow_worker.png differ diff --git a/public/images/trainer/snow_worker_f.png b/public/images/trainer/snow_worker_f.png index e52dbf31514..02eab1ae027 100644 Binary files a/public/images/trainer/snow_worker_f.png and b/public/images/trainer/snow_worker_f.png differ diff --git a/public/images/trainer/snow_worker_m.png b/public/images/trainer/snow_worker_m.png index 0e39505cc8d..805d6e70e56 100644 Binary files a/public/images/trainer/snow_worker_m.png and b/public/images/trainer/snow_worker_m.png differ diff --git a/public/images/trainer/star_grunt_f.png b/public/images/trainer/star_grunt_f.png index ee0c25147cc..26f865a99f8 100644 Binary files a/public/images/trainer/star_grunt_f.png and b/public/images/trainer/star_grunt_f.png differ diff --git a/public/images/trainer/star_grunt_m.png b/public/images/trainer/star_grunt_m.png index 13fd4e88510..981d8af43e9 100644 Binary files a/public/images/trainer/star_grunt_m.png and b/public/images/trainer/star_grunt_m.png differ diff --git a/public/images/trainer/steven.png b/public/images/trainer/steven.png index 969d7b3d08c..ab18f202d3a 100644 Binary files a/public/images/trainer/steven.png and b/public/images/trainer/steven.png differ diff --git a/public/images/trainer/striker.png b/public/images/trainer/striker.png index 656a14833a1..2d9f87cf214 100644 Binary files a/public/images/trainer/striker.png and b/public/images/trainer/striker.png differ diff --git a/public/images/trainer/swimmer_f.png b/public/images/trainer/swimmer_f.png index 0a37d19172b..5514e1ac949 100644 Binary files a/public/images/trainer/swimmer_f.png and b/public/images/trainer/swimmer_f.png differ diff --git a/public/images/trainer/swimmer_m.png b/public/images/trainer/swimmer_m.png index 517ed5cfc65..ae028e93fe8 100644 Binary files a/public/images/trainer/swimmer_m.png and b/public/images/trainer/swimmer_m.png differ diff --git a/public/images/trainer/tate.png b/public/images/trainer/tate.png index 1702c2c7e7e..d1f66d77409 100644 Binary files a/public/images/trainer/tate.png and b/public/images/trainer/tate.png differ diff --git a/public/images/trainer/trainer_f_back.png b/public/images/trainer/trainer_f_back.png index 8c528ad5610..67f6c71b7d8 100644 Binary files a/public/images/trainer/trainer_f_back.png and b/public/images/trainer/trainer_f_back.png differ diff --git a/public/images/trainer/trainer_f_back_pb.png b/public/images/trainer/trainer_f_back_pb.png index e1c9b6d6ca4..f0497142d04 100644 Binary files a/public/images/trainer/trainer_f_back_pb.png and b/public/images/trainer/trainer_f_back_pb.png differ diff --git a/public/images/trainer/trainer_m_back.png b/public/images/trainer/trainer_m_back.png index 9e40d634ad7..5721107641e 100644 Binary files a/public/images/trainer/trainer_m_back.png and b/public/images/trainer/trainer_m_back.png differ diff --git a/public/images/trainer/trainer_m_back_pb.png b/public/images/trainer/trainer_m_back_pb.png index 8980a4e8249..06b1833e94a 100644 Binary files a/public/images/trainer/trainer_m_back_pb.png and b/public/images/trainer/trainer_m_back_pb.png differ diff --git a/public/images/trainer/tulip.png b/public/images/trainer/tulip.png index 87c9f3fd029..ed0fa56b494 100644 Binary files a/public/images/trainer/tulip.png and b/public/images/trainer/tulip.png differ diff --git a/public/images/trainer/twins.png b/public/images/trainer/twins.png index 9114c998285..8c3e3881458 100644 Binary files a/public/images/trainer/twins.png and b/public/images/trainer/twins.png differ diff --git a/public/images/trainer/unknown_f.png b/public/images/trainer/unknown_f.png index f7fb6d789a8..88cd0bb18c7 100644 Binary files a/public/images/trainer/unknown_f.png and b/public/images/trainer/unknown_f.png differ diff --git a/public/images/trainer/unknown_m.png b/public/images/trainer/unknown_m.png index a48f97af57a..df36d351b3d 100644 Binary files a/public/images/trainer/unknown_m.png and b/public/images/trainer/unknown_m.png differ diff --git a/public/images/trainer/valerie.png b/public/images/trainer/valerie.png index dc03beceb56..d8e652cdc82 100644 Binary files a/public/images/trainer/valerie.png and b/public/images/trainer/valerie.png differ diff --git a/public/images/trainer/veteran_f.png b/public/images/trainer/veteran_f.png index d6117581ff3..e49f49cb209 100644 Binary files a/public/images/trainer/veteran_f.png and b/public/images/trainer/veteran_f.png differ diff --git a/public/images/trainer/veteran_m.png b/public/images/trainer/veteran_m.png index 1f1d864859d..d30e3b18fed 100644 Binary files a/public/images/trainer/veteran_m.png and b/public/images/trainer/veteran_m.png differ diff --git a/public/images/trainer/vicky.png b/public/images/trainer/vicky.png index 3e2d6c13696..19020b9e204 100644 Binary files a/public/images/trainer/vicky.png and b/public/images/trainer/vicky.png differ diff --git a/public/images/trainer/victor.png b/public/images/trainer/victor.png index 3ffddea24bb..e7455126957 100644 Binary files a/public/images/trainer/victor.png and b/public/images/trainer/victor.png differ diff --git a/public/images/trainer/victoria.png b/public/images/trainer/victoria.png index e2874f266ad..8ee103e6376 100644 Binary files a/public/images/trainer/victoria.png and b/public/images/trainer/victoria.png differ diff --git a/public/images/trainer/viola.png b/public/images/trainer/viola.png index 0f6f19cadff..e9484ec0bca 100644 Binary files a/public/images/trainer/viola.png and b/public/images/trainer/viola.png differ diff --git a/public/images/trainer/vito.png b/public/images/trainer/vito.png index a7c6c0444f4..88fa724fc00 100644 Binary files a/public/images/trainer/vito.png and b/public/images/trainer/vito.png differ diff --git a/public/images/trainer/vivi.png b/public/images/trainer/vivi.png index cd97e676cfb..d4652590756 100644 Binary files a/public/images/trainer/vivi.png and b/public/images/trainer/vivi.png differ diff --git a/public/images/trainer/volkner.png b/public/images/trainer/volkner.png index d791513764a..b6fac546efa 100644 Binary files a/public/images/trainer/volkner.png and b/public/images/trainer/volkner.png differ diff --git a/public/images/trainer/waiter_f.png b/public/images/trainer/waiter_f.png index 2fbe15759e2..63aaa72f61e 100644 Binary files a/public/images/trainer/waiter_f.png and b/public/images/trainer/waiter_f.png differ diff --git a/public/images/trainer/waiter_m.png b/public/images/trainer/waiter_m.png index 2c9f01e9b49..24bf074d322 100644 Binary files a/public/images/trainer/waiter_m.png and b/public/images/trainer/waiter_m.png differ diff --git a/public/images/trainer/wallace.png b/public/images/trainer/wallace.png index c52997c700b..f5c366e07d9 100644 Binary files a/public/images/trainer/wallace.png and b/public/images/trainer/wallace.png differ diff --git a/public/images/trainer/wattson.png b/public/images/trainer/wattson.png index e31db579ac1..3a115e8e702 100644 Binary files a/public/images/trainer/wattson.png and b/public/images/trainer/wattson.png differ diff --git a/public/images/trainer/whitney.png b/public/images/trainer/whitney.png index 8177f4491ec..69a87bc1105 100644 Binary files a/public/images/trainer/whitney.png and b/public/images/trainer/whitney.png differ diff --git a/public/images/trainer/wikstrom.png b/public/images/trainer/wikstrom.png index c78630a3a11..bf0f5042eb9 100644 Binary files a/public/images/trainer/wikstrom.png and b/public/images/trainer/wikstrom.png differ diff --git a/public/images/trainer/will.png b/public/images/trainer/will.png index 918fe06431a..6095b21584e 100644 Binary files a/public/images/trainer/will.png and b/public/images/trainer/will.png differ diff --git a/public/images/trainer/winona.png b/public/images/trainer/winona.png index 362941ea5fa..4fa37c83799 100644 Binary files a/public/images/trainer/winona.png and b/public/images/trainer/winona.png differ diff --git a/public/images/trainer/worker_f.png b/public/images/trainer/worker_f.png index e52dbf31514..02eab1ae027 100644 Binary files a/public/images/trainer/worker_f.png and b/public/images/trainer/worker_f.png differ diff --git a/public/images/trainer/worker_m.png b/public/images/trainer/worker_m.png index 53bfd8047cd..0142c1053c8 100644 Binary files a/public/images/trainer/worker_m.png and b/public/images/trainer/worker_m.png differ diff --git a/public/images/trainer/wulfric.png b/public/images/trainer/wulfric.png index f379afa2260..6f146d502ac 100644 Binary files a/public/images/trainer/wulfric.png and b/public/images/trainer/wulfric.png differ diff --git a/public/images/trainer/youngster_f.png b/public/images/trainer/youngster_f.png index 40b5a947be8..886b1e90963 100644 Binary files a/public/images/trainer/youngster_f.png and b/public/images/trainer/youngster_f.png differ diff --git a/public/images/trainer/youngster_m.png b/public/images/trainer/youngster_m.png index 5f092f96ef1..543536c2412 100644 Binary files a/public/images/trainer/youngster_m.png and b/public/images/trainer/youngster_m.png differ diff --git a/public/images/trainer/zinzolin.png b/public/images/trainer/zinzolin.png index 6c866562989..a376a1cdd7d 100644 Binary files a/public/images/trainer/zinzolin.png and b/public/images/trainer/zinzolin.png differ diff --git a/public/images/types.png b/public/images/types.png index 8b644f1041c..26cb6111c8e 100644 Binary files a/public/images/types.png and b/public/images/types.png differ diff --git a/public/images/types_ca.png b/public/images/types_ca.png index a1c295d7b9b..363589b6421 100644 Binary files a/public/images/types_ca.png and b/public/images/types_ca.png differ diff --git a/public/images/types_da.png b/public/images/types_da.png index f2b7af8967a..c199e078376 100644 Binary files a/public/images/types_da.png and b/public/images/types_da.png differ diff --git a/public/images/types_de.png b/public/images/types_de.png index a033554029c..0e1d77e73b2 100755 Binary files a/public/images/types_de.png and b/public/images/types_de.png differ diff --git a/public/images/types_es-ES.png b/public/images/types_es-ES.png index 3596b7f6a0a..79797df11e0 100644 Binary files a/public/images/types_es-ES.png and b/public/images/types_es-ES.png differ diff --git a/public/images/types_es-MX.png b/public/images/types_es-MX.png index ad159a7c6bb..49c99bfaf35 100644 Binary files a/public/images/types_es-MX.png and b/public/images/types_es-MX.png differ diff --git a/public/images/types_fr.png b/public/images/types_fr.png index bf81bed1b22..4ee31a0fb36 100644 Binary files a/public/images/types_fr.png and b/public/images/types_fr.png differ diff --git a/public/images/types_it.png b/public/images/types_it.png index 3be03aeea68..61079be81c0 100644 Binary files a/public/images/types_it.png and b/public/images/types_it.png differ diff --git a/public/images/types_ja.png b/public/images/types_ja.png index a6f3b00607f..072e723f9a8 100644 Binary files a/public/images/types_ja.png and b/public/images/types_ja.png differ diff --git a/public/images/types_ko.png b/public/images/types_ko.png index 53342ddd3ec..d8f7b2a7761 100644 Binary files a/public/images/types_ko.png and b/public/images/types_ko.png differ diff --git a/public/images/types_pt-BR.png b/public/images/types_pt-BR.png index 71bb1471ff2..58b6b14bcf4 100644 Binary files a/public/images/types_pt-BR.png and b/public/images/types_pt-BR.png differ diff --git a/public/images/types_ro.png b/public/images/types_ro.png index 35b09a37035..4eaadd8877b 100644 Binary files a/public/images/types_ro.png and b/public/images/types_ro.png differ diff --git a/public/images/types_ru.png b/public/images/types_ru.png index 1e0615f721f..8ce9c06f905 100644 Binary files a/public/images/types_ru.png and b/public/images/types_ru.png differ diff --git a/public/images/types_tr.png b/public/images/types_tr.png index 93eae27caa0..828aeb0b741 100644 Binary files a/public/images/types_tr.png and b/public/images/types_tr.png differ diff --git a/public/images/types_zh-CN.png b/public/images/types_zh-CN.png index e1927ad9d3b..52403ed5892 100644 Binary files a/public/images/types_zh-CN.png and b/public/images/types_zh-CN.png differ diff --git a/public/images/types_zh-TW.png b/public/images/types_zh-TW.png index 8b644f1041c..9ebc29f0d4f 100644 Binary files a/public/images/types_zh-TW.png and b/public/images/types_zh-TW.png differ diff --git a/public/images/ui/ability_bar_left.png b/public/images/ui/ability_bar_left.png index 54abe4c5a94..de15f4910d6 100644 Binary files a/public/images/ui/ability_bar_left.png and b/public/images/ui/ability_bar_left.png differ diff --git a/public/images/ui/ability_bar_right.png b/public/images/ui/ability_bar_right.png index 282025bfc74..b8ab048c6b0 100644 Binary files a/public/images/ui/ability_bar_right.png and b/public/images/ui/ability_bar_right.png differ diff --git a/public/images/ui/achv_bar.png b/public/images/ui/achv_bar.png index c2ab2c5c63e..c5ba5fd2c4c 100644 Binary files a/public/images/ui/achv_bar.png and b/public/images/ui/achv_bar.png differ diff --git a/public/images/ui/achv_bar_2.png b/public/images/ui/achv_bar_2.png index 8505760d66e..b4d9af70614 100644 Binary files a/public/images/ui/achv_bar_2.png and b/public/images/ui/achv_bar_2.png differ diff --git a/public/images/ui/achv_bar_3.png b/public/images/ui/achv_bar_3.png index 723e533f741..2a3b26ebfb6 100644 Binary files a/public/images/ui/achv_bar_3.png and b/public/images/ui/achv_bar_3.png differ diff --git a/public/images/ui/achv_bar_4.png b/public/images/ui/achv_bar_4.png index f14026c7a34..2f079bb927c 100644 Binary files a/public/images/ui/achv_bar_4.png and b/public/images/ui/achv_bar_4.png differ diff --git a/public/images/ui/achv_bar_5.png b/public/images/ui/achv_bar_5.png index cc06af91620..0f27058fc7f 100644 Binary files a/public/images/ui/achv_bar_5.png and b/public/images/ui/achv_bar_5.png differ diff --git a/public/images/ui/bg.png b/public/images/ui/bg.png index 9c35e80ff8b..0f73a067181 100644 Binary files a/public/images/ui/bg.png and b/public/images/ui/bg.png differ diff --git a/public/images/ui/bgm_bar.png b/public/images/ui/bgm_bar.png index 54abe4c5a94..de15f4910d6 100644 Binary files a/public/images/ui/bgm_bar.png and b/public/images/ui/bgm_bar.png differ diff --git a/public/images/ui/bmenu_sel.png b/public/images/ui/bmenu_sel.png index c2e28ba2035..a77939dbac3 100644 Binary files a/public/images/ui/bmenu_sel.png and b/public/images/ui/bmenu_sel.png differ diff --git a/public/images/ui/boolean_sel.png b/public/images/ui/boolean_sel.png index d5b212a3088..7f1c86fbb4d 100644 Binary files a/public/images/ui/boolean_sel.png and b/public/images/ui/boolean_sel.png differ diff --git a/public/images/ui/button_tera.png b/public/images/ui/button_tera.png index c9672bafa39..61a65ed4813 100644 Binary files a/public/images/ui/button_tera.png and b/public/images/ui/button_tera.png differ diff --git a/public/images/ui/candy.png b/public/images/ui/candy.png index 6b633a19504..a37358a3f90 100644 Binary files a/public/images/ui/candy.png and b/public/images/ui/candy.png differ diff --git a/public/images/ui/candy_overlay.png b/public/images/ui/candy_overlay.png index 835cfccb05c..e8cadeabb73 100644 Binary files a/public/images/ui/candy_overlay.png and b/public/images/ui/candy_overlay.png differ diff --git a/public/images/ui/champion_ribbon.png b/public/images/ui/champion_ribbon.png index 96e36075d8f..533c20f6821 100644 Binary files a/public/images/ui/champion_ribbon.png and b/public/images/ui/champion_ribbon.png differ diff --git a/public/images/ui/cursor.png b/public/images/ui/cursor.png index 68283fcc22d..0e2f9d98a16 100644 Binary files a/public/images/ui/cursor.png and b/public/images/ui/cursor.png differ diff --git a/public/images/ui/cursor_reverse.png b/public/images/ui/cursor_reverse.png index 40c867e62a5..6048cdcdd86 100644 Binary files a/public/images/ui/cursor_reverse.png and b/public/images/ui/cursor_reverse.png differ diff --git a/public/images/ui/cursor_tera.png b/public/images/ui/cursor_tera.png index 34cbe095895..9d2be35cfac 100644 Binary files a/public/images/ui/cursor_tera.png and b/public/images/ui/cursor_tera.png differ diff --git a/public/images/ui/dawn_icon_bg.png b/public/images/ui/dawn_icon_bg.png index 2983c2744a3..7136582a3c8 100644 Binary files a/public/images/ui/dawn_icon_bg.png and b/public/images/ui/dawn_icon_bg.png differ diff --git a/public/images/ui/dawn_icon_fg.png b/public/images/ui/dawn_icon_fg.png index e6c195bd371..c64f0578073 100644 Binary files a/public/images/ui/dawn_icon_fg.png and b/public/images/ui/dawn_icon_fg.png differ diff --git a/public/images/ui/dawn_icon_mg.png b/public/images/ui/dawn_icon_mg.png index ff32b4418aa..63786fd68fe 100644 Binary files a/public/images/ui/dawn_icon_mg.png and b/public/images/ui/dawn_icon_mg.png differ diff --git a/public/images/ui/day_icon_bg.png b/public/images/ui/day_icon_bg.png index 9028e0309f7..34b812464af 100644 Binary files a/public/images/ui/day_icon_bg.png and b/public/images/ui/day_icon_bg.png differ diff --git a/public/images/ui/day_icon_fg.png b/public/images/ui/day_icon_fg.png index 523f7b1be7e..a480e4d274d 100644 Binary files a/public/images/ui/day_icon_fg.png and b/public/images/ui/day_icon_fg.png differ diff --git a/public/images/ui/day_icon_mg.png b/public/images/ui/day_icon_mg.png index 7a236fa48d3..43b5a011098 100644 Binary files a/public/images/ui/day_icon_mg.png and b/public/images/ui/day_icon_mg.png differ diff --git a/public/images/ui/discord.png b/public/images/ui/discord.png index 1cd833854b0..fd16df3646c 100644 Binary files a/public/images/ui/discord.png and b/public/images/ui/discord.png differ diff --git a/public/images/ui/dusk_icon_bg.png b/public/images/ui/dusk_icon_bg.png index 57d22ec2b21..31d637eb674 100644 Binary files a/public/images/ui/dusk_icon_bg.png and b/public/images/ui/dusk_icon_bg.png differ diff --git a/public/images/ui/dusk_icon_fg.png b/public/images/ui/dusk_icon_fg.png index e0ca1bce79b..b19cf6ae1f8 100644 Binary files a/public/images/ui/dusk_icon_fg.png and b/public/images/ui/dusk_icon_fg.png differ diff --git a/public/images/ui/dusk_icon_mg.png b/public/images/ui/dusk_icon_mg.png index 4e6a880b37f..298b9de6ff7 100644 Binary files a/public/images/ui/dusk_icon_mg.png and b/public/images/ui/dusk_icon_mg.png differ diff --git a/public/images/ui/egg_list_bg.png b/public/images/ui/egg_list_bg.png index 4ec09441866..3dd8ac7386a 100644 Binary files a/public/images/ui/egg_list_bg.png and b/public/images/ui/egg_list_bg.png differ diff --git a/public/images/ui/egg_summary_bg.png b/public/images/ui/egg_summary_bg.png index e81934b9d75..ed602d77bb6 100644 Binary files a/public/images/ui/egg_summary_bg.png and b/public/images/ui/egg_summary_bg.png differ diff --git a/public/images/ui/egg_summary_bg_blank.png b/public/images/ui/egg_summary_bg_blank.png index 09bcb63cfa3..77aed2cadc6 100644 Binary files a/public/images/ui/egg_summary_bg_blank.png and b/public/images/ui/egg_summary_bg_blank.png differ diff --git a/public/images/ui/favorite.png b/public/images/ui/favorite.png index d86dd58f5ab..3c0ea483b65 100644 Binary files a/public/images/ui/favorite.png and b/public/images/ui/favorite.png differ diff --git a/public/images/ui/friendship.png b/public/images/ui/friendship.png index 073adcadc76..16a50f93c79 100644 Binary files a/public/images/ui/friendship.png and b/public/images/ui/friendship.png differ diff --git a/public/images/ui/friendship_overlay.png b/public/images/ui/friendship_overlay.png index 4a4724fbdc9..b6957ded371 100644 Binary files a/public/images/ui/friendship_overlay.png and b/public/images/ui/friendship_overlay.png differ diff --git a/public/images/ui/google.png b/public/images/ui/google.png index 82760552886..3f5389086db 100644 Binary files a/public/images/ui/google.png and b/public/images/ui/google.png differ diff --git a/public/images/ui/ha_capsule.png b/public/images/ui/ha_capsule.png index cccc9cf51d3..a5b2a1e9d42 100644 Binary files a/public/images/ui/ha_capsule.png and b/public/images/ui/ha_capsule.png differ diff --git a/public/images/ui/hall_of_fame_blue.png b/public/images/ui/hall_of_fame_blue.png index 87fadf565fd..2b799070cb1 100644 Binary files a/public/images/ui/hall_of_fame_blue.png and b/public/images/ui/hall_of_fame_blue.png differ diff --git a/public/images/ui/hall_of_fame_red.png b/public/images/ui/hall_of_fame_red.png index 5d4d5e41e9c..df999ae631f 100644 Binary files a/public/images/ui/hall_of_fame_red.png and b/public/images/ui/hall_of_fame_red.png differ diff --git a/public/images/ui/icon_egg_move.png b/public/images/ui/icon_egg_move.png index a5b0bff4ace..3b79a6682d0 100644 Binary files a/public/images/ui/icon_egg_move.png and b/public/images/ui/icon_egg_move.png differ diff --git a/public/images/ui/icon_lock.png b/public/images/ui/icon_lock.png index 6a12efa15e8..6a09f41f182 100644 Binary files a/public/images/ui/icon_lock.png and b/public/images/ui/icon_lock.png differ diff --git a/public/images/ui/icon_owned.png b/public/images/ui/icon_owned.png index 37e2dfd08e6..f4592f33d0f 100644 Binary files a/public/images/ui/icon_owned.png and b/public/images/ui/icon_owned.png differ diff --git a/public/images/ui/icon_spliced.png b/public/images/ui/icon_spliced.png index 1db0d1136ba..edd3049a5c7 100644 Binary files a/public/images/ui/icon_spliced.png and b/public/images/ui/icon_spliced.png differ diff --git a/public/images/ui/icon_stop.png b/public/images/ui/icon_stop.png index 6d9c201695a..ff248e38c8e 100644 Binary files a/public/images/ui/icon_stop.png and b/public/images/ui/icon_stop.png differ diff --git a/public/images/ui/icon_tera.png b/public/images/ui/icon_tera.png index 97673434315..9d2be35cfac 100644 Binary files a/public/images/ui/icon_tera.png and b/public/images/ui/icon_tera.png differ diff --git a/public/images/ui/legacy/ability_bar_left.png b/public/images/ui/legacy/ability_bar_left.png index 7491a9ca527..18a3726eb28 100644 Binary files a/public/images/ui/legacy/ability_bar_left.png and b/public/images/ui/legacy/ability_bar_left.png differ diff --git a/public/images/ui/legacy/ability_bar_right.png b/public/images/ui/legacy/ability_bar_right.png index 3dcb845b3c9..8b5954d5624 100644 Binary files a/public/images/ui/legacy/ability_bar_right.png and b/public/images/ui/legacy/ability_bar_right.png differ diff --git a/public/images/ui/legacy/achv_bar.png b/public/images/ui/legacy/achv_bar.png index 442b43343cc..7e5f5d5f8c7 100644 Binary files a/public/images/ui/legacy/achv_bar.png and b/public/images/ui/legacy/achv_bar.png differ diff --git a/public/images/ui/legacy/achv_bar_2.png b/public/images/ui/legacy/achv_bar_2.png index 23ffca0a7d9..87d19379f01 100644 Binary files a/public/images/ui/legacy/achv_bar_2.png and b/public/images/ui/legacy/achv_bar_2.png differ diff --git a/public/images/ui/legacy/achv_bar_3.png b/public/images/ui/legacy/achv_bar_3.png index e2697234ecd..874e2384b1a 100644 Binary files a/public/images/ui/legacy/achv_bar_3.png and b/public/images/ui/legacy/achv_bar_3.png differ diff --git a/public/images/ui/legacy/achv_bar_4.png b/public/images/ui/legacy/achv_bar_4.png index d52fbfd055e..c0032288a00 100644 Binary files a/public/images/ui/legacy/achv_bar_4.png and b/public/images/ui/legacy/achv_bar_4.png differ diff --git a/public/images/ui/legacy/achv_bar_5.png b/public/images/ui/legacy/achv_bar_5.png index dae7a30dec0..ea6830b53ef 100644 Binary files a/public/images/ui/legacy/achv_bar_5.png and b/public/images/ui/legacy/achv_bar_5.png differ diff --git a/public/images/ui/legacy/bg.png b/public/images/ui/legacy/bg.png index 0b1ec4fac1a..d5b3f127ad8 100644 Binary files a/public/images/ui/legacy/bg.png and b/public/images/ui/legacy/bg.png differ diff --git a/public/images/ui/legacy/bgm_bar.png b/public/images/ui/legacy/bgm_bar.png index fedeb323fc2..bdcbf4cceee 100644 Binary files a/public/images/ui/legacy/bgm_bar.png and b/public/images/ui/legacy/bgm_bar.png differ diff --git a/public/images/ui/legacy/bmenu_sel.png b/public/images/ui/legacy/bmenu_sel.png index fe54fa918cf..8058a569e7d 100644 Binary files a/public/images/ui/legacy/bmenu_sel.png and b/public/images/ui/legacy/bmenu_sel.png differ diff --git a/public/images/ui/legacy/boolean_sel.png b/public/images/ui/legacy/boolean_sel.png index bd832fa1289..5ae1bba4bb2 100644 Binary files a/public/images/ui/legacy/boolean_sel.png and b/public/images/ui/legacy/boolean_sel.png differ diff --git a/public/images/ui/legacy/button_tera.png b/public/images/ui/legacy/button_tera.png index c9672bafa39..61a65ed4813 100644 Binary files a/public/images/ui/legacy/button_tera.png and b/public/images/ui/legacy/button_tera.png differ diff --git a/public/images/ui/legacy/candy.png b/public/images/ui/legacy/candy.png index 6b633a19504..a37358a3f90 100644 Binary files a/public/images/ui/legacy/candy.png and b/public/images/ui/legacy/candy.png differ diff --git a/public/images/ui/legacy/candy_overlay.png b/public/images/ui/legacy/candy_overlay.png index 835cfccb05c..e8cadeabb73 100644 Binary files a/public/images/ui/legacy/candy_overlay.png and b/public/images/ui/legacy/candy_overlay.png differ diff --git a/public/images/ui/legacy/champion_ribbon.png b/public/images/ui/legacy/champion_ribbon.png index 96e36075d8f..533c20f6821 100644 Binary files a/public/images/ui/legacy/champion_ribbon.png and b/public/images/ui/legacy/champion_ribbon.png differ diff --git a/public/images/ui/legacy/cursor.png b/public/images/ui/legacy/cursor.png index 39d7b7977ee..deadae321e3 100644 Binary files a/public/images/ui/legacy/cursor.png and b/public/images/ui/legacy/cursor.png differ diff --git a/public/images/ui/legacy/cursor_reverse.png b/public/images/ui/legacy/cursor_reverse.png index 57fb297747e..a13304f0956 100644 Binary files a/public/images/ui/legacy/cursor_reverse.png and b/public/images/ui/legacy/cursor_reverse.png differ diff --git a/public/images/ui/legacy/cursor_tera.png b/public/images/ui/legacy/cursor_tera.png index f2e77046137..cccdb7c68b1 100644 Binary files a/public/images/ui/legacy/cursor_tera.png and b/public/images/ui/legacy/cursor_tera.png differ diff --git a/public/images/ui/legacy/dawn_icon_bg.png b/public/images/ui/legacy/dawn_icon_bg.png index 87c4d75cd94..6521aa78765 100644 Binary files a/public/images/ui/legacy/dawn_icon_bg.png and b/public/images/ui/legacy/dawn_icon_bg.png differ diff --git a/public/images/ui/legacy/dawn_icon_fg.png b/public/images/ui/legacy/dawn_icon_fg.png index db985f953d3..1b82ad2dfcf 100644 Binary files a/public/images/ui/legacy/dawn_icon_fg.png and b/public/images/ui/legacy/dawn_icon_fg.png differ diff --git a/public/images/ui/legacy/dawn_icon_mg.png b/public/images/ui/legacy/dawn_icon_mg.png index 442cb1b674c..c259ea4e068 100644 Binary files a/public/images/ui/legacy/dawn_icon_mg.png and b/public/images/ui/legacy/dawn_icon_mg.png differ diff --git a/public/images/ui/legacy/day_icon_bg.png b/public/images/ui/legacy/day_icon_bg.png index 3db0dab4589..9c79cabfe26 100644 Binary files a/public/images/ui/legacy/day_icon_bg.png and b/public/images/ui/legacy/day_icon_bg.png differ diff --git a/public/images/ui/legacy/day_icon_fg.png b/public/images/ui/legacy/day_icon_fg.png index 657c82e5dbd..79872f95202 100644 Binary files a/public/images/ui/legacy/day_icon_fg.png and b/public/images/ui/legacy/day_icon_fg.png differ diff --git a/public/images/ui/legacy/day_icon_mg.png b/public/images/ui/legacy/day_icon_mg.png index 90fce4a761c..132d23bd8a3 100644 Binary files a/public/images/ui/legacy/day_icon_mg.png and b/public/images/ui/legacy/day_icon_mg.png differ diff --git a/public/images/ui/legacy/discord.png b/public/images/ui/legacy/discord.png index eac801cdd9d..1bb254b1594 100644 Binary files a/public/images/ui/legacy/discord.png and b/public/images/ui/legacy/discord.png differ diff --git a/public/images/ui/legacy/dusk_icon_bg.png b/public/images/ui/legacy/dusk_icon_bg.png index 7610a2e67f8..d5e29169fa8 100644 Binary files a/public/images/ui/legacy/dusk_icon_bg.png and b/public/images/ui/legacy/dusk_icon_bg.png differ diff --git a/public/images/ui/legacy/dusk_icon_fg.png b/public/images/ui/legacy/dusk_icon_fg.png index d4bbb98fdd1..f8adaf11a83 100644 Binary files a/public/images/ui/legacy/dusk_icon_fg.png and b/public/images/ui/legacy/dusk_icon_fg.png differ diff --git a/public/images/ui/legacy/dusk_icon_mg.png b/public/images/ui/legacy/dusk_icon_mg.png index dc603f8ca79..b889cab0e4f 100644 Binary files a/public/images/ui/legacy/dusk_icon_mg.png and b/public/images/ui/legacy/dusk_icon_mg.png differ diff --git a/public/images/ui/legacy/egg_list_bg.png b/public/images/ui/legacy/egg_list_bg.png index 932d01d335f..2d08756679e 100644 Binary files a/public/images/ui/legacy/egg_list_bg.png and b/public/images/ui/legacy/egg_list_bg.png differ diff --git a/public/images/ui/legacy/egg_summary_bg.png b/public/images/ui/legacy/egg_summary_bg.png index 658f5df0e96..8affc928028 100644 Binary files a/public/images/ui/legacy/egg_summary_bg.png and b/public/images/ui/legacy/egg_summary_bg.png differ diff --git a/public/images/ui/legacy/favorite.png b/public/images/ui/legacy/favorite.png index d86dd58f5ab..3c0ea483b65 100644 Binary files a/public/images/ui/legacy/favorite.png and b/public/images/ui/legacy/favorite.png differ diff --git a/public/images/ui/legacy/friendship.png b/public/images/ui/legacy/friendship.png index 073adcadc76..16a50f93c79 100644 Binary files a/public/images/ui/legacy/friendship.png and b/public/images/ui/legacy/friendship.png differ diff --git a/public/images/ui/legacy/friendship_overlay.png b/public/images/ui/legacy/friendship_overlay.png index 4a4724fbdc9..b6957ded371 100644 Binary files a/public/images/ui/legacy/friendship_overlay.png and b/public/images/ui/legacy/friendship_overlay.png differ diff --git a/public/images/ui/legacy/google.png b/public/images/ui/legacy/google.png index 82760552886..3f5389086db 100644 Binary files a/public/images/ui/legacy/google.png and b/public/images/ui/legacy/google.png differ diff --git a/public/images/ui/legacy/ha_capsule.png b/public/images/ui/legacy/ha_capsule.png index cccc9cf51d3..a5b2a1e9d42 100644 Binary files a/public/images/ui/legacy/ha_capsule.png and b/public/images/ui/legacy/ha_capsule.png differ diff --git a/public/images/ui/legacy/hall_of_fame_blue.png b/public/images/ui/legacy/hall_of_fame_blue.png index 87fadf565fd..2b799070cb1 100644 Binary files a/public/images/ui/legacy/hall_of_fame_blue.png and b/public/images/ui/legacy/hall_of_fame_blue.png differ diff --git a/public/images/ui/legacy/hall_of_fame_red.png b/public/images/ui/legacy/hall_of_fame_red.png index 5d4d5e41e9c..df999ae631f 100644 Binary files a/public/images/ui/legacy/hall_of_fame_red.png and b/public/images/ui/legacy/hall_of_fame_red.png differ diff --git a/public/images/ui/legacy/icon_egg_move.png b/public/images/ui/legacy/icon_egg_move.png index a5b0bff4ace..3b79a6682d0 100644 Binary files a/public/images/ui/legacy/icon_egg_move.png and b/public/images/ui/legacy/icon_egg_move.png differ diff --git a/public/images/ui/legacy/icon_lock.png b/public/images/ui/legacy/icon_lock.png index 6a12efa15e8..6a09f41f182 100644 Binary files a/public/images/ui/legacy/icon_lock.png and b/public/images/ui/legacy/icon_lock.png differ diff --git a/public/images/ui/legacy/icon_owned.png b/public/images/ui/legacy/icon_owned.png index 21e03afec60..6fe9dacd3e7 100644 Binary files a/public/images/ui/legacy/icon_owned.png and b/public/images/ui/legacy/icon_owned.png differ diff --git a/public/images/ui/legacy/icon_spliced.png b/public/images/ui/legacy/icon_spliced.png index 1db0d1136ba..edd3049a5c7 100644 Binary files a/public/images/ui/legacy/icon_spliced.png and b/public/images/ui/legacy/icon_spliced.png differ diff --git a/public/images/ui/legacy/icon_stop.png b/public/images/ui/legacy/icon_stop.png index 6d9c201695a..ff248e38c8e 100644 Binary files a/public/images/ui/legacy/icon_stop.png and b/public/images/ui/legacy/icon_stop.png differ diff --git a/public/images/ui/legacy/icon_tera.png b/public/images/ui/legacy/icon_tera.png index d178ca8fcb9..90d30ee9db6 100644 Binary files a/public/images/ui/legacy/icon_tera.png and b/public/images/ui/legacy/icon_tera.png differ diff --git a/public/images/ui/legacy/link_icon.png b/public/images/ui/legacy/link_icon.png index 56081261b9c..1e20ab56ec7 100644 Binary files a/public/images/ui/legacy/link_icon.png and b/public/images/ui/legacy/link_icon.png differ diff --git a/public/images/ui/legacy/mmenu_sel.png b/public/images/ui/legacy/mmenu_sel.png index 26952f7ece9..64b388876da 100644 Binary files a/public/images/ui/legacy/mmenu_sel.png and b/public/images/ui/legacy/mmenu_sel.png differ diff --git a/public/images/ui/legacy/mystery_egg.png b/public/images/ui/legacy/mystery_egg.png index bb117a137b0..83ad626da7e 100644 Binary files a/public/images/ui/legacy/mystery_egg.png and b/public/images/ui/legacy/mystery_egg.png differ diff --git a/public/images/ui/legacy/namebox.png b/public/images/ui/legacy/namebox.png index 25659f9dd40..5eea1504d77 100644 Binary files a/public/images/ui/legacy/namebox.png and b/public/images/ui/legacy/namebox.png differ diff --git a/public/images/ui/legacy/night_icon_bg.png b/public/images/ui/legacy/night_icon_bg.png index c32ee1ebd2a..ea2febb3cc1 100644 Binary files a/public/images/ui/legacy/night_icon_bg.png and b/public/images/ui/legacy/night_icon_bg.png differ diff --git a/public/images/ui/legacy/night_icon_fg.png b/public/images/ui/legacy/night_icon_fg.png index 737cca3305e..d8eceed3e37 100644 Binary files a/public/images/ui/legacy/night_icon_fg.png and b/public/images/ui/legacy/night_icon_fg.png differ diff --git a/public/images/ui/legacy/normal_memory.png b/public/images/ui/legacy/normal_memory.png index ddc22d1d4ab..604371dcc7c 100644 Binary files a/public/images/ui/legacy/normal_memory.png and b/public/images/ui/legacy/normal_memory.png differ diff --git a/public/images/ui/legacy/numbers.png b/public/images/ui/legacy/numbers.png index ba48453fa60..6157774d58e 100644 Binary files a/public/images/ui/legacy/numbers.png and b/public/images/ui/legacy/numbers.png differ diff --git a/public/images/ui/legacy/numbers_alt.png b/public/images/ui/legacy/numbers_alt.png index 1512ef435d0..fb510465471 100644 Binary files a/public/images/ui/legacy/numbers_alt.png and b/public/images/ui/legacy/numbers_alt.png differ diff --git a/public/images/ui/legacy/numbers_red.png b/public/images/ui/legacy/numbers_red.png index acafb20c98a..f0d885d304d 100644 Binary files a/public/images/ui/legacy/numbers_red.png and b/public/images/ui/legacy/numbers_red.png differ diff --git a/public/images/ui/legacy/numbers_red_alt.png b/public/images/ui/legacy/numbers_red_alt.png index 90b6f109289..d9edb0468d8 100644 Binary files a/public/images/ui/legacy/numbers_red_alt.png and b/public/images/ui/legacy/numbers_red_alt.png differ diff --git a/public/images/ui/legacy/overlay_exp.png b/public/images/ui/legacy/overlay_exp.png index 51166cd9e62..85d0cad7bfb 100644 Binary files a/public/images/ui/legacy/overlay_exp.png and b/public/images/ui/legacy/overlay_exp.png differ diff --git a/public/images/ui/legacy/overlay_hp.png b/public/images/ui/legacy/overlay_hp.png index 9855c6106f4..75607c199f5 100644 Binary files a/public/images/ui/legacy/overlay_hp.png and b/public/images/ui/legacy/overlay_hp.png differ diff --git a/public/images/ui/legacy/overlay_hp_boss.png b/public/images/ui/legacy/overlay_hp_boss.png index d7dc3b74e0f..8bfb4524007 100644 Binary files a/public/images/ui/legacy/overlay_hp_boss.png and b/public/images/ui/legacy/overlay_hp_boss.png differ diff --git a/public/images/ui/legacy/overlay_lv.png b/public/images/ui/legacy/overlay_lv.png index d79614f41eb..fdcbb1c7082 100644 Binary files a/public/images/ui/legacy/overlay_lv.png and b/public/images/ui/legacy/overlay_lv.png differ diff --git a/public/images/ui/legacy/overlay_lv_alt.png b/public/images/ui/legacy/overlay_lv_alt.png index 75b90a2ee4c..f7a76955e7b 100644 Binary files a/public/images/ui/legacy/overlay_lv_alt.png and b/public/images/ui/legacy/overlay_lv_alt.png differ diff --git a/public/images/ui/legacy/overlay_message.png b/public/images/ui/legacy/overlay_message.png index 9e58d86fc8b..769b2ae8144 100644 Binary files a/public/images/ui/legacy/overlay_message.png and b/public/images/ui/legacy/overlay_message.png differ diff --git a/public/images/ui/legacy/party_bg.png b/public/images/ui/legacy/party_bg.png index 323de1856c8..cdade735b4a 100644 Binary files a/public/images/ui/legacy/party_bg.png and b/public/images/ui/legacy/party_bg.png differ diff --git a/public/images/ui/legacy/party_bg_double.png b/public/images/ui/legacy/party_bg_double.png index 89beff1edf0..8e00bd6c293 100644 Binary files a/public/images/ui/legacy/party_bg_double.png and b/public/images/ui/legacy/party_bg_double.png differ diff --git a/public/images/ui/legacy/party_cancel.png b/public/images/ui/legacy/party_cancel.png index 4219c8d33c4..9836b9ced2d 100644 Binary files a/public/images/ui/legacy/party_cancel.png and b/public/images/ui/legacy/party_cancel.png differ diff --git a/public/images/ui/legacy/party_exp_bar.png b/public/images/ui/legacy/party_exp_bar.png index 0a514b43393..61757a97c2d 100644 Binary files a/public/images/ui/legacy/party_exp_bar.png and b/public/images/ui/legacy/party_exp_bar.png differ diff --git a/public/images/ui/legacy/party_pb.png b/public/images/ui/legacy/party_pb.png index a1e5f7a9bf7..cd8b9726155 100644 Binary files a/public/images/ui/legacy/party_pb.png and b/public/images/ui/legacy/party_pb.png differ diff --git a/public/images/ui/legacy/party_slot.png b/public/images/ui/legacy/party_slot.png index c7a2eb5c082..162f321ece5 100644 Binary files a/public/images/ui/legacy/party_slot.png and b/public/images/ui/legacy/party_slot.png differ diff --git a/public/images/ui/legacy/party_slot_hp_bar.png b/public/images/ui/legacy/party_slot_hp_bar.png index 13ac7436cc7..6a37002744c 100644 Binary files a/public/images/ui/legacy/party_slot_hp_bar.png and b/public/images/ui/legacy/party_slot_hp_bar.png differ diff --git a/public/images/ui/legacy/party_slot_hp_overlay.png b/public/images/ui/legacy/party_slot_hp_overlay.png index 360a3cd17fa..859adab148c 100644 Binary files a/public/images/ui/legacy/party_slot_hp_overlay.png and b/public/images/ui/legacy/party_slot_hp_overlay.png differ diff --git a/public/images/ui/legacy/party_slot_main.png b/public/images/ui/legacy/party_slot_main.png index 06eb9b03a7d..cb4af766597 100644 Binary files a/public/images/ui/legacy/party_slot_main.png and b/public/images/ui/legacy/party_slot_main.png differ diff --git a/public/images/ui/legacy/party_slot_overlay_hp.png b/public/images/ui/legacy/party_slot_overlay_hp.png index 8c15c63f31a..2eebb557cce 100644 Binary files a/public/images/ui/legacy/party_slot_overlay_hp.png and b/public/images/ui/legacy/party_slot_overlay_hp.png differ diff --git a/public/images/ui/legacy/party_slot_overlay_lv.png b/public/images/ui/legacy/party_slot_overlay_lv.png index 57d901a7d3d..11bb545c7af 100644 Binary files a/public/images/ui/legacy/party_slot_overlay_lv.png and b/public/images/ui/legacy/party_slot_overlay_lv.png differ diff --git a/public/images/ui/legacy/party_slot_overlay_lv_alt.png b/public/images/ui/legacy/party_slot_overlay_lv_alt.png index a52b9c2fa60..387dfec6b22 100644 Binary files a/public/images/ui/legacy/party_slot_overlay_lv_alt.png and b/public/images/ui/legacy/party_slot_overlay_lv_alt.png differ diff --git a/public/images/ui/legacy/passive_bg.png b/public/images/ui/legacy/passive_bg.png index 1e18a47b881..4a3fa1ec72b 100644 Binary files a/public/images/ui/legacy/passive_bg.png and b/public/images/ui/legacy/passive_bg.png differ diff --git a/public/images/ui/legacy/pb_tray_ball.png b/public/images/ui/legacy/pb_tray_ball.png index 112184f8593..671db0c0b15 100644 Binary files a/public/images/ui/legacy/pb_tray_ball.png and b/public/images/ui/legacy/pb_tray_ball.png differ diff --git a/public/images/ui/legacy/pb_tray_overlay_enemy.png b/public/images/ui/legacy/pb_tray_overlay_enemy.png index c557ac736fc..86ac85f946f 100644 Binary files a/public/images/ui/legacy/pb_tray_overlay_enemy.png and b/public/images/ui/legacy/pb_tray_overlay_enemy.png differ diff --git a/public/images/ui/legacy/pb_tray_overlay_player.png b/public/images/ui/legacy/pb_tray_overlay_player.png index 4a065de5d7d..de0b01502c0 100644 Binary files a/public/images/ui/legacy/pb_tray_overlay_player.png and b/public/images/ui/legacy/pb_tray_overlay_player.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_boss.png b/public/images/ui/legacy/pbinfo_enemy_boss.png index cffefd32396..98b2f09f941 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_boss.png and b/public/images/ui/legacy/pbinfo_enemy_boss.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_boss_stats.png b/public/images/ui/legacy/pbinfo_enemy_boss_stats.png index faca8887ff5..bf4b3d61d12 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_boss_stats.png and b/public/images/ui/legacy/pbinfo_enemy_boss_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_mini.png b/public/images/ui/legacy/pbinfo_enemy_mini.png index 908ea10606f..c1c002a4b21 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_mini.png and b/public/images/ui/legacy/pbinfo_enemy_mini.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_mini_stats.png b/public/images/ui/legacy/pbinfo_enemy_mini_stats.png index eb32e694134..e6eaaa3be9e 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_mini_stats.png and b/public/images/ui/legacy/pbinfo_enemy_mini_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_type.png b/public/images/ui/legacy/pbinfo_enemy_type.png index d89e360af86..27cb481e861 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_type.png and b/public/images/ui/legacy/pbinfo_enemy_type.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_type1.png b/public/images/ui/legacy/pbinfo_enemy_type1.png index f882e56ac88..df44b5bad5d 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_type1.png and b/public/images/ui/legacy/pbinfo_enemy_type1.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_type2.png b/public/images/ui/legacy/pbinfo_enemy_type2.png index f882e56ac88..df44b5bad5d 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_type2.png and b/public/images/ui/legacy/pbinfo_enemy_type2.png differ diff --git a/public/images/ui/legacy/pbinfo_player.png b/public/images/ui/legacy/pbinfo_player.png index 825a9eafec2..60c92f886aa 100644 Binary files a/public/images/ui/legacy/pbinfo_player.png and b/public/images/ui/legacy/pbinfo_player.png differ diff --git a/public/images/ui/legacy/pbinfo_player_mini.png b/public/images/ui/legacy/pbinfo_player_mini.png index 1ccaf4efd65..120e9592ab9 100644 Binary files a/public/images/ui/legacy/pbinfo_player_mini.png and b/public/images/ui/legacy/pbinfo_player_mini.png differ diff --git a/public/images/ui/legacy/pbinfo_player_mini_stats.png b/public/images/ui/legacy/pbinfo_player_mini_stats.png index dd2b7e65ba3..00bb687296c 100644 Binary files a/public/images/ui/legacy/pbinfo_player_mini_stats.png and b/public/images/ui/legacy/pbinfo_player_mini_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_player_stats.png b/public/images/ui/legacy/pbinfo_player_stats.png index 078248624bc..6bf984a94dc 100644 Binary files a/public/images/ui/legacy/pbinfo_player_stats.png and b/public/images/ui/legacy/pbinfo_player_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_player_type.png b/public/images/ui/legacy/pbinfo_player_type.png index 1a8b82855f6..5bfc5545067 100644 Binary files a/public/images/ui/legacy/pbinfo_player_type.png and b/public/images/ui/legacy/pbinfo_player_type.png differ diff --git a/public/images/ui/legacy/pbinfo_player_type1.png b/public/images/ui/legacy/pbinfo_player_type1.png index f882e56ac88..df44b5bad5d 100644 Binary files a/public/images/ui/legacy/pbinfo_player_type1.png and b/public/images/ui/legacy/pbinfo_player_type1.png differ diff --git a/public/images/ui/legacy/pbinfo_player_type2.png b/public/images/ui/legacy/pbinfo_player_type2.png index f882e56ac88..df44b5bad5d 100644 Binary files a/public/images/ui/legacy/pbinfo_player_type2.png and b/public/images/ui/legacy/pbinfo_player_type2.png differ diff --git a/public/images/ui/legacy/pbinfo_stat.png b/public/images/ui/legacy/pbinfo_stat.png index 18b0ca314de..25c94f9a807 100644 Binary files a/public/images/ui/legacy/pbinfo_stat.png and b/public/images/ui/legacy/pbinfo_stat.png differ diff --git a/public/images/ui/legacy/pbinfo_stat_numbers.png b/public/images/ui/legacy/pbinfo_stat_numbers.png index b02dfbec72f..5d27caa8efa 100644 Binary files a/public/images/ui/legacy/pbinfo_stat_numbers.png and b/public/images/ui/legacy/pbinfo_stat_numbers.png differ diff --git a/public/images/ui/legacy/pokedex_summary_bg.png b/public/images/ui/legacy/pokedex_summary_bg.png index 690df1547c0..7323f99a913 100644 Binary files a/public/images/ui/legacy/pokedex_summary_bg.png and b/public/images/ui/legacy/pokedex_summary_bg.png differ diff --git a/public/images/ui/legacy/prompt.png b/public/images/ui/legacy/prompt.png index ee74128ce56..d70362d1958 100644 Binary files a/public/images/ui/legacy/prompt.png and b/public/images/ui/legacy/prompt.png differ diff --git a/public/images/ui/legacy/saving_icon.png b/public/images/ui/legacy/saving_icon.png index fddff8c2d39..772fa91fb8c 100644 Binary files a/public/images/ui/legacy/saving_icon.png and b/public/images/ui/legacy/saving_icon.png differ diff --git a/public/images/ui/legacy/scroll_bar.png b/public/images/ui/legacy/scroll_bar.png index e4e5eb34dd2..1e8f53cd29e 100644 Binary files a/public/images/ui/legacy/scroll_bar.png and b/public/images/ui/legacy/scroll_bar.png differ diff --git a/public/images/ui/legacy/scroll_bar_handle.png b/public/images/ui/legacy/scroll_bar_handle.png index 95a1726b3ba..18532fb4dc1 100644 Binary files a/public/images/ui/legacy/scroll_bar_handle.png and b/public/images/ui/legacy/scroll_bar_handle.png differ diff --git a/public/images/ui/legacy/select_cursor_highlight_thick.png b/public/images/ui/legacy/select_cursor_highlight_thick.png index d9a1532862e..6b013b3747e 100644 Binary files a/public/images/ui/legacy/select_cursor_highlight_thick.png and b/public/images/ui/legacy/select_cursor_highlight_thick.png differ diff --git a/public/images/ui/legacy/settings_icon.png b/public/images/ui/legacy/settings_icon.png index 21680cce7fc..5963317affa 100644 Binary files a/public/images/ui/legacy/settings_icon.png and b/public/images/ui/legacy/settings_icon.png differ diff --git a/public/images/ui/legacy/shiny.png b/public/images/ui/legacy/shiny.png index 26d7814fb0b..362f8f48ff1 100644 Binary files a/public/images/ui/legacy/shiny.png and b/public/images/ui/legacy/shiny.png differ diff --git a/public/images/ui/legacy/shiny_1.png b/public/images/ui/legacy/shiny_1.png index 9c7a583a7f9..5154761124c 100644 Binary files a/public/images/ui/legacy/shiny_1.png and b/public/images/ui/legacy/shiny_1.png differ diff --git a/public/images/ui/legacy/shiny_icons.png b/public/images/ui/legacy/shiny_icons.png index f601d908d32..685f7b8af97 100644 Binary files a/public/images/ui/legacy/shiny_icons.png and b/public/images/ui/legacy/shiny_icons.png differ diff --git a/public/images/ui/legacy/shiny_small.png b/public/images/ui/legacy/shiny_small.png index e3d8e260573..66a8b12b876 100644 Binary files a/public/images/ui/legacy/shiny_small.png and b/public/images/ui/legacy/shiny_small.png differ diff --git a/public/images/ui/legacy/starter_container_bg.png b/public/images/ui/legacy/starter_container_bg.png index 5b60fcf551e..887616a8c87 100644 Binary files a/public/images/ui/legacy/starter_container_bg.png and b/public/images/ui/legacy/starter_container_bg.png differ diff --git a/public/images/ui/legacy/starter_select_bg.png b/public/images/ui/legacy/starter_select_bg.png index a94e470df0d..501e892969e 100644 Binary files a/public/images/ui/legacy/starter_select_bg.png and b/public/images/ui/legacy/starter_select_bg.png differ diff --git a/public/images/ui/legacy/summary_bg.png b/public/images/ui/legacy/summary_bg.png index c482b5a1bf1..261b4974fb7 100644 Binary files a/public/images/ui/legacy/summary_bg.png and b/public/images/ui/legacy/summary_bg.png differ diff --git a/public/images/ui/legacy/summary_moves.png b/public/images/ui/legacy/summary_moves.png index 54ddf0fb2c7..ab909588160 100644 Binary files a/public/images/ui/legacy/summary_moves.png and b/public/images/ui/legacy/summary_moves.png differ diff --git a/public/images/ui/legacy/summary_moves_cursor.png b/public/images/ui/legacy/summary_moves_cursor.png index 6b8314b66ca..7375cedcdf6 100644 Binary files a/public/images/ui/legacy/summary_moves_cursor.png and b/public/images/ui/legacy/summary_moves_cursor.png differ diff --git a/public/images/ui/legacy/summary_moves_effect.png b/public/images/ui/legacy/summary_moves_effect.png index 8d6ef024cf3..34d59970c99 100644 Binary files a/public/images/ui/legacy/summary_moves_effect.png and b/public/images/ui/legacy/summary_moves_effect.png differ diff --git a/public/images/ui/legacy/summary_moves_overlay_pp.png b/public/images/ui/legacy/summary_moves_overlay_pp.png index a42c86f28ea..9babffc0429 100644 Binary files a/public/images/ui/legacy/summary_moves_overlay_pp.png and b/public/images/ui/legacy/summary_moves_overlay_pp.png differ diff --git a/public/images/ui/legacy/summary_moves_overlay_row.png b/public/images/ui/legacy/summary_moves_overlay_row.png index 5b3e3d3e940..221a0f99a53 100644 Binary files a/public/images/ui/legacy/summary_moves_overlay_row.png and b/public/images/ui/legacy/summary_moves_overlay_row.png differ diff --git a/public/images/ui/legacy/summary_overlay_shiny.png b/public/images/ui/legacy/summary_overlay_shiny.png index e4ab820730a..bb2436738a8 100644 Binary files a/public/images/ui/legacy/summary_overlay_shiny.png and b/public/images/ui/legacy/summary_overlay_shiny.png differ diff --git a/public/images/ui/legacy/summary_profile.png b/public/images/ui/legacy/summary_profile.png index 77d59dac177..0b5b2ffec05 100644 Binary files a/public/images/ui/legacy/summary_profile.png and b/public/images/ui/legacy/summary_profile.png differ diff --git a/public/images/ui/legacy/summary_profile_ability.png b/public/images/ui/legacy/summary_profile_ability.png index 84c41556ab0..a803323564b 100644 Binary files a/public/images/ui/legacy/summary_profile_ability.png and b/public/images/ui/legacy/summary_profile_ability.png differ diff --git a/public/images/ui/legacy/summary_profile_passive.png b/public/images/ui/legacy/summary_profile_passive.png index 8d70a54b2a4..1ff9ad8e09a 100644 Binary files a/public/images/ui/legacy/summary_profile_passive.png and b/public/images/ui/legacy/summary_profile_passive.png differ diff --git a/public/images/ui/legacy/summary_profile_prompt_a.png b/public/images/ui/legacy/summary_profile_prompt_a.png index 146f1a862e5..f40127ec5ab 100644 Binary files a/public/images/ui/legacy/summary_profile_prompt_a.png and b/public/images/ui/legacy/summary_profile_prompt_a.png differ diff --git a/public/images/ui/legacy/summary_profile_prompt_z.png b/public/images/ui/legacy/summary_profile_prompt_z.png index ed842718914..eaa158eaddf 100644 Binary files a/public/images/ui/legacy/summary_profile_prompt_z.png and b/public/images/ui/legacy/summary_profile_prompt_z.png differ diff --git a/public/images/ui/legacy/summary_stats.png b/public/images/ui/legacy/summary_stats.png index de8baecc7d4..660fbee6df6 100644 Binary files a/public/images/ui/legacy/summary_stats.png and b/public/images/ui/legacy/summary_stats.png differ diff --git a/public/images/ui/legacy/summary_status.png b/public/images/ui/legacy/summary_status.png index 4a5b27e9e2b..95bd7533258 100644 Binary files a/public/images/ui/legacy/summary_status.png and b/public/images/ui/legacy/summary_status.png differ diff --git a/public/images/ui/legacy/summary_tabs_1.png b/public/images/ui/legacy/summary_tabs_1.png index ff38096fcd8..379768ea310 100644 Binary files a/public/images/ui/legacy/summary_tabs_1.png and b/public/images/ui/legacy/summary_tabs_1.png differ diff --git a/public/images/ui/legacy/summary_tabs_2.png b/public/images/ui/legacy/summary_tabs_2.png index f147d1b8385..2a04879b32b 100644 Binary files a/public/images/ui/legacy/summary_tabs_2.png and b/public/images/ui/legacy/summary_tabs_2.png differ diff --git a/public/images/ui/legacy/summary_tabs_3.png b/public/images/ui/legacy/summary_tabs_3.png index cf882988664..ef65774f744 100644 Binary files a/public/images/ui/legacy/summary_tabs_3.png and b/public/images/ui/legacy/summary_tabs_3.png differ diff --git a/public/images/ui/legacy/type_bgs.png b/public/images/ui/legacy/type_bgs.png index 6e682d9c327..c060ac46428 100644 Binary files a/public/images/ui/legacy/type_bgs.png and b/public/images/ui/legacy/type_bgs.png differ diff --git a/public/images/ui/legacy/type_tera.png b/public/images/ui/legacy/type_tera.png index 5c35966a6f4..f7f644cec5d 100644 Binary files a/public/images/ui/legacy/type_tera.png and b/public/images/ui/legacy/type_tera.png differ diff --git a/public/images/ui/legacy/unlink_icon.png b/public/images/ui/legacy/unlink_icon.png index f0da5f8e3ed..36723390363 100644 Binary files a/public/images/ui/legacy/unlink_icon.png and b/public/images/ui/legacy/unlink_icon.png differ diff --git a/public/images/ui/legacy/windows/window_1.png b/public/images/ui/legacy/windows/window_1.png index edfef03f924..355a25c17b3 100644 Binary files a/public/images/ui/legacy/windows/window_1.png and b/public/images/ui/legacy/windows/window_1.png differ diff --git a/public/images/ui/legacy/windows/window_1_thin.png b/public/images/ui/legacy/windows/window_1_thin.png index 4648d812f17..1e71eae928b 100644 Binary files a/public/images/ui/legacy/windows/window_1_thin.png and b/public/images/ui/legacy/windows/window_1_thin.png differ diff --git a/public/images/ui/legacy/windows/window_1_xthin.png b/public/images/ui/legacy/windows/window_1_xthin.png index 0ee6ffd00e1..d9ee533e223 100644 Binary files a/public/images/ui/legacy/windows/window_1_xthin.png and b/public/images/ui/legacy/windows/window_1_xthin.png differ diff --git a/public/images/ui/legacy/windows/window_2.png b/public/images/ui/legacy/windows/window_2.png index 7da47310d64..dda8f20c8ac 100644 Binary files a/public/images/ui/legacy/windows/window_2.png and b/public/images/ui/legacy/windows/window_2.png differ diff --git a/public/images/ui/legacy/windows/window_2_thin.png b/public/images/ui/legacy/windows/window_2_thin.png index 281d538b997..f75186c9c56 100644 Binary files a/public/images/ui/legacy/windows/window_2_thin.png and b/public/images/ui/legacy/windows/window_2_thin.png differ diff --git a/public/images/ui/legacy/windows/window_2_xthin.png b/public/images/ui/legacy/windows/window_2_xthin.png index 01e95113338..2f831870d74 100644 Binary files a/public/images/ui/legacy/windows/window_2_xthin.png and b/public/images/ui/legacy/windows/window_2_xthin.png differ diff --git a/public/images/ui/legacy/windows/window_3.png b/public/images/ui/legacy/windows/window_3.png index 0764ea2d6b0..6270a0c0f25 100644 Binary files a/public/images/ui/legacy/windows/window_3.png and b/public/images/ui/legacy/windows/window_3.png differ diff --git a/public/images/ui/legacy/windows/window_3_thin.png b/public/images/ui/legacy/windows/window_3_thin.png index 12cc6d60778..61d0ccbfe72 100644 Binary files a/public/images/ui/legacy/windows/window_3_thin.png and b/public/images/ui/legacy/windows/window_3_thin.png differ diff --git a/public/images/ui/legacy/windows/window_3_xthin.png b/public/images/ui/legacy/windows/window_3_xthin.png index 57ac6427b79..b510e667b46 100644 Binary files a/public/images/ui/legacy/windows/window_3_xthin.png and b/public/images/ui/legacy/windows/window_3_xthin.png differ diff --git a/public/images/ui/legacy/windows/window_4.png b/public/images/ui/legacy/windows/window_4.png index 69c5bce9dc9..0952c229cb9 100644 Binary files a/public/images/ui/legacy/windows/window_4.png and b/public/images/ui/legacy/windows/window_4.png differ diff --git a/public/images/ui/legacy/windows/window_4_thin.png b/public/images/ui/legacy/windows/window_4_thin.png index b61e7d7b22c..13f689ab884 100644 Binary files a/public/images/ui/legacy/windows/window_4_thin.png and b/public/images/ui/legacy/windows/window_4_thin.png differ diff --git a/public/images/ui/legacy/windows/window_4_xthin.png b/public/images/ui/legacy/windows/window_4_xthin.png index 45fec09adb0..e4d9163174e 100644 Binary files a/public/images/ui/legacy/windows/window_4_xthin.png and b/public/images/ui/legacy/windows/window_4_xthin.png differ diff --git a/public/images/ui/legacy/windows/window_5.png b/public/images/ui/legacy/windows/window_5.png index edfef03f924..355a25c17b3 100644 Binary files a/public/images/ui/legacy/windows/window_5.png and b/public/images/ui/legacy/windows/window_5.png differ diff --git a/public/images/ui/legacy/windows/window_5_thin.png b/public/images/ui/legacy/windows/window_5_thin.png index 4648d812f17..1e71eae928b 100644 Binary files a/public/images/ui/legacy/windows/window_5_thin.png and b/public/images/ui/legacy/windows/window_5_thin.png differ diff --git a/public/images/ui/legacy/windows/window_5_xthin.png b/public/images/ui/legacy/windows/window_5_xthin.png index 0ee6ffd00e1..d9ee533e223 100644 Binary files a/public/images/ui/legacy/windows/window_5_xthin.png and b/public/images/ui/legacy/windows/window_5_xthin.png differ diff --git a/public/images/ui/link_icon.png b/public/images/ui/link_icon.png index 56081261b9c..1e20ab56ec7 100644 Binary files a/public/images/ui/link_icon.png and b/public/images/ui/link_icon.png differ diff --git a/public/images/ui/mmenu_sel.png b/public/images/ui/mmenu_sel.png index 584403e5d74..4b957c7b905 100644 Binary files a/public/images/ui/mmenu_sel.png and b/public/images/ui/mmenu_sel.png differ diff --git a/public/images/ui/mystery_egg.png b/public/images/ui/mystery_egg.png index bb117a137b0..83ad626da7e 100644 Binary files a/public/images/ui/mystery_egg.png and b/public/images/ui/mystery_egg.png differ diff --git a/public/images/ui/namebox.png b/public/images/ui/namebox.png index 87e5a0875b9..70a0e5e4698 100644 Binary files a/public/images/ui/namebox.png and b/public/images/ui/namebox.png differ diff --git a/public/images/ui/night_icon_bg.png b/public/images/ui/night_icon_bg.png index 1ce4007d54c..233da1c80ee 100644 Binary files a/public/images/ui/night_icon_bg.png and b/public/images/ui/night_icon_bg.png differ diff --git a/public/images/ui/night_icon_fg.png b/public/images/ui/night_icon_fg.png index 78741584312..ef184e24435 100644 Binary files a/public/images/ui/night_icon_fg.png and b/public/images/ui/night_icon_fg.png differ diff --git a/public/images/ui/night_icon_mg.png b/public/images/ui/night_icon_mg.png index 5583c8f799d..f808e50b2c7 100644 Binary files a/public/images/ui/night_icon_mg.png and b/public/images/ui/night_icon_mg.png differ diff --git a/public/images/ui/normal_memory.png b/public/images/ui/normal_memory.png index ddc22d1d4ab..604371dcc7c 100644 Binary files a/public/images/ui/normal_memory.png and b/public/images/ui/normal_memory.png differ diff --git a/public/images/ui/numbers.png b/public/images/ui/numbers.png index bde4fe28202..fd281962047 100644 Binary files a/public/images/ui/numbers.png and b/public/images/ui/numbers.png differ diff --git a/public/images/ui/numbers_red.png b/public/images/ui/numbers_red.png index 37cae6b4d60..4b7eabcbde6 100644 Binary files a/public/images/ui/numbers_red.png and b/public/images/ui/numbers_red.png differ diff --git a/public/images/ui/overlay_exp.png b/public/images/ui/overlay_exp.png index 6b745bedcef..10181d01d4c 100644 Binary files a/public/images/ui/overlay_exp.png and b/public/images/ui/overlay_exp.png differ diff --git a/public/images/ui/overlay_hp.png b/public/images/ui/overlay_hp.png index 08674fdcdb7..9612ed8c4c2 100644 Binary files a/public/images/ui/overlay_hp.png and b/public/images/ui/overlay_hp.png differ diff --git a/public/images/ui/overlay_hp_boss.png b/public/images/ui/overlay_hp_boss.png index 5f7a02a4814..5a011709e0c 100644 Binary files a/public/images/ui/overlay_hp_boss.png and b/public/images/ui/overlay_hp_boss.png differ diff --git a/public/images/ui/overlay_lv.png b/public/images/ui/overlay_lv.png index bbd406d957a..ee3f439f7be 100644 Binary files a/public/images/ui/overlay_lv.png and b/public/images/ui/overlay_lv.png differ diff --git a/public/images/ui/overlay_message.png b/public/images/ui/overlay_message.png index 37eb577402b..7057d08ec71 100644 Binary files a/public/images/ui/overlay_message.png and b/public/images/ui/overlay_message.png differ diff --git a/public/images/ui/party_bg.png b/public/images/ui/party_bg.png index 378b1302cb7..f916cd1e1f8 100644 Binary files a/public/images/ui/party_bg.png and b/public/images/ui/party_bg.png differ diff --git a/public/images/ui/party_bg_double.png b/public/images/ui/party_bg_double.png index e0411c1199b..c4d381d828c 100644 Binary files a/public/images/ui/party_bg_double.png and b/public/images/ui/party_bg_double.png differ diff --git a/public/images/ui/party_cancel.png b/public/images/ui/party_cancel.png index 4ea4bc6d65e..5409a1463ce 100644 Binary files a/public/images/ui/party_cancel.png and b/public/images/ui/party_cancel.png differ diff --git a/public/images/ui/party_exp_bar.png b/public/images/ui/party_exp_bar.png index 7815c684b3a..4703876c129 100644 Binary files a/public/images/ui/party_exp_bar.png and b/public/images/ui/party_exp_bar.png differ diff --git a/public/images/ui/party_pb.png b/public/images/ui/party_pb.png index 4169e9c70dc..b635d5f66aa 100644 Binary files a/public/images/ui/party_pb.png and b/public/images/ui/party_pb.png differ diff --git a/public/images/ui/party_slot.png b/public/images/ui/party_slot.png index ad137cead64..9cdea6f61ca 100644 Binary files a/public/images/ui/party_slot.png and b/public/images/ui/party_slot.png differ diff --git a/public/images/ui/party_slot_hp_bar.png b/public/images/ui/party_slot_hp_bar.png index 1771123c141..5381fe0a0b6 100644 Binary files a/public/images/ui/party_slot_hp_bar.png and b/public/images/ui/party_slot_hp_bar.png differ diff --git a/public/images/ui/party_slot_hp_overlay.png b/public/images/ui/party_slot_hp_overlay.png index 09e8c974ca3..8c6935e5540 100644 Binary files a/public/images/ui/party_slot_hp_overlay.png and b/public/images/ui/party_slot_hp_overlay.png differ diff --git a/public/images/ui/party_slot_main.png b/public/images/ui/party_slot_main.png index ab1f70d8034..1ab1e8ee926 100644 Binary files a/public/images/ui/party_slot_main.png and b/public/images/ui/party_slot_main.png differ diff --git a/public/images/ui/party_slot_overlay_hp.png b/public/images/ui/party_slot_overlay_hp.png index 09e8c974ca3..8c6935e5540 100644 Binary files a/public/images/ui/party_slot_overlay_hp.png and b/public/images/ui/party_slot_overlay_hp.png differ diff --git a/public/images/ui/party_slot_overlay_lv.png b/public/images/ui/party_slot_overlay_lv.png index 7051b1d84c4..3d7dafd6737 100644 Binary files a/public/images/ui/party_slot_overlay_lv.png and b/public/images/ui/party_slot_overlay_lv.png differ diff --git a/public/images/ui/passive_bg.png b/public/images/ui/passive_bg.png index 1e18a47b881..4a3fa1ec72b 100644 Binary files a/public/images/ui/passive_bg.png and b/public/images/ui/passive_bg.png differ diff --git a/public/images/ui/pb_tray_ball.png b/public/images/ui/pb_tray_ball.png index 554f9079042..b8f9cb072ba 100644 Binary files a/public/images/ui/pb_tray_ball.png and b/public/images/ui/pb_tray_ball.png differ diff --git a/public/images/ui/pb_tray_overlay_enemy.png b/public/images/ui/pb_tray_overlay_enemy.png index b6fdbcd1753..06bb9ed2e78 100644 Binary files a/public/images/ui/pb_tray_overlay_enemy.png and b/public/images/ui/pb_tray_overlay_enemy.png differ diff --git a/public/images/ui/pb_tray_overlay_player.png b/public/images/ui/pb_tray_overlay_player.png index ddbacced3d3..b3517543fd7 100644 Binary files a/public/images/ui/pb_tray_overlay_player.png and b/public/images/ui/pb_tray_overlay_player.png differ diff --git a/public/images/ui/pbinfo_enemy_boss.png b/public/images/ui/pbinfo_enemy_boss.png index ff5ba661450..ce829bf4631 100644 Binary files a/public/images/ui/pbinfo_enemy_boss.png and b/public/images/ui/pbinfo_enemy_boss.png differ diff --git a/public/images/ui/pbinfo_enemy_boss_stats.png b/public/images/ui/pbinfo_enemy_boss_stats.png index 7148a7af475..f1478a04172 100644 Binary files a/public/images/ui/pbinfo_enemy_boss_stats.png and b/public/images/ui/pbinfo_enemy_boss_stats.png differ diff --git a/public/images/ui/pbinfo_enemy_mini.png b/public/images/ui/pbinfo_enemy_mini.png index a7ff3cb9b82..ddf10776778 100644 Binary files a/public/images/ui/pbinfo_enemy_mini.png and b/public/images/ui/pbinfo_enemy_mini.png differ diff --git a/public/images/ui/pbinfo_enemy_mini_stats.png b/public/images/ui/pbinfo_enemy_mini_stats.png index 69ac5d49411..9c31d64faa4 100644 Binary files a/public/images/ui/pbinfo_enemy_mini_stats.png and b/public/images/ui/pbinfo_enemy_mini_stats.png differ diff --git a/public/images/ui/pbinfo_enemy_type.png b/public/images/ui/pbinfo_enemy_type.png index 9bac63e5e72..f5199ab6d0e 100644 Binary files a/public/images/ui/pbinfo_enemy_type.png and b/public/images/ui/pbinfo_enemy_type.png differ diff --git a/public/images/ui/pbinfo_enemy_type1.png b/public/images/ui/pbinfo_enemy_type1.png index 6d94871e8da..be28e1d2c65 100644 Binary files a/public/images/ui/pbinfo_enemy_type1.png and b/public/images/ui/pbinfo_enemy_type1.png differ diff --git a/public/images/ui/pbinfo_enemy_type2.png b/public/images/ui/pbinfo_enemy_type2.png index 56a1989f2cd..a4616dc6e86 100644 Binary files a/public/images/ui/pbinfo_enemy_type2.png and b/public/images/ui/pbinfo_enemy_type2.png differ diff --git a/public/images/ui/pbinfo_player.png b/public/images/ui/pbinfo_player.png index fee08f71044..c7b2227e800 100644 Binary files a/public/images/ui/pbinfo_player.png and b/public/images/ui/pbinfo_player.png differ diff --git a/public/images/ui/pbinfo_player_mini.png b/public/images/ui/pbinfo_player_mini.png index f12d46bb4ff..90d5e03dae8 100644 Binary files a/public/images/ui/pbinfo_player_mini.png and b/public/images/ui/pbinfo_player_mini.png differ diff --git a/public/images/ui/pbinfo_player_mini_stats.png b/public/images/ui/pbinfo_player_mini_stats.png index 7ce3bd1af1e..52295492eb7 100644 Binary files a/public/images/ui/pbinfo_player_mini_stats.png and b/public/images/ui/pbinfo_player_mini_stats.png differ diff --git a/public/images/ui/pbinfo_player_stats.png b/public/images/ui/pbinfo_player_stats.png index cda978979aa..10192b7752e 100644 Binary files a/public/images/ui/pbinfo_player_stats.png and b/public/images/ui/pbinfo_player_stats.png differ diff --git a/public/images/ui/pbinfo_player_type.png b/public/images/ui/pbinfo_player_type.png index b78d078de95..864848f843b 100644 Binary files a/public/images/ui/pbinfo_player_type.png and b/public/images/ui/pbinfo_player_type.png differ diff --git a/public/images/ui/pbinfo_player_type1.png b/public/images/ui/pbinfo_player_type1.png index 56a1989f2cd..a4616dc6e86 100644 Binary files a/public/images/ui/pbinfo_player_type1.png and b/public/images/ui/pbinfo_player_type1.png differ diff --git a/public/images/ui/pbinfo_player_type2.png b/public/images/ui/pbinfo_player_type2.png index 6d94871e8da..be28e1d2c65 100644 Binary files a/public/images/ui/pbinfo_player_type2.png and b/public/images/ui/pbinfo_player_type2.png differ diff --git a/public/images/ui/pbinfo_stat.png b/public/images/ui/pbinfo_stat.png index 1c20ed70e82..1f86cc6a958 100644 Binary files a/public/images/ui/pbinfo_stat.png and b/public/images/ui/pbinfo_stat.png differ diff --git a/public/images/ui/pbinfo_stat_numbers.png b/public/images/ui/pbinfo_stat_numbers.png index 1465f8b7a64..af244d5ce26 100644 Binary files a/public/images/ui/pbinfo_stat_numbers.png and b/public/images/ui/pbinfo_stat_numbers.png differ diff --git a/public/images/ui/pokedex_summary_bg.png b/public/images/ui/pokedex_summary_bg.png index 92e70bbee27..bb55127edf2 100644 Binary files a/public/images/ui/pokedex_summary_bg.png and b/public/images/ui/pokedex_summary_bg.png differ diff --git a/public/images/ui/prompt.png b/public/images/ui/prompt.png index 4c5e4c7a96c..c045c5e91fe 100644 Binary files a/public/images/ui/prompt.png and b/public/images/ui/prompt.png differ diff --git a/public/images/ui/saving_icon.png b/public/images/ui/saving_icon.png index fddff8c2d39..772fa91fb8c 100644 Binary files a/public/images/ui/saving_icon.png and b/public/images/ui/saving_icon.png differ diff --git a/public/images/ui/scroll_bar.png b/public/images/ui/scroll_bar.png index e4e5eb34dd2..1e8f53cd29e 100644 Binary files a/public/images/ui/scroll_bar.png and b/public/images/ui/scroll_bar.png differ diff --git a/public/images/ui/scroll_bar_handle.png b/public/images/ui/scroll_bar_handle.png index 95a1726b3ba..18532fb4dc1 100644 Binary files a/public/images/ui/scroll_bar_handle.png and b/public/images/ui/scroll_bar_handle.png differ diff --git a/public/images/ui/select_cursor.png b/public/images/ui/select_cursor.png index 41e52ac0d60..002973f2c9d 100644 Binary files a/public/images/ui/select_cursor.png and b/public/images/ui/select_cursor.png differ diff --git a/public/images/ui/select_cursor_highlight.png b/public/images/ui/select_cursor_highlight.png index a0263740509..b8094eecfa8 100644 Binary files a/public/images/ui/select_cursor_highlight.png and b/public/images/ui/select_cursor_highlight.png differ diff --git a/public/images/ui/select_cursor_highlight_thick.png b/public/images/ui/select_cursor_highlight_thick.png index 4081361b211..7730e58387e 100644 Binary files a/public/images/ui/select_cursor_highlight_thick.png and b/public/images/ui/select_cursor_highlight_thick.png differ diff --git a/public/images/ui/select_cursor_pokerus.png b/public/images/ui/select_cursor_pokerus.png index b84340fdde4..506d6deb249 100644 Binary files a/public/images/ui/select_cursor_pokerus.png and b/public/images/ui/select_cursor_pokerus.png differ diff --git a/public/images/ui/select_gen_cursor.png b/public/images/ui/select_gen_cursor.png index e4ed90ecc77..7f1c86fbb4d 100644 Binary files a/public/images/ui/select_gen_cursor.png and b/public/images/ui/select_gen_cursor.png differ diff --git a/public/images/ui/select_gen_cursor_highlight.png b/public/images/ui/select_gen_cursor_highlight.png index 8019de6f3cd..cecc543ae56 100644 Binary files a/public/images/ui/select_gen_cursor_highlight.png and b/public/images/ui/select_gen_cursor_highlight.png differ diff --git a/public/images/ui/settings_icon.png b/public/images/ui/settings_icon.png index 21680cce7fc..5963317affa 100644 Binary files a/public/images/ui/settings_icon.png and b/public/images/ui/settings_icon.png differ diff --git a/public/images/ui/shiny.png b/public/images/ui/shiny.png index 26d7814fb0b..362f8f48ff1 100644 Binary files a/public/images/ui/shiny.png and b/public/images/ui/shiny.png differ diff --git a/public/images/ui/shiny_1.png b/public/images/ui/shiny_1.png index 9c7a583a7f9..5154761124c 100644 Binary files a/public/images/ui/shiny_1.png and b/public/images/ui/shiny_1.png differ diff --git a/public/images/ui/shiny_icons.png b/public/images/ui/shiny_icons.png index f601d908d32..685f7b8af97 100644 Binary files a/public/images/ui/shiny_icons.png and b/public/images/ui/shiny_icons.png differ diff --git a/public/images/ui/shiny_small.png b/public/images/ui/shiny_small.png index e3d8e260573..66a8b12b876 100644 Binary files a/public/images/ui/shiny_small.png and b/public/images/ui/shiny_small.png differ diff --git a/public/images/ui/starter_container_bg.png b/public/images/ui/starter_container_bg.png index 5b60fcf551e..887616a8c87 100644 Binary files a/public/images/ui/starter_container_bg.png and b/public/images/ui/starter_container_bg.png differ diff --git a/public/images/ui/starter_select_bg.png b/public/images/ui/starter_select_bg.png index 8b11f55a963..b11cd12a5e4 100644 Binary files a/public/images/ui/starter_select_bg.png and b/public/images/ui/starter_select_bg.png differ diff --git a/public/images/ui/summary_bg.png b/public/images/ui/summary_bg.png index a86a94dd56e..ebfe87b78b2 100644 Binary files a/public/images/ui/summary_bg.png and b/public/images/ui/summary_bg.png differ diff --git a/public/images/ui/summary_moves.png b/public/images/ui/summary_moves.png index 8f6b01137c1..618d91934f2 100644 Binary files a/public/images/ui/summary_moves.png and b/public/images/ui/summary_moves.png differ diff --git a/public/images/ui/summary_moves_cursor.png b/public/images/ui/summary_moves_cursor.png index 93ce1fc0dae..5472c55d0c0 100644 Binary files a/public/images/ui/summary_moves_cursor.png and b/public/images/ui/summary_moves_cursor.png differ diff --git a/public/images/ui/summary_moves_effect.png b/public/images/ui/summary_moves_effect.png index e1b0e066732..5b1cef9c02e 100644 Binary files a/public/images/ui/summary_moves_effect.png and b/public/images/ui/summary_moves_effect.png differ diff --git a/public/images/ui/summary_moves_overlay_pp.png b/public/images/ui/summary_moves_overlay_pp.png index 9dd0a080e3d..a2bcd0bd021 100644 Binary files a/public/images/ui/summary_moves_overlay_pp.png and b/public/images/ui/summary_moves_overlay_pp.png differ diff --git a/public/images/ui/summary_moves_overlay_row.png b/public/images/ui/summary_moves_overlay_row.png index 5c975b17472..1c2ed2d3a86 100644 Binary files a/public/images/ui/summary_moves_overlay_row.png and b/public/images/ui/summary_moves_overlay_row.png differ diff --git a/public/images/ui/summary_overlay_shiny.png b/public/images/ui/summary_overlay_shiny.png index 472728cc3a3..956f9fb93f3 100644 Binary files a/public/images/ui/summary_overlay_shiny.png and b/public/images/ui/summary_overlay_shiny.png differ diff --git a/public/images/ui/summary_profile.png b/public/images/ui/summary_profile.png index 55cc70dc4d0..2c0c93af6b4 100644 Binary files a/public/images/ui/summary_profile.png and b/public/images/ui/summary_profile.png differ diff --git a/public/images/ui/summary_profile_ability.png b/public/images/ui/summary_profile_ability.png index 84c41556ab0..a803323564b 100644 Binary files a/public/images/ui/summary_profile_ability.png and b/public/images/ui/summary_profile_ability.png differ diff --git a/public/images/ui/summary_profile_passive.png b/public/images/ui/summary_profile_passive.png index 8d70a54b2a4..1ff9ad8e09a 100644 Binary files a/public/images/ui/summary_profile_passive.png and b/public/images/ui/summary_profile_passive.png differ diff --git a/public/images/ui/summary_profile_prompt_a.png b/public/images/ui/summary_profile_prompt_a.png index 146f1a862e5..f40127ec5ab 100644 Binary files a/public/images/ui/summary_profile_prompt_a.png and b/public/images/ui/summary_profile_prompt_a.png differ diff --git a/public/images/ui/summary_profile_prompt_z.png b/public/images/ui/summary_profile_prompt_z.png index ed842718914..eaa158eaddf 100644 Binary files a/public/images/ui/summary_profile_prompt_z.png and b/public/images/ui/summary_profile_prompt_z.png differ diff --git a/public/images/ui/summary_stats.png b/public/images/ui/summary_stats.png index bcbc6809852..d808be92fd1 100644 Binary files a/public/images/ui/summary_stats.png and b/public/images/ui/summary_stats.png differ diff --git a/public/images/ui/summary_stats_overlay_exp.png b/public/images/ui/summary_stats_overlay_exp.png index a5ef5093ced..126f3c71a3d 100644 Binary files a/public/images/ui/summary_stats_overlay_exp.png and b/public/images/ui/summary_stats_overlay_exp.png differ diff --git a/public/images/ui/summary_status.png b/public/images/ui/summary_status.png index 981e4dafe05..fd518c6c015 100644 Binary files a/public/images/ui/summary_status.png and b/public/images/ui/summary_status.png differ diff --git a/public/images/ui/summary_tabs_1.png b/public/images/ui/summary_tabs_1.png index c4989a86514..750c407b075 100644 Binary files a/public/images/ui/summary_tabs_1.png and b/public/images/ui/summary_tabs_1.png differ diff --git a/public/images/ui/summary_tabs_2.png b/public/images/ui/summary_tabs_2.png index 16f7c35b278..250c3ce7960 100644 Binary files a/public/images/ui/summary_tabs_2.png and b/public/images/ui/summary_tabs_2.png differ diff --git a/public/images/ui/summary_tabs_3.png b/public/images/ui/summary_tabs_3.png index b766307aaca..1af80fa5c0d 100644 Binary files a/public/images/ui/summary_tabs_3.png and b/public/images/ui/summary_tabs_3.png differ diff --git a/public/images/ui/type_bgs.png b/public/images/ui/type_bgs.png index 91d75d622ba..820dc3f5a0e 100644 Binary files a/public/images/ui/type_bgs.png and b/public/images/ui/type_bgs.png differ diff --git a/public/images/ui/type_tera.png b/public/images/ui/type_tera.png index 5c35966a6f4..f7f644cec5d 100644 Binary files a/public/images/ui/type_tera.png and b/public/images/ui/type_tera.png differ diff --git a/public/images/ui/unlink_icon.png b/public/images/ui/unlink_icon.png index f0da5f8e3ed..36723390363 100644 Binary files a/public/images/ui/unlink_icon.png and b/public/images/ui/unlink_icon.png differ diff --git a/public/images/ui/windows/window_1.png b/public/images/ui/windows/window_1.png index 16a088108ee..8349452bd1a 100644 Binary files a/public/images/ui/windows/window_1.png and b/public/images/ui/windows/window_1.png differ diff --git a/public/images/ui/windows/window_1_thin.png b/public/images/ui/windows/window_1_thin.png index 96750d47c0f..8c915f239e8 100644 Binary files a/public/images/ui/windows/window_1_thin.png and b/public/images/ui/windows/window_1_thin.png differ diff --git a/public/images/ui/windows/window_1_xthin.png b/public/images/ui/windows/window_1_xthin.png index 0c11a595ca2..edcabf7b17a 100644 Binary files a/public/images/ui/windows/window_1_xthin.png and b/public/images/ui/windows/window_1_xthin.png differ diff --git a/public/images/ui/windows/window_2.png b/public/images/ui/windows/window_2.png index 98a6de12270..ca7767d1344 100644 Binary files a/public/images/ui/windows/window_2.png and b/public/images/ui/windows/window_2.png differ diff --git a/public/images/ui/windows/window_2_thin.png b/public/images/ui/windows/window_2_thin.png index d3940f62f76..17d180bbb7b 100644 Binary files a/public/images/ui/windows/window_2_thin.png and b/public/images/ui/windows/window_2_thin.png differ diff --git a/public/images/ui/windows/window_2_xthin.png b/public/images/ui/windows/window_2_xthin.png index bbb68216776..0f6450313e3 100644 Binary files a/public/images/ui/windows/window_2_xthin.png and b/public/images/ui/windows/window_2_xthin.png differ diff --git a/public/images/ui/windows/window_3.png b/public/images/ui/windows/window_3.png index d3810b06e0c..76234f0175c 100644 Binary files a/public/images/ui/windows/window_3.png and b/public/images/ui/windows/window_3.png differ diff --git a/public/images/ui/windows/window_3_thin.png b/public/images/ui/windows/window_3_thin.png index db5e0a91266..34c6a7d21cf 100644 Binary files a/public/images/ui/windows/window_3_thin.png and b/public/images/ui/windows/window_3_thin.png differ diff --git a/public/images/ui/windows/window_3_xthin.png b/public/images/ui/windows/window_3_xthin.png index bbf7f904a98..416433f5105 100644 Binary files a/public/images/ui/windows/window_3_xthin.png and b/public/images/ui/windows/window_3_xthin.png differ diff --git a/public/images/ui/windows/window_4.png b/public/images/ui/windows/window_4.png index 5be8161ca8b..dc6095b1663 100644 Binary files a/public/images/ui/windows/window_4.png and b/public/images/ui/windows/window_4.png differ diff --git a/public/images/ui/windows/window_4_thin.png b/public/images/ui/windows/window_4_thin.png index fb8c004921a..0e60510833d 100644 Binary files a/public/images/ui/windows/window_4_thin.png and b/public/images/ui/windows/window_4_thin.png differ diff --git a/public/images/ui/windows/window_4_xthin.png b/public/images/ui/windows/window_4_xthin.png index 15bf0f8c692..bb5323a7aad 100644 Binary files a/public/images/ui/windows/window_4_xthin.png and b/public/images/ui/windows/window_4_xthin.png differ diff --git a/public/images/ui/windows/window_5.png b/public/images/ui/windows/window_5.png index 35ad9c4f22c..9e64853d3ab 100644 Binary files a/public/images/ui/windows/window_5.png and b/public/images/ui/windows/window_5.png differ diff --git a/public/images/ui/windows/window_5_thin.png b/public/images/ui/windows/window_5_thin.png index 35ad9c4f22c..9e64853d3ab 100644 Binary files a/public/images/ui/windows/window_5_thin.png and b/public/images/ui/windows/window_5_thin.png differ diff --git a/public/images/ui/windows/window_5_xthin.png b/public/images/ui/windows/window_5_xthin.png index 8c3a4e12e57..47a23a6a5d7 100644 Binary files a/public/images/ui/windows/window_5_xthin.png and b/public/images/ui/windows/window_5_xthin.png differ diff --git a/public/locales b/public/locales index fade123e20f..362b2c4fcc2 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit fade123e20ff951e199d7c0466686fe8c5511643 +Subproject commit 362b2c4fcc20b31a7be6c2dab537055fbaeb247f diff --git a/public/logo128.png b/public/logo128.png index 40f2a93715f..e6acfb9bfe2 100644 Binary files a/public/logo128.png and b/public/logo128.png differ diff --git a/public/logo512.png b/public/logo512.png index 7fdde1f6b82..6e9854d98b9 100644 Binary files a/public/logo512.png and b/public/logo512.png differ diff --git a/scripts/create-test/create-test.js b/scripts/create-test/create-test.js index 3c667049658..f24aac548fc 100644 --- a/scripts/create-test/create-test.js +++ b/scripts/create-test/create-test.js @@ -1,14 +1,14 @@ -/** +/* * This script creates a test boilerplate file in the appropriate * directory based on the type selected. - * @example pnpm test:create + * Usage: `pnpm test:create` */ -import chalk from "chalk"; -import inquirer from "inquirer"; import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import chalk from "chalk"; +import inquirer from "inquirer"; //#region Constants diff --git a/scripts/create-test/test-boilerplate.ts b/scripts/create-test/test-boilerplate.ts index 1fbd3c8040a..fa914b150c2 100644 --- a/scripts/create-test/test-boilerplate.ts +++ b/scripts/create-test/test-boilerplate.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/decrypt-save.js b/scripts/decrypt-save.js index a7239a40df6..219cdb47bed 100644 --- a/scripts/decrypt-save.js +++ b/scripts/decrypt-save.js @@ -1,7 +1,8 @@ -import pkg from "crypto-js"; -const { AES, enc } = pkg; -// biome-ignore lint: This is how you import fs from node +// Usage: node decrypt-save.js [save-file] + +// 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"; const SAVE_KEY = "x0i2O7WRiANTqPmZ"; 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/ability-types.ts b/src/@types/ability-types.ts index 18516fadd40..8daca8a671d 100644 --- a/src/@types/ability-types.ts +++ b/src/@types/ability-types.ts @@ -1,13 +1,13 @@ -import type Move from "#app/data/moves/move"; -import type Pokemon from "#app/field/pokemon"; +import type { AbAttrConstructorMap } from "#abilities/ability"; import type { BattleStat } from "#enums/stat"; -import type { AbAttrConstructorMap } from "#app/data/abilities/ability"; +import type { Pokemon } from "#field/pokemon"; +import type { Move } from "#moves/move"; // intentionally re-export all types from abilities to have this be the centralized place to import ability types -export type * from "#app/data/abilities/ability"; +export type * from "#abilities/ability"; // biome-ignore lint/correctness/noUnusedImports: Used in a tsdoc comment -import type { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; +import type { applyAbAttrs } from "#abilities/apply-ab-attrs"; export type AbAttrCondition = (pokemon: Pokemon) => boolean; export type PokemonAttackCondition = (user: Pokemon | null, target: Pokemon | null, move: Move) => boolean; diff --git a/src/@types/PokerogueAccountApi.ts b/src/@types/api/pokerogue-account-api.ts similarity index 84% rename from src/@types/PokerogueAccountApi.ts rename to src/@types/api/pokerogue-account-api.ts index 68d0a5e7730..7bcdc766664 100644 --- a/src/@types/PokerogueAccountApi.ts +++ b/src/@types/api/pokerogue-account-api.ts @@ -1,4 +1,4 @@ -import type { UserInfo } from "#app/@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 71% rename from src/@types/PokerogueDailyApi.ts rename to src/@types/api/pokerogue-daily-api.ts index 3f3d8eb61ca..838af2a2a34 100644 --- a/src/@types/PokerogueDailyApi.ts +++ b/src/@types/api/pokerogue-daily-api.ts @@ -1,4 +1,4 @@ -import type { ScoreboardCategory } from "#app/ui/daily-run-scoreboard"; +import type { ScoreboardCategory } from "#ui/daily-run-scoreboard"; export interface GetDailyRankingsRequest { category: ScoreboardCategory; diff --git a/src/@types/PokerogueSavedataApi.ts b/src/@types/api/pokerogue-save-data-api.ts similarity index 66% rename from src/@types/PokerogueSavedataApi.ts rename to src/@types/api/pokerogue-save-data-api.ts index a313cd708c7..ebc80ac4ce0 100644 --- a/src/@types/PokerogueSavedataApi.ts +++ b/src/@types/api/pokerogue-save-data-api.ts @@ -1,4 +1,4 @@ -import type { SessionSaveData, SystemSaveData } from "#app/system/game-data"; +import type { SessionSaveData, SystemSaveData } from "#system/game-data"; export interface UpdateAllSavedataRequest { system: SystemSaveData; 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 75% rename from src/@types/PokerogueSystemSavedataApi.ts rename to src/@types/api/pokerogue-system-save-data-api.ts index 8ce160a5ec2..133f9cda506 100644 --- a/src/@types/PokerogueSystemSavedataApi.ts +++ b/src/@types/api/pokerogue-system-save-data-api.ts @@ -1,10 +1,10 @@ -import type { SystemSaveData } from "#app/system/game-data"; +import type { SystemSaveData } from "#system/game-data"; 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 new file mode 100644 index 00000000000..ab4339b2fef --- /dev/null +++ b/src/@types/arena-tags.ts @@ -0,0 +1,48 @@ +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 = + | ArenaTagType.STICKY_WEB + | ArenaTagType.SPIKES + | ArenaTagType.TOXIC_SPIKES + | 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; + +/** Subset of {@linkcode ArenaTagType}s for moves that add protection */ +export type TurnProtectArenaTagType = + | ArenaTagType.QUICK_GUARD + | ArenaTagType.WIDE_GUARD + | ArenaTagType.MAT_BLOCK + | ArenaTagType.CRAFTY_SHIELD; + +/** Subset of {@linkcode ArenaTagType}s that cannot persist across turns, and thus should not be serialized in {@linkcode SessionSaveData}. */ +export type NonSerializableArenaTagType = ArenaTagType.NONE | TurnProtectArenaTagType | ArenaTagType.ION_DELUGE; + +/** Subset of {@linkcode ArenaTagType}s that may persist across turns, and thus must be serialized in {@linkcode SessionSaveData}. */ +export type SerializableArenaTagType = Exclude; + +/** + * Type-safe representation of the serializable data of an ArenaTag + */ +export type ArenaTagTypeData = NonFunctionProperties< + ArenaTagTypeMap[keyof { + [K in keyof ArenaTagTypeMap as K extends SerializableArenaTagType ? K : never]: ArenaTagTypeMap[K]; + }] +>; + +/** Dummy, typescript-only declaration to ensure that + * {@linkcode ArenaTagTypeMap} has a map for all ArenaTagTypes. + * + * If an arena 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 EnsureAllArenaTagTypesAreMapped: ArenaTagTypeMap[ArenaTagType] & never; diff --git a/src/@types/attack-move-result.ts b/src/@types/attack-move-result.ts new file mode 100644 index 00000000000..495bb1e88ff --- /dev/null +++ b/src/@types/attack-move-result.ts @@ -0,0 +1,12 @@ +import type { BattlerIndex } from "#enums/battler-index"; +import type { MoveId } from "#enums/move-id"; +import type { DamageResult } from "#types/damage-result"; + +export interface AttackMoveResult { + move: MoveId; + result: DamageResult; + damage: number; + critical: boolean; + sourceId: number; + sourceBattlerIndex: BattlerIndex; +} diff --git a/src/@types/damage-result.ts b/src/@types/damage-result.ts new file mode 100644 index 00000000000..b6eb6b82770 --- /dev/null +++ b/src/@types/damage-result.ts @@ -0,0 +1,21 @@ +import type { HitResult } from "#enums/hit-result"; + +/** Union type containing all damage-dealing {@linkcode HitResult}s. */ +export type DamageResult = + | HitResult.EFFECTIVE + | HitResult.SUPER_EFFECTIVE + | HitResult.NOT_VERY_EFFECTIVE + | HitResult.ONE_HIT_KO + | HitResult.CONFUSION + | HitResult.INDIRECT_KO + | HitResult.INDIRECT; + +/** Interface containing the results of a damage calculation for a given move. */ +export interface DamageCalculationResult { + /** `true` if the move was cancelled (thus suppressing "No Effect" messages) */ + cancelled: boolean; + /** The effectiveness of the move */ + result: HitResult; + /** The damage dealt by the move */ + damage: number; +} diff --git a/src/@types/enum-types.ts b/src/@types/enum-types.ts new file mode 100644 index 00000000000..84df0a96505 --- /dev/null +++ b/src/@types/enum-types.ts @@ -0,0 +1,18 @@ +/** 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; + +/** Generic type constraint representing a non reverse-mapped TS enum or `const object`. */ +export type NormalEnum = Exclude>; diff --git a/src/@types/held-modifier-config.ts b/src/@types/held-modifier-config.ts index 5617cf2446a..46ef67bf515 100644 --- a/src/@types/held-modifier-config.ts +++ b/src/@types/held-modifier-config.ts @@ -1,7 +1,7 @@ -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; +import type { PokemonHeldItemModifier } from "#modifiers/modifier"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; -export default interface HeldModifierConfig { +export interface HeldModifierConfig { modifier: PokemonHeldItemModifierType | PokemonHeldItemModifier; stackCount?: number; isTransferable?: boolean; diff --git a/src/@types/illusion-data.ts b/src/@types/illusion-data.ts new file mode 100644 index 00000000000..854c98c8cc9 --- /dev/null +++ b/src/@types/illusion-data.ts @@ -0,0 +1,41 @@ +import type { Gender } from "#data/gender"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import type { PokeballType } from "#enums/pokeball"; +import type { SpeciesId } from "#enums/species-id"; +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 species of the illusion */ + species: SpeciesId; + /** The formIndex of the illusion */ + formIndex: number; + /** The gender of the illusion */ + gender: Gender; + /** The pokeball of the illusion */ + pokeball: PokeballType; + /** The fusion species of the illusion if it's a fusion */ + fusionSpecies?: PokemonSpecies; + /** The fusionFormIndex of the illusion */ + fusionFormIndex?: number; + /** The fusionGender of the illusion if it's a fusion */ + fusionGender?: Gender; + /** The level of the illusion (not used currently) */ + level?: number; +} diff --git a/src/@types/modifier-types.ts b/src/@types/modifier-types.ts index 80b92c35622..28b39d1a151 100644 --- a/src/@types/modifier-types.ts +++ b/src/@types/modifier-types.ts @@ -1,14 +1,13 @@ -/** - * Re-exports of all the types defined in the modifier module. - */ +// Intentionally re-exports `ModifierConstructorMap` from `modifier.ts` + +import type { Pokemon } from "#field/pokemon"; +import type { ModifierConstructorMap } from "#modifiers/modifier"; +import type { ModifierType, WeightedModifierType } from "#modifiers/modifier-type"; -import type Pokemon from "#app/field/pokemon"; -import type { ModifierConstructorMap } from "#app/modifier/modifier"; -import type { ModifierType, WeightedModifierType } from "#app/modifier/modifier-type"; export type ModifierTypeFunc = () => ModifierType; export type WeightedModifierTypeWeightFunc = (party: Pokemon[], rerollCount?: number) => number; -export type { ModifierConstructorMap } from "#app/modifier/modifier"; +export type { ModifierConstructorMap } from "#modifiers/modifier"; /** * Map of modifier names to their respective instance types diff --git a/src/@types/move-types.ts b/src/@types/move-types.ts index d9a06fd20ee..5f8d7e8777e 100644 --- a/src/@types/move-types.ts +++ b/src/@types/move-types.ts @@ -1,16 +1,16 @@ import type { AttackMove, - StatusMove, - SelfStatusMove, ChargingAttackMove, ChargingSelfStatusMove, - MoveAttrConstructorMap, MoveAttr, -} from "#app/data/moves/move"; + MoveAttrConstructorMap, + SelfStatusMove, + StatusMove, +} from "#moves/move"; export type MoveAttrFilter = (attr: MoveAttr) => boolean; -export type * from "#app/data/moves/move"; +export type * from "#moves/move"; /** * Map of move subclass names to their respective classes. diff --git a/src/@types/SessionSaveMigrator.ts b/src/@types/session-save-migrator.ts similarity index 62% rename from src/@types/SessionSaveMigrator.ts rename to src/@types/session-save-migrator.ts index c4b0ad8dda4..56518eaa8b7 100644 --- a/src/@types/SessionSaveMigrator.ts +++ b/src/@types/session-save-migrator.ts @@ -1,4 +1,4 @@ -import type { SessionSaveData } from "#app/system/game-data"; +import type { SessionSaveData } from "#system/game-data"; export interface SessionSaveMigrator { version: string; 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 62% rename from src/@types/SystemSaveMigrator.ts rename to src/@types/system-save-migrator.ts index a22b5f6c93d..80fff9c7848 100644 --- a/src/@types/SystemSaveMigrator.ts +++ b/src/@types/system-save-migrator.ts @@ -1,4 +1,4 @@ -import type { SystemSaveData } from "#app/system/game-data"; +import type { SystemSaveData } from "#system/game-data"; export interface SystemSaveMigrator { version: string; diff --git a/src/@types/trainer-funcs.ts b/src/@types/trainer-funcs.ts index 0546dd53024..aa839cbd158 100644 --- a/src/@types/trainer-funcs.ts +++ b/src/@types/trainer-funcs.ts @@ -1,9 +1,9 @@ -import type { EnemyPokemon } from "#app/field/pokemon"; -import type { PersistentModifier } from "#app/modifier/modifier"; import type { PartyMemberStrength } from "#enums/party-member-strength"; import type { SpeciesId } from "#enums/species-id"; -import type { TrainerConfig } from "../data/trainers/trainer-config"; -import type { TrainerPartyTemplate } from "../data/trainers/TrainerPartyTemplate"; +import type { EnemyPokemon } from "#field/pokemon"; +import type { PersistentModifier } from "#modifiers/modifier"; +import type { TrainerConfig } from "#trainers/trainer-config"; +import type { TrainerPartyTemplate } from "#trainers/trainer-party-template"; export type PartyTemplateFunc = () => TrainerPartyTemplate; export type PartyMemberFunc = (level: number, strength: PartyMemberStrength) => EnemyPokemon; diff --git a/src/@types/turn-move.ts b/src/@types/turn-move.ts new file mode 100644 index 00000000000..a5a69eb3749 --- /dev/null +++ b/src/@types/turn-move.ts @@ -0,0 +1,13 @@ +import type { BattlerIndex } from "#enums/battler-index"; +import type { MoveId } from "#enums/move-id"; +import type { MoveResult } from "#enums/move-result"; +import type { MoveUseMode } from "#enums/move-use-mode"; + +/** A record of a move having been used. */ +export interface TurnMove { + move: MoveId; + targets: BattlerIndex[]; + useMode: MoveUseMode; + result?: MoveResult; + turn?: number; +} diff --git a/src/@types/type-helpers.ts b/src/@types/type-helpers.ts index 2d00b1faf4a..3a5c88e3f15 100644 --- a/src/@types/type-helpers.ts +++ b/src/@types/type-helpers.ts @@ -2,8 +2,11 @@ * A collection of custom utility types that aid in type checking and ensuring strict type conformity */ -// biome-ignore lint/correctness/noUnusedImports: Used in a tsdoc comment -import type { AbAttr } from "./ability-types"; +// biome-ignore-start lint/correctness/noUnusedImports: Used in a tsdoc comment +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. @@ -11,7 +14,7 @@ import type { AbAttr } from "./ability-types"; * ⚠️ Should never be used with `extends`, as this will nullify the exactness of the type. * * As an example, used to ensure that the parameters of {@linkcode AbAttr.canApply} and {@linkcode AbAttr.getTriggerMessage} are compatible with - * the type of the apply method + * the type of its {@linkcode AbAttr.apply | apply} method. * * @typeParam T - The type to match exactly */ @@ -26,9 +29,49 @@ export type Exact = { export type Closed = X; /** - * Remove `readonly` from all properties of the provided type - * @typeParam T - The type to make mutable + * Remove `readonly` from all properties of the provided type. + * @typeParam T - The type to make mutable. */ export type Mutable = { -readonly [P in keyof T]: T[P]; }; + +/** + * Type helper to obtain the keys associated with a given value inside a `const object`. + * @typeParam O - The type of the object + * @typeParam V - The type of one of O's values + */ +export type InferKeys, V extends EnumValues> = { + [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. + */ +export type AnyFn = (...args: any[]) => any; + +/** + * Type helper to extract non-function properties from a type. + * + * @remarks + * Useful to produce a type that is roughly the same as the type of `{... obj}`, where `obj` is an instance of `T`. + * A couple of differences: + * - Private and protected properties are not included. + * - Nested properties are not recursively extracted. For this, use {@linkcode NonFunctionPropertiesRecursive} + */ +export type NonFunctionProperties = { + [K in keyof T as T[K] extends AnyFn ? never : K]: T[K]; +}; + +/** + * Type helper to extract out non-function properties from a type, recursively applying to nested properties. + */ +export type NonFunctionPropertiesRecursive = { + [K in keyof Class as Class[K] extends AnyFn ? never : K]: Class[K] extends Array + ? NonFunctionPropertiesRecursive[] + : Class[K] extends object + ? NonFunctionPropertiesRecursive + : Class[K]; +}; + +export type AbstractConstructor = abstract new (...args: any[]) => T; 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 3416fa6ed5e..b01691ce940 100644 --- a/src/account.ts +++ b/src/account.ts @@ -1,7 +1,7 @@ -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import type { UserInfo } from "#app/@types/UserInfo"; -import { bypassLogin } from "./global-vars/bypass-login"; -import { randomString } from "#app/utils/common"; +import { pokerogueApi } from "#api/pokerogue-api"; +import { bypassLogin } from "#app/global-vars/bypass-login"; +import type { UserInfo } from "#types/user-info"; +import { randomString } from "#utils/common"; export let loggedInUser: UserInfo | null = null; // This is a random string that is used to identify the client session - unique per session (tab or window) so that the game will only save on the one that the server is expecting diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 2ac13033412..62351c4a833 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1,26 +1,84 @@ -import Phaser from "phaser"; -import UI from "#app/ui/ui"; -import type Pokemon from "#app/field/pokemon"; -import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import type { PokemonSpeciesFilter } from "#app/data/pokemon-species"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { allSpecies } from "#app/data/data-lists"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; +import type { FixedBattleConfig } from "#app/battle"; +import { Battle } from "#app/battle"; import { - fixedInt, - getIvsFromId, - randSeedInt, - getEnumValues, - randomString, - NumberHolder, - shiftCharCodes, - formatMoney, - isNullOrUndefined, - BooleanHolder, - type Constructor, -} from "#app/utils/common"; -import { deepMergeSpriteData } from "#app/utils/data"; -import type { Modifier, ModifierPredicate, TurnHeldItemTransferModifier } from "./modifier/modifier"; + ANTI_VARIANCE_WEIGHT_MODIFIER, + AVERAGE_ENCOUNTERS_PER_RUN_TARGET, + BASE_MYSTERY_ENCOUNTER_SPAWN_WEIGHT, + MYSTERY_ENCOUNTER_SPAWN_MAX_WEIGHT, +} from "#app/constants"; +import type { GameMode } from "#app/game-mode"; +import { getGameMode } from "#app/game-mode"; +import { timedEventManager } from "#app/global-event-manager"; +import { initGlobalScene } from "#app/global-scene"; +import { starterColors } from "#app/global-vars/starter-colors"; +import { InputsController } from "#app/inputs-controller"; +import { LoadingScene } from "#app/loading-scene"; +import Overrides from "#app/overrides"; +import type { Phase } from "#app/phase"; +import { PhaseManager } from "#app/phase-manager"; +import { FieldSpritePipeline } from "#app/pipelines/field-sprite"; +import { InvertPostFX } from "#app/pipelines/invert"; +import { SpritePipeline } from "#app/pipelines/sprite"; +import { SceneBase } from "#app/scene-base"; +import { startingWave } from "#app/starting-wave"; +import { TimedEventManager } from "#app/timed-event-manager"; +import { UiInputs } from "#app/ui-inputs"; +import { biomeDepths, getBiomeName } from "#balance/biomes"; +import { pokemonPrevolutions } from "#balance/pokemon-evolutions"; +import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#balance/starters"; +import { + initCommonAnims, + initMoveAnim, + loadCommonAnimAssets, + loadMoveAnimAssets, + populateAnims, +} from "#data/battle-anims"; +import { allAbilities, allMoves, allSpecies, modifierTypes } from "#data/data-lists"; +import { battleSpecDialogue } from "#data/dialogue"; +import type { SpeciesFormChangeTrigger } from "#data/form-change-triggers"; +import { SpeciesFormChangeManualTrigger, SpeciesFormChangeTimeOfDayTrigger } from "#data/form-change-triggers"; +import { Gender } from "#data/gender"; +import type { SpeciesFormChange } from "#data/pokemon-forms"; +import { pokemonFormChanges } from "#data/pokemon-forms"; +import type { PokemonSpecies, PokemonSpeciesFilter } from "#data/pokemon-species"; +import { getTypeRgb } from "#data/type"; +import { BattleSpec } from "#enums/battle-spec"; +import { BattleStyle } from "#enums/battle-style"; +import { BattleType } from "#enums/battle-type"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { BiomeId } from "#enums/biome-id"; +import { EaseType } from "#enums/ease-type"; +import { ExpGainsSpeed } from "#enums/exp-gains-speed"; +import { ExpNotification } from "#enums/exp-notification"; +import { FormChangeItem } from "#enums/form-change-item"; +import { GameModes } from "#enums/game-modes"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; +import { MoneyFormat } from "#enums/money-format"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { PlayerGender } from "#enums/player-gender"; +import { PokeballType } from "#enums/pokeball"; +import type { PokemonAnimType } from "#enums/pokemon-anim-type"; +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 type { TrainerSlot } from "#enums/trainer-slot"; +import { TrainerType } from "#enums/trainer-type"; +import { TrainerVariant } from "#enums/trainer-variant"; +import { UiTheme } from "#enums/ui-theme"; +import { NewArenaEvent } from "#events/battle-scene"; +import { Arena, ArenaBase } from "#field/arena"; +import { DamageNumberHandler } from "#field/damage-number-handler"; +import type { Pokemon } from "#field/pokemon"; +import { EnemyPokemon, PlayerPokemon } from "#field/pokemon"; +import { PokemonSpriteSparkleHandler } from "#field/pokemon-sprite-sparkle-handler"; +import { Trainer } from "#field/trainer"; +import type { Modifier, ModifierPredicate, TurnHeldItemTransferModifier } from "#modifiers/modifier"; import { ConsumableModifier, ConsumablePokemonModifier, @@ -38,22 +96,7 @@ import { PokemonHpRestoreModifier, PokemonIncrementingStatModifier, RememberMoveModifier, -} from "./modifier/modifier"; -import { PokeballType } from "#enums/pokeball"; -import { - initCommonAnims, - initMoveAnim, - loadCommonAnimAssets, - loadMoveAnimAssets, - populateAnims, -} from "#app/data/battle-anims"; -import type { Phase } from "#app/phase"; -import { initGameSpeed } from "#app/system/game-speed"; -import { Arena, ArenaBase } from "#app/field/arena"; -import { GameData } from "#app/system/game-data"; -import { addTextObject, getTextColor, TextStyle } from "#app/ui/text"; -import { allMoves } from "./data/data-lists"; -import { MusicPreference } from "#app/system/settings/settings"; +} from "#modifiers/modifier"; import { getDefaultModifierTypeForTier, getEnemyModifierTypesForWave, @@ -61,113 +104,61 @@ import { getLuckTextTint, getPartyLuckValue, PokemonHeldItemModifierType, -} from "#app/modifier/modifier-type"; -import { getModifierType } from "./utils/modifier-utils"; -import { modifierTypes } from "./data/data-lists"; -import { getModifierPoolForType } from "./utils/modifier-utils"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import AbilityBar from "#app/ui/ability-bar"; -import { applyAbAttrs } from "./data/abilities/apply-ab-attrs"; -import { allAbilities } from "./data/data-lists"; -import type { FixedBattleConfig } from "#app/battle"; -import Battle from "#app/battle"; -import { BattleType } from "#enums/battle-type"; -import type { GameMode } from "#app/game-mode"; -import { getGameMode } from "#app/game-mode"; -import { GameModes } from "#enums/game-modes"; -import FieldSpritePipeline from "#app/pipelines/field-sprite"; -import SpritePipeline from "#app/pipelines/sprite"; -import PartyExpBar from "#app/ui/party-exp-bar"; -import type { TrainerSlot } from "./enums/trainer-slot"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import Trainer from "#app/field/trainer"; -import { TrainerVariant } from "#enums/trainer-variant"; -import type TrainerData from "#app/system/trainer-data"; -import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import PokeballTray from "#app/ui/pokeball-tray"; -import InvertPostFX from "#app/pipelines/invert"; -import type { Achv } from "#app/system/achv"; -import { achvs, ModifierAchv, MoneyAchv } from "#app/system/achv"; -import type { Voucher } from "#app/system/voucher"; -import { vouchers } from "#app/system/voucher"; -import { Gender } from "#app/data/gender"; -import type UIPlugin from "phaser3-rex-plugins/templates/ui/ui-plugin"; -import { addUiThemeOverrides } from "#app/ui/ui-theme"; -import type PokemonData from "#app/system/pokemon-data"; -import { Nature } from "#enums/nature"; -import type { SpeciesFormChange } from "#app/data/pokemon-forms"; -import type { SpeciesFormChangeTrigger } from "./data/pokemon-forms/form-change-triggers"; -import { pokemonFormChanges } from "#app/data/pokemon-forms"; -import { SpeciesFormChangeTimeOfDayTrigger } from "./data/pokemon-forms/form-change-triggers"; -import { SpeciesFormChangeManualTrigger } from "./data/pokemon-forms/form-change-triggers"; -import { FormChangeItem } from "#enums/form-change-item"; -import { getTypeRgb } from "#app/data/type"; -import { PokemonType } from "#enums/pokemon-type"; -import PokemonSpriteSparkleHandler from "#app/field/pokemon-sprite-sparkle-handler"; -import CharSprite from "#app/ui/char-sprite"; -import DamageNumberHandler from "#app/field/damage-number-handler"; -import PokemonInfoContainer from "#app/ui/pokemon-info-container"; -import { biomeDepths, getBiomeName } from "#app/data/balance/biomes"; -import { SceneBase } from "#app/scene-base"; -import CandyBar from "#app/ui/candy-bar"; -import type { Variant } from "#app/sprites/variant"; -import { variantData, clearVariantData } from "#app/sprites/variant"; -import type { Localizable } from "#app/@types/locales"; -import Overrides from "#app/overrides"; -import { InputsController } from "#app/inputs-controller"; -import { UiInputs } from "#app/ui-inputs"; -import { NewArenaEvent } from "#app/events/battle-scene"; -import { ArenaFlyout } from "#app/ui/arena-flyout"; -import { EaseType } from "#enums/ease-type"; -import { BattleSpec } from "#enums/battle-spec"; -import { BattleStyle } from "#enums/battle-style"; -import { BiomeId } from "#enums/biome-id"; -import type { ExpNotification } from "#enums/exp-notification"; -import { MoneyFormat } from "#enums/money-format"; -import { MoveId } from "#enums/move-id"; -import { PlayerGender } from "#enums/player-gender"; -import { SpeciesId } from "#enums/species-id"; -import { UiTheme } from "#enums/ui-theme"; -import { TimedEventManager } from "#app/timed-event-manager"; -import type { PokemonAnimType } from "#enums/pokemon-anim-type"; -import i18next from "i18next"; -import { TrainerType } from "#enums/trainer-type"; -import { battleSpecDialogue } from "#app/data/dialogue"; -import { LoadingScene } from "#app/loading-scene"; -import type { MovePhase } from "#app/phases/move-phase"; -import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; -import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { allMysteryEncounters, mysteryEncountersByBiome } from "#app/data/mystery-encounters/mystery-encounters"; +} from "#modifiers/modifier-type"; +import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterSaveData } from "#mystery-encounters/mystery-encounter-save-data"; +import { allMysteryEncounters, mysteryEncountersByBiome } from "#mystery-encounters/mystery-encounters"; +import type { MovePhase } from "#phases/move-phase"; +import { expSpriteKeys } from "#sprites/sprite-keys"; +import { hasExpSprite } from "#sprites/sprite-utils"; +import type { Variant } from "#sprites/variant"; +import { clearVariantData, variantData } from "#sprites/variant"; +import type { Achv } from "#system/achv"; +import { achvs, ModifierAchv, MoneyAchv } from "#system/achv"; +import { GameData } from "#system/game-data"; +import { initGameSpeed } from "#system/game-speed"; +import type { PokemonData } from "#system/pokemon-data"; +import { MusicPreference } from "#system/settings"; +import type { TrainerData } from "#system/trainer-data"; +import type { Voucher } from "#system/voucher"; +import { vouchers } from "#system/voucher"; +import { trainerConfigs } from "#trainers/trainer-config"; +import type { HeldModifierConfig } from "#types/held-modifier-config"; +import type { Localizable } from "#types/locales"; +import { AbilityBar } from "#ui/ability-bar"; +import { ArenaFlyout } from "#ui/arena-flyout"; +import { CandyBar } from "#ui/candy-bar"; +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 { UI } from "#ui/ui"; +import { addUiThemeOverrides } from "#ui/ui-theme"; import { - ANTI_VARIANCE_WEIGHT_MODIFIER, - AVERAGE_ENCOUNTERS_PER_RUN_TARGET, - BASE_MYSTERY_ENCOUNTER_SPAWN_WEIGHT, - MYSTERY_ENCOUNTER_SPAWN_MAX_WEIGHT, -} from "./constants"; -import { MysteryEncounterSaveData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import type HeldModifierConfig from "#app/@types/held-modifier-config"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import { ExpGainsSpeed } from "#enums/exp-gains-speed"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters"; -import { StatusEffect } from "#enums/status-effect"; -import { initGlobalScene } from "#app/global-scene"; -import { expSpriteKeys } from "./sprites/sprite-keys"; -import { hasExpSprite } from "./sprites/sprite-utils"; -import { timedEventManager } from "./global-event-manager"; -import { starterColors } from "./global-vars/starter-colors"; -import { startingWave } from "./starting-wave"; -import { PhaseManager } from "./phase-manager"; + BooleanHolder, + type Constructor, + fixedInt, + formatMoney, + getIvsFromId, + isBetween, + isNullOrUndefined, + NumberHolder, + randomString, + randSeedInt, + shiftCharCodes, +} from "#utils/common"; +import { deepMergeSpriteData } from "#utils/data"; +import { getEnumValues } from "#utils/enums"; +import { getModifierPoolForType, getModifierType } from "#utils/modifier-utils"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import i18next from "i18next"; +import Phaser from "phaser"; +import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; +import type UIPlugin from "phaser3-rex-plugins/templates/ui/ui-plugin"; const DEBUG_RNG = false; -const OPP_IVS_OVERRIDE_VALIDATED: number[] = ( - Array.isArray(Overrides.OPP_IVS_OVERRIDE) ? Overrides.OPP_IVS_OVERRIDE : new Array(6).fill(Overrides.OPP_IVS_OVERRIDE) -).map(iv => (Number.isNaN(iv) || iv === null || iv > 31 ? -1 : iv)); - export interface PokeballCounts { [pb: string]: number; } @@ -179,7 +170,7 @@ export interface InfoToggle { isActive(): boolean; } -export default class BattleScene extends SceneBase { +export class BattleScene extends SceneBase { public rexUI: UIPlugin; public inputController: InputsController; public uiInputs: UiInputs; @@ -206,6 +197,7 @@ export default class BattleScene extends SceneBase { public enableMoveInfo = true; public enableRetries = false; public hideIvs = false; + // TODO: Remove all plain numbers in place of enums or `const object` equivalents for clarity /** * Determines the condition for a notification should be shown for Candy Upgrades * - 0 = 'Off' @@ -223,7 +215,7 @@ export default class BattleScene extends SceneBase { public uiTheme: UiTheme = UiTheme.DEFAULT; public windowType = 0; public experimentalSprites = false; - public musicPreference: number = MusicPreference.ALLGENS; + public musicPreference: MusicPreference = MusicPreference.ALLGENS; public moveAnimations = true; public expGainsSpeed: ExpGainsSpeed = ExpGainsSpeed.DEFAULT; public skipSeenDialogues = false; @@ -234,33 +226,18 @@ export default class BattleScene extends SceneBase { * - 2 = Always (automatically skip animation when hatching 2 or more eggs) */ public eggSkipPreference = 0; - /** - * Defines the experience gain display mode. - * - * @remarks - * The `expParty` can have several modes: - * - `0` - Default: The normal experience gain display, nothing changed. - * - `1` - Level Up Notification: Displays the level up in the small frame instead of a message. - * - `2` - Skip: No level up frame nor message. - * - * Modes `1` and `2` are still compatible with stats display, level up, new move, etc. - * @default 0 - Uses the default normal experience gain display. + * Defines the {@linkcode ExpNotification | Experience gain display mode}. + * @defaultValue {@linkcode ExpNotification.DEFAULT} */ - public expParty: ExpNotification = 0; + public expParty: ExpNotification = ExpNotification.DEFAULT; public hpBarSpeed = 0; public fusionPaletteSwaps = true; public enableTouchControls = false; public enableVibration = false; public showBgmBar = true; - - /** - * Determines the selected battle style. - * - 0 = 'Switch' - * - 1 = 'Set' - The option to switch the active pokemon at the start of a battle will not display. - */ - public battleStyle: number = BattleStyle.SWITCH; - + /** Determines the selected battle style. */ + public battleStyle: BattleStyle = BattleStyle.SWITCH; /** * Defines whether or not to show type effectiveness hints * - true: No hints @@ -800,12 +777,14 @@ export default class BattleScene extends SceneBase { // TODO: Add `undefined` to return type /** * Returns an array of PlayerPokemon of length 1 or 2 depending on if in a double battle or not. - * Does not actually check if the pokemon are on the field or not. + * @param active - (Default `false`) Whether to consider only {@linkcode Pokemon.isActive | active} on-field pokemon * @returns array of {@linkcode PlayerPokemon} */ - public getPlayerField(): PlayerPokemon[] { + public getPlayerField(active = false): PlayerPokemon[] { const party = this.getPlayerParty(); - return party.slice(0, Math.min(party.length, this.currentBattle?.double ? 2 : 1)); + return party + .slice(0, Math.min(party.length, this.currentBattle?.double ? 2 : 1)) + .filter(p => !active || p.isActive()); } public getEnemyParty(): EnemyPokemon[] { @@ -836,7 +815,8 @@ export default class BattleScene extends SceneBase { /** * Returns an array of Pokemon on both sides of the battle - player first, then enemy. * Does not actually check if the pokemon are on the field or not, and always has length 4 regardless of battle type. - * @param activeOnly - Whether to consider only active pokemon; default `false` + * @param activeOnly - Whether to consider only active pokemon (as described by {@linkcode Pokemon.isActive()}); default `false`. + * If `true`, will also remove all `null` values from the array. * @returns An array of {@linkcode Pokemon}, as described above. */ public getField(activeOnly = false): Pokemon[] { @@ -849,9 +829,9 @@ export default class BattleScene extends SceneBase { } /** - * Used in doubles battles to redirect moves from one pokemon to another when one faints or is removed from the field - * @param removedPokemon {@linkcode Pokemon} the pokemon that is being removed from the field (flee, faint), moves to be redirected FROM - * @param allyPokemon {@linkcode Pokemon} the pokemon that will have the moves be redirected TO + * Attempt to redirect a move in double battles from a fainted/removed Pokemon to its ally. + * @param removedPokemon - The {@linkcode Pokemon} having been removed from the field. + * @param allyPokemon - The {@linkcode Pokemon} allied with the removed Pokemon; will have moves redirected to it */ redirectPokemonMoves(removedPokemon: Pokemon, allyPokemon: Pokemon): void { // failsafe: if not a double battle just return @@ -877,16 +857,16 @@ export default class BattleScene extends SceneBase { /** * Returns the ModifierBar of this scene, which is declared private and therefore not accessible elsewhere - * @param isEnemy Whether to return the enemy's modifier bar - * @returns {ModifierBar} + * @param isEnemy - Whether to return the enemy modifier bar instead of the player bar; default `false` + * @returns The {@linkcode ModifierBar} for the given side of the field */ - getModifierBar(isEnemy?: boolean): ModifierBar { + getModifierBar(isEnemy = false): ModifierBar { return isEnemy ? this.enemyModifierBar : this.modifierBar; } // store info toggles to be accessible by the ui - addInfoToggle(infoToggle: InfoToggle): void { - this.infoToggles.push(infoToggle); + addInfoToggle(...infoToggles: InfoToggle[]): void { + this.infoToggles.push(...infoToggles); } // return the stored info toggles; used by ui-inputs @@ -934,9 +914,32 @@ export default class BattleScene extends SceneBase { nature, dataSource, ); + if (postProcess) { postProcess(pokemon); } + + if (Overrides.IVS_OVERRIDE === null) { + // do nothing + } else if (Array.isArray(Overrides.IVS_OVERRIDE)) { + if (Overrides.IVS_OVERRIDE.length !== 6) { + throw new Error("The Player IVs override must be an array of length 6 or a number!"); + } + if (Overrides.IVS_OVERRIDE.some(value => !isBetween(value, 0, 31))) { + throw new Error("All IVs in the player IV override must be between 0 and 31!"); + } + pokemon.ivs = Overrides.IVS_OVERRIDE; + } else { + if (!isBetween(Overrides.IVS_OVERRIDE, 0, 31)) { + throw new Error("The Player IV override must be a value between 0 and 31!"); + } + pokemon.ivs = new Array(6).fill(Overrides.IVS_OVERRIDE); + } + + if (Overrides.NATURE_OVERRIDE !== null) { + pokemon.nature = Overrides.NATURE_OVERRIDE; + } + pokemon.init(); return pokemon; } @@ -981,10 +984,25 @@ export default class BattleScene extends SceneBase { postProcess(pokemon); } - for (let i = 0; i < pokemon.ivs.length; i++) { - if (OPP_IVS_OVERRIDE_VALIDATED[i] > -1) { - pokemon.ivs[i] = OPP_IVS_OVERRIDE_VALIDATED[i]; + if (Overrides.ENEMY_IVS_OVERRIDE === null) { + // do nothing + } else if (Array.isArray(Overrides.ENEMY_IVS_OVERRIDE)) { + if (Overrides.ENEMY_IVS_OVERRIDE.length !== 6) { + throw new Error("The Enemy IVs override must be an array of length 6 or a number!"); } + if (Overrides.ENEMY_IVS_OVERRIDE.some(value => !isBetween(value, 0, 31))) { + throw new Error("All IVs in the enemy IV override must be between 0 and 31!"); + } + pokemon.ivs = Overrides.ENEMY_IVS_OVERRIDE; + } else { + if (!isBetween(Overrides.ENEMY_IVS_OVERRIDE, 0, 31)) { + throw new Error("The Enemy IV override must be a value between 0 and 31!"); + } + pokemon.ivs = new Array(6).fill(Overrides.ENEMY_IVS_OVERRIDE); + } + + if (Overrides.ENEMY_NATURE_OVERRIDE !== null) { + pokemon.nature = Overrides.ENEMY_NATURE_OVERRIDE; } pokemon.init(); @@ -1444,10 +1462,12 @@ export default class BattleScene extends SceneBase { if (!waveIndex && lastBattle) { const isNewBiome = this.isNewBiome(lastBattle); + /** Whether to reset and recall pokemon */ const resetArenaState = isNewBiome || [BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER].includes(this.currentBattle.battleType) || this.currentBattle.battleSpec === BattleSpec.FINAL_BOSS; + for (const enemyPokemon of this.getEnemyParty()) { enemyPokemon.destroy(); } @@ -1649,6 +1669,11 @@ export default 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 @@ -1822,7 +1847,7 @@ export default class BattleScene extends SceneBase { } resetSeed(waveIndex?: number): void { - const wave = waveIndex || this.currentBattle?.waveIndex || 0; + const wave = waveIndex ?? this.currentBattle?.waveIndex ?? 0; this.waveSeed = shiftCharCodes(this.seed, wave); Phaser.Math.RND.sow([this.waveSeed]); console.log("Wave Seed:", this.waveSeed, wave); @@ -2147,6 +2172,7 @@ export default class BattleScene extends SceneBase { ), ] : allSpecies.filter(s => s.isCatchable()); + // TODO: should this use `randSeedItem`? return filteredSpecies[randSeedInt(filteredSpecies.length)]; } @@ -2172,6 +2198,7 @@ export default class BattleScene extends SceneBase { } } + // TODO: should this use `randSeedItem`? return biomes[randSeedInt(biomes.length)]; } @@ -2488,6 +2515,10 @@ export default class BattleScene extends SceneBase { return 10.344; case "battle_legendary_zac_zam": //SWSH Zacian & Zamazenta Battle return 11.424; + case "battle_legendary_eternatus_p1": //SWSH Eternatus Battle + return 11.102; + case "battle_legendary_eternatus_p2": //SWSH Eternamax Eternatus Battle + return 0.0; case "battle_legendary_glas_spec": //SWSH Glastrier & Spectrier Battle return 12.503; case "battle_legendary_calyrex": //SWSH Calyrex Battle @@ -3691,6 +3722,7 @@ export default class BattleScene extends SceneBase { console.log("No Mystery Encounters found, falling back to Mysterious Challengers."); return allMysteryEncounters[MysteryEncounterType.MYSTERIOUS_CHALLENGERS]; } + // TODO: should this use `randSeedItem`? encounter = availableEncounters[randSeedInt(availableEncounters.length)]; // New encounter object to not dirty flags encounter = new MysteryEncounter(encounter); diff --git a/src/battle.ts b/src/battle.ts index 038e10f1077..0a6147aa064 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -1,40 +1,37 @@ +import type { GameMode } from "#app/game-mode"; import { globalScene } from "#app/global-scene"; -import type { Command } from "#enums/command"; -import { - randomString, - getEnumValues, - NumberHolder, - randSeedInt, - shiftCharCodes, - randSeedItem, - randInt, - randSeedFloat, -} from "#app/utils/common"; -import Trainer from "./field/trainer"; -import { TrainerVariant } from "#enums/trainer-variant"; -import type { GameMode } from "./game-mode"; -import { MoneyMultiplierModifier, type PokemonHeldItemModifier } from "./modifier/modifier"; -import type { PokeballType } from "#enums/pokeball"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import { SpeciesFormKey } from "#enums/species-form-key"; -import type { EnemyPokemon, PlayerPokemon, TurnMove } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattleSpec } from "#enums/battle-spec"; +import { BattleType } from "#enums/battle-type"; +import { BattlerIndex } from "#enums/battler-index"; +import type { Command } from "#enums/command"; import { MoveId } from "#enums/move-id"; -import { PlayerGender } from "#enums/player-gender"; -import { MusicPreference } from "#app/system/settings/settings"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { PokeballType } from "#enums/pokeball"; +import { SpeciesFormKey } from "#enums/species-form-key"; import { SpeciesId } from "#enums/species-id"; import { TrainerType } from "#enums/trainer-type"; -import i18next from "#app/plugins/i18n"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import type { CustomModifierSettings } from "#app/modifier/modifier-type"; -import { ModifierTier } from "#enums/modifier-tier"; -import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { BattleType } from "#enums/battle-type"; -import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves"; -import { BattlerIndex } from "#enums/battler-index"; +import { TrainerVariant } from "#enums/trainer-variant"; +import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon"; +import { Trainer } from "#field/trainer"; +import { MoneyMultiplierModifier, type PokemonHeldItemModifier } from "#modifiers/modifier"; +import type { CustomModifierSettings } from "#modifiers/modifier-type"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import i18next from "#plugins/i18n"; +import { MusicPreference } from "#system/settings"; +import { trainerConfigs } from "#trainers/trainer-config"; +import type { TurnMove } from "#types/turn-move"; +import { + NumberHolder, + randInt, + randomString, + randSeedFloat, + randSeedInt, + randSeedItem, + shiftCharCodes, +} from "#utils/common"; +import { getEnumValues } from "#utils/enums"; export interface TurnCommand { command: Command; @@ -54,7 +51,7 @@ interface TurnCommands { [key: number]: TurnCommand | null; } -export default class Battle { +export class Battle { protected gameMode: GameMode; public waveIndex: number; public battleType: BattleType; @@ -94,6 +91,12 @@ export default class Battle { /** If the current battle is a Mystery Encounter, this will always be defined */ public mysteryEncounter?: MysteryEncounter; + /** + * Tracker for whether the last run attempt failed. + * @defaultValue `false` + */ + public failedRunAway = false; + private rngCounter = 0; constructor(gameMode: GameMode, waveIndex: number, battleType: BattleType, trainer?: Trainer, double = false) { @@ -375,6 +378,11 @@ export default class Battle { case SpeciesId.ZACIAN: case SpeciesId.ZAMAZENTA: return "battle_legendary_zac_zam"; + case SpeciesId.ETERNATUS: + if (pokemon.getFormKey() === "eternamax") { + return "battle_legendary_eternatus_p2"; + } + return "battle_legendary_eternatus_p1"; case SpeciesId.GLASTRIER: case SpeciesId.SPECTRIER: return "battle_legendary_glas_spec"; @@ -566,369 +574,3 @@ export function getRandomTrainerFunc( return new Trainer(trainerTypes[rand], trainerGender); }; } - -export interface FixedBattleConfigs { - [key: number]: FixedBattleConfig; -} -/** - * Youngster/Lass on 5 - * Rival on 8, 55, 95, 145, 195 - * Evil team grunts on 35, 62, 64, and 112 - * Evil team admin on 66 and 114 - * Evil leader on 115, 165 - * E4 on 182, 184, 186, 188 - * Champion on 190 - */ -export const classicFixedBattles: FixedBattleConfigs = { - [ClassicFixedBossWaves.TOWN_YOUNGSTER]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setGetTrainerFunc( - () => new Trainer(TrainerType.YOUNGSTER, randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT), - ), - [ClassicFixedBossWaves.RIVAL_1]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setGetTrainerFunc( - () => - new Trainer( - TrainerType.RIVAL, - globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, - ), - ), - [ClassicFixedBossWaves.RIVAL_2]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setGetTrainerFunc( - () => - new Trainer( - TrainerType.RIVAL_2, - globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, - ), - ) - .setCustomModifierRewards({ - guaranteedModifierTiers: [ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT], - allowLuckUpgrades: false, - }), - [ClassicFixedBossWaves.EVIL_GRUNT_1]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setGetTrainerFunc( - getRandomTrainerFunc( - [ - TrainerType.ROCKET_GRUNT, - TrainerType.MAGMA_GRUNT, - TrainerType.AQUA_GRUNT, - TrainerType.GALACTIC_GRUNT, - TrainerType.PLASMA_GRUNT, - TrainerType.FLARE_GRUNT, - TrainerType.AETHER_GRUNT, - TrainerType.SKULL_GRUNT, - TrainerType.MACRO_GRUNT, - TrainerType.STAR_GRUNT, - ], - true, - ), - ), - [ClassicFixedBossWaves.RIVAL_3]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setGetTrainerFunc( - () => - new Trainer( - TrainerType.RIVAL_3, - globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, - ), - ) - .setCustomModifierRewards({ - guaranteedModifierTiers: [ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT], - allowLuckUpgrades: false, - }), - [ClassicFixedBossWaves.EVIL_GRUNT_2]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) - .setGetTrainerFunc( - getRandomTrainerFunc( - [ - TrainerType.ROCKET_GRUNT, - TrainerType.MAGMA_GRUNT, - TrainerType.AQUA_GRUNT, - TrainerType.GALACTIC_GRUNT, - TrainerType.PLASMA_GRUNT, - TrainerType.FLARE_GRUNT, - TrainerType.AETHER_GRUNT, - TrainerType.SKULL_GRUNT, - TrainerType.MACRO_GRUNT, - TrainerType.STAR_GRUNT, - ], - true, - ), - ), - [ClassicFixedBossWaves.EVIL_GRUNT_3]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) - .setGetTrainerFunc( - getRandomTrainerFunc( - [ - TrainerType.ROCKET_GRUNT, - TrainerType.MAGMA_GRUNT, - TrainerType.AQUA_GRUNT, - TrainerType.GALACTIC_GRUNT, - TrainerType.PLASMA_GRUNT, - TrainerType.FLARE_GRUNT, - TrainerType.AETHER_GRUNT, - TrainerType.SKULL_GRUNT, - TrainerType.MACRO_GRUNT, - TrainerType.STAR_GRUNT, - ], - true, - ), - ), - [ClassicFixedBossWaves.EVIL_ADMIN_1]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) - .setGetTrainerFunc( - getRandomTrainerFunc( - [ - [TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL], - [TrainerType.TABITHA, TrainerType.COURTNEY], - [TrainerType.MATT, TrainerType.SHELLY], - [TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN], - [TrainerType.ZINZOLIN, TrainerType.COLRESS], - [TrainerType.XEROSIC, TrainerType.BRYONY], - TrainerType.FABA, - TrainerType.PLUMERIA, - TrainerType.OLEANA, - [TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI], - ], - true, - ), - ), - [ClassicFixedBossWaves.RIVAL_4]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setGetTrainerFunc( - () => - new Trainer( - TrainerType.RIVAL_4, - globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, - ), - ) - .setCustomModifierRewards({ - guaranteedModifierTiers: [ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA], - allowLuckUpgrades: false, - }), - [ClassicFixedBossWaves.EVIL_GRUNT_4]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) - .setGetTrainerFunc( - getRandomTrainerFunc( - [ - TrainerType.ROCKET_GRUNT, - TrainerType.MAGMA_GRUNT, - TrainerType.AQUA_GRUNT, - TrainerType.GALACTIC_GRUNT, - TrainerType.PLASMA_GRUNT, - TrainerType.FLARE_GRUNT, - TrainerType.AETHER_GRUNT, - TrainerType.SKULL_GRUNT, - TrainerType.MACRO_GRUNT, - TrainerType.STAR_GRUNT, - ], - true, - ), - ), - [ClassicFixedBossWaves.EVIL_ADMIN_2]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) - .setGetTrainerFunc( - getRandomTrainerFunc( - [ - [TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL], - [TrainerType.TABITHA, TrainerType.COURTNEY], - [TrainerType.MATT, TrainerType.SHELLY], - [TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN], - [TrainerType.ZINZOLIN, TrainerType.COLRESS], - [TrainerType.XEROSIC, TrainerType.BRYONY], - TrainerType.FABA, - TrainerType.PLUMERIA, - TrainerType.OLEANA, - [TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI], - ], - true, - 1, - ), - ), - [ClassicFixedBossWaves.EVIL_BOSS_1]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) - .setGetTrainerFunc( - getRandomTrainerFunc([ - TrainerType.ROCKET_BOSS_GIOVANNI_1, - TrainerType.MAXIE, - TrainerType.ARCHIE, - TrainerType.CYRUS, - TrainerType.GHETSIS, - TrainerType.LYSANDRE, - TrainerType.LUSAMINE, - TrainerType.GUZMA, - TrainerType.ROSE, - TrainerType.PENNY, - ]), - ) - .setCustomModifierRewards({ - guaranteedModifierTiers: [ - ModifierTier.ROGUE, - ModifierTier.ROGUE, - ModifierTier.ULTRA, - ModifierTier.ULTRA, - ModifierTier.ULTRA, - ], - allowLuckUpgrades: false, - }), - [ClassicFixedBossWaves.RIVAL_5]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setGetTrainerFunc( - () => - new Trainer( - TrainerType.RIVAL_5, - globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, - ), - ) - .setCustomModifierRewards({ - guaranteedModifierTiers: [ - ModifierTier.ROGUE, - ModifierTier.ROGUE, - ModifierTier.ROGUE, - ModifierTier.ULTRA, - ModifierTier.ULTRA, - ], - allowLuckUpgrades: false, - }), - [ClassicFixedBossWaves.EVIL_BOSS_2]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) - .setGetTrainerFunc( - getRandomTrainerFunc([ - TrainerType.ROCKET_BOSS_GIOVANNI_2, - TrainerType.MAXIE_2, - TrainerType.ARCHIE_2, - TrainerType.CYRUS_2, - TrainerType.GHETSIS_2, - TrainerType.LYSANDRE_2, - TrainerType.LUSAMINE_2, - TrainerType.GUZMA_2, - TrainerType.ROSE_2, - TrainerType.PENNY_2, - ]), - ) - .setCustomModifierRewards({ - guaranteedModifierTiers: [ - ModifierTier.ROGUE, - ModifierTier.ROGUE, - ModifierTier.ULTRA, - ModifierTier.ULTRA, - ModifierTier.ULTRA, - ModifierTier.ULTRA, - ], - allowLuckUpgrades: false, - }), - [ClassicFixedBossWaves.ELITE_FOUR_1]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setGetTrainerFunc( - getRandomTrainerFunc([ - TrainerType.LORELEI, - TrainerType.WILL, - TrainerType.SIDNEY, - TrainerType.AARON, - TrainerType.SHAUNTAL, - TrainerType.MALVA, - [TrainerType.HALA, TrainerType.MOLAYNE], - TrainerType.MARNIE_ELITE, - TrainerType.RIKA, - TrainerType.CRISPIN, - ]), - ), - [ClassicFixedBossWaves.ELITE_FOUR_2]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) - .setGetTrainerFunc( - getRandomTrainerFunc([ - TrainerType.BRUNO, - TrainerType.KOGA, - TrainerType.PHOEBE, - TrainerType.BERTHA, - TrainerType.MARSHAL, - TrainerType.SIEBOLD, - TrainerType.OLIVIA, - TrainerType.NESSA_ELITE, - TrainerType.POPPY, - TrainerType.AMARYS, - ]), - ), - [ClassicFixedBossWaves.ELITE_FOUR_3]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) - .setGetTrainerFunc( - getRandomTrainerFunc([ - TrainerType.AGATHA, - TrainerType.BRUNO, - TrainerType.GLACIA, - TrainerType.FLINT, - TrainerType.GRIMSLEY, - TrainerType.WIKSTROM, - TrainerType.ACEROLA, - [TrainerType.BEA_ELITE, TrainerType.ALLISTER_ELITE], - TrainerType.LARRY_ELITE, - TrainerType.LACEY, - ]), - ), - [ClassicFixedBossWaves.ELITE_FOUR_4]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) - .setGetTrainerFunc( - getRandomTrainerFunc([ - TrainerType.LANCE, - TrainerType.KAREN, - TrainerType.DRAKE, - TrainerType.LUCIAN, - TrainerType.CAITLIN, - TrainerType.DRASNA, - TrainerType.KAHILI, - TrainerType.RAIHAN_ELITE, - TrainerType.HASSEL, - TrainerType.DRAYTON, - ]), - ), - [ClassicFixedBossWaves.CHAMPION]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) - .setGetTrainerFunc( - getRandomTrainerFunc([ - TrainerType.BLUE, - [TrainerType.RED, TrainerType.LANCE_CHAMPION], - [TrainerType.STEVEN, TrainerType.WALLACE], - TrainerType.CYNTHIA, - [TrainerType.ALDER, TrainerType.IRIS], - TrainerType.DIANTHA, - [TrainerType.KUKUI, TrainerType.HAU], - [TrainerType.LEON, TrainerType.MUSTARD], - [TrainerType.GEETA, TrainerType.NEMONA], - TrainerType.KIERAN, - ]), - ), - [ClassicFixedBossWaves.RIVAL_6]: new FixedBattleConfig() - .setBattleType(BattleType.TRAINER) - .setGetTrainerFunc( - () => - new Trainer( - TrainerType.RIVAL_6, - globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, - ), - ) - .setCustomModifierRewards({ - guaranteedModifierTiers: [ - ModifierTier.ROGUE, - ModifierTier.ROGUE, - ModifierTier.ULTRA, - ModifierTier.ULTRA, - ModifierTier.GREAT, - ModifierTier.GREAT, - ], - allowLuckUpgrades: false, - }), -}; diff --git a/src/configs/inputs/cfg_keyboard_qwerty.ts b/src/configs/inputs/cfg-keyboard-qwerty.ts similarity index 99% rename from src/configs/inputs/cfg_keyboard_qwerty.ts rename to src/configs/inputs/cfg-keyboard-qwerty.ts index 4f0353971e0..bca4f828d34 100644 --- a/src/configs/inputs/cfg_keyboard_qwerty.ts +++ b/src/configs/inputs/cfg-keyboard-qwerty.ts @@ -1,5 +1,5 @@ import { Button } from "#enums/buttons"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; +import { SettingKeyboard } from "#system/settings-keyboard"; const cfg_keyboard_qwerty = { padID: "default", 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 97% rename from src/configs/inputs/pad_dualshock.ts rename to src/configs/inputs/pad-dualshock.ts index 51af1b2defd..100baa5efad 100644 --- a/src/configs/inputs/pad_dualshock.ts +++ b/src/configs/inputs/pad-dualshock.ts @@ -1,5 +1,5 @@ -import { SettingGamepad } from "../../system/settings/settings-gamepad"; import { Button } from "#enums/buttons"; +import { SettingGamepad } from "#system/settings-gamepad"; /** * Dualshock mapping diff --git a/src/configs/inputs/pad_generic.ts b/src/configs/inputs/pad-generic.ts similarity index 97% rename from src/configs/inputs/pad_generic.ts rename to src/configs/inputs/pad-generic.ts index e47b7ce1ace..fc70f55fc7a 100644 --- a/src/configs/inputs/pad_generic.ts +++ b/src/configs/inputs/pad-generic.ts @@ -1,5 +1,5 @@ -import { SettingGamepad } from "../../system/settings/settings-gamepad"; import { Button } from "#enums/buttons"; +import { SettingGamepad } from "#system/settings-gamepad"; /** * Generic pad mapping diff --git a/src/configs/inputs/pad_procon.ts b/src/configs/inputs/pad-procon.ts similarity index 97% rename from src/configs/inputs/pad_procon.ts rename to src/configs/inputs/pad-procon.ts index 61558c7365e..5667db01a85 100644 --- a/src/configs/inputs/pad_procon.ts +++ b/src/configs/inputs/pad-procon.ts @@ -1,5 +1,5 @@ -import { SettingGamepad } from "#app/system/settings/settings-gamepad"; import { Button } from "#enums/buttons"; +import { SettingGamepad } from "#system/settings-gamepad"; /** * Nintendo Pro Controller mapping diff --git a/src/configs/inputs/pad_unlicensedSNES.ts b/src/configs/inputs/pad-unlicensed-snes.ts similarity index 96% rename from src/configs/inputs/pad_unlicensedSNES.ts rename to src/configs/inputs/pad-unlicensed-snes.ts index d0c4f41c8f5..7d5dc055507 100644 --- a/src/configs/inputs/pad_unlicensedSNES.ts +++ b/src/configs/inputs/pad-unlicensed-snes.ts @@ -1,5 +1,5 @@ -import { SettingGamepad } from "../../system/settings/settings-gamepad"; import { Button } from "#enums/buttons"; +import { SettingGamepad } from "#system/settings-gamepad"; /** * 081f-e401 - UnlicensedSNES diff --git a/src/configs/inputs/pad_xbox360.ts b/src/configs/inputs/pad-xbox360.ts similarity index 97% rename from src/configs/inputs/pad_xbox360.ts rename to src/configs/inputs/pad-xbox360.ts index 60cbd9ab181..7c719e77446 100644 --- a/src/configs/inputs/pad_xbox360.ts +++ b/src/configs/inputs/pad-xbox360.ts @@ -1,5 +1,5 @@ -import { SettingGamepad } from "../../system/settings/settings-gamepad"; import { Button } from "#enums/buttons"; +import { SettingGamepad } from "#system/settings-gamepad"; /** * Generic pad mapping diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 5e7e1c2992a..62d6974d3a2 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -1,92 +1,80 @@ -import { MoveResult } from "#enums/move-result"; -import { HitResult } from "#enums/hit-result"; -import { - BooleanHolder, - NumberHolder, - toDmgValue, - isNullOrUndefined, - randSeedItem, - randSeedInt, - randSeedFloat, - coerceArray, -} from "#app/utils/common"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { GroundedTag } from "#app/data/battler-tags"; -import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; -import { - getNonVolatileStatusEffects, - getStatusEffectDescriptor, - getStatusEffectHealText, -} from "#app/data/status-effect"; -import { Gender } from "#app/data/gender"; -import { applyMoveAttrs } from "../moves/apply-attrs"; -import { allMoves } from "../data-lists"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { TerrainType } from "#app/data/terrain"; -import { pokemonFormChanges } from "../pokemon-forms"; -import { - SpeciesFormChangeWeatherTrigger, - SpeciesFormChangeAbilityTrigger, -} from "../pokemon-forms/form-change-triggers"; -import i18next from "i18next"; -import { Command } from "#enums/command"; -import { BerryModifierType } from "#app/modifier/modifier-type"; -import { getPokeballName } from "#app/data/pokeball"; -import { BattleType } from "#enums/battle-type"; +/* biome-ignore-start lint/correctness/noUnusedImports: tsdoc imports */ +import type { BattleScene } from "#app/battle-scene"; +import type { SpeciesFormChangeRevertWeatherFormTrigger } from "#data/form-change-triggers"; +/* biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */ + +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { allAbilities } from "#app/data/data-lists"; - -// Enum imports -import { Stat, BATTLE_STATS, EFFECTIVE_STATS, getStatKey } from "#enums/stat"; -import { PokemonType } from "#enums/pokemon-type"; -import { PokemonAnimType } from "#enums/pokemon-anim-type"; -import { StatusEffect } from "#enums/status-effect"; -import { WeatherType } from "#enums/weather-type"; +import { getPokemonNameWithAffix } from "#app/messages"; +import type { ArenaTrapTag, SuppressAbilitiesTag } from "#data/arena-tag"; +import type { BattlerTag } from "#data/battler-tags"; +import { GroundedTag } from "#data/battler-tags"; +import { getBerryEffectFunc } from "#data/berry"; +import { allAbilities, allMoves } from "#data/data-lists"; +import { SpeciesFormChangeAbilityTrigger, SpeciesFormChangeWeatherTrigger } from "#data/form-change-triggers"; +import { Gender } from "#data/gender"; +import { getPokeballName } from "#data/pokeball"; +import { pokemonFormChanges } from "#data/pokemon-forms"; +import { getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "#data/status-effect"; +import { TerrainType } from "#data/terrain"; +import type { Weather } from "#data/weather"; import { AbilityId } from "#enums/ability-id"; +import { ArenaTagSide } from "#enums/arena-tag-side"; import { ArenaTagType } from "#enums/arena-tag-type"; +import { BattleType } from "#enums/battle-type"; +import { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { SwitchType } from "#enums/switch-type"; -import { MoveFlags } from "#enums/MoveFlags"; -import { MoveTarget } from "#enums/MoveTarget"; -import { MoveCategory } from "#enums/MoveCategory"; -import { CommonAnim } from "#enums/move-anims-common"; -import { getBerryEffectFunc } from "#app/data/berry"; -import { BerryUsedEvent } from "#app/events/battle-scene"; -import { noAbilityTypeOverrideMoves } from "#app/data/moves/invalid-moves"; -import { MoveUseMode } from "#enums/move-use-mode"; - -// Type imports -import type { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; -import type { BattleStat, EffectiveStat } from "#enums/stat"; import type { BerryType } from "#enums/berry-type"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import type { PokemonMove } from "../moves/pokemon-move"; -import type Pokemon from "#app/field/pokemon"; -import type { Weather } from "#app/data/weather"; -import type { BattlerTag } from "#app/data/battler-tags"; +import { Command } from "#enums/command"; +import { HitResult } from "#enums/hit-result"; +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"; +import { SpeciesId } from "#enums/species-id"; +import type { BattleStat, EffectiveStat } from "#enums/stat"; +import { BATTLE_STATS, EFFECTIVE_STATS, getStatKey, Stat } from "#enums/stat"; +import { StatusEffect } from "#enums/status-effect"; +import { SwitchType } from "#enums/switch-type"; +import { WeatherType } from "#enums/weather-type"; +import { BerryUsedEvent } from "#events/battle-scene"; +import type { EnemyPokemon, Pokemon } from "#field/pokemon"; +import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "#modifiers/modifier"; +import { BerryModifierType } from "#modifiers/modifier-type"; +import { applyMoveAttrs } from "#moves/apply-attrs"; +import { noAbilityTypeOverrideMoves } from "#moves/invalid-moves"; +import type { Move } from "#moves/move"; +import type { PokemonMove } from "#moves/pokemon-move"; +import type { StatStageChangePhase } from "#phases/stat-stage-change-phase"; import type { AbAttrCondition, + AbAttrMap, + AbAttrString, + PokemonAttackCondition, PokemonDefendCondition, PokemonStatStageChangeCondition, - PokemonAttackCondition, - AbAttrString, - AbAttrMap, -} from "#app/@types/ability-types"; -import type { BattlerIndex } from "#enums/battler-index"; -import type Move from "#app/data/moves/move"; -import type { ArenaTrapTag, SuppressAbilitiesTag } from "#app/data/arena-tag"; -import type { Constructor } from "#app/utils/common"; -import type { Localizable } from "#app/@types/locales"; -import { applyAbAttrs } from "./apply-ab-attrs"; -import type { Closed, Exact } from "#app/@types/type-helpers"; +} from "#types/ability-types"; +import type { Localizable } from "#types/locales"; +import type { Closed, Exact } from "#types/type-helpers"; +import type { Constructor } from "#utils/common"; +import { + BooleanHolder, + coerceArray, + isNullOrUndefined, + NumberHolder, + randSeedFloat, + randSeedInt, + randSeedItem, + toDmgValue, +} from "#utils/common"; +import i18next from "i18next"; -// biome-ignore-start lint/correctness/noUnusedImports: Used in TSDoc -import type BattleScene from "#app/battle-scene"; -import type { SpeciesFormChangeRevertWeatherFormTrigger } from "../pokemon-forms/form-change-triggers"; -// biome-ignore-end lint/correctness/noUnusedImports: Used in TSDoc export class Ability implements Localizable { public id: AbilityId; @@ -157,76 +145,141 @@ export class Ability implements Localizable { return this.attrs.some(attr => attr instanceof targetAttr); } - attr>(AttrType: T, ...args: ConstructorParameters): Ability { + /** + * Create a new {@linkcode AbAttr} instance and add it to this {@linkcode Ability}. + * @param attrType - The constructor of the {@linkcode AbAttr} to create. + * @param args - The arguments needed to instantiate the given class. + * @returns `this` + */ + attr>(AttrType: T, ...args: ConstructorParameters): this { const attr = new AttrType(...args); this.attrs.push(attr); return this; } + /** + * Create a new {@linkcode AbAttr} instance with the given condition and add it to this {@linkcode Ability}. + * Checked before all other conditions, and is unique to the individual {@linkcode AbAttr} being created. + * @param condition - The {@linkcode AbAttrCondition} to add. + * @param attrType - The constructor of the {@linkcode AbAttr} to create. + * @param args - The arguments needed to instantiate the given class. + * @returns `this` + */ conditionalAttr>( condition: AbAttrCondition, - AttrType: T, + attrType: T, ...args: ConstructorParameters - ): Ability { - const attr = new AttrType(...args); + ): this { + const attr = new attrType(...args); attr.addCondition(condition); this.attrs.push(attr); return this; } - bypassFaint(): Ability { + /** + * Make this ability trigger even if the user faints. + * @returns `this` + * @remarks + * This is also required for abilities to trigger when revived via Reviver Seed. + */ + bypassFaint(): this { this.isBypassFaint = true; return this; } - ignorable(): Ability { + /** + * Make this ability ignorable by effects like {@linkcode MoveId.SUNSTEEL_STRIKE | Sunsteel Strike} or {@linkcode AbilityId.MOLD_BREAKER | Mold Breaker}. + * @returns `this` + */ + ignorable(): this { this.isIgnorable = true; return this; } - unsuppressable(): Ability { + /** + * Make this ability unsuppressable by effects like {@linkcode MoveId.GASTRO_ACID | Gastro Acid} or {@linkcode AbilityId.NEUTRALIZING_GAS | Neutralizing Gas}. + * @returns `this` + */ + unsuppressable(): this { this.isSuppressable = false; return this; } - uncopiable(): Ability { + /** + * Make this ability uncopiable by effects like {@linkcode MoveId.ROLE_PLAY | Role Play} or {@linkcode AbilityId.TRACE | Trace}. + * @returns `this` + */ + uncopiable(): this { this.isCopiable = false; return this; } - unreplaceable(): Ability { + /** + * Make this ability unreplaceable by effects like {@linkcode MoveId.SIMPLE_BEAM | Simple Beam} or {@linkcode MoveId.ENTRAINMENT | Entrainment}. + * @returns `this` + */ + unreplaceable(): this { this.isReplaceable = false; return this; } - condition(condition: AbAttrCondition): Ability { + /** + * Add a condition for this ability to be applied. + * Applies to **all** attributes of the given ability. + * @param condition - The {@linkcode AbAttrCondition} to add + * @returns `this` + * @see {@linkcode AbAttr.canApply} for setting conditions per attribute type + * @see {@linkcode conditionalAttr} for setting individual conditions per attribute instance + * @todo Review if this is necessary anymore - this is used extremely sparingly + */ + condition(condition: AbAttrCondition): this { this.conditions.push(condition); return this; } + /** + * Mark an ability as partially implemented. + * Partial abilities are expected to have some of their core functionality implemented, but may lack + * certain notable features or interactions with other moves or abilities. + * @returns `this` + */ partial(): this { this.nameAppend += " (P)"; return this; } + /** + * Mark an ability as unimplemented. + * Unimplemented abilities are ones which have _none_ of their basic functionality enabled. + * @returns `this` + */ unimplemented(): this { this.nameAppend += " (N)"; return this; } /** - * Internal flag used for developers to document edge cases. When using this, please be sure to document the edge case. - * @returns the ability + * Mark an ability as having one or more edge cases. + * It may lack certain niche interactions with other moves/abilities, but still functions + * as intended in most cases. + * Does not show up in game and is solely for internal dev use. + * + * When using this, make sure to **document the edge case** (or else this becomes pointless). + * @returns `this` */ edgeCase(): this { return this; } } -/** Base set of parameters passed to every ability attribute's apply method */ +/** + * Base set of parameters passed to every ability attribute's {@linkcode AbAttr.apply | apply} method. + * + * Extended by sub-classes to contain additional parameters pertaining to the ability type(s) being triggered. + */ export interface AbAttrBaseParams { /** The pokemon that has the ability being applied */ readonly pokemon: Pokemon; @@ -257,9 +310,20 @@ export interface AbAttrParamsWithCancel extends AbAttrBaseParams { readonly cancelled: BooleanHolder; } +/** + * Abstract class for all ability attributes. + * + * Each {@linkcode Ability} may have any number of individual attributes, each functioning independently from one another. + */ export abstract class AbAttr { - public showAbility: boolean; - private extraCondition: AbAttrCondition; + /** + * Whether to show this ability as a flyout when applying its effects. + * Should be kept in parity with mainline where possible. + * @defaultValue `true` + */ + public showAbility = true; + /** The additional condition associated with this AbAttr, if any. */ + private extraCondition?: AbAttrCondition; /** * Return whether this attribute is of the given type. @@ -287,21 +351,43 @@ export abstract class AbAttr { } /** - * Apply ability effects without checking conditions. - * **Never call this method directly, use {@linkcode applyAbAttrs} instead.** + * Apply this attribute's effects without checking conditions. + * + * @remarks + * **Never call this method directly!** \ + * Use {@linkcode applyAbAttrs} instead. */ apply(_params: AbAttrBaseParams): void {} - // The `Exact` in the next two signatures enforces that the type of the _params operand - // is always compatible with the type of apply. This allows fewer fields, but never a type with more. + /** + * Return the trigger message to show when this attribute is executed. + * @param _params - The parameters passed to this attribute's {@linkcode apply} function; must match type exactly + * @param _abilityName - The name of the current ability. + * @privateRemarks + * If more fields are provided than needed, any excess can be discarded using destructuring. + * @todo Remove `null` from signature in lieu of using an empty string + */ getTriggerMessage(_params: Exact[0]>, _abilityName: string): string | null { return null; } + /** + * Check whether this attribute can have its effects successfully applied. + * Applies to **all** instances of the given attribute. + * @param _params - The parameters passed to this attribute's {@linkcode apply} function; must match type exactly + * @privateRemarks + * If more fields are provided than needed, any excess can be discarded using destructuring. + */ canApply(_params: Exact[0]>): boolean { return true; } + /** + * Return the additional condition associated with this particular AbAttr instance, if any. + * @returns The extra condition for this {@linkcode AbAttr}, or `null` if none exist + * @todo Make this use `undefined` instead of `null` + * @todo Prevent this from being overridden by sub-classes + */ getCondition(): AbAttrCondition | null { return this.extraCondition || null; } @@ -605,7 +691,7 @@ export class TypeImmunityAbAttr extends PreDefendAbAttr { private immuneType: PokemonType | null; private condition: AbAttrCondition | null; - // TODO: `immuneType` shouldn't be able to be `null` + // TODO: Change `NonSuperEffectiveImmunityAbAttr` to not pass `null` as immune type constructor(immuneType: PokemonType | null, condition?: AbAttrCondition) { super(true); @@ -1194,7 +1280,16 @@ export class PostDefendContactApplyTagChanceAbAttr extends PostDefendAbAttr { } } -export class PostDefendCritStatStageChangeAbAttr extends PostDefendAbAttr { +/** + * Set stat stages when the user gets hit by a critical hit + * + * @privateremarks + * It is the responsibility of the caller to ensure that this ability attribute is only applied + * when the user has been hit by a critical hit; such an event is not checked here. + * + * @sealed + */ +export class PostReceiveCritStatStageChangeAbAttr extends AbAttr { private stat: BattleStat; private stages: number; @@ -1216,12 +1311,6 @@ export class PostDefendCritStatStageChangeAbAttr extends PostDefendAbAttr { ); } } - - override getCondition(): AbAttrCondition { - return (pokemon: Pokemon) => - pokemon.turnData.attacksReceived.length !== 0 && - pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1].critical; - } } export class PostDefendContactDamageAbAttr extends PostDefendAbAttr { @@ -1535,6 +1624,11 @@ export interface FieldMultiplyStatAbAttrParams extends AbAttrBaseParams { export class FieldMultiplyStatAbAttr extends AbAttr { private stat: Stat; private multiplier: number; + /** + * Whether this ability can stack with others of the same type for this stat. + * @defaultValue `false` + * @todo Remove due to being literally useless - the ruin abilities are hardcoded to never stack in game + */ private canStack: boolean; constructor(stat: Stat, multiplier: number, canStack = false) { @@ -1555,7 +1649,7 @@ export class FieldMultiplyStatAbAttr extends AbAttr { } /** - * applyFieldStat: Tries to multiply a Pokemon's Stat + * Atttempt to multiply a Pokemon's Stat. */ apply({ statVal, hasApplied }: FieldMultiplyStatAbAttrParams): void { statVal.value *= this.multiplier; @@ -1581,23 +1675,25 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr { } /** - * Determine if the move type change attribute can be applied + * Determine if the move type change attribute can be applied. * * Can be applied if: * - The ability's condition is met, e.g. pixilate only boosts normal moves, * - The move is not forbidden from having its type changed by an ability, e.g. {@linkcode MoveId.MULTI_ATTACK} - * - The user is not terastallized and using tera blast - * - The user is not a terastallized terapagos with tera stellar using tera starstorm + * - The user is not Terastallized and using Tera Blast + * - The user is not a Terastallized Terapagos using Stellar-type Tera Starstorm */ override canApply({ pokemon, opponent: target, move }: MoveTypeChangeAbAttrParams): boolean { return ( (!this.condition || this.condition(pokemon, target, move)) && !noAbilityTypeOverrideMoves.has(move.id) && - (!pokemon.isTerastallized || - (move.id !== MoveId.TERA_BLAST && - (move.id !== MoveId.TERA_STARSTORM || - pokemon.getTeraType() !== PokemonType.STELLAR || - !pokemon.hasSpecies(SpeciesId.TERAPAGOS)))) + !( + pokemon.isTerastallized && + (move.id === MoveId.TERA_BLAST || + (move.id === MoveId.TERA_STARSTORM && + pokemon.getTeraType() === PokemonType.STELLAR && + pokemon.hasSpecies(SpeciesId.TERAPAGOS))) + ) ); } @@ -1607,37 +1703,38 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr { } } -/** Ability attribute for changing a pokemon's type before using a move */ +/** + * Attribute to change the user's type to that of the move currently being executed. + * Used by {@linkcode AbilityId.PROTEAN} and {@linkcode AbilityId.LIBERO}. + */ export class PokemonTypeChangeAbAttr extends PreAttackAbAttr { - private moveType: PokemonType; - + private moveType: PokemonType = PokemonType.UNKNOWN; constructor() { super(true); } override canApply({ move, pokemon }: AugmentMoveInteractionAbAttrParams): boolean { if ( - !pokemon.isTerastallized && - move.id !== MoveId.STRUGGLE && - /** + pokemon.isTerastallized || + move.id === MoveId.STRUGGLE || + /* * Skip moves that call other moves because these moves generate a following move that will trigger this ability attribute - * @see {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_call_other_moves} + * See: https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_call_other_moves */ - !move.findAttr( - attr => - attr.is("RandomMovesetMoveAttr") || - attr.is("RandomMoveAttr") || - attr.is("NaturePowerAttr") || - attr.is("CopyMoveAttr"), - ) + move.hasAttr("CallMoveAttr") || + move.hasAttr("NaturePowerAttr") // TODO: remove this line when nature power is made to extend from `CallMoveAttr` ) { - const moveType = pokemon.getMoveType(move); - if (pokemon.getTypes().some(t => t !== moveType)) { - this.moveType = moveType; - return true; - } + return false; } - return false; + + // Skip changing type if we're already of the given type as-is + const moveType = pokemon.getMoveType(move); + if (pokemon.getTypes().every(t => t === moveType)) { + return false; + } + + this.moveType = moveType; + return true; } override apply({ simulated, pokemon, move }: AugmentMoveInteractionAbAttrParams): void { @@ -1669,23 +1766,19 @@ export interface AddSecondStrikeAbAttrParams extends Omit): boolean { return this.attackCondition(pokemon, opponent, move); @@ -3047,61 +3141,40 @@ export class PostSummonCopyAllyStatsAbAttr extends PostSummonAbAttr { * Attribute used by {@linkcode AbilityId.IMPOSTER} to transform into a random opposing pokemon on entry. */ export class PostSummonTransformAbAttr extends PostSummonAbAttr { + private targetIndex: BattlerIndex = BattlerIndex.ATTACKER; constructor() { super(true, false); } - private getTarget(targets: Pokemon[]): Pokemon { - let target: Pokemon = targets[0]; - if (targets.length > 1) { - globalScene.executeWithSeedOffset(() => { - // in a double battle, if one of the opposing pokemon is fused the other one will be chosen - // if both are fused, then Imposter will fail below - if (targets[0].fusionSpecies) { - target = targets[1]; - return; - } - if (targets[1].fusionSpecies) { - target = targets[0]; - return; - } - target = randSeedItem(targets); - }, globalScene.currentBattle.waveIndex); - } else { - target = targets[0]; + /** + * Return the correct opponent for Imposter to copy, barring enemies with fusions, substitutes and illusions. + * @param user - The {@linkcode Pokemon} with this ability. + * @returns The {@linkcode Pokemon} to transform into, or `undefined` if none are eligible. + * @remarks + * This sets the private `targetIndex` field to the target's {@linkcode BattlerIndex} on success. + */ + private getTarget(user: Pokemon): Pokemon | undefined { + // As opposed to the mainline behavior of "always copy the opposite slot", + // PKR Imposter instead attempts to copy a random eligible opposing Pokemon meeting Transform's criteria. + // If none are eligible to copy, it will not activate. + const targets = user.getOpponents().filter(opp => user.canTransformInto(opp)); + if (targets.length === 0) { + return undefined; } - target = target!; - - return target; + const mon = targets[user.randBattleSeedInt(targets.length)]; + this.targetIndex = mon.getBattlerIndex(); + return mon; } - override canApply({ pokemon, simulated }: AbAttrBaseParams): boolean { - const targets = pokemon.getOpponents(); - const target = this.getTarget(targets); + override canApply({ pokemon }: AbAttrBaseParams): boolean { + const target = this.getTarget(pokemon); - if (target.summonData.illusion) { - return false; - } - - // TODO: Consider moving the simulated check to the apply method - if (simulated || !targets.length) { - return !!simulated; - } - - // transforming from or into fusion pokemon causes various problems (including crashes and save corruption) - return !(this.getTarget(targets).fusionSpecies || pokemon.fusionSpecies); + return !!target; } override apply({ pokemon }: AbAttrBaseParams): void { - const target = this.getTarget(pokemon.getOpponents()); - - globalScene.phaseManager.unshiftNew( - "PokemonTransformPhase", - pokemon.getBattlerIndex(), - target.getBattlerIndex(), - true, - ); + globalScene.phaseManager.unshiftNew("PokemonTransformPhase", pokemon.getBattlerIndex(), this.targetIndex, true); } } @@ -3164,7 +3237,7 @@ export class PostSummonFormChangeByWeatherAbAttr extends PostSummonAbAttr { /** * Attribute implementing the effects of {@link https://bulbapedia.bulbagarden.net/wiki/Commander_(Ability) | Commander}. * When the source of an ability with this attribute detects a Dondozo as their active ally, the source "jumps - * into the Dondozo's mouth," sharply boosting the Dondozo's stats, cancelling the source's moves, and + * into the Dondozo's mouth", sharply boosting the Dondozo's stats, cancelling the source's moves, and * causing attacks that target the source to always miss. */ export class CommanderAbAttr extends AbAttr { @@ -3540,18 +3613,18 @@ export interface ConfusionOnStatusEffectAbAttrParams extends AbAttrBaseParams { */ export class ConfusionOnStatusEffectAbAttr extends AbAttr { /** List of effects to apply confusion after */ - private effects: StatusEffect[]; + private effects: ReadonlySet; constructor(...effects: StatusEffect[]) { super(); - this.effects = effects; + this.effects = new Set(effects); } /** * @returns Whether the ability can apply confusion to the opponent */ override canApply({ opponent, effect }: ConfusionOnStatusEffectAbAttrParams): boolean { - return this.effects.includes(effect) && !opponent.isFainted() && opponent.canAddTag(BattlerTagType.CONFUSED); + return this.effects.has(effect) && !opponent.isFainted() && opponent.canAddTag(BattlerTagType.CONFUSED); } /** @@ -4529,8 +4602,8 @@ export class PostTurnStatusHealAbAttr extends PostTurnAbAttr { } /** - * After the turn ends, resets the status of either the ability holder or their ally - * @param allyTarget Whether to target ally, defaults to false (self-target) + * After the turn ends, resets the status of either the user or their ally. + * @param allyTarget Whether to target the user's ally; default `false` (self-target) * * @sealed */ @@ -4815,17 +4888,22 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { !opp.switchOutStatus, ); } - /** Deals damage to all sleeping opponents equal to 1/8 of their max hp (min 1) */ + + /** Deal damage to all sleeping, on-field opponents equal to 1/8 of their max hp (min 1). */ override apply({ pokemon, simulated }: AbAttrBaseParams): void { if (simulated) { return; } + for (const opp of pokemon.getOpponents()) { - if ( - (opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(AbilityId.COMATOSE)) && - !opp.hasAbilityWithAttr("BlockNonDirectDamageAbAttr") && - !opp.switchOutStatus - ) { + if ((opp.status?.effect !== StatusEffect.SLEEP && !opp.hasAbility(AbilityId.COMATOSE)) || opp.switchOutStatus) { + continue; + } + + const cancelled = new BooleanHolder(false); + applyAbAttrs("BlockNonDirectDamageAbAttr", { pokemon, simulated, cancelled }); + + if (!cancelled.value) { opp.damageAndUpdate(toDmgValue(opp.getMaxHp() / 8), { result: HitResult.INDIRECT }); globalScene.phaseManager.queueMessage( i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) }), @@ -4838,7 +4916,8 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { /** * Grabs the last failed Pokeball used * @sealed - * @see {@linkcode applyPostTurn} */ + * @see {@linkcode applyPostTurn} + */ export class FetchBallAbAttr extends PostTurnAbAttr { override canApply({ simulated, pokemon }: AbAttrBaseParams): boolean { return !simulated && !isNullOrUndefined(globalScene.currentBattle.lastUsedPokeball) && !!pokemon.isPlayer; @@ -5294,14 +5373,15 @@ export class PostBattleLootAbAttr extends PostBattleAbAttr { } /** - * Shared parameters for ability attributes that are triggered after the user faints. + * Shared parameters for ability attributes that trigger after the user faints. */ export interface PostFaintAbAttrParams extends AbAttrBaseParams { - /** The pokemon that caused the faint, or undefined if not caused by a pokemon */ + /** The pokemon that caused the user to faint, or `undefined` if not caused by a Pokemon */ readonly attacker?: Pokemon; - /** The move that caused the faint, or undefined if not caused by a move */ + /** The move that caused the user to faint, or `undefined` if not caused by a move */ readonly move?: Move; - /** The result of the hit that caused the faint */ + /** The result of the hit that caused the user to faint */ + // TODO: Do we need this? It's unused by all classes readonly hitResult?: HitResult; } @@ -5334,6 +5414,26 @@ export class PostFaintUnsuppressedWeatherFormChangeAbAttr extends PostFaintAbAtt } } +export class PostFaintFormChangeAbAttr extends PostFaintAbAttr { + private formFunc: (p: Pokemon) => number; + + constructor(formFunc: (p: Pokemon) => number) { + super(true); + + this.formFunc = formFunc; + } + + override canApply({ pokemon }: AbAttrBaseParams): boolean { + return this.formFunc(pokemon) !== pokemon.formIndex; + } + + override apply({ pokemon, simulated }: AbAttrBaseParams): void { + if (!simulated) { + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); + } + } +} + export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { private damageRatio: number; @@ -5344,28 +5444,35 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { } override canApply({ pokemon, attacker, move, simulated }: PostFaintAbAttrParams): boolean { - if (!move || !attacker) { + if ( + move === undefined || + attacker === undefined || + !move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }) + ) { return false; } - const diedToDirectDamage = - attacker !== undefined && - move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }); + const cancelled = new BooleanHolder(false); - for (const otherPokemon of globalScene.getField(true)) { - applyAbAttrs("FieldPreventExplosiveMovesAbAttr", { - pokemon: otherPokemon, - simulated, - cancelled, - }); + // TODO: This should be in speed order + globalScene + .getField(true) + .forEach(p => applyAbAttrs("FieldPreventExplosiveMovesAbAttr", { pokemon: p, cancelled, simulated })); + + if (cancelled.value) { + return false; } - return !(!diedToDirectDamage || cancelled.value || attacker.hasAbilityWithAttr("BlockNonDirectDamageAbAttr")); + + // Confirmed: Aftermath does not activate or show text vs Magic Guard killers + applyAbAttrs("BlockNonDirectDamageAbAttr", { pokemon: attacker, cancelled }); + return !cancelled.value; } override apply({ simulated, attacker }: PostFaintAbAttrParams): void { if (!attacker || simulated) { return; } - attacker.damageAndUpdate(toDmgValue(attacker!.getMaxHp() * (1 / this.damageRatio)), { + + attacker.damageAndUpdate(toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), { result: HitResult.INDIRECT, }); attacker.turnData.damageTaken += toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)); @@ -5380,20 +5487,33 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { } /** - * Attribute used for abilities (Innards Out) that damage the opponent based on how much HP the last attack used to knock out the owner of the ability. + * Attribute used for abilities that damage opponents causing the user to faint + * equal to the amount of damage the last attack inflicted. + * + * Used for {@linkcode Abilities.INNARDS_OUT}. * @sealed */ export class PostFaintHPDamageAbAttr extends PostFaintAbAttr { override apply({ simulated, pokemon, move, attacker }: PostFaintAbAttrParams): void { - //If the mon didn't die to indirect damage - if (move !== undefined && attacker !== undefined && !simulated) { - const damage = pokemon.turnData.attacksReceived[0].damage; - attacker.damageAndUpdate(damage, { result: HitResult.INDIRECT }); - attacker.turnData.damageTaken += damage; + // return early if the user died to indirect damage, target has magic guard or was KO'd by an ally + if (!move || !attacker || simulated || attacker.getAlly() === pokemon) { + return; } + + const cancelled = new BooleanHolder(false); + applyAbAttrs("BlockNonDirectDamageAbAttr", { pokemon: attacker, cancelled }); + if (cancelled.value) { + return; + } + + const damage = pokemon.turnData.attacksReceived[0].damage; + attacker.damageAndUpdate(damage, { result: HitResult.INDIRECT }); + attacker.turnData.damageTaken += damage; } - getTriggerMessage({ pokemon }: PostFaintAbAttrParams, abilityName: string): string { + // Oddly, Innards Out still shows a flyout if the effect was blocked due to Magic Guard... + // TODO: Verify on cart + override getTriggerMessage({ pokemon }: PostFaintAbAttrParams, abilityName: string): string { return i18next.t("abilityTriggers:postFaintHpDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName, @@ -5669,11 +5789,13 @@ export class InfiltratorAbAttr extends AbAttr { * Allows the source to bounce back {@linkcode MoveFlags.REFLECTABLE | Reflectable} * moves as if the user had used {@linkcode MoveId.MAGIC_COAT | Magic Coat}. * @sealed + * @todo Make reflection a part of this ability's effects */ export class ReflectStatusMoveAbAttr extends AbAttr { private declare readonly _: never; } +// TODO: Make these ability attributes be flags instead of dummy attributes /** @sealed */ export class NoTransformAbilityAbAttr extends AbAttr { private declare readonly _: never; @@ -6417,7 +6539,7 @@ const AbilityAttrs = Object.freeze({ PostDefendContactApplyStatusEffectAbAttr, EffectSporeAbAttr, PostDefendContactApplyTagChanceAbAttr, - PostDefendCritStatStageChangeAbAttr, + PostReceiveCritStatStageChangeAbAttr, PostDefendContactDamageAbAttr, PostDefendPerishSongAbAttr, PostDefendWeatherChangeAbAttr, @@ -6886,7 +7008,7 @@ export function initAbilities() { new Ability(AbilityId.GLUTTONY, 4) .attr(ReduceBerryUseThresholdAbAttr), new Ability(AbilityId.ANGER_POINT, 4) - .attr(PostDefendCritStatStageChangeAbAttr, Stat.ATK, 6), + .attr(PostReceiveCritStatStageChangeAbAttr, Stat.ATK, 12), new Ability(AbilityId.UNBURDEN, 4) .attr(PostItemLostApplyBattlerTagAbAttr, BattlerTagType.UNBURDEN) .bypassFaint() // Allows reviver seed to activate Unburden @@ -7101,7 +7223,8 @@ export function initAbilities() { .bypassFaint(), new Ability(AbilityId.IMPOSTER, 5) .attr(PostSummonTransformAbAttr) - .uncopiable(), + .uncopiable() + .edgeCase(), // Should copy rage fist hit count, etc (see Transform edge case for full list) new Ability(AbilityId.INFILTRATOR, 5) .attr(InfiltratorAbAttr) .partial(), // does not bypass Mist @@ -7177,8 +7300,10 @@ export function initAbilities() { new Ability(AbilityId.CHEEK_POUCH, 6) .attr(HealFromBerryUseAbAttr, 1 / 3), new Ability(AbilityId.PROTEAN, 6) - .attr(PokemonTypeChangeAbAttr), - //.condition((p) => !p.summonData.abilitiesApplied.includes(AbilityId.PROTEAN)), //Gen 9 Implementation + .attr(PokemonTypeChangeAbAttr) + // .condition((p) => !p.summonData.abilitiesApplied.includes(Abilities.PROTEAN)) //Gen 9 Implementation + // TODO: needs testing on interaction with weather blockage + .edgeCase(), new Ability(AbilityId.FUR_COAT, 6) .attr(ReceivedMoveDamageMultiplierAbAttr, (_target, _user, move) => move.category === MoveCategory.PHYSICAL, 0.5) .ignorable(), @@ -7263,11 +7388,14 @@ export function initAbilities() { new Ability(AbilityId.MERCILESS, 7) .attr(ConditionalCritAbAttr, (_user, target, _move) => target?.status?.effect === StatusEffect.TOXIC || target?.status?.effect === StatusEffect.POISON), new Ability(AbilityId.SHIELDS_DOWN, 7, -1) - .attr(PostBattleInitFormChangeAbAttr, () => 0) + // Change into Meteor Form on switch-in or turn end if HP >= 50%, + // or Core Form if HP <= 50%. + .attr(PostBattleInitFormChangeAbAttr, p => p.formIndex % 7) .attr(PostSummonFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0)) .attr(PostTurnFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0)) - .conditionalAttr(p => p.formIndex !== 7, StatusEffectImmunityAbAttr) - .conditionalAttr(p => p.formIndex !== 7, BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) + // All variants of Meteor Form are immune to status effects & Yawn + .conditionalAttr(p => p.formIndex < 7, StatusEffectImmunityAbAttr) + .conditionalAttr(p => p.formIndex < 7, BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) .attr(NoFusionAbilityAbAttr) .attr(NoTransformAbilityAbAttr) .uncopiable() @@ -7319,6 +7447,7 @@ export function initAbilities() { (pokemon, abilityName) => i18next.t("abilityTriggers:disguiseAvoidedDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName: abilityName }), (pokemon) => toDmgValue(pokemon.getMaxHp() / 8)) .attr(PostBattleInitFormChangeAbAttr, () => 0) + .attr(PostFaintFormChangeAbAttr, () => 0) .uncopiable() .unreplaceable() .unsuppressable() @@ -7327,18 +7456,19 @@ export function initAbilities() { new Ability(AbilityId.BATTLE_BOND, 7) .attr(PostVictoryFormChangeAbAttr, () => 2) .attr(PostBattleInitFormChangeAbAttr, () => 1) + .attr(PostFaintFormChangeAbAttr, () => 1) .attr(NoFusionAbilityAbAttr) .uncopiable() .unreplaceable() .unsuppressable() .bypassFaint(), new Ability(AbilityId.POWER_CONSTRUCT, 7) - .conditionalAttr(pokemon => pokemon.formIndex === 2 || pokemon.formIndex === 4, PostBattleInitFormChangeAbAttr, () => 2) - .conditionalAttr(pokemon => pokemon.formIndex === 3 || pokemon.formIndex === 5, PostBattleInitFormChangeAbAttr, () => 3) - .conditionalAttr(pokemon => pokemon.formIndex === 2 || pokemon.formIndex === 4, PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 || p.getFormKey() === "complete" ? 4 : 2) - .conditionalAttr(pokemon => pokemon.formIndex === 2 || pokemon.formIndex === 4, PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 || p.getFormKey() === "complete" ? 4 : 2) - .conditionalAttr(pokemon => pokemon.formIndex === 3 || pokemon.formIndex === 5, PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 || p.getFormKey() === "10-complete" ? 5 : 3) - .conditionalAttr(pokemon => pokemon.formIndex === 3 || pokemon.formIndex === 5, PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 || p.getFormKey() === "10-complete" ? 5 : 3) + // Change to 10% complete or 50% complete on switchout/turn end if at <50% HP; + // revert to 10% PC or 50% PC before a new battle starts + .conditionalAttr(p => p.formIndex === 4 || p.formIndex === 5, PostBattleInitFormChangeAbAttr, p => p.formIndex - 2) + .conditionalAttr(p => p.getHpRatio() <= 0.5 && (p.formIndex === 2 || p.formIndex === 3), PostSummonFormChangeAbAttr, p => p.formIndex + 2) + .conditionalAttr(p => p.getHpRatio() <= 0.5 && (p.formIndex === 2 || p.formIndex === 3), PostTurnFormChangeAbAttr, p => p.formIndex + 2) + .conditionalAttr(p => p.formIndex === 4 || p.formIndex === 5, PostFaintFormChangeAbAttr, p => p.formIndex - 2) .attr(NoFusionAbilityAbAttr) .uncopiable() .unreplaceable() @@ -7429,8 +7559,10 @@ export function initAbilities() { new Ability(AbilityId.DAUNTLESS_SHIELD, 8) .attr(PostSummonStatStageChangeAbAttr, [ Stat.DEF ], 1, true), new Ability(AbilityId.LIBERO, 8) - .attr(PokemonTypeChangeAbAttr), - //.condition((p) => !p.summonData.abilitiesApplied.includes(AbilityId.LIBERO)), //Gen 9 Implementation + .attr(PokemonTypeChangeAbAttr) + //.condition((p) => !p.summonData.abilitiesApplied.includes(Abilities.LIBERO)), //Gen 9 Implementation + // TODO: needs testing on interaction with weather blockage + .edgeCase(), new Ability(AbilityId.BALL_FETCH, 8) .attr(FetchBallAbAttr) .condition(getOncePerBattleCondition(AbilityId.BALL_FETCH)), diff --git a/src/data/abilities/apply-ab-attrs.ts b/src/data/abilities/apply-ab-attrs.ts index 1571d64d170..58f63c5924a 100644 --- a/src/data/abilities/apply-ab-attrs.ts +++ b/src/data/abilities/apply-ab-attrs.ts @@ -1,6 +1,5 @@ -import type { AbAttrParamMap } from "#app/@types/ability-types"; -import type { AbAttrBaseParams, AbAttrString, CallableAbAttrString } from "#app/@types/ability-types"; import { globalScene } from "#app/global-scene"; +import type { AbAttrBaseParams, AbAttrParamMap, AbAttrString, CallableAbAttrString } from "#types/ability-types"; function applySingleAbAttrs( attrType: T, @@ -9,23 +8,18 @@ function applySingleAbAttrs( messages: string[] = [], ) { const { simulated = false, passive = false, pokemon } = params; - if (!pokemon?.canApplyAbility(passive) || (passive && pokemon.getPassiveAbility().id === pokemon.getAbility().id)) { + if (!pokemon.canApplyAbility(passive) || (passive && pokemon.getPassiveAbility().id === pokemon.getAbility().id)) { return; } const ability = passive ? pokemon.getPassiveAbility() : pokemon.getAbility(); - if ( - gainedMidTurn && - ability.getAttrs(attrType).some(attr => { - attr.is("PostSummonAbAttr") && !attr.shouldActivateOnGain(); - }) - ) { + const attrs = ability.getAttrs(attrType); + if (gainedMidTurn && attrs.some(attr => attr.is("PostSummonAbAttr") && !attr.shouldActivateOnGain())) { return; } - for (const attr of ability.getAttrs(attrType)) { + for (const attr of attrs) { const condition = attr.getCondition(); - let abShown = false; // We require an `as any` cast to suppress an error about the `params` type not being assignable to // the type of the argument expected by `attr.canApply()`. This is OK, because we know that // `attr` is an instance of the `attrType` class provided to the method, and typescript _will_ check @@ -34,7 +28,7 @@ function applySingleAbAttrs( continue; } - globalScene.phaseManager.setPhaseQueueSplice(); + let abShown = false; if (attr.showAbility && !simulated) { globalScene.phaseManager.queueAbilityDisplay(pokemon, passive, true); @@ -46,6 +40,7 @@ function applySingleAbAttrs( if (!simulated) { globalScene.phaseManager.queueMessage(message); } + // TODO: Should messages be added to the array if they aren't actually shown? messages.push(message); } // The `as any` cast here uses the same reasoning as above. @@ -58,8 +53,6 @@ function applySingleAbAttrs( if (!simulated) { pokemon.waveData.abilitiesApplied.add(ability.id); } - - globalScene.phaseManager.clearPhaseQueueSplice(); } } diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 48fdebd745f..2c4c8a04282 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -1,35 +1,106 @@ +import { applyAbAttrs, applyOnGainAbAttrs, applyOnLoseAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import type { Arena } from "#app/field/arena"; -import { PokemonType } from "#enums/pokemon-type"; -import { BooleanHolder, NumberHolder, toDmgValue } from "#app/utils/common"; -import { allMoves } from "./data-lists"; -import { MoveTarget } from "#enums/MoveTarget"; -import { MoveCategory } from "#enums/MoveCategory"; import { getPokemonNameWithAffix } from "#app/messages"; -import type Pokemon from "#app/field/pokemon"; -import { HitResult } from "#enums/hit-result"; -import { StatusEffect } from "#enums/status-effect"; -import type { BattlerIndex } from "#enums/battler-index"; -import { applyAbAttrs, applyOnGainAbAttrs, applyOnLoseAbAttrs } from "./abilities/apply-ab-attrs"; -import { Stat } from "#enums/stat"; -import { CommonBattleAnim } from "#app/data/battle-anims"; -import { CommonAnim } from "#enums/move-anims-common"; -import i18next from "i18next"; +import { CommonBattleAnim } from "#data/battle-anims"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { ArenaTagType } from "#enums/arena-tag-type"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { MoveId } from "#enums/move-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 { CommonAnim } from "#enums/move-anims-common"; +import { MoveCategory } from "#enums/move-category"; +import { MoveId } from "#enums/move-id"; +import { MoveTarget } from "#enums/move-target"; import { MoveUseMode } from "#enums/move-use-mode"; +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 { BooleanHolder, isNullOrUndefined, NumberHolder, toDmgValue } from "#utils/common"; +import i18next from "i18next"; -export abstract class ArenaTag { - constructor( - public tagType: ArenaTagType, - public turnCount: number, - public sourceMove?: MoveId, - public sourceId?: number, - public side: ArenaTagSide = ArenaTagSide.BOTH, - ) {} +/* +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. +*/ + +/** Interface containing the serializable fields of ArenaTagData. */ +interface BaseArenaTag { + /** + * The tag's remaining duration. Setting to any number `<=0` will make the tag's duration effectively infinite. + */ + 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 {@linkcode Pokemon} having created the tag, or `undefined` if not set by a Pokemon. + * @todo Implement handling for `ArenaTag`s created by non-pokemon sources (most tags will throw errors without a source) + */ + // Note: Intentionally not using `?`, as the property should always exist, but just be undefined if not present. + sourceId: number | undefined; + /** + * The {@linkcode ArenaTagSide | side of the field} that this arena tag affects. + * @defaultValue `ArenaTagSide.BOTH` + */ + side: ArenaTagSide; +} + +/** + * An {@linkcode ArenaTag} represents a semi-persistent effect affecting a given _side_ of the field. + * Unlike {@linkcode BattlerTag}s (which are tied to individual {@linkcode Pokemon}), `ArenaTag`s function independently of + * the Pokemon currently on-field, only cleared on arena reset or through their respective {@linkcode ArenaTag.lapse | lapse} methods. + */ +export abstract class ArenaTag implements BaseArenaTag { + /** The type of the arena tag */ + public abstract readonly tagType: ArenaTagType; + public turnCount: number; + public sourceMove?: MoveId; + public sourceId: number | undefined; + public side: ArenaTagSide; + + constructor(turnCount: number, sourceMove?: MoveId, sourceId?: number, side: ArenaTagSide = ArenaTagSide.BOTH) { + this.turnCount = turnCount; + this.sourceMove = sourceMove; + this.sourceId = sourceId; + this.side = side; + } apply(_arena: Arena, _simulated: boolean, ..._args: unknown[]): boolean { return true; @@ -50,8 +121,17 @@ export abstract class ArenaTag { onOverlap(_arena: Arena, _source: Pokemon | null): void {} + /** + * Trigger this {@linkcode ArenaTag}'s effect, reducing its duration as applicable. + * Will ignore durations of all tags with durations `<=0`. + * @param _arena - The {@linkcode Arena} at the moment the tag is being lapsed. + * Unused by default but can be used by sub-classes. + * @returns `true` if this tag should be kept; `false` if it should be removed. + */ lapse(_arena: Arena): boolean { - return this.turnCount < 1 || !!--this.turnCount; + // TODO: Rather than treating negative duration tags as being indefinite, + // make all duration based classes inherit from their own sub-class + return this.turnCount < 1 || --this.turnCount > 0; } getMoveName(): string | null { @@ -61,9 +141,9 @@ export abstract class ArenaTag { /** * 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 {ArenaTag | any} source An arena tag + * @param source - The {@linkcode BaseArenaTag} being loaded */ - loadTag(source: ArenaTag | any): void { + loadTag(source: BaseArenaTag): void { this.turnCount = source.turnCount; this.sourceMove = source.sourceMove; this.sourceId = source.sourceId; @@ -96,13 +176,21 @@ export abstract class ArenaTag { } } +/** + * Abstract class for arena tags that can persist across turns. + */ +export abstract class SerializableArenaTag extends ArenaTag { + abstract readonly tagType: SerializableArenaTagType; +} + /** * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Mist_(move) Mist}. * Prevents Pokémon on the opposing side from lowering the stats of the Pokémon in the Mist. */ -export class MistTag extends ArenaTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.MIST, turnCount, MoveId.MIST, sourceId, side); +export class MistTag extends SerializableArenaTag { + readonly tagType = ArenaTagType.MIST; + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.MIST, sourceId, side); } onAdd(arena: Arena, quiet = false): void { @@ -159,33 +247,11 @@ export class MistTag extends ArenaTag { /** * Reduces the damage of specific move categories in the arena. - * @extends ArenaTag */ -export class WeakenMoveScreenTag extends ArenaTag { - protected weakenedCategories: MoveCategory[]; - - /** - * Creates a new instance of the WeakenMoveScreenTag class. - * - * @param tagType - The type of the arena tag. - * @param turnCount - The number of turns the tag is active. - * @param sourceMove - The move that created the tag. - * @param sourceId - The ID of the source of the tag. - * @param side - The side (player or enemy) the tag affects. - * @param weakenedCategories - The categories of moves that are weakened by this tag. - */ - constructor( - tagType: ArenaTagType, - turnCount: number, - sourceMove: MoveId, - sourceId: number, - side: ArenaTagSide, - weakenedCategories: MoveCategory[], - ) { - super(tagType, turnCount, sourceMove, sourceId, side); - - this.weakenedCategories = weakenedCategories; - } +export abstract class WeakenMoveScreenTag extends SerializableArenaTag { + public abstract readonly tagType: ArenaScreenTagType; + // Getter to avoid unnecessary serialization and prevent modification + protected abstract get weakenedCategories(): MoveCategory[]; /** * Applies the weakening effect to the move. @@ -222,8 +288,13 @@ export class WeakenMoveScreenTag extends ArenaTag { * Used by {@linkcode MoveId.REFLECT} */ class ReflectTag extends WeakenMoveScreenTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.REFLECT, turnCount, MoveId.REFLECT, sourceId, side, [MoveCategory.PHYSICAL]); + public readonly tagType = ArenaTagType.REFLECT; + protected get weakenedCategories(): [MoveCategory.PHYSICAL] { + return [MoveCategory.PHYSICAL]; + } + + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.REFLECT, sourceId, side); } onAdd(_arena: Arena, quiet = false): void { @@ -242,8 +313,12 @@ class ReflectTag extends WeakenMoveScreenTag { * Used by {@linkcode MoveId.LIGHT_SCREEN} */ class LightScreenTag extends WeakenMoveScreenTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.LIGHT_SCREEN, turnCount, MoveId.LIGHT_SCREEN, sourceId, side, [MoveCategory.SPECIAL]); + public readonly tagType = ArenaTagType.LIGHT_SCREEN; + protected get weakenedCategories(): [MoveCategory.SPECIAL] { + return [MoveCategory.SPECIAL]; + } + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.LIGHT_SCREEN, sourceId, side); } onAdd(_arena: Arena, quiet = false): void { @@ -262,11 +337,13 @@ class LightScreenTag extends WeakenMoveScreenTag { * Used by {@linkcode MoveId.AURORA_VEIL} */ class AuroraVeilTag extends WeakenMoveScreenTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.AURORA_VEIL, turnCount, MoveId.AURORA_VEIL, sourceId, side, [ - MoveCategory.SPECIAL, - MoveCategory.PHYSICAL, - ]); + public readonly tagType = ArenaTagType.AURORA_VEIL; + protected get weakenedCategories(): [MoveCategory.PHYSICAL, MoveCategory.SPECIAL] { + return [MoveCategory.PHYSICAL, MoveCategory.SPECIAL]; + } + + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.AURORA_VEIL, sourceId, side); } onAdd(_arena: Arena, quiet = false): void { @@ -286,21 +363,23 @@ type ProtectConditionFunc = (arena: Arena, moveId: MoveId) => boolean; * Class to implement conditional team protection * applies protection based on the attributes of incoming moves */ -export class ConditionalProtectTag extends ArenaTag { +export abstract class ConditionalProtectTag extends ArenaTag { /** The condition function to determine which moves are negated */ protected protectConditionFunc: ProtectConditionFunc; - /** Does this apply to all moves, including those that ignore other forms of protection? */ + /** + * Whether this protection effect should apply to _all_ moves, including ones that ignore other forms of protection. + * @defaultValue `false` + */ protected ignoresBypass: boolean; constructor( - tagType: ArenaTagType, sourceMove: MoveId, - sourceId: number, + sourceId: number | undefined, side: ArenaTagSide, condition: ProtectConditionFunc, ignoresBypass = false, ) { - super(tagType, 1, sourceMove, sourceId, side); + super(1, sourceMove, sourceId, side); this.protectConditionFunc = condition; this.ignoresBypass = ignoresBypass; @@ -386,8 +465,9 @@ const QuickGuardConditionFunc: ProtectConditionFunc = (_arena, moveId) => { * Condition: The incoming move has increased priority. */ class QuickGuardTag extends ConditionalProtectTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.QUICK_GUARD, MoveId.QUICK_GUARD, sourceId, side, QuickGuardConditionFunc); + public readonly tagType = ArenaTagType.QUICK_GUARD; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.QUICK_GUARD, sourceId, side, QuickGuardConditionFunc); } } @@ -417,8 +497,9 @@ const WideGuardConditionFunc: ProtectConditionFunc = (_arena, moveId): boolean = * can be an ally or enemy. */ class WideGuardTag extends ConditionalProtectTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.WIDE_GUARD, MoveId.WIDE_GUARD, sourceId, side, WideGuardConditionFunc); + public readonly tagType = ArenaTagType.WIDE_GUARD; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.WIDE_GUARD, sourceId, side, WideGuardConditionFunc); } } @@ -439,8 +520,9 @@ const MatBlockConditionFunc: ProtectConditionFunc = (_arena, moveId): boolean => * Condition: The incoming move is a Physical or Special attack move. */ class MatBlockTag extends ConditionalProtectTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.MAT_BLOCK, MoveId.MAT_BLOCK, sourceId, side, MatBlockConditionFunc); + public readonly tagType = ArenaTagType.MAT_BLOCK; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.MAT_BLOCK, sourceId, side, MatBlockConditionFunc); } onAdd(_arena: Arena) { @@ -483,8 +565,9 @@ const CraftyShieldConditionFunc: ProtectConditionFunc = (_arena, moveId) => { * not target all Pokemon or sides of the field. */ class CraftyShieldTag extends ConditionalProtectTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.CRAFTY_SHIELD, MoveId.CRAFTY_SHIELD, sourceId, side, CraftyShieldConditionFunc, true); + public readonly tagType = ArenaTagType.CRAFTY_SHIELD; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.CRAFTY_SHIELD, sourceId, side, CraftyShieldConditionFunc, true); } } @@ -492,17 +575,8 @@ class CraftyShieldTag extends ConditionalProtectTag { * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Lucky_Chant_(move) Lucky Chant}. * Prevents critical hits against the tag's side. */ -export class NoCritTag extends ArenaTag { - /** - * Constructor method for the NoCritTag class - * @param turnCount `number` the number of turns this effect lasts - * @param sourceMove {@linkcode MoveId} the move that created this effect - * @param sourceId `number` the ID of the {@linkcode Pokemon} that created this effect - * @param side {@linkcode ArenaTagSide} the side to which this effect belongs - */ - constructor(turnCount: number, sourceMove: MoveId, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.NO_CRIT, turnCount, sourceMove, sourceId, side); - } +export class NoCritTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.NO_CRIT; /** Queues a message upon adding this effect to the field */ onAdd(_arena: Arena): void { @@ -534,13 +608,17 @@ export class NoCritTag extends ArenaTag { * 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 ArenaTag { - private battlerIndex: BattlerIndex; - private triggerMessage: string; - private healHp: number; +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 - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.WISH, turnCount, MoveId.WISH, sourceId, side); + public readonly tagType = ArenaTagType.WISH; + + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.WISH, sourceId, side); } onAdd(_arena: Arena): void { @@ -550,45 +628,38 @@ class WishTag extends ArenaTag { return; } - super.onAdd(_arena); - this.healHp = toDmgValue(source.getMaxHp() / 2); - - globalScene.phaseManager.queueMessage( - i18next.t("arenaTag:wishTagOnAdd", { - pokemonNameWithAffix: getPokemonNameWithAffix(source), - }), - ); + (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(this.triggerMessage); + 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. */ -export class WeakenMoveTypeTag extends ArenaTag { - private weakenedType: PokemonType; - - /** - * Creates a new instance of the WeakenMoveTypeTag class. - * - * @param tagType - The type of the arena tag. - * @param turnCount - The number of turns the tag is active. - * @param type - The type being weakened from this tag. - * @param sourceMove - The move that created the tag. - * @param sourceId - The ID of the source of the tag. - */ - constructor(tagType: ArenaTagType, turnCount: number, type: PokemonType, sourceMove: MoveId, sourceId: number) { - super(tagType, turnCount, sourceMove, sourceId); - - this.weakenedType = type; - } +export abstract class WeakenMoveTypeTag extends SerializableArenaTag { + abstract readonly tagType: ArenaTagType.MUD_SPORT | ArenaTagType.WATER_SPORT; + abstract get weakenedType(): PokemonType; /** * Reduces an attack's power by 0.33x if it matches this tag's weakened type. @@ -612,8 +683,12 @@ export class WeakenMoveTypeTag extends ArenaTag { * Weakens Electric type moves for a set amount of turns, usually 5. */ class MudSportTag extends WeakenMoveTypeTag { - constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.MUD_SPORT, turnCount, PokemonType.ELECTRIC, MoveId.MUD_SPORT, sourceId); + public readonly tagType = ArenaTagType.MUD_SPORT; + override get weakenedType(): PokemonType.ELECTRIC { + return PokemonType.ELECTRIC; + } + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.MUD_SPORT, sourceId); } onAdd(_arena: Arena): void { @@ -630,8 +705,12 @@ class MudSportTag extends WeakenMoveTypeTag { * Weakens Fire type moves for a set amount of turns, usually 5. */ class WaterSportTag extends WeakenMoveTypeTag { - constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.WATER_SPORT, turnCount, PokemonType.FIRE, MoveId.WATER_SPORT, sourceId); + public readonly tagType = ArenaTagType.WATER_SPORT; + override get weakenedType(): PokemonType.FIRE { + return PokemonType.FIRE; + } + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.WATER_SPORT, sourceId); } onAdd(_arena: Arena): void { @@ -649,8 +728,9 @@ class WaterSportTag extends WeakenMoveTypeTag { * Converts Normal-type moves to Electric type for the rest of the turn. */ export class IonDelugeTag extends ArenaTag { + public readonly tagType = ArenaTagType.ION_DELUGE; constructor(sourceMove?: MoveId) { - super(ArenaTagType.ION_DELUGE, 1, sourceMove); + super(1, sourceMove); } /** Queues an on-add message */ @@ -679,7 +759,8 @@ export class IonDelugeTag extends ArenaTag { /** * Abstract class to implement arena traps. */ -export class ArenaTrapTag extends ArenaTag { +export abstract class ArenaTrapTag extends SerializableArenaTag { + abstract readonly tagType: ArenaTrapTagType; public layers: number; public maxLayers: number; @@ -692,8 +773,8 @@ export class ArenaTrapTag extends ArenaTag { * @param side - The side (player or enemy) the tag affects. * @param maxLayers - The maximum amount of layers this tag can have. */ - constructor(tagType: ArenaTagType, sourceMove: MoveId, sourceId: number, side: ArenaTagSide, maxLayers: number) { - super(tagType, 0, sourceMove, sourceId, side); + constructor(sourceMove: MoveId, sourceId: number | undefined, side: ArenaTagSide, maxLayers: number) { + super(0, sourceMove, sourceId, side); this.layers = 1; this.maxLayers = maxLayers; @@ -732,7 +813,7 @@ export class ArenaTrapTag extends ArenaTag { : Phaser.Math.Linear(0, 1 / Math.pow(2, this.layers), Math.min(pokemon.getHpRatio(), 0.5) * 2); } - loadTag(source: any): void { + loadTag(source: NonFunctionProperties): void { super.loadTag(source); this.layers = source.layers; this.maxLayers = source.maxLayers; @@ -745,8 +826,9 @@ export class ArenaTrapTag extends ArenaTag { * in damage for 1, 2, or 3 layers of Spikes respectively if they are summoned into this trap. */ class SpikesTag extends ArenaTrapTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.SPIKES, MoveId.SPIKES, sourceId, side, 3); + public readonly tagType = ArenaTagType.SPIKES; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.SPIKES, sourceId, side, 3); } onAdd(arena: Arena, quiet = false): void { @@ -803,11 +885,12 @@ class SpikesTag extends ArenaTrapTag { * Pokémon summoned into this trap remove it entirely. */ class ToxicSpikesTag extends ArenaTrapTag { - private neutralized: boolean; + #neutralized: boolean; + public readonly tagType = ArenaTagType.TOXIC_SPIKES; - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.TOXIC_SPIKES, MoveId.TOXIC_SPIKES, sourceId, side, 2); - this.neutralized = false; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.TOXIC_SPIKES, sourceId, side, 2); + this.#neutralized = false; } onAdd(arena: Arena, quiet = false): void { @@ -833,7 +916,7 @@ class ToxicSpikesTag extends ArenaTrapTag { } onRemove(arena: Arena): void { - if (!this.neutralized) { + if (!this.#neutralized) { super.onRemove(arena); } } @@ -844,7 +927,7 @@ class ToxicSpikesTag extends ArenaTrapTag { return true; } if (pokemon.isOfType(PokemonType.POISON)) { - this.neutralized = true; + this.#neutralized = true; if (globalScene.arena.removeTag(this.tagType)) { globalScene.phaseManager.queueMessage( i18next.t("arenaTag:toxicSpikesActivateTrapPoison", { @@ -878,55 +961,15 @@ class ToxicSpikesTag 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 ArenaTag { - public targetIndex: BattlerIndex; - - constructor( - tagType: ArenaTagType, - sourceMove: MoveId | undefined, - sourceId: number, - targetIndex: BattlerIndex, - side: ArenaTagSide = ArenaTagSide.BOTH, - ) { - super(tagType, 3, sourceMove, sourceId, side); - - 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/Stealth_Rock_(move) Stealth Rock}. * Applies up to 1 layer of Stealth Rocks, dealing percentage-based damage to any Pokémon * who is summoned into the trap, based on the Rock type's type effectiveness. */ class StealthRockTag extends ArenaTrapTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.STEALTH_ROCK, MoveId.STEALTH_ROCK, sourceId, side, 1); + public readonly tagType = ArenaTagType.STEALTH_ROCK; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.STEALTH_ROCK, sourceId, side, 1); } onAdd(arena: Arena, quiet = false): void { @@ -1014,8 +1057,9 @@ class StealthRockTag extends ArenaTrapTag { * to any Pokémon who is summoned into this trap. */ class StickyWebTag extends ArenaTrapTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.STICKY_WEB, MoveId.STICKY_WEB, sourceId, side, 1); + public readonly tagType = ArenaTagType.STICKY_WEB; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.STICKY_WEB, sourceId, side, 1); } onAdd(arena: Arena, quiet = false): void { @@ -1082,14 +1126,57 @@ 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, * also reversing the turn order for all Pokémon on the field as well. */ -export class TrickRoomTag extends ArenaTag { - constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.TRICK_ROOM, turnCount, MoveId.TRICK_ROOM, sourceId); +export class TrickRoomTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.TRICK_ROOM; + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.TRICK_ROOM, sourceId); } /** @@ -1117,7 +1204,6 @@ export class TrickRoomTag extends ArenaTag { globalScene.phaseManager.queueMessage( i18next.t("arenaTag:trickRoomOnAdd", { moveName: this.getMoveName(), - opponentDesc: source.getOpponentDescriptor(), }), ); } @@ -1132,9 +1218,10 @@ export class TrickRoomTag extends ArenaTag { * Grounds all Pokémon on the field, including Flying-types and those with * {@linkcode AbilityId.LEVITATE} for the duration of the arena tag, usually 5 turns. */ -export class GravityTag extends ArenaTag { - constructor(turnCount: number) { - super(ArenaTagType.GRAVITY, turnCount, MoveId.GRAVITY); +export class GravityTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.GRAVITY; + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.GRAVITY, sourceId); } onAdd(_arena: Arena): void { @@ -1160,9 +1247,10 @@ export class GravityTag extends ArenaTag { * Doubles the Speed of the Pokémon who created this arena tag, as well as all allied Pokémon. * Applies this arena tag for 4 turns (including the turn the move was used). */ -class TailwindTag extends ArenaTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.TAILWIND, turnCount, MoveId.TAILWIND, sourceId, side); +class TailwindTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.TAILWIND; + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.TAILWIND, sourceId, side); } onAdd(_arena: Arena, quiet = false): void { @@ -1228,9 +1316,10 @@ class TailwindTag extends ArenaTag { * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Happy_Hour_(move) Happy Hour}. * Doubles the prize money from trainers and money moves like {@linkcode MoveId.PAY_DAY} and {@linkcode MoveId.MAKE_IT_RAIN}. */ -class HappyHourTag extends ArenaTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.HAPPY_HOUR, turnCount, MoveId.HAPPY_HOUR, sourceId, side); +class HappyHourTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.HAPPY_HOUR; + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.HAPPY_HOUR, sourceId, side); } onAdd(_arena: Arena): void { @@ -1243,8 +1332,9 @@ class HappyHourTag extends ArenaTag { } class SafeguardTag extends ArenaTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.SAFEGUARD, turnCount, MoveId.SAFEGUARD, sourceId, side); + public readonly tagType = ArenaTagType.SAFEGUARD; + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.SAFEGUARD, sourceId, side); } onAdd(_arena: Arena): void { @@ -1265,18 +1355,21 @@ class SafeguardTag extends ArenaTag { } class NoneTag extends ArenaTag { + public readonly tagType = ArenaTagType.NONE; constructor() { - super(ArenaTagType.NONE, 0); + super(0); } } + /** * This arena tag facilitates the application of the move Imprison * Imprison remains in effect as long as the source Pokemon is active and present on the field. * Imprison will apply to any opposing Pokemon that switch onto the field as well. */ class ImprisonTag extends ArenaTrapTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.IMPRISON, MoveId.IMPRISON, sourceId, side, 1); + public readonly tagType = ArenaTagType.IMPRISON; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.IMPRISON, sourceId, side, 1); } /** @@ -1331,7 +1424,9 @@ class ImprisonTag extends ArenaTrapTag { */ override onRemove(): void { const party = this.getAffectedPokemon(); - party.forEach(p => p.removeTag(BattlerTagType.IMPRISON)); + party.forEach(p => { + p.removeTag(BattlerTagType.IMPRISON); + }); } } @@ -1342,9 +1437,10 @@ class ImprisonTag extends ArenaTrapTag { * Damages all non-Fire-type Pokemon on the given side of the field at the end * of each turn for 4 turns. */ -class FireGrassPledgeTag extends ArenaTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.FIRE_GRASS_PLEDGE, 4, MoveId.FIRE_PLEDGE, sourceId, side); +class FireGrassPledgeTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.FIRE_GRASS_PLEDGE; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(4, MoveId.FIRE_PLEDGE, sourceId, side); } override onAdd(_arena: Arena): void { @@ -1390,9 +1486,10 @@ class FireGrassPledgeTag extends ArenaTag { * Doubles the secondary effect chance of moves from Pokemon on the * given side of the field for 4 turns. */ -class WaterFirePledgeTag extends ArenaTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.WATER_FIRE_PLEDGE, 4, MoveId.WATER_PLEDGE, sourceId, side); +class WaterFirePledgeTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.WATER_FIRE_PLEDGE; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(4, MoveId.WATER_PLEDGE, sourceId, side); } override onAdd(_arena: Arena): void { @@ -1424,9 +1521,10 @@ class WaterFirePledgeTag extends ArenaTag { * and {@link https://bulbapedia.bulbagarden.net/wiki/Water_Pledge_(move) | Water Pledge}. * Quarters the Speed of Pokemon on the given side of the field for 4 turns. */ -class GrassWaterPledgeTag extends ArenaTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.GRASS_WATER_PLEDGE, 4, MoveId.GRASS_PLEDGE, sourceId, side); +class GrassWaterPledgeTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.GRASS_WATER_PLEDGE; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(4, MoveId.GRASS_PLEDGE, sourceId, side); } override onAdd(_arena: Arena): void { @@ -1446,9 +1544,10 @@ class GrassWaterPledgeTag extends ArenaTag { * If a Pokémon that's on the field when Fairy Lock is used goes on to faint later in the same turn, * the Pokémon that replaces it will still be unable to switch out in the following turn. */ -export class FairyLockTag extends ArenaTag { - constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.FAIRY_LOCK, turnCount, MoveId.FAIRY_LOCK, sourceId); +export class FairyLockTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.FAIRY_LOCK; + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.FAIRY_LOCK, sourceId); } onAdd(_arena: Arena): void { @@ -1462,15 +1561,29 @@ export class FairyLockTag extends ArenaTag { * Keeps track of the number of pokemon on the field with Neutralizing Gas - If it drops to zero, the effect is ended and abilities are reactivated * * Additionally ends onLose abilities when it is activated + * @sealed */ -export class SuppressAbilitiesTag extends ArenaTag { - private sourceCount: number; - private beingRemoved: boolean; +export class SuppressAbilitiesTag extends SerializableArenaTag { + // Source count is allowed to be inwardly mutable, but outwardly immutable + public readonly sourceCount: number; + public readonly tagType = ArenaTagType.NEUTRALIZING_GAS; + // Private field prevents field from appearing during serialization + /** Whether the tag is in the process of being removed */ + #beingRemoved: boolean; + /** Whether the tag is in the process of being removed */ + public get beingRemoved(): boolean { + return this.#beingRemoved; + } - constructor(sourceId: number) { - super(ArenaTagType.NEUTRALIZING_GAS, 0, undefined, sourceId); + constructor(sourceId?: number) { + super(0, undefined, sourceId); this.sourceCount = 1; - this.beingRemoved = false; + this.#beingRemoved = false; + } + + public override loadTag(source: NonFunctionProperties): void { + super.loadTag(source); + (this as Mutable).sourceCount = source.sourceCount; } public override onAdd(_arena: Arena): void { @@ -1482,19 +1595,21 @@ export class SuppressAbilitiesTag extends ArenaTag { if (fieldPokemon && fieldPokemon.id !== pokemon.id) { // TODO: investigate whether we can just remove the foreach and call `applyAbAttrs` directly, providing // the appropriate attributes (preLEaveField and IllusionBreak) - [true, false].forEach(passive => applyOnLoseAbAttrs({ pokemon: fieldPokemon, passive })); + [true, false].forEach(passive => { + applyOnLoseAbAttrs({ pokemon: fieldPokemon, passive }); + }); } } } } public override onOverlap(_arena: Arena, source: Pokemon | null): void { - this.sourceCount++; + (this as Mutable).sourceCount++; this.playActivationMessage(source); } public onSourceLeave(arena: Arena): void { - this.sourceCount--; + (this as Mutable).sourceCount--; if (this.sourceCount <= 0) { arena.removeTag(ArenaTagType.NEUTRALIZING_GAS); } else if (this.sourceCount === 1) { @@ -1512,7 +1627,7 @@ export class SuppressAbilitiesTag extends ArenaTag { } public override onRemove(_arena: Arena, quiet = false) { - this.beingRemoved = true; + this.#beingRemoved = true; if (!quiet) { globalScene.phaseManager.queueMessage(i18next.t("arenaTag:neutralizingGasOnRemove")); } @@ -1520,7 +1635,9 @@ export class SuppressAbilitiesTag extends ArenaTag { for (const pokemon of globalScene.getField(true)) { // There is only one pokemon with this attr on the field on removal, so its abilities are already active if (pokemon && !pokemon.hasAbilityWithAttr("PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr", false)) { - [true, false].forEach(passive => applyOnGainAbAttrs({ pokemon, passive })); + [true, false].forEach(passive => { + applyOnGainAbAttrs({ pokemon, passive }); + }); } } } @@ -1529,10 +1646,6 @@ export class SuppressAbilitiesTag extends ArenaTag { return this.sourceCount > 1; } - public isBeingRemoved() { - return this.beingRemoved; - } - private playActivationMessage(pokemon: Pokemon | null) { if (pokemon) { globalScene.phaseManager.queueMessage( @@ -1549,7 +1662,7 @@ export function getArenaTag( tagType: ArenaTagType, turnCount: number, sourceMove: MoveId | undefined, - sourceId: number, + sourceId: number | undefined, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH, ): ArenaTag | null { @@ -1565,7 +1678,7 @@ export function getArenaTag( case ArenaTagType.CRAFTY_SHIELD: return new CraftyShieldTag(sourceId, side); case ArenaTagType.NO_CRIT: - return new NoCritTag(turnCount, sourceMove!, sourceId, side); // TODO: is this bang correct? + return new NoCritTag(turnCount, sourceMove, sourceId, side); case ArenaTagType.MUD_SPORT: return new MudSportTag(turnCount, sourceId); case ArenaTagType.WATER_SPORT: @@ -1578,7 +1691,10 @@ export function getArenaTag( return new ToxicSpikesTag(sourceId, side); case ArenaTagType.FUTURE_SIGHT: case ArenaTagType.DOOM_DESIRE: - return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex!, side); // TODO:questionable bang + if (isNullOrUndefined(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: @@ -1588,7 +1704,7 @@ export function getArenaTag( case ArenaTagType.TRICK_ROOM: return new TrickRoomTag(turnCount, sourceId); case ArenaTagType.GRAVITY: - return new GravityTag(turnCount); + return new GravityTag(turnCount, sourceId); case ArenaTagType.REFLECT: return new ReflectTag(turnCount, sourceId, side); case ArenaTagType.LIGHT_SCREEN: @@ -1620,10 +1736,10 @@ export function getArenaTag( /** * When given a battler tag or json representing one, creates an actual ArenaTag object with the same data. - * @param {ArenaTag | any} source An arena tag - * @return {ArenaTag} The valid arena tag + * @param source - An arena tag + * @returns The valid arena tag */ -export function loadArenaTag(source: ArenaTag | any): ArenaTag { +export function loadArenaTag(source: (ArenaTag | ArenaTagTypeData) & { targetIndex?: BattlerIndex }): ArenaTag { const tag = getArenaTag( source.tagType, @@ -1636,3 +1752,37 @@ export function loadArenaTag(source: ArenaTag | any): ArenaTag { tag.loadTag(source); return tag; } + +export type ArenaTagTypeMap = { + [ArenaTagType.MUD_SPORT]: MudSportTag; + [ArenaTagType.WATER_SPORT]: WaterSportTag; + [ArenaTagType.ION_DELUGE]: IonDelugeTag; + [ArenaTagType.SPIKES]: SpikesTag; + [ArenaTagType.MIST]: MistTag; + [ArenaTagType.QUICK_GUARD]: QuickGuardTag; + [ArenaTagType.WIDE_GUARD]: WideGuardTag; + [ArenaTagType.MAT_BLOCK]: MatBlockTag; + [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; + [ArenaTagType.GRAVITY]: GravityTag; + [ArenaTagType.REFLECT]: ReflectTag; + [ArenaTagType.LIGHT_SCREEN]: LightScreenTag; + [ArenaTagType.AURORA_VEIL]: AuroraVeilTag; + [ArenaTagType.TAILWIND]: TailwindTag; + [ArenaTagType.HAPPY_HOUR]: HappyHourTag; + [ArenaTagType.SAFEGUARD]: SafeguardTag; + [ArenaTagType.IMPRISON]: ImprisonTag; + [ArenaTagType.FIRE_GRASS_PLEDGE]: FireGrassPledgeTag; + [ArenaTagType.WATER_FIRE_PLEDGE]: WaterFirePledgeTag; + [ArenaTagType.GRASS_WATER_PLEDGE]: GrassWaterPledgeTag; + [ArenaTagType.FAIRY_LOCK]: FairyLockTag; + [ArenaTagType.NEUTRALIZING_GAS]: SuppressAbilitiesTag; + [ArenaTagType.NONE]: NoneTag; +}; diff --git a/src/data/balance/biomes.ts b/src/data/balance/biomes.ts index 713ab9637ab..f84a518fb65 100644 --- a/src/data/balance/biomes.ts +++ b/src/data/balance/biomes.ts @@ -1,13 +1,13 @@ -import { PokemonType } from "#enums/pokemon-type"; -import { randSeedInt, getEnumValues } from "#app/utils/common"; -import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; -import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; -import i18next from "i18next"; +import type { SpeciesFormEvolution } from "#balance/pokemon-evolutions"; +import { pokemonEvolutions } from "#balance/pokemon-evolutions"; import { BiomeId } from "#enums/biome-id"; +import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { TimeOfDay } from "#enums/time-of-day"; import { TrainerType } from "#enums/trainer-type"; -// import beautify from "json-beautify"; +import { randSeedInt } from "#utils/common"; +import { getEnumValues } from "#utils/enums"; +import i18next from "i18next"; export function getBiomeName(biome: BiomeId | -1) { if (biome === -1) { @@ -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 } @@ -126,7 +126,7 @@ export const biomePokemonPools: BiomePokemonPools = { [BiomeId.TOWN]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ SpeciesId.CATERPIE ], 7: [ SpeciesId.METAPOD ]}, + { 1: [ SpeciesId.CATERPIE ], 7: [ SpeciesId.METAPOD ] }, SpeciesId.SENTRET, SpeciesId.LEDYBA, SpeciesId.HOPPIP, @@ -134,12 +134,12 @@ export const biomePokemonPools: BiomePokemonPools = { SpeciesId.STARLY, SpeciesId.PIDOVE, SpeciesId.COTTONEE, - { 1: [ SpeciesId.SCATTERBUG ], 9: [ SpeciesId.SPEWPA ]}, + { 1: [ SpeciesId.SCATTERBUG ], 9: [ SpeciesId.SPEWPA ] }, SpeciesId.YUNGOOS, SpeciesId.SKWOVET ], [TimeOfDay.DAY]: [ - { 1: [ SpeciesId.CATERPIE ], 7: [ SpeciesId.METAPOD ]}, + { 1: [ SpeciesId.CATERPIE ], 7: [ SpeciesId.METAPOD ] }, SpeciesId.SENTRET, SpeciesId.HOPPIP, SpeciesId.SUNKERN, @@ -147,12 +147,12 @@ export const biomePokemonPools: BiomePokemonPools = { SpeciesId.STARLY, SpeciesId.PIDOVE, SpeciesId.COTTONEE, - { 1: [ SpeciesId.SCATTERBUG ], 9: [ SpeciesId.SPEWPA ]}, + { 1: [ SpeciesId.SCATTERBUG ], 9: [ SpeciesId.SPEWPA ] }, SpeciesId.YUNGOOS, SpeciesId.SKWOVET ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.WEEDLE ], 7: [ SpeciesId.KAKUNA ]}, SpeciesId.POOCHYENA, SpeciesId.PATRAT, SpeciesId.PURRLOIN, SpeciesId.BLIPBUG ], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.WEEDLE ], 7: [ SpeciesId.KAKUNA ]}, SpeciesId.HOOTHOOT, SpeciesId.SPINARAK, SpeciesId.POOCHYENA, SpeciesId.CASCOON, SpeciesId.PATRAT, SpeciesId.PURRLOIN, SpeciesId.BLIPBUG ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.WEEDLE ], 7: [ SpeciesId.KAKUNA ] }, SpeciesId.POOCHYENA, SpeciesId.PATRAT, SpeciesId.PURRLOIN, SpeciesId.BLIPBUG ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.WEEDLE ], 7: [ SpeciesId.KAKUNA ] }, SpeciesId.HOOTHOOT, SpeciesId.SPINARAK, SpeciesId.POOCHYENA, SpeciesId.CASCOON, SpeciesId.PATRAT, SpeciesId.PURRLOIN, SpeciesId.BLIPBUG ], [TimeOfDay.ALL]: [ SpeciesId.PIDGEY, SpeciesId.RATTATA, SpeciesId.SPEAROW, SpeciesId.ZIGZAGOON, SpeciesId.WURMPLE, SpeciesId.TAILLOW, SpeciesId.BIDOOF, SpeciesId.LILLIPUP, SpeciesId.FLETCHLING, SpeciesId.WOOLOO, SpeciesId.LECHONK ] }, [BiomePoolTier.UNCOMMON]: { @@ -162,56 +162,56 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.EKANS, SpeciesId.ODDISH, SpeciesId.PARAS, SpeciesId.VENONAT, SpeciesId.MEOWTH, SpeciesId.SEEDOT, SpeciesId.SHROOMISH, SpeciesId.KRICKETOT, SpeciesId.VENIPEDE ], [TimeOfDay.ALL]: [ SpeciesId.NINCADA, SpeciesId.WHISMUR, SpeciesId.FIDOUGH ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.TANDEMAUS ], [TimeOfDay.DAY]: [ SpeciesId.TANDEMAUS ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ABRA, SpeciesId.SURSKIT, SpeciesId.ROOKIDEE ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.EEVEE, SpeciesId.RALTS ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.TANDEMAUS ], [TimeOfDay.DAY]: [ SpeciesId.TANDEMAUS ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ABRA, SpeciesId.SURSKIT, SpeciesId.ROOKIDEE ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.EEVEE, SpeciesId.RALTS ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.PLAINS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.SENTRET ], 15: [ SpeciesId.FURRET ]}, { 1: [ SpeciesId.YUNGOOS ], 30: [ SpeciesId.GUMSHOOS ]}, { 1: [ SpeciesId.SKWOVET ], 24: [ SpeciesId.GREEDENT ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.SENTRET ], 15: [ SpeciesId.FURRET ]}, { 1: [ SpeciesId.YUNGOOS ], 30: [ SpeciesId.GUMSHOOS ]}, { 1: [ SpeciesId.SKWOVET ], 24: [ SpeciesId.GREEDENT ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.MEOWTH ], 28: [ SpeciesId.PERSIAN ]}, { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.ZUBAT ], 22: [ SpeciesId.GOLBAT ]}, { 1: [ SpeciesId.MEOWTH ], 28: [ SpeciesId.PERSIAN ]}, { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.ZIGZAGOON ], 20: [ SpeciesId.LINOONE ]}, { 1: [ SpeciesId.BIDOOF ], 15: [ SpeciesId.BIBAREL ]}, { 1: [ SpeciesId.LECHONK ], 18: [ SpeciesId.OINKOLOGNE ]}] + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.SENTRET ], 15: [ SpeciesId.FURRET ] }, { 1: [ SpeciesId.YUNGOOS ], 20: [ SpeciesId.GUMSHOOS ] }, { 1: [ SpeciesId.SKWOVET ], 24: [ SpeciesId.GREEDENT ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.SENTRET ], 15: [ SpeciesId.FURRET ] }, { 1: [ SpeciesId.YUNGOOS ], 20: [ SpeciesId.GUMSHOOS ] }, { 1: [ SpeciesId.SKWOVET ], 24: [ SpeciesId.GREEDENT ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.MEOWTH ], 28: [ SpeciesId.PERSIAN ] }, { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.ZUBAT ], 22: [ SpeciesId.GOLBAT ] }, { 1: [ SpeciesId.MEOWTH ], 28: [ SpeciesId.PERSIAN ] }, { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.ZIGZAGOON ], 20: [ SpeciesId.LINOONE ] }, { 1: [ SpeciesId.BIDOOF ], 15: [ SpeciesId.BIBAREL ] }, { 1: [ SpeciesId.LECHONK ], 18: [ SpeciesId.OINKOLOGNE ] } ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ SpeciesId.DODUO ], 31: [ SpeciesId.DODRIO ]}, - { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ]}, - { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ]}, - { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ]}, - { 1: [ SpeciesId.PAWMI ], 18: [ SpeciesId.PAWMO ], 32: [ SpeciesId.PAWMOT ]} + { 1: [ SpeciesId.DODUO ], 31: [ SpeciesId.DODRIO ] }, + { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ] }, + { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ] }, + { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ] }, + { 1: [ SpeciesId.PAWMI ], 18: [ SpeciesId.PAWMO ], 32: [ SpeciesId.PAWMOT ] } ], [TimeOfDay.DAY]: [ - { 1: [ SpeciesId.DODUO ], 31: [ SpeciesId.DODRIO ]}, - { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ]}, - { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ]}, - { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ]}, - { 1: [ SpeciesId.ROCKRUFF ], 25: [ SpeciesId.LYCANROC ]}, - { 1: [ SpeciesId.PAWMI ], 18: [ SpeciesId.PAWMO ], 32: [ SpeciesId.PAWMOT ]} + { 1: [ SpeciesId.DODUO ], 31: [ SpeciesId.DODRIO ] }, + { 1: [ SpeciesId.POOCHYENA ], 18: [ SpeciesId.MIGHTYENA ] }, + { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ] }, + { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ] }, + { 1: [ SpeciesId.ROCKRUFF ], 25: [ SpeciesId.LYCANROC ] }, + { 1: [ SpeciesId.PAWMI ], 18: [ SpeciesId.PAWMO ], 32: [ SpeciesId.PAWMOT ] } ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.MANKEY ], 28: [ SpeciesId.PRIMEAPE ], 75: [ SpeciesId.ANNIHILAPE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.MANKEY ], 28: [ SpeciesId.PRIMEAPE ], 75: [ SpeciesId.ANNIHILAPE ]}], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.MANKEY ], 28: [ SpeciesId.PRIMEAPE ], 75: [ SpeciesId.ANNIHILAPE ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.MANKEY ], 28: [ SpeciesId.PRIMEAPE ], 75: [ SpeciesId.ANNIHILAPE ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.PIDGEY ], 18: [ SpeciesId.PIDGEOTTO ], 36: [ SpeciesId.PIDGEOT ]}, - { 1: [ SpeciesId.SPEAROW ], 20: [ SpeciesId.FEAROW ]}, + { 1: [ SpeciesId.PIDGEY ], 18: [ SpeciesId.PIDGEOTTO ], 36: [ SpeciesId.PIDGEOT ] }, + { 1: [ SpeciesId.SPEAROW ], 20: [ SpeciesId.FEAROW ] }, SpeciesId.PIKACHU, - { 1: [ SpeciesId.FLETCHLING ], 17: [ SpeciesId.FLETCHINDER ], 35: [ SpeciesId.TALONFLAME ]} + { 1: [ SpeciesId.FLETCHLING ], 17: [ SpeciesId.FLETCHINDER ], 35: [ SpeciesId.TALONFLAME ] } ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.PALDEA_TAUROS ], [TimeOfDay.DAY]: [ SpeciesId.PALDEA_TAUROS ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.SHINX ], 15: [ SpeciesId.LUXIO ], 30: [ SpeciesId.LUXRAY ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.SHINX ], 15: [ SpeciesId.LUXIO ], 30: [ SpeciesId.LUXRAY ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.ABRA ], 16: [ SpeciesId.KADABRA ]}, { 1: [ SpeciesId.BUNEARY ], 20: [ SpeciesId.LOPUNNY ]}, { 1: [ SpeciesId.ROOKIDEE ], 18: [ SpeciesId.CORVISQUIRE ], 38: [ SpeciesId.CORVIKNIGHT ]}] + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.SHINX ], 15: [ SpeciesId.LUXIO ], 30: [ SpeciesId.LUXRAY ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.SHINX ], 15: [ SpeciesId.LUXIO ], 30: [ SpeciesId.LUXRAY ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.ABRA ], 16: [ SpeciesId.KADABRA ] }, { 1: [ SpeciesId.BUNEARY ], 20: [ SpeciesId.LOPUNNY ] }, { 1: [ SpeciesId.ROOKIDEE ], 18: [ SpeciesId.CORVISQUIRE ], 38: [ SpeciesId.CORVIKNIGHT ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FARFETCHD, SpeciesId.LICKITUNG, SpeciesId.CHANSEY, SpeciesId.EEVEE, SpeciesId.SNORLAX, { 1: [ SpeciesId.DUNSPARCE ], 62: [ SpeciesId.DUDUNSPARCE ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, SpeciesId.LATIAS, SpeciesId.LATIOS ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FARFETCHD, SpeciesId.LICKITUNG, SpeciesId.CHANSEY, SpeciesId.EEVEE, SpeciesId.SNORLAX, { 1: [ SpeciesId.DUNSPARCE ], 62: [ SpeciesId.DUDUNSPARCE ] } ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, SpeciesId.LATIAS, SpeciesId.LATIOS ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.DODRIO, SpeciesId.FURRET, SpeciesId.GUMSHOOS, SpeciesId.GREEDENT ], [TimeOfDay.DAY]: [ SpeciesId.DODRIO, SpeciesId.FURRET, SpeciesId.GUMSHOOS, SpeciesId.GREEDENT ], @@ -226,22 +226,22 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FARFETCHD, SpeciesId.SNORLAX, SpeciesId.LICKILICKY, SpeciesId.DUDUNSPARCE ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LATIAS, SpeciesId.LATIOS ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LATIAS, SpeciesId.LATIOS ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.GRASS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.HOPPIP ], 18: [ SpeciesId.SKIPLOOM ]}, SpeciesId.SUNKERN, SpeciesId.COTTONEE, SpeciesId.PETILIL ], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.HOPPIP ], 18: [ SpeciesId.SKIPLOOM ]}, SpeciesId.SUNKERN, SpeciesId.COTTONEE, SpeciesId.PETILIL ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ]}, { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ]}, { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.HOPPIP ], 18: [ SpeciesId.SKIPLOOM ] }, SpeciesId.SUNKERN, SpeciesId.COTTONEE, SpeciesId.PETILIL ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.HOPPIP ], 18: [ SpeciesId.SKIPLOOM ] }, SpeciesId.SUNKERN, SpeciesId.COTTONEE, SpeciesId.PETILIL ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ] }, { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ] }, { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ] } ], [TimeOfDay.ALL]: [] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ]}, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ]}, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ] }, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ] }, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ] } ], [TimeOfDay.ALL]: [] }, [BiomePoolTier.RARE]: { @@ -249,28 +249,28 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BULBASAUR ], 16: [ SpeciesId.IVYSAUR ], 32: [ SpeciesId.VENUSAUR ]}, SpeciesId.GROWLITHE, { 1: [ SpeciesId.TURTWIG ], 18: [ SpeciesId.GROTLE ], 32: [ SpeciesId.TORTERRA ]}] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.BULBASAUR ], 16: [ SpeciesId.IVYSAUR ], 32: [ SpeciesId.VENUSAUR ] }, SpeciesId.GROWLITHE, { 1: [ SpeciesId.TURTWIG ], 18: [ SpeciesId.GROTLE ], 32: [ SpeciesId.TORTERRA ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SUDOWOODO ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VIRIZION ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.JUMPLUFF, SpeciesId.SUNFLORA, SpeciesId.WHIMSICOTT ], [TimeOfDay.DAY]: [ SpeciesId.JUMPLUFF, SpeciesId.SUNFLORA, SpeciesId.WHIMSICOTT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VENUSAUR, SpeciesId.SUDOWOODO, SpeciesId.TORTERRA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VIRIZION ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SUDOWOODO ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VIRIZION ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.JUMPLUFF, SpeciesId.SUNFLORA, SpeciesId.WHIMSICOTT ], [TimeOfDay.DAY]: [ SpeciesId.JUMPLUFF, SpeciesId.SUNFLORA, SpeciesId.WHIMSICOTT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VENUSAUR, SpeciesId.SUDOWOODO, SpeciesId.TORTERRA ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VIRIZION ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.TALL_GRASS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.BOUNSWEET ], 18: [ SpeciesId.STEENEE ], 58: [ SpeciesId.TSAREENA ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.NIDORAN_F ], 16: [ SpeciesId.NIDORINA ]}, { 1: [ SpeciesId.NIDORAN_M ], 16: [ SpeciesId.NIDORINO ]}, { 1: [ SpeciesId.BOUNSWEET ], 18: [ SpeciesId.STEENEE ], 58: [ SpeciesId.TSAREENA ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.ODDISH ], 21: [ SpeciesId.GLOOM ]}, { 1: [ SpeciesId.KRICKETOT ], 10: [ SpeciesId.KRICKETUNE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.ODDISH ], 21: [ SpeciesId.GLOOM ]}, { 1: [ SpeciesId.KRICKETOT ], 10: [ SpeciesId.KRICKETUNE ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.NINCADA ], 20: [ SpeciesId.NINJASK ]}, { 1: [ SpeciesId.FOMANTIS ], 44: [ SpeciesId.LURANTIS ]}, { 1: [ SpeciesId.NYMBLE ], 24: [ SpeciesId.LOKIX ]}] + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.BOUNSWEET ], 18: [ SpeciesId.STEENEE ], 58: [ SpeciesId.TSAREENA ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.NIDORAN_F ], 16: [ SpeciesId.NIDORINA ] }, { 1: [ SpeciesId.NIDORAN_M ], 16: [ SpeciesId.NIDORINO ] }, { 1: [ SpeciesId.BOUNSWEET ], 18: [ SpeciesId.STEENEE ], 58: [ SpeciesId.TSAREENA ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.ODDISH ], 21: [ SpeciesId.GLOOM ] }, { 1: [ SpeciesId.KRICKETOT ], 10: [ SpeciesId.KRICKETUNE ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.ODDISH ], 21: [ SpeciesId.GLOOM ] }, { 1: [ SpeciesId.KRICKETOT ], 10: [ SpeciesId.KRICKETUNE ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.NINCADA ], 20: [ SpeciesId.NINJASK ] }, { 1: [ SpeciesId.FOMANTIS ], 34: [ SpeciesId.LURANTIS ] }, { 1: [ SpeciesId.NYMBLE ], 24: [ SpeciesId.LOKIX ] } ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.PARAS ], 24: [ SpeciesId.PARASECT ]}, { 1: [ SpeciesId.VENONAT ], 31: [ SpeciesId.VENOMOTH ]}, { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.PARAS ], 24: [ SpeciesId.PARASECT ] }, { 1: [ SpeciesId.VENONAT ], 31: [ SpeciesId.VENOMOTH ] }, { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ] } ], [TimeOfDay.ALL]: [ SpeciesId.VULPIX ] }, [BiomePoolTier.RARE]: { @@ -278,10 +278,10 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ SpeciesId.PINSIR, { 1: [ SpeciesId.CHIKORITA ], 16: [ SpeciesId.BAYLEEF ], 32: [ SpeciesId.MEGANIUM ]}, { 1: [ SpeciesId.GIRAFARIG ], 62: [ SpeciesId.FARIGIRAF ]}, SpeciesId.ZANGOOSE, SpeciesId.KECLEON, SpeciesId.TROPIUS ] + [TimeOfDay.ALL]: [ SpeciesId.PINSIR, { 1: [ SpeciesId.CHIKORITA ], 16: [ SpeciesId.BAYLEEF ], 32: [ SpeciesId.MEGANIUM ] }, { 1: [ SpeciesId.GIRAFARIG ], 62: [ SpeciesId.FARIGIRAF ] }, SpeciesId.ZANGOOSE, SpeciesId.KECLEON, SpeciesId.TROPIUS ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SCYTHER, SpeciesId.SHEDINJA, SpeciesId.ROTOM ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SCYTHER, SpeciesId.SHEDINJA, SpeciesId.ROTOM ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.TSAREENA ], [TimeOfDay.DAY]: [ SpeciesId.NIDOQUEEN, SpeciesId.NIDOKING, SpeciesId.TSAREENA ], @@ -289,87 +289,87 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.VILEPLUME, SpeciesId.KRICKETUNE ], [TimeOfDay.ALL]: [ SpeciesId.NINJASK, SpeciesId.ZANGOOSE, SpeciesId.KECLEON, SpeciesId.LURANTIS, SpeciesId.LOKIX ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.BELLOSSOM ], [TimeOfDay.DAY]: [ SpeciesId.BELLOSSOM ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.PINSIR, SpeciesId.MEGANIUM, SpeciesId.FARIGIRAF ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.BELLOSSOM ], [TimeOfDay.DAY]: [ SpeciesId.BELLOSSOM ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.PINSIR, SpeciesId.MEGANIUM, SpeciesId.FARIGIRAF ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.METROPOLIS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.YAMPER ], 25: [ SpeciesId.BOLTUND ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.YAMPER ], 25: [ SpeciesId.BOLTUND ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.HOUNDOUR ], 24: [ SpeciesId.HOUNDOOM ]}, { 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.RATTATA ], 20: [ SpeciesId.RATICATE ]}, { 1: [ SpeciesId.ZIGZAGOON ], 20: [ SpeciesId.LINOONE ]}, { 1: [ SpeciesId.LILLIPUP ], 16: [ SpeciesId.HERDIER ], 32: [ SpeciesId.STOUTLAND ]}] + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.YAMPER ], 25: [ SpeciesId.BOLTUND ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.YAMPER ], 25: [ SpeciesId.BOLTUND ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.HOUNDOUR ], 24: [ SpeciesId.HOUNDOOM ] }, { 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.RATTATA ], 20: [ SpeciesId.RATICATE ] }, { 1: [ SpeciesId.ZIGZAGOON ], 20: [ SpeciesId.LINOONE ] }, { 1: [ SpeciesId.LILLIPUP ], 16: [ SpeciesId.HERDIER ], 32: [ SpeciesId.STOUTLAND ] } ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}, SpeciesId.INDEEDEE ], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}, SpeciesId.INDEEDEE ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.ESPURR ], 25: [ SpeciesId.MEOWSTIC ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.ESPURR ], 25: [ SpeciesId.MEOWSTIC ]}], - [TimeOfDay.ALL]: [ SpeciesId.PIKACHU, { 1: [ SpeciesId.GLAMEOW ], 38: [ SpeciesId.PURUGLY ]}, SpeciesId.FURFROU, { 1: [ SpeciesId.FIDOUGH ], 26: [ SpeciesId.DACHSBUN ]}, SpeciesId.SQUAWKABILLY ] + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ] }, SpeciesId.INDEEDEE ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ] }, SpeciesId.INDEEDEE ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.ESPURR ], 25: [ SpeciesId.MEOWSTIC ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.ESPURR ], 25: [ SpeciesId.MEOWSTIC ] } ], + [TimeOfDay.ALL]: [ SpeciesId.PIKACHU, { 1: [ SpeciesId.GLAMEOW ], 38: [ SpeciesId.PURUGLY ] }, SpeciesId.FURFROU, { 1: [ SpeciesId.FIDOUGH ], 26: [ SpeciesId.DACHSBUN ] }, SpeciesId.SQUAWKABILLY ] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.TANDEMAUS ], 25: [ SpeciesId.MAUSHOLD ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.TANDEMAUS ], 25: [ SpeciesId.MAUSHOLD ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.TANDEMAUS ], 25: [ SpeciesId.MAUSHOLD ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.TANDEMAUS ], 25: [ SpeciesId.MAUSHOLD ] } ], [TimeOfDay.DUSK]: [ SpeciesId.MORPEKO ], [TimeOfDay.NIGHT]: [ SpeciesId.MORPEKO ], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.VAROOM ], 40: [ SpeciesId.REVAVROOM ]}] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.VAROOM ], 40: [ SpeciesId.REVAVROOM ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, SpeciesId.EEVEE, SpeciesId.SMEARGLE ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CASTFORM ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.BOLTUND ], [TimeOfDay.DAY]: [ SpeciesId.BOLTUND ], [TimeOfDay.DUSK]: [ SpeciesId.MEOWSTIC ], [TimeOfDay.NIGHT]: [ SpeciesId.MEOWSTIC ], [TimeOfDay.ALL]: [ SpeciesId.STOUTLAND, SpeciesId.FURFROU, SpeciesId.DACHSBUN ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.MAUSHOLD ], [TimeOfDay.DAY]: [ SpeciesId.MAUSHOLD ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CASTFORM, SpeciesId.REVAVROOM ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, SpeciesId.EEVEE, SpeciesId.SMEARGLE ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CASTFORM ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.BOLTUND ], [TimeOfDay.DAY]: [ SpeciesId.BOLTUND ], [TimeOfDay.DUSK]: [ SpeciesId.MEOWSTIC ], [TimeOfDay.NIGHT]: [ SpeciesId.MEOWSTIC ], [TimeOfDay.ALL]: [ SpeciesId.STOUTLAND, SpeciesId.FURFROU, SpeciesId.DACHSBUN ] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.MAUSHOLD ], [TimeOfDay.DAY]: [ SpeciesId.MAUSHOLD ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CASTFORM, SpeciesId.REVAVROOM ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.FOREST]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [ SpeciesId.BUTTERFREE, - { 1: [ SpeciesId.BELLSPROUT ], 21: [ SpeciesId.WEEPINBELL ]}, - { 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ]}, + { 1: [ SpeciesId.BELLSPROUT ], 21: [ SpeciesId.WEEPINBELL ] }, + { 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ] }, SpeciesId.PETILIL, - { 1: [ SpeciesId.DEERLING ], 34: [ SpeciesId.SAWSBUCK ]}, + { 1: [ SpeciesId.DEERLING ], 34: [ SpeciesId.SAWSBUCK ] }, SpeciesId.VIVILLON ], [TimeOfDay.DAY]: [ SpeciesId.BUTTERFREE, - { 1: [ SpeciesId.BELLSPROUT ], 21: [ SpeciesId.WEEPINBELL ]}, + { 1: [ SpeciesId.BELLSPROUT ], 21: [ SpeciesId.WEEPINBELL ] }, SpeciesId.BEAUTIFLY, - { 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ]}, + { 1: [ SpeciesId.COMBEE ], 21: [ SpeciesId.VESPIQUEN ] }, SpeciesId.PETILIL, - { 1: [ SpeciesId.DEERLING ], 34: [ SpeciesId.SAWSBUCK ]}, + { 1: [ SpeciesId.DEERLING ], 34: [ SpeciesId.SAWSBUCK ] }, SpeciesId.VIVILLON ], [TimeOfDay.DUSK]: [ SpeciesId.BEEDRILL, - { 1: [ SpeciesId.PINECO ], 31: [ SpeciesId.FORRETRESS ]}, - { 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ]}, - { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ]}, - { 1: [ SpeciesId.VENIPEDE ], 22: [ SpeciesId.WHIRLIPEDE ], 30: [ SpeciesId.SCOLIPEDE ]} + { 1: [ SpeciesId.PINECO ], 31: [ SpeciesId.FORRETRESS ] }, + { 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ] }, + { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ] }, + { 1: [ SpeciesId.VENIPEDE ], 22: [ SpeciesId.WHIRLIPEDE ], 30: [ SpeciesId.SCOLIPEDE ] } ], [TimeOfDay.NIGHT]: [ SpeciesId.BEEDRILL, - { 1: [ SpeciesId.VENONAT ], 31: [ SpeciesId.VENOMOTH ]}, - { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}, - { 1: [ SpeciesId.PINECO ], 31: [ SpeciesId.FORRETRESS ]}, + { 1: [ SpeciesId.VENONAT ], 31: [ SpeciesId.VENOMOTH ] }, + { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ] }, + { 1: [ SpeciesId.PINECO ], 31: [ SpeciesId.FORRETRESS ] }, SpeciesId.DUSTOX, - { 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ]}, - { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ]}, - { 1: [ SpeciesId.VENIPEDE ], 22: [ SpeciesId.WHIRLIPEDE ], 30: [ SpeciesId.SCOLIPEDE ]} + { 1: [ SpeciesId.SEEDOT ], 14: [ SpeciesId.NUZLEAF ] }, + { 1: [ SpeciesId.SHROOMISH ], 23: [ SpeciesId.BRELOOM ] }, + { 1: [ SpeciesId.VENIPEDE ], 22: [ SpeciesId.WHIRLIPEDE ], 30: [ SpeciesId.SCOLIPEDE ] } ], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.TAROUNTULA ], 15: [ SpeciesId.SPIDOPS ]}, { 1: [ SpeciesId.NYMBLE ], 24: [ SpeciesId.LOKIX ]}, { 1: [ SpeciesId.SHROODLE ], 28: [ SpeciesId.GRAFAIAI ]}] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.TAROUNTULA ], 15: [ SpeciesId.SPIDOPS ] }, { 1: [ SpeciesId.NYMBLE ], 24: [ SpeciesId.LOKIX ] }, { 1: [ SpeciesId.SHROODLE ], 28: [ SpeciesId.GRAFAIAI ] } ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [ SpeciesId.ROSELIA, SpeciesId.MOTHIM, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ]}], - [TimeOfDay.DAY]: [ SpeciesId.ROSELIA, SpeciesId.MOTHIM, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}, { 1: [ SpeciesId.DOTTLER ], 30: [ SpeciesId.ORBEETLE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.HOOTHOOT ], 20: [ SpeciesId.NOCTOWL ]}, { 1: [ SpeciesId.ROCKRUFF ], 25: [ SpeciesId.LYCANROC ]}, { 1: [ SpeciesId.DOTTLER ], 30: [ SpeciesId.ORBEETLE ]}], + [TimeOfDay.DAWN]: [ SpeciesId.ROSELIA, SpeciesId.MOTHIM, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ] } ], + [TimeOfDay.DAY]: [ SpeciesId.ROSELIA, SpeciesId.MOTHIM, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ] }, { 1: [ SpeciesId.DOTTLER ], 30: [ SpeciesId.ORBEETLE ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.HOOTHOOT ], 20: [ SpeciesId.NOCTOWL ] }, { 1: [ SpeciesId.ROCKRUFF ], 25: [ SpeciesId.LYCANROC ] }, { 1: [ SpeciesId.DOTTLER ], 30: [ SpeciesId.ORBEETLE ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}, - { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, - { 1: [ SpeciesId.BURMY ], 20: [ SpeciesId.WORMADAM ]}, - { 1: [ SpeciesId.PANSAGE ], 30: [ SpeciesId.SIMISAGE ]} + { 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ] }, + { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ] }, + { 1: [ SpeciesId.BURMY ], 20: [ SpeciesId.WORMADAM ] }, + { 1: [ SpeciesId.PANSAGE ], 30: [ SpeciesId.SIMISAGE ] } ] }, [BiomePoolTier.RARE]: { @@ -379,18 +379,18 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.SCYTHER ], [TimeOfDay.ALL]: [ SpeciesId.HERACROSS, - { 1: [ SpeciesId.TREECKO ], 16: [ SpeciesId.GROVYLE ], 36: [ SpeciesId.SCEPTILE ]}, + { 1: [ SpeciesId.TREECKO ], 16: [ SpeciesId.GROVYLE ], 36: [ SpeciesId.SCEPTILE ] }, SpeciesId.TROPIUS, SpeciesId.KARRABLAST, SpeciesId.SHELMET, - { 1: [ SpeciesId.CHESPIN ], 16: [ SpeciesId.QUILLADIN ], 36: [ SpeciesId.CHESNAUGHT ]}, - { 1: [ SpeciesId.ROWLET ], 17: [ SpeciesId.DARTRIX ], 34: [ SpeciesId.DECIDUEYE ]}, + { 1: [ SpeciesId.CHESPIN ], 16: [ SpeciesId.QUILLADIN ], 36: [ SpeciesId.CHESNAUGHT ] }, + { 1: [ SpeciesId.ROWLET ], 17: [ SpeciesId.DARTRIX ], 34: [ SpeciesId.DECIDUEYE ] }, SpeciesId.SQUAWKABILLY, - { 1: [ SpeciesId.TOEDSCOOL ], 30: [ SpeciesId.TOEDSCRUEL ]} + { 1: [ SpeciesId.TOEDSCOOL ], 30: [ SpeciesId.TOEDSCRUEL ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.BLOODMOON_URSALUNA ], [TimeOfDay.ALL]: [ SpeciesId.DURANT ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KARTANA, SpeciesId.WO_CHIEN ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.BLOODMOON_URSALUNA ], [TimeOfDay.ALL]: [ SpeciesId.DURANT ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KARTANA, SpeciesId.WO_CHIEN ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.VICTREEBEL, SpeciesId.MOTHIM, SpeciesId.VESPIQUEN, SpeciesId.LILLIGANT, SpeciesId.SAWSBUCK ], [TimeOfDay.DAY]: [ SpeciesId.VICTREEBEL, SpeciesId.BEAUTIFLY, SpeciesId.MOTHIM, SpeciesId.VESPIQUEN, SpeciesId.LILLIGANT, SpeciesId.SAWSBUCK ], @@ -405,29 +405,29 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.LYCANROC, SpeciesId.BLOODMOON_URSALUNA ], [TimeOfDay.ALL]: [ SpeciesId.HERACROSS, SpeciesId.SCEPTILE, SpeciesId.ESCAVALIER, SpeciesId.ACCELGOR, SpeciesId.DURANT, SpeciesId.CHESNAUGHT, SpeciesId.DECIDUEYE, SpeciesId.TOEDSCRUEL ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KARTANA, SpeciesId.WO_CHIEN ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CALYREX ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KARTANA, SpeciesId.WO_CHIEN ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CALYREX ] } }, [BiomeId.SEA]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, { 1: [ SpeciesId.WINGULL ], 25: [ SpeciesId.PELIPPER ]}, SpeciesId.CRAMORANT, { 1: [ SpeciesId.FINIZEN ], 38: [ SpeciesId.PALAFIN ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, { 1: [ SpeciesId.WINGULL ], 25: [ SpeciesId.PELIPPER ]}, SpeciesId.CRAMORANT, { 1: [ SpeciesId.FINIZEN ], 38: [ SpeciesId.PALAFIN ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.INKAY ], 30: [ SpeciesId.MALAMAR ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.FINNEON ], 31: [ SpeciesId.LUMINEON ]}, { 1: [ SpeciesId.INKAY ], 30: [ SpeciesId.MALAMAR ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.TENTACOOL ], 30: [ SpeciesId.TENTACRUEL ]}, { 1: [ SpeciesId.MAGIKARP ], 20: [ SpeciesId.GYARADOS ]}, { 1: [ SpeciesId.BUIZEL ], 26: [ SpeciesId.FLOATZEL ]}] + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ] }, { 1: [ SpeciesId.WINGULL ], 25: [ SpeciesId.PELIPPER ] }, SpeciesId.CRAMORANT, { 1: [ SpeciesId.FINIZEN ], 38: [ SpeciesId.PALAFIN ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ] }, { 1: [ SpeciesId.WINGULL ], 25: [ SpeciesId.PELIPPER ] }, SpeciesId.CRAMORANT, { 1: [ SpeciesId.FINIZEN ], 38: [ SpeciesId.PALAFIN ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.INKAY ], 30: [ SpeciesId.MALAMAR ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.FINNEON ], 31: [ SpeciesId.LUMINEON ] }, { 1: [ SpeciesId.INKAY ], 30: [ SpeciesId.MALAMAR ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.TENTACOOL ], 30: [ SpeciesId.TENTACRUEL ] }, { 1: [ SpeciesId.MAGIKARP ], 20: [ SpeciesId.GYARADOS ] }, { 1: [ SpeciesId.BUIZEL ], 26: [ SpeciesId.FLOATZEL ] } ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, SpeciesId.SHELLDER, { 1: [ SpeciesId.CARVANHA ], 30: [ SpeciesId.SHARPEDO ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, SpeciesId.SHELLDER, { 1: [ SpeciesId.CHINCHOU ], 27: [ SpeciesId.LANTURN ]}, { 1: [ SpeciesId.CARVANHA ], 30: [ SpeciesId.SHARPEDO ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ] }, SpeciesId.SHELLDER, { 1: [ SpeciesId.CARVANHA ], 30: [ SpeciesId.SHARPEDO ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ] }, SpeciesId.SHELLDER, { 1: [ SpeciesId.CHINCHOU ], 27: [ SpeciesId.LANTURN ] }, { 1: [ SpeciesId.CARVANHA ], 30: [ SpeciesId.SHARPEDO ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.POLIWAG ], 25: [ SpeciesId.POLIWHIRL ]}, - { 1: [ SpeciesId.HORSEA ], 32: [ SpeciesId.SEADRA ]}, - { 1: [ SpeciesId.GOLDEEN ], 33: [ SpeciesId.SEAKING ]}, - { 1: [ SpeciesId.WAILMER ], 40: [ SpeciesId.WAILORD ]}, - { 1: [ SpeciesId.PANPOUR ], 30: [ SpeciesId.SIMIPOUR ]}, - { 1: [ SpeciesId.WATTREL ], 25: [ SpeciesId.KILOWATTREL ]} + { 1: [ SpeciesId.POLIWAG ], 25: [ SpeciesId.POLIWHIRL ] }, + { 1: [ SpeciesId.HORSEA ], 32: [ SpeciesId.SEADRA ] }, + { 1: [ SpeciesId.GOLDEEN ], 33: [ SpeciesId.SEAKING ] }, + { 1: [ SpeciesId.WAILMER ], 40: [ SpeciesId.WAILORD ] }, + { 1: [ SpeciesId.PANPOUR ], 30: [ SpeciesId.SIMIPOUR ] }, + { 1: [ SpeciesId.WATTREL ], 25: [ SpeciesId.KILOWATTREL ] } ] }, [BiomePoolTier.RARE]: { @@ -435,10 +435,10 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ SpeciesId.LAPRAS, { 1: [ SpeciesId.PIPLUP ], 16: [ SpeciesId.PRINPLUP ], 36: [ SpeciesId.EMPOLEON ]}, { 1: [ SpeciesId.POPPLIO ], 17: [ SpeciesId.BRIONNE ], 34: [ SpeciesId.PRIMARINA ]}] + [TimeOfDay.ALL]: [ SpeciesId.LAPRAS, { 1: [ SpeciesId.PIPLUP ], 16: [ SpeciesId.PRINPLUP ], 36: [ SpeciesId.EMPOLEON ] }, { 1: [ SpeciesId.POPPLIO ], 17: [ SpeciesId.BRIONNE ], 34: [ SpeciesId.PRIMARINA ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KINGDRA, SpeciesId.ROTOM, { 1: [ SpeciesId.TIRTOUGA ], 37: [ SpeciesId.CARRACOSTA ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KINGDRA, SpeciesId.ROTOM, { 1: [ SpeciesId.TIRTOUGA ], 37: [ SpeciesId.CARRACOSTA ] } ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.PELIPPER, SpeciesId.CRAMORANT, SpeciesId.PALAFIN ], [TimeOfDay.DAY]: [ SpeciesId.PELIPPER, SpeciesId.CRAMORANT, SpeciesId.PALAFIN ], @@ -446,34 +446,34 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.SHARPEDO, SpeciesId.LUMINEON, SpeciesId.MALAMAR ], [TimeOfDay.ALL]: [ SpeciesId.TENTACRUEL, SpeciesId.FLOATZEL, SpeciesId.SIMIPOUR, SpeciesId.KILOWATTREL ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KINGDRA, SpeciesId.EMPOLEON, SpeciesId.PRIMARINA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LUGIA ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KINGDRA, SpeciesId.EMPOLEON, SpeciesId.PRIMARINA ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LUGIA ] } }, [BiomeId.SWAMP]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.WOOPER ], 20: [ SpeciesId.QUAGSIRE ]}, { 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.WOOPER ], 20: [ SpeciesId.QUAGSIRE ]}, { 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}, { 1: [ SpeciesId.PALDEA_WOOPER ], 20: [ SpeciesId.CLODSIRE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}, { 1: [ SpeciesId.PALDEA_WOOPER ], 20: [ SpeciesId.CLODSIRE ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.WOOPER ], 20: [ SpeciesId.QUAGSIRE ] }, { 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.WOOPER ], 20: [ SpeciesId.QUAGSIRE ] }, { 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ] }, { 1: [ SpeciesId.PALDEA_WOOPER ], 20: [ SpeciesId.CLODSIRE ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ] }, { 1: [ SpeciesId.PALDEA_WOOPER ], 20: [ SpeciesId.CLODSIRE ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.POLIWAG ], 25: [ SpeciesId.POLIWHIRL ]}, - { 1: [ SpeciesId.GULPIN ], 26: [ SpeciesId.SWALOT ]}, - { 1: [ SpeciesId.SHELLOS ], 30: [ SpeciesId.GASTRODON ]}, - { 1: [ SpeciesId.TYMPOLE ], 25: [ SpeciesId.PALPITOAD ], 36: [ SpeciesId.SEISMITOAD ]} + { 1: [ SpeciesId.POLIWAG ], 25: [ SpeciesId.POLIWHIRL ] }, + { 1: [ SpeciesId.GULPIN ], 26: [ SpeciesId.SWALOT ] }, + { 1: [ SpeciesId.SHELLOS ], 30: [ SpeciesId.GASTRODON ] }, + { 1: [ SpeciesId.TYMPOLE ], 25: [ SpeciesId.PALPITOAD ], 36: [ SpeciesId.SEISMITOAD ] } ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.CROAGUNK ], 37: [ SpeciesId.TOXICROAK ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.CROAGUNK ], 37: [ SpeciesId.TOXICROAK ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.EKANS ], 22: [ SpeciesId.ARBOK ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.CROAGUNK ], 37: [ SpeciesId.TOXICROAK ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.CROAGUNK ], 37: [ SpeciesId.TOXICROAK ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.PSYDUCK ], 33: [ SpeciesId.GOLDUCK ]}, - { 1: [ SpeciesId.BARBOACH ], 30: [ SpeciesId.WHISCASH ]}, - { 1: [ SpeciesId.SKORUPI ], 40: [ SpeciesId.DRAPION ]}, + { 1: [ SpeciesId.PSYDUCK ], 33: [ SpeciesId.GOLDUCK ] }, + { 1: [ SpeciesId.BARBOACH ], 30: [ SpeciesId.WHISCASH ] }, + { 1: [ SpeciesId.SKORUPI ], 40: [ SpeciesId.DRAPION ] }, SpeciesId.STUNFISK, - { 1: [ SpeciesId.MAREANIE ], 38: [ SpeciesId.TOXAPEX ]} + { 1: [ SpeciesId.MAREANIE ], 38: [ SpeciesId.TOXAPEX ] } ] }, [BiomePoolTier.RARE]: { @@ -481,16 +481,16 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.TOTODILE ], 18: [ SpeciesId.CROCONAW ], 30: [ SpeciesId.FERALIGATR ]}, { 1: [ SpeciesId.MUDKIP ], 16: [ SpeciesId.MARSHTOMP ], 36: [ SpeciesId.SWAMPERT ]}] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.TOTODILE ], 18: [ SpeciesId.CROCONAW ], 30: [ SpeciesId.FERALIGATR ] }, { 1: [ SpeciesId.MUDKIP ], 16: [ SpeciesId.MARSHTOMP ], 36: [ SpeciesId.SWAMPERT ] } ] }, [BiomePoolTier.SUPER_RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.GALAR_SLOWPOKE ], 40: [ SpeciesId.GALAR_SLOWBRO ]}, { 1: [ SpeciesId.HISUI_SLIGGOO ], 80: [ SpeciesId.HISUI_GOODRA ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.GALAR_SLOWPOKE ], 40: [ SpeciesId.GALAR_SLOWBRO ]}, { 1: [ SpeciesId.HISUI_SLIGGOO ], 80: [ SpeciesId.HISUI_GOODRA ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.GALAR_SLOWPOKE ], 40: [ SpeciesId.GALAR_SLOWBRO ] }, { 1: [ SpeciesId.HISUI_SLIGGOO ], 80: [ SpeciesId.HISUI_GOODRA ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.GALAR_SLOWPOKE ], 40: [ SpeciesId.GALAR_SLOWBRO ] }, { 1: [ SpeciesId.HISUI_SLIGGOO ], 80: [ SpeciesId.HISUI_GOODRA ] } ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.POLITOED, SpeciesId.GALAR_STUNFISK ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AZELF, SpeciesId.POIPOLE ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AZELF, { 1: [ SpeciesId.POIPOLE ], 60: [ SpeciesId.NAGANADEL ] } ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.QUAGSIRE, SpeciesId.LUDICOLO ], [TimeOfDay.DAY]: [ SpeciesId.QUAGSIRE, SpeciesId.LUDICOLO ], @@ -505,22 +505,22 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FERALIGATR, SpeciesId.POLITOED, SpeciesId.SWAMPERT, SpeciesId.GALAR_STUNFISK ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AZELF, SpeciesId.NAGANADEL ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AZELF, { 1: [ SpeciesId.POIPOLE ], 60: [ SpeciesId.NAGANADEL ] } ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.BEACH]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.STARYU ], 30: [ SpeciesId.STARMIE ] } ], [TimeOfDay.DUSK]: [ SpeciesId.SHELLDER ], [TimeOfDay.NIGHT]: [ SpeciesId.SHELLDER ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.KRABBY ], 28: [ SpeciesId.KINGLER ]}, - { 1: [ SpeciesId.CORPHISH ], 30: [ SpeciesId.CRAWDAUNT ]}, - { 1: [ SpeciesId.DWEBBLE ], 34: [ SpeciesId.CRUSTLE ]}, - { 1: [ SpeciesId.BINACLE ], 39: [ SpeciesId.BARBARACLE ]}, - { 1: [ SpeciesId.MAREANIE ], 38: [ SpeciesId.TOXAPEX ]}, - { 1: [ SpeciesId.WIGLETT ], 26: [ SpeciesId.WUGTRIO ]} + { 1: [ SpeciesId.KRABBY ], 28: [ SpeciesId.KINGLER ] }, + { 1: [ SpeciesId.CORPHISH ], 30: [ SpeciesId.CRAWDAUNT ] }, + { 1: [ SpeciesId.DWEBBLE ], 34: [ SpeciesId.CRUSTLE ] }, + { 1: [ SpeciesId.BINACLE ], 39: [ SpeciesId.BARBARACLE ] }, + { 1: [ SpeciesId.MAREANIE ], 38: [ SpeciesId.TOXAPEX ] }, + { 1: [ SpeciesId.WIGLETT ], 26: [ SpeciesId.WUGTRIO ] } ] }, [BiomePoolTier.UNCOMMON]: { @@ -528,11 +528,11 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BURMY ], 20: [ SpeciesId.WORMADAM ]}, { 1: [ SpeciesId.CLAUNCHER ], 37: [ SpeciesId.CLAWITZER ]}, { 1: [ SpeciesId.SANDYGAST ], 42: [ SpeciesId.PALOSSAND ]}] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.BURMY ], 20: [ SpeciesId.WORMADAM ] }, { 1: [ SpeciesId.CLAUNCHER ], 37: [ SpeciesId.CLAWITZER ] }, { 1: [ SpeciesId.SANDYGAST ], 42: [ SpeciesId.PALOSSAND ] } ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.QUAXLY ], 16: [ SpeciesId.QUAXWELL ], 36: [ SpeciesId.QUAQUAVAL ]}, SpeciesId.TATSUGIRI ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.TIRTOUGA ], 37: [ SpeciesId.CARRACOSTA ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CRESSELIA, SpeciesId.KELDEO, SpeciesId.TAPU_FINI ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.QUAXLY ], 16: [ SpeciesId.QUAXWELL ], 36: [ SpeciesId.QUAQUAVAL ] }, SpeciesId.TATSUGIRI ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.TIRTOUGA ], 37: [ SpeciesId.CARRACOSTA ] } ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CRESSELIA, SpeciesId.KELDEO, SpeciesId.TAPU_FINI ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.STARMIE ], [TimeOfDay.DAY]: [ SpeciesId.STARMIE ], @@ -540,29 +540,29 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.CLOYSTER ], [TimeOfDay.ALL]: [ SpeciesId.KINGLER, SpeciesId.CRAWDAUNT, SpeciesId.WORMADAM, SpeciesId.CRUSTLE, SpeciesId.BARBARACLE, SpeciesId.CLAWITZER, SpeciesId.TOXAPEX, SpeciesId.PALOSSAND ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CARRACOSTA, SpeciesId.QUAQUAVAL ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CRESSELIA, SpeciesId.KELDEO, SpeciesId.TAPU_FINI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CARRACOSTA, SpeciesId.QUAQUAVAL ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CRESSELIA, SpeciesId.KELDEO, SpeciesId.TAPU_FINI ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.LAKE]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ]}, { 1: [ SpeciesId.DUCKLETT ], 35: [ SpeciesId.SWANNA ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ]}, { 1: [ SpeciesId.DUCKLETT ], 35: [ SpeciesId.SWANNA ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.MARILL ], 18: [ SpeciesId.AZUMARILL ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.MARILL ], 18: [ SpeciesId.AZUMARILL ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ] }, { 1: [ SpeciesId.DUCKLETT ], 35: [ SpeciesId.SWANNA ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.LOTAD ], 14: [ SpeciesId.LOMBRE ] }, { 1: [ SpeciesId.DUCKLETT ], 35: [ SpeciesId.SWANNA ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.MARILL ], 18: [ SpeciesId.AZUMARILL ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.MARILL ], 18: [ SpeciesId.AZUMARILL ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.PSYDUCK ], 33: [ SpeciesId.GOLDUCK ]}, - { 1: [ SpeciesId.GOLDEEN ], 33: [ SpeciesId.SEAKING ]}, - { 1: [ SpeciesId.MAGIKARP ], 20: [ SpeciesId.GYARADOS ]}, - { 1: [ SpeciesId.CHEWTLE ], 22: [ SpeciesId.DREDNAW ]} + { 1: [ SpeciesId.PSYDUCK ], 33: [ SpeciesId.GOLDUCK ] }, + { 1: [ SpeciesId.GOLDEEN ], 33: [ SpeciesId.SEAKING ] }, + { 1: [ SpeciesId.MAGIKARP ], 20: [ SpeciesId.GYARADOS ] }, + { 1: [ SpeciesId.CHEWTLE ], 22: [ SpeciesId.DREDNAW ] } ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.DEWPIDER ], 22: [ SpeciesId.ARAQUANID ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.DEWPIDER ], 22: [ SpeciesId.ARAQUANID ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.DEWPIDER ], 22: [ SpeciesId.ARAQUANID ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.DEWPIDER ], 22: [ SpeciesId.ARAQUANID ] } ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ]}, { 1: [ SpeciesId.WOOPER ], 20: [ SpeciesId.QUAGSIRE ]}, { 1: [ SpeciesId.SURSKIT ], 22: [ SpeciesId.MASQUERAIN ]}, SpeciesId.WISHIWASHI, SpeciesId.FLAMIGO ] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.SLOWPOKE ], 37: [ SpeciesId.SLOWBRO ] }, { 1: [ SpeciesId.WOOPER ], 20: [ SpeciesId.QUAGSIRE ] }, { 1: [ SpeciesId.SURSKIT ], 22: [ SpeciesId.MASQUERAIN ] }, SpeciesId.WISHIWASHI, SpeciesId.FLAMIGO ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], @@ -570,14 +570,14 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.SQUIRTLE ], 16: [ SpeciesId.WARTORTLE ], 36: [ SpeciesId.BLASTOISE ]}, - { 1: [ SpeciesId.OSHAWOTT ], 17: [ SpeciesId.DEWOTT ], 36: [ SpeciesId.SAMUROTT ]}, - { 1: [ SpeciesId.FROAKIE ], 16: [ SpeciesId.FROGADIER ], 36: [ SpeciesId.GRENINJA ]}, - { 1: [ SpeciesId.SOBBLE ], 16: [ SpeciesId.DRIZZILE ], 35: [ SpeciesId.INTELEON ]} + { 1: [ SpeciesId.SQUIRTLE ], 16: [ SpeciesId.WARTORTLE ], 36: [ SpeciesId.BLASTOISE ] }, + { 1: [ SpeciesId.OSHAWOTT ], 17: [ SpeciesId.DEWOTT ], 36: [ SpeciesId.SAMUROTT ] }, + { 1: [ SpeciesId.FROAKIE ], 16: [ SpeciesId.FROGADIER ], 36: [ SpeciesId.GRENINJA ] }, + { 1: [ SpeciesId.SOBBLE ], 16: [ SpeciesId.DRIZZILE ], 35: [ SpeciesId.INTELEON ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VAPOREON, SpeciesId.SLOWKING ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SUICUNE, SpeciesId.MESPRIT ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.VAPOREON, SpeciesId.SLOWKING ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SUICUNE, SpeciesId.MESPRIT ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.SWANNA, SpeciesId.ARAQUANID ], [TimeOfDay.DAY]: [ SpeciesId.SWANNA, SpeciesId.ARAQUANID ], @@ -585,9 +585,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.AZUMARILL ], [TimeOfDay.ALL]: [ SpeciesId.GOLDUCK, SpeciesId.SLOWBRO, SpeciesId.SEAKING, SpeciesId.GYARADOS, SpeciesId.MASQUERAIN, SpeciesId.WISHIWASHI, SpeciesId.DREDNAW ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLASTOISE, SpeciesId.VAPOREON, SpeciesId.SLOWKING, SpeciesId.SAMUROTT, SpeciesId.GRENINJA, SpeciesId.INTELEON ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SUICUNE, SpeciesId.MESPRIT ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLASTOISE, SpeciesId.VAPOREON, SpeciesId.SLOWKING, SpeciesId.SAMUROTT, SpeciesId.GRENINJA, SpeciesId.INTELEON ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SUICUNE, SpeciesId.MESPRIT ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.SEABED]: { [BiomePoolTier.COMMON]: { @@ -596,12 +596,12 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.CHINCHOU ], 27: [ SpeciesId.LANTURN ]}, + { 1: [ SpeciesId.CHINCHOU ], 27: [ SpeciesId.LANTURN ] }, SpeciesId.REMORAID, SpeciesId.CLAMPERL, SpeciesId.BASCULIN, - { 1: [ SpeciesId.FRILLISH ], 40: [ SpeciesId.JELLICENT ]}, - { 1: [ SpeciesId.ARROKUDA ], 26: [ SpeciesId.BARRASKEWDA ]}, + { 1: [ SpeciesId.FRILLISH ], 40: [ SpeciesId.JELLICENT ] }, + { 1: [ SpeciesId.ARROKUDA ], 26: [ SpeciesId.BARRASKEWDA ] }, SpeciesId.VELUZA ] }, @@ -611,12 +611,12 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.TENTACOOL ], 30: [ SpeciesId.TENTACRUEL ]}, + { 1: [ SpeciesId.TENTACOOL ], 30: [ SpeciesId.TENTACRUEL ] }, SpeciesId.SHELLDER, - { 1: [ SpeciesId.WAILMER ], 40: [ SpeciesId.WAILORD ]}, + { 1: [ SpeciesId.WAILMER ], 40: [ SpeciesId.WAILORD ] }, SpeciesId.LUVDISC, - { 1: [ SpeciesId.SHELLOS ], 30: [ SpeciesId.GASTRODON ]}, - { 1: [ SpeciesId.SKRELP ], 48: [ SpeciesId.DRAGALGE ]}, + { 1: [ SpeciesId.SHELLOS ], 30: [ SpeciesId.GASTRODON ] }, + { 1: [ SpeciesId.SKRELP ], 48: [ SpeciesId.DRAGALGE ] }, SpeciesId.PINCURCHIN, SpeciesId.DONDOZO ] @@ -626,7 +626,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ SpeciesId.QWILFISH, SpeciesId.CORSOLA, SpeciesId.OCTILLERY, { 1: [ SpeciesId.MANTYKE ], 52: [ SpeciesId.MANTINE ]}, SpeciesId.ALOMOMOLA, { 1: [ SpeciesId.TYNAMO ], 39: [ SpeciesId.EELEKTRIK ]}, SpeciesId.DHELMISE ] + [TimeOfDay.ALL]: [ SpeciesId.QWILFISH, SpeciesId.CORSOLA, SpeciesId.OCTILLERY, { 1: [ SpeciesId.MANTYKE ], 52: [ SpeciesId.MANTINE ] }, SpeciesId.ALOMOMOLA, { 1: [ SpeciesId.TYNAMO ], 39: [ SpeciesId.EELEKTRIK ] }, SpeciesId.DHELMISE ] }, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], @@ -634,16 +634,16 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.OMANYTE ], 40: [ SpeciesId.OMASTAR ]}, - { 1: [ SpeciesId.KABUTO ], 40: [ SpeciesId.KABUTOPS ]}, + { 1: [ SpeciesId.OMANYTE ], 40: [ SpeciesId.OMASTAR ] }, + { 1: [ SpeciesId.KABUTO ], 40: [ SpeciesId.KABUTOPS ] }, SpeciesId.RELICANTH, SpeciesId.PYUKUMUKU, - { 1: [ SpeciesId.GALAR_CORSOLA ], 38: [ SpeciesId.CURSOLA ]}, + { 1: [ SpeciesId.GALAR_CORSOLA ], 38: [ SpeciesId.CURSOLA ] }, SpeciesId.ARCTOVISH, SpeciesId.HISUI_QWILFISH ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FEEBAS, SpeciesId.NIHILEGO ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FEEBAS, SpeciesId.NIHILEGO ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], @@ -658,56 +658,56 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.OMASTAR, SpeciesId.KABUTOPS, SpeciesId.RELICANTH, SpeciesId.EELEKTROSS, SpeciesId.PYUKUMUKU, SpeciesId.DHELMISE, SpeciesId.CURSOLA, SpeciesId.ARCTOVISH, SpeciesId.BASCULEGION, SpeciesId.OVERQWIL ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MILOTIC, SpeciesId.NIHILEGO ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KYOGRE ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MILOTIC, SpeciesId.NIHILEGO ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KYOGRE ] } }, [BiomeId.MOUNTAIN]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ SpeciesId.TAILLOW ], 22: [ SpeciesId.SWELLOW ]}, - { 1: [ SpeciesId.SWABLU ], 35: [ SpeciesId.ALTARIA ]}, - { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ]}, - { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ]}, - { 1: [ SpeciesId.FLETCHLING ], 17: [ SpeciesId.FLETCHINDER ], 35: [ SpeciesId.TALONFLAME ]} + { 1: [ SpeciesId.TAILLOW ], 22: [ SpeciesId.SWELLOW ] }, + { 1: [ SpeciesId.SWABLU ], 35: [ SpeciesId.ALTARIA ] }, + { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ] }, + { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ] }, + { 1: [ SpeciesId.FLETCHLING ], 17: [ SpeciesId.FLETCHINDER ], 35: [ SpeciesId.TALONFLAME ] } ], [TimeOfDay.DAY]: [ - { 1: [ SpeciesId.TAILLOW ], 22: [ SpeciesId.SWELLOW ]}, - { 1: [ SpeciesId.SWABLU ], 35: [ SpeciesId.ALTARIA ]}, - { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ]}, - { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ]}, - { 1: [ SpeciesId.FLETCHLING ], 17: [ SpeciesId.FLETCHINDER ], 35: [ SpeciesId.TALONFLAME ]} + { 1: [ SpeciesId.TAILLOW ], 22: [ SpeciesId.SWELLOW ] }, + { 1: [ SpeciesId.SWABLU ], 35: [ SpeciesId.ALTARIA ] }, + { 1: [ SpeciesId.STARLY ], 14: [ SpeciesId.STARAVIA ], 34: [ SpeciesId.STARAPTOR ] }, + { 1: [ SpeciesId.PIDOVE ], 21: [ SpeciesId.TRANQUILL ], 32: [ SpeciesId.UNFEZANT ] }, + { 1: [ SpeciesId.FLETCHLING ], 17: [ SpeciesId.FLETCHINDER ], 35: [ SpeciesId.TALONFLAME ] } ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ]}, { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ]}, { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.PIDGEY ], 18: [ SpeciesId.PIDGEOTTO ], 36: [ SpeciesId.PIDGEOT ]}, { 1: [ SpeciesId.SPEAROW ], 20: [ SpeciesId.FEAROW ]}, { 1: [ SpeciesId.SKIDDO ], 32: [ SpeciesId.GOGOAT ]}] + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ] }, { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ] }, { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ] }, { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ] }, { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.PIDGEY ], 18: [ SpeciesId.PIDGEOTTO ], 36: [ SpeciesId.PIDGEOT ] }, { 1: [ SpeciesId.SPEAROW ], 20: [ SpeciesId.FEAROW ] }, { 1: [ SpeciesId.SKIDDO ], 32: [ SpeciesId.GOGOAT ] } ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, - { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ]}, - { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}, - { 1: [ SpeciesId.RUFFLET ], 54: [ SpeciesId.BRAVIARY ]}, - { 1: [ SpeciesId.ROOKIDEE ], 18: [ SpeciesId.CORVISQUIRE ], 38: [ SpeciesId.CORVIKNIGHT ]}, - { 1: [ SpeciesId.FLITTLE ], 35: [ SpeciesId.ESPATHRA ]}, + { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ] }, + { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ] }, + { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ] }, + { 1: [ SpeciesId.RUFFLET ], 54: [ SpeciesId.BRAVIARY ] }, + { 1: [ SpeciesId.ROOKIDEE ], 18: [ SpeciesId.CORVISQUIRE ], 38: [ SpeciesId.CORVIKNIGHT ] }, + { 1: [ SpeciesId.FLITTLE ], 35: [ SpeciesId.ESPATHRA ] }, SpeciesId.BOMBIRDIER ], [TimeOfDay.DAY]: [ - { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, - { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ]}, - { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}, - { 1: [ SpeciesId.RUFFLET ], 54: [ SpeciesId.BRAVIARY ]}, - { 1: [ SpeciesId.ROOKIDEE ], 18: [ SpeciesId.CORVISQUIRE ], 38: [ SpeciesId.CORVIKNIGHT ]}, - { 1: [ SpeciesId.FLITTLE ], 35: [ SpeciesId.ESPATHRA ]}, + { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ] }, + { 1: [ SpeciesId.ARON ], 32: [ SpeciesId.LAIRON ], 42: [ SpeciesId.AGGRON ] }, + { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ] }, + { 1: [ SpeciesId.RUFFLET ], 54: [ SpeciesId.BRAVIARY ] }, + { 1: [ SpeciesId.ROOKIDEE ], 18: [ SpeciesId.CORVISQUIRE ], 38: [ SpeciesId.CORVIKNIGHT ] }, + { 1: [ SpeciesId.FLITTLE ], 35: [ SpeciesId.ESPATHRA ] }, SpeciesId.BOMBIRDIER ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.VULLABY ], 54: [ SpeciesId.MANDIBUZZ ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.VULLABY ], 54: [ SpeciesId.MANDIBUZZ ]}], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.VULLABY ], 54: [ SpeciesId.MANDIBUZZ ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.VULLABY ], 54: [ SpeciesId.MANDIBUZZ ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.MACHOP ], 28: [ SpeciesId.MACHOKE ]}, - { 1: [ SpeciesId.GEODUDE ], 25: [ SpeciesId.GRAVELER ]}, - { 1: [ SpeciesId.NATU ], 25: [ SpeciesId.XATU ]}, - { 1: [ SpeciesId.SLUGMA ], 38: [ SpeciesId.MAGCARGO ]}, - { 1: [ SpeciesId.NACLI ], 24: [ SpeciesId.NACLSTACK ], 38: [ SpeciesId.GARGANACL ]} + { 1: [ SpeciesId.MACHOP ], 28: [ SpeciesId.MACHOKE ] }, + { 1: [ SpeciesId.GEODUDE ], 25: [ SpeciesId.GRAVELER ] }, + { 1: [ SpeciesId.NATU ], 25: [ SpeciesId.XATU ] }, + { 1: [ SpeciesId.SLUGMA ], 38: [ SpeciesId.MAGCARGO ] }, + { 1: [ SpeciesId.NACLI ], 24: [ SpeciesId.NACLSTACK ], 38: [ SpeciesId.GARGANACL ] } ] }, [BiomePoolTier.RARE]: { @@ -715,7 +715,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.MURKROW ], - [TimeOfDay.ALL]: [ SpeciesId.SKARMORY, { 1: [ SpeciesId.TORCHIC ], 16: [ SpeciesId.COMBUSKEN ], 36: [ SpeciesId.BLAZIKEN ]}, { 1: [ SpeciesId.SPOINK ], 32: [ SpeciesId.GRUMPIG ]}, SpeciesId.HAWLUCHA, SpeciesId.KLAWF ] + [TimeOfDay.ALL]: [ SpeciesId.SKARMORY, { 1: [ SpeciesId.TORCHIC ], 16: [ SpeciesId.COMBUSKEN ], 36: [ SpeciesId.BLAZIKEN ] }, { 1: [ SpeciesId.SPOINK ], 32: [ SpeciesId.GRUMPIG ] }, SpeciesId.HAWLUCHA, SpeciesId.KLAWF ] }, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], @@ -723,16 +723,16 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.LARVITAR ], 30: [ SpeciesId.PUPITAR ]}, - { 1: [ SpeciesId.CRANIDOS ], 30: [ SpeciesId.RAMPARDOS ]}, - { 1: [ SpeciesId.SHIELDON ], 30: [ SpeciesId.BASTIODON ]}, - { 1: [ SpeciesId.GIBLE ], 24: [ SpeciesId.GABITE ], 48: [ SpeciesId.GARCHOMP ]}, + { 1: [ SpeciesId.LARVITAR ], 30: [ SpeciesId.PUPITAR ] }, + { 1: [ SpeciesId.CRANIDOS ], 30: [ SpeciesId.RAMPARDOS ] }, + { 1: [ SpeciesId.SHIELDON ], 30: [ SpeciesId.BASTIODON ] }, + { 1: [ SpeciesId.GIBLE ], 24: [ SpeciesId.GABITE ], 48: [ SpeciesId.GARCHOMP ] }, SpeciesId.ROTOM, SpeciesId.ARCHEOPS, - { 1: [ SpeciesId.AXEW ], 38: [ SpeciesId.FRAXURE ]} + { 1: [ SpeciesId.AXEW ], 38: [ SpeciesId.FRAXURE ] } ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TORNADUS, SpeciesId.TING_LU, SpeciesId.OGERPON ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TORNADUS, SpeciesId.TING_LU, SpeciesId.OGERPON ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.SWELLOW, SpeciesId.ALTARIA, SpeciesId.STARAPTOR, SpeciesId.UNFEZANT, SpeciesId.BRAVIARY, SpeciesId.TALONFLAME, SpeciesId.CORVIKNIGHT, SpeciesId.ESPATHRA ], [TimeOfDay.DAY]: [ SpeciesId.SWELLOW, SpeciesId.ALTARIA, SpeciesId.STARAPTOR, SpeciesId.UNFEZANT, SpeciesId.BRAVIARY, SpeciesId.TALONFLAME, SpeciesId.CORVIKNIGHT, SpeciesId.ESPATHRA ], @@ -740,39 +740,39 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.MANDIBUZZ ], [TimeOfDay.ALL]: [ SpeciesId.PIDGEOT, SpeciesId.FEAROW, SpeciesId.SKARMORY, SpeciesId.AGGRON, SpeciesId.GOGOAT, SpeciesId.GARGANACL ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.HISUI_BRAVIARY ], [TimeOfDay.DAY]: [ SpeciesId.HISUI_BRAVIARY ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLAZIKEN, SpeciesId.RAMPARDOS, SpeciesId.BASTIODON, SpeciesId.HAWLUCHA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM, SpeciesId.TORNADUS, SpeciesId.TING_LU, SpeciesId.OGERPON ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HO_OH ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.HISUI_BRAVIARY ], [TimeOfDay.DAY]: [ SpeciesId.HISUI_BRAVIARY ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLAZIKEN, SpeciesId.RAMPARDOS, SpeciesId.BASTIODON, SpeciesId.HAWLUCHA ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM, SpeciesId.TORNADUS, SpeciesId.TING_LU, SpeciesId.OGERPON ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HO_OH ] } }, [BiomeId.BADLANDS]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.PHANPY ], 25: [ SpeciesId.DONPHAN ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.PHANPY ], 25: [ SpeciesId.DONPHAN ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.PHANPY ], 25: [ SpeciesId.DONPHAN ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.PHANPY ], 25: [ SpeciesId.DONPHAN ] } ], [TimeOfDay.DUSK]: [], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.CUBONE ], 28: [ SpeciesId.MAROWAK ]}], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.CUBONE ], 28: [ SpeciesId.MAROWAK ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.DIGLETT ], 26: [ SpeciesId.DUGTRIO ]}, - { 1: [ SpeciesId.GEODUDE ], 25: [ SpeciesId.GRAVELER ]}, - { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, - { 1: [ SpeciesId.DRILBUR ], 31: [ SpeciesId.EXCADRILL ]}, - { 1: [ SpeciesId.MUDBRAY ], 30: [ SpeciesId.MUDSDALE ]} + { 1: [ SpeciesId.DIGLETT ], 26: [ SpeciesId.DUGTRIO ] }, + { 1: [ SpeciesId.GEODUDE ], 25: [ SpeciesId.GRAVELER ] }, + { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ] }, + { 1: [ SpeciesId.DRILBUR ], 31: [ SpeciesId.EXCADRILL ] }, + { 1: [ SpeciesId.MUDBRAY ], 30: [ SpeciesId.MUDSDALE ] } ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.SIZZLIPEDE ], 28: [ SpeciesId.CENTISKORCH ]}, { 1: [ SpeciesId.CAPSAKID ], 30: [ SpeciesId.SCOVILLAIN ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.SIZZLIPEDE ], 28: [ SpeciesId.CENTISKORCH ]}, { 1: [ SpeciesId.CAPSAKID ], 30: [ SpeciesId.SCOVILLAIN ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.SIZZLIPEDE ], 28: [ SpeciesId.CENTISKORCH ] }, { 1: [ SpeciesId.CAPSAKID ], 30: [ SpeciesId.SCOVILLAIN ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.SIZZLIPEDE ], 28: [ SpeciesId.CENTISKORCH ] }, { 1: [ SpeciesId.CAPSAKID ], 30: [ SpeciesId.SCOVILLAIN ] } ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.SANDSHREW ], 22: [ SpeciesId.SANDSLASH ]}, - { 1: [ SpeciesId.NUMEL ], 33: [ SpeciesId.CAMERUPT ]}, - { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}, - { 1: [ SpeciesId.CUFANT ], 34: [ SpeciesId.COPPERAJAH ]} + { 1: [ SpeciesId.SANDSHREW ], 22: [ SpeciesId.SANDSLASH ] }, + { 1: [ SpeciesId.NUMEL ], 33: [ SpeciesId.CAMERUPT ] }, + { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ] }, + { 1: [ SpeciesId.CUFANT ], 34: [ SpeciesId.COPPERAJAH ] } ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ONIX, SpeciesId.GLIGAR, { 1: [ SpeciesId.POLTCHAGEIST ], 30: [ SpeciesId.SINISTCHA ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LANDORUS, SpeciesId.OKIDOGI ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ONIX, SpeciesId.GLIGAR, { 1: [ SpeciesId.POLTCHAGEIST ], 30: [ SpeciesId.SINISTCHA ] } ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LANDORUS, SpeciesId.OKIDOGI ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.DONPHAN, SpeciesId.CENTISKORCH, SpeciesId.SCOVILLAIN ], [TimeOfDay.DAY]: [ SpeciesId.DONPHAN, SpeciesId.CENTISKORCH, SpeciesId.SCOVILLAIN ], @@ -780,9 +780,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.MAROWAK ], [TimeOfDay.ALL]: [ SpeciesId.DUGTRIO, SpeciesId.GOLEM, SpeciesId.RHYPERIOR, SpeciesId.GLISCOR, SpeciesId.EXCADRILL, SpeciesId.MUDSDALE, SpeciesId.COPPERAJAH ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.STEELIX, SpeciesId.SINISTCHA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LANDORUS, SpeciesId.OKIDOGI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GROUDON ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.STEELIX, SpeciesId.SINISTCHA ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.LANDORUS, SpeciesId.OKIDOGI ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GROUDON ] } }, [BiomeId.CAVE]: { [BiomePoolTier.COMMON]: { @@ -791,27 +791,27 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.ZUBAT ], 22: [ SpeciesId.GOLBAT ]}, - { 1: [ SpeciesId.PARAS ], 24: [ SpeciesId.PARASECT ]}, - { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, - { 1: [ SpeciesId.WHISMUR ], 20: [ SpeciesId.LOUDRED ], 40: [ SpeciesId.EXPLOUD ]}, - { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ]}, - { 1: [ SpeciesId.WOOBAT ], 20: [ SpeciesId.SWOOBAT ]}, - { 1: [ SpeciesId.BUNNELBY ], 20: [ SpeciesId.DIGGERSBY ]}, - { 1: [ SpeciesId.NACLI ], 24: [ SpeciesId.NACLSTACK ], 38: [ SpeciesId.GARGANACL ]} + { 1: [ SpeciesId.ZUBAT ], 22: [ SpeciesId.GOLBAT ] }, + { 1: [ SpeciesId.PARAS ], 24: [ SpeciesId.PARASECT ] }, + { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ] }, + { 1: [ SpeciesId.WHISMUR ], 20: [ SpeciesId.LOUDRED ], 40: [ SpeciesId.EXPLOUD ] }, + { 1: [ SpeciesId.ROGGENROLA ], 25: [ SpeciesId.BOLDORE ] }, + { 1: [ SpeciesId.WOOBAT ], 20: [ SpeciesId.SWOOBAT ] }, + { 1: [ SpeciesId.BUNNELBY ], 20: [ SpeciesId.DIGGERSBY ] }, + { 1: [ SpeciesId.NACLI ], 24: [ SpeciesId.NACLSTACK ], 38: [ SpeciesId.GARGANACL ] } ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.ROCKRUFF ], 25: [ SpeciesId.LYCANROC ]}], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.ROCKRUFF ], 25: [ SpeciesId.LYCANROC ] } ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.GEODUDE ], 25: [ SpeciesId.GRAVELER ]}, - { 1: [ SpeciesId.MAKUHITA ], 24: [ SpeciesId.HARIYAMA ]}, + { 1: [ SpeciesId.GEODUDE ], 25: [ SpeciesId.GRAVELER ] }, + { 1: [ SpeciesId.MAKUHITA ], 24: [ SpeciesId.HARIYAMA ] }, SpeciesId.NOSEPASS, - { 1: [ SpeciesId.NOIBAT ], 48: [ SpeciesId.NOIVERN ]}, - { 1: [ SpeciesId.WIMPOD ], 30: [ SpeciesId.GOLISOPOD ]} + { 1: [ SpeciesId.NOIBAT ], 48: [ SpeciesId.NOIVERN ] }, + { 1: [ SpeciesId.WIMPOD ], 30: [ SpeciesId.GOLISOPOD ] } ] }, [BiomePoolTier.RARE]: { @@ -819,10 +819,10 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ SpeciesId.ONIX, { 1: [ SpeciesId.FERROSEED ], 40: [ SpeciesId.FERROTHORN ]}, SpeciesId.CARBINK, { 1: [ SpeciesId.GLIMMET ], 35: [ SpeciesId.GLIMMORA ]}] + [TimeOfDay.ALL]: [ SpeciesId.ONIX, { 1: [ SpeciesId.FERROSEED ], 40: [ SpeciesId.FERROTHORN ] }, SpeciesId.CARBINK, { 1: [ SpeciesId.GLIMMET ], 35: [ SpeciesId.GLIMMORA ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SHUCKLE ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UXIE ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SHUCKLE ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UXIE ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], @@ -830,34 +830,34 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.PARASECT, SpeciesId.ONIX, SpeciesId.CROBAT, SpeciesId.URSARING, SpeciesId.EXPLOUD, SpeciesId.PROBOPASS, SpeciesId.GIGALITH, SpeciesId.SWOOBAT, SpeciesId.DIGGERSBY, SpeciesId.NOIVERN, SpeciesId.GOLISOPOD, SpeciesId.GARGANACL ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.LYCANROC ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SHUCKLE, SpeciesId.FERROTHORN, SpeciesId.GLIMMORA ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UXIE ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TERAPAGOS ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.LYCANROC ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SHUCKLE, SpeciesId.FERROTHORN, SpeciesId.GLIMMORA ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UXIE ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TERAPAGOS ] } }, [BiomeId.DESERT]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [ SpeciesId.TRAPINCH, { 1: [ SpeciesId.HIPPOPOTAS ], 34: [ SpeciesId.HIPPOWDON ]}, { 1: [ SpeciesId.RELLOR ], 29: [ SpeciesId.RABSCA ]}], - [TimeOfDay.DAY]: [ SpeciesId.TRAPINCH, { 1: [ SpeciesId.HIPPOPOTAS ], 34: [ SpeciesId.HIPPOWDON ]}, { 1: [ SpeciesId.RELLOR ], 29: [ SpeciesId.RABSCA ]}], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.CACNEA ], 32: [ SpeciesId.CACTURNE ]}, { 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.CACNEA ], 32: [ SpeciesId.CACTURNE ]}, { 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SANDSHREW ], 22: [ SpeciesId.SANDSLASH ]}, { 1: [ SpeciesId.SKORUPI ], 40: [ SpeciesId.DRAPION ]}, { 1: [ SpeciesId.SILICOBRA ], 36: [ SpeciesId.SANDACONDA ]}] + [TimeOfDay.DAWN]: [ SpeciesId.TRAPINCH, { 1: [ SpeciesId.HIPPOPOTAS ], 34: [ SpeciesId.HIPPOWDON ] }, { 1: [ SpeciesId.RELLOR ], 29: [ SpeciesId.RABSCA ] } ], + [TimeOfDay.DAY]: [ SpeciesId.TRAPINCH, { 1: [ SpeciesId.HIPPOPOTAS ], 34: [ SpeciesId.HIPPOWDON ] }, { 1: [ SpeciesId.RELLOR ], 29: [ SpeciesId.RABSCA ] } ], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.CACNEA ], 32: [ SpeciesId.CACTURNE ] }, { 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.CACNEA ], 32: [ SpeciesId.CACTURNE ] }, { 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.SANDSHREW ], 22: [ SpeciesId.SANDSLASH ] }, { 1: [ SpeciesId.SKORUPI ], 40: [ SpeciesId.DRAPION ] }, { 1: [ SpeciesId.SILICOBRA ], 36: [ SpeciesId.SANDACONDA ] } ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ]}, SpeciesId.HELIOPTILE ], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ]}, SpeciesId.HELIOPTILE ], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ] }, SpeciesId.HELIOPTILE ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.SANDILE ], 29: [ SpeciesId.KROKOROK ], 40: [ SpeciesId.KROOKODILE ] }, SpeciesId.HELIOPTILE ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ SpeciesId.MARACTUS, { 1: [ SpeciesId.BRAMBLIN ], 30: [ SpeciesId.BRAMBLEGHAST ]}, SpeciesId.ORTHWORM ] + [TimeOfDay.ALL]: [ SpeciesId.MARACTUS, { 1: [ SpeciesId.BRAMBLIN ], 30: [ SpeciesId.BRAMBLEGHAST ] }, SpeciesId.ORTHWORM ] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.VIBRAVA ], 45: [ SpeciesId.FLYGON ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.VIBRAVA ], 45: [ SpeciesId.FLYGON ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.VIBRAVA ], 45: [ SpeciesId.FLYGON ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.VIBRAVA ], 45: [ SpeciesId.FLYGON ] } ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.DARUMAKA ], 35: [ SpeciesId.DARMANITAN ]}] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.DARUMAKA ], 35: [ SpeciesId.DARMANITAN ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.LILEEP ], 40: [ SpeciesId.CRADILY ]}, { 1: [ SpeciesId.ANORITH ], 40: [ SpeciesId.ARMALDO ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIROCK, SpeciesId.TAPU_BULU, SpeciesId.PHEROMOSA ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.LILEEP ], 40: [ SpeciesId.CRADILY ] }, { 1: [ SpeciesId.ANORITH ], 40: [ SpeciesId.ARMALDO ] } ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIROCK, SpeciesId.TAPU_BULU, SpeciesId.PHEROMOSA ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.HIPPOWDON, SpeciesId.HELIOLISK, SpeciesId.RABSCA ], [TimeOfDay.DAY]: [ SpeciesId.HIPPOWDON, SpeciesId.HELIOLISK, SpeciesId.RABSCA ], @@ -865,9 +865,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.CACTURNE, SpeciesId.KROOKODILE ], [TimeOfDay.ALL]: [ SpeciesId.SANDSLASH, SpeciesId.DRAPION, SpeciesId.DARMANITAN, SpeciesId.MARACTUS, SpeciesId.SANDACONDA, SpeciesId.BRAMBLEGHAST ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CRADILY, SpeciesId.ARMALDO ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIROCK, SpeciesId.TAPU_BULU, SpeciesId.PHEROMOSA ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CRADILY, SpeciesId.ARMALDO ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIROCK, SpeciesId.TAPU_BULU, SpeciesId.PHEROMOSA ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.ICE_CAVE]: { [BiomePoolTier.COMMON]: { @@ -876,14 +876,14 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.SEEL ], 34: [ SpeciesId.DEWGONG ]}, - { 1: [ SpeciesId.SWINUB ], 33: [ SpeciesId.PILOSWINE ]}, - { 1: [ SpeciesId.SNOVER ], 40: [ SpeciesId.ABOMASNOW ]}, - { 1: [ SpeciesId.VANILLITE ], 35: [ SpeciesId.VANILLISH ], 47: [ SpeciesId.VANILLUXE ]}, - { 1: [ SpeciesId.CUBCHOO ], 37: [ SpeciesId.BEARTIC ]}, - { 1: [ SpeciesId.BERGMITE ], 37: [ SpeciesId.AVALUGG ]}, + { 1: [ SpeciesId.SEEL ], 34: [ SpeciesId.DEWGONG ] }, + { 1: [ SpeciesId.SWINUB ], 33: [ SpeciesId.PILOSWINE ] }, + { 1: [ SpeciesId.SNOVER ], 40: [ SpeciesId.ABOMASNOW ] }, + { 1: [ SpeciesId.VANILLITE ], 35: [ SpeciesId.VANILLISH ], 47: [ SpeciesId.VANILLUXE ] }, + { 1: [ SpeciesId.CUBCHOO ], 37: [ SpeciesId.BEARTIC ] }, + { 1: [ SpeciesId.BERGMITE ], 37: [ SpeciesId.AVALUGG ] }, SpeciesId.CRABRAWLER, - { 1: [ SpeciesId.SNOM ], 20: [ SpeciesId.FROSMOTH ]} + { 1: [ SpeciesId.SNOM ], 20: [ SpeciesId.FROSMOTH ] } ] }, [BiomePoolTier.UNCOMMON]: { @@ -893,15 +893,15 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SNEASEL, - { 1: [ SpeciesId.SNORUNT ], 42: [ SpeciesId.GLALIE ]}, - { 1: [ SpeciesId.SPHEAL ], 32: [ SpeciesId.SEALEO ], 44: [ SpeciesId.WALREIN ]}, + { 1: [ SpeciesId.SNORUNT ], 42: [ SpeciesId.GLALIE ] }, + { 1: [ SpeciesId.SPHEAL ], 32: [ SpeciesId.SEALEO ], 44: [ SpeciesId.WALREIN ] }, SpeciesId.EISCUE, - { 1: [ SpeciesId.CETODDLE ], 30: [ SpeciesId.CETITAN ]} + { 1: [ SpeciesId.CETODDLE ], 30: [ SpeciesId.CETITAN ] } ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JYNX, SpeciesId.LAPRAS, SpeciesId.FROSLASS, SpeciesId.CRYOGONAL ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DELIBIRD, SpeciesId.ROTOM, { 1: [ SpeciesId.AMAURA ], 59: [ SpeciesId.AURORUS ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ARTICUNO, SpeciesId.REGICE ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JYNX, SpeciesId.LAPRAS, SpeciesId.FROSLASS, SpeciesId.CRYOGONAL ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DELIBIRD, SpeciesId.ROTOM, { 1: [ SpeciesId.AMAURA ], 39: [ SpeciesId.AURORUS ] } ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ARTICUNO, SpeciesId.REGICE ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], @@ -909,46 +909,46 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DEWGONG, SpeciesId.GLALIE, SpeciesId.WALREIN, SpeciesId.WEAVILE, SpeciesId.MAMOSWINE, SpeciesId.FROSLASS, SpeciesId.VANILLUXE, SpeciesId.BEARTIC, SpeciesId.CRYOGONAL, SpeciesId.AVALUGG, SpeciesId.CRABOMINABLE, SpeciesId.CETITAN ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JYNX, SpeciesId.LAPRAS, SpeciesId.GLACEON, SpeciesId.AURORUS ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ARTICUNO, SpeciesId.REGICE, SpeciesId.ROTOM ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KYUREM ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JYNX, SpeciesId.LAPRAS, SpeciesId.GLACEON, SpeciesId.AURORUS ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ARTICUNO, SpeciesId.REGICE, SpeciesId.ROTOM ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KYUREM ] } }, [BiomeId.MEADOW]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.LEDYBA ], 18: [ SpeciesId.LEDIAN ]}, SpeciesId.ROSELIA, SpeciesId.COTTONEE, SpeciesId.MINCCINO ], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.LEDYBA ], 18: [ SpeciesId.LEDIAN ] }, SpeciesId.ROSELIA, SpeciesId.COTTONEE, SpeciesId.MINCCINO ], [TimeOfDay.DAY]: [ SpeciesId.ROSELIA, SpeciesId.COTTONEE, SpeciesId.MINCCINO ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.BLITZLE ], 27: [ SpeciesId.ZEBSTRIKA ]}, - { 1: [ SpeciesId.FLABEBE ], 19: [ SpeciesId.FLOETTE ]}, - { 1: [ SpeciesId.CUTIEFLY ], 25: [ SpeciesId.RIBOMBEE ]}, - { 1: [ SpeciesId.GOSSIFLEUR ], 20: [ SpeciesId.ELDEGOSS ]}, - { 1: [ SpeciesId.WOOLOO ], 24: [ SpeciesId.DUBWOOL ]} + { 1: [ SpeciesId.BLITZLE ], 27: [ SpeciesId.ZEBSTRIKA ] }, + { 1: [ SpeciesId.FLABEBE ], 19: [ SpeciesId.FLOETTE ] }, + { 1: [ SpeciesId.CUTIEFLY ], 25: [ SpeciesId.RIBOMBEE ] }, + { 1: [ SpeciesId.GOSSIFLEUR ], 20: [ SpeciesId.ELDEGOSS ] }, + { 1: [ SpeciesId.WOOLOO ], 24: [ SpeciesId.DUBWOOL ] } ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ SpeciesId.PONYTA ], 40: [ SpeciesId.RAPIDASH ]}, - { 1: [ SpeciesId.SNUBBULL ], 23: [ SpeciesId.GRANBULL ]}, - { 1: [ SpeciesId.SKITTY ], 30: [ SpeciesId.DELCATTY ]}, + { 1: [ SpeciesId.PONYTA ], 40: [ SpeciesId.RAPIDASH ] }, + { 1: [ SpeciesId.SNUBBULL ], 23: [ SpeciesId.GRANBULL ] }, + { 1: [ SpeciesId.SKITTY ], 30: [ SpeciesId.DELCATTY ] }, SpeciesId.BOUFFALANT, - { 1: [ SpeciesId.SMOLIV ], 25: [ SpeciesId.DOLLIV ], 35: [ SpeciesId.ARBOLIVA ]} + { 1: [ SpeciesId.SMOLIV ], 25: [ SpeciesId.DOLLIV ], 35: [ SpeciesId.ARBOLIVA ] } ], [TimeOfDay.DAY]: [ - { 1: [ SpeciesId.PONYTA ], 40: [ SpeciesId.RAPIDASH ]}, - { 1: [ SpeciesId.SNUBBULL ], 23: [ SpeciesId.GRANBULL ]}, - { 1: [ SpeciesId.SKITTY ], 30: [ SpeciesId.DELCATTY ]}, + { 1: [ SpeciesId.PONYTA ], 40: [ SpeciesId.RAPIDASH ] }, + { 1: [ SpeciesId.SNUBBULL ], 23: [ SpeciesId.GRANBULL ] }, + { 1: [ SpeciesId.SKITTY ], 30: [ SpeciesId.DELCATTY ] }, SpeciesId.BOUFFALANT, - { 1: [ SpeciesId.SMOLIV ], 25: [ SpeciesId.DOLLIV ], 35: [ SpeciesId.ARBOLIVA ]} + { 1: [ SpeciesId.SMOLIV ], 25: [ SpeciesId.DOLLIV ], 35: [ SpeciesId.ARBOLIVA ] } ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.JIGGLYPUFF ], 30: [ SpeciesId.WIGGLYTUFF ]}, - { 1: [ SpeciesId.MAREEP ], 15: [ SpeciesId.FLAAFFY ], 30: [ SpeciesId.AMPHAROS ]}, - { 1: [ SpeciesId.RALTS ], 20: [ SpeciesId.KIRLIA ], 30: [ SpeciesId.GARDEVOIR ]}, - { 1: [ SpeciesId.GLAMEOW ], 38: [ SpeciesId.PURUGLY ]}, + { 1: [ SpeciesId.JIGGLYPUFF ], 30: [ SpeciesId.WIGGLYTUFF ] }, + { 1: [ SpeciesId.MAREEP ], 15: [ SpeciesId.FLAAFFY ], 30: [ SpeciesId.AMPHAROS ] }, + { 1: [ SpeciesId.RALTS ], 20: [ SpeciesId.KIRLIA ], 30: [ SpeciesId.GARDEVOIR ] }, + { 1: [ SpeciesId.GLAMEOW ], 38: [ SpeciesId.PURUGLY ] }, SpeciesId.ORICORIO ] }, @@ -957,10 +957,10 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.VOLBEAT, SpeciesId.ILLUMISE ], - [TimeOfDay.ALL]: [ SpeciesId.TAUROS, SpeciesId.EEVEE, SpeciesId.MILTANK, SpeciesId.SPINDA, { 1: [ SpeciesId.APPLIN ], 30: [ SpeciesId.DIPPLIN ]}, { 1: [ SpeciesId.SPRIGATITO ], 16: [ SpeciesId.FLORAGATO ], 36: [ SpeciesId.MEOWSCARADA ]}] + [TimeOfDay.ALL]: [ SpeciesId.TAUROS, SpeciesId.EEVEE, SpeciesId.MILTANK, SpeciesId.SPINDA, { 1: [ SpeciesId.APPLIN ], 30: [ SpeciesId.DIPPLIN ] }, { 1: [ SpeciesId.SPRIGATITO ], 16: [ SpeciesId.FLORAGATO ], 36: [ SpeciesId.MEOWSCARADA ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CHANSEY, SpeciesId.SYLVEON ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MELOETTA ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CHANSEY, SpeciesId.SYLVEON ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MELOETTA ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.LEDIAN, SpeciesId.GRANBULL, SpeciesId.DELCATTY, SpeciesId.ROSERADE, SpeciesId.CINCCINO, SpeciesId.BOUFFALANT, SpeciesId.ARBOLIVA ], [TimeOfDay.DAY]: [ SpeciesId.GRANBULL, SpeciesId.DELCATTY, SpeciesId.ROSERADE, SpeciesId.CINCCINO, SpeciesId.BOUFFALANT, SpeciesId.ARBOLIVA ], @@ -968,9 +968,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TAUROS, SpeciesId.MILTANK, SpeciesId.GARDEVOIR, SpeciesId.PURUGLY, SpeciesId.ZEBSTRIKA, SpeciesId.FLORGES, SpeciesId.RIBOMBEE, SpeciesId.DUBWOOL ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.HISUI_LILLIGANT ], [TimeOfDay.DAY]: [ SpeciesId.HISUI_LILLIGANT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLISSEY, SpeciesId.SYLVEON, SpeciesId.FLAPPLE, SpeciesId.APPLETUN, SpeciesId.MEOWSCARADA, SpeciesId.HYDRAPPLE ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MELOETTA ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SHAYMIN ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.HISUI_LILLIGANT ], [TimeOfDay.DAY]: [ SpeciesId.HISUI_LILLIGANT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLISSEY, SpeciesId.SYLVEON, SpeciesId.FLAPPLE, SpeciesId.APPLETUN, SpeciesId.MEOWSCARADA, SpeciesId.HYDRAPPLE ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MELOETTA ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SHAYMIN ] } }, [BiomeId.POWER_PLANT]: { [BiomePoolTier.COMMON]: { @@ -980,20 +980,20 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.PIKACHU, - { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ]}, - { 1: [ SpeciesId.VOLTORB ], 30: [ SpeciesId.ELECTRODE ]}, - { 1: [ SpeciesId.ELECTRIKE ], 26: [ SpeciesId.MANECTRIC ]}, - { 1: [ SpeciesId.SHINX ], 15: [ SpeciesId.LUXIO ], 30: [ SpeciesId.LUXRAY ]}, + { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ] }, + { 1: [ SpeciesId.VOLTORB ], 30: [ SpeciesId.ELECTRODE ] }, + { 1: [ SpeciesId.ELECTRIKE ], 26: [ SpeciesId.MANECTRIC ] }, + { 1: [ SpeciesId.SHINX ], 15: [ SpeciesId.LUXIO ], 30: [ SpeciesId.LUXRAY ] }, SpeciesId.DEDENNE, - { 1: [ SpeciesId.GRUBBIN ], 20: [ SpeciesId.CHARJABUG ]}, - { 1: [ SpeciesId.PAWMI ], 18: [ SpeciesId.PAWMO ], 32: [ SpeciesId.PAWMOT ]}, - { 1: [ SpeciesId.TADBULB ], 30: [ SpeciesId.BELLIBOLT ]} + { 1: [ SpeciesId.GRUBBIN ], 20: [ SpeciesId.CHARJABUG ] }, + { 1: [ SpeciesId.PAWMI ], 18: [ SpeciesId.PAWMO ], 32: [ SpeciesId.PAWMOT ] }, + { 1: [ SpeciesId.TADBULB ], 30: [ SpeciesId.BELLIBOLT ] } ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ELECTABUZZ, SpeciesId.PLUSLE, SpeciesId.MINUN, SpeciesId.PACHIRISU, SpeciesId.EMOLGA, SpeciesId.TOGEDEMARU ]}, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.MAREEP ], 15: [ SpeciesId.FLAAFFY ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JOLTEON, SpeciesId.HISUI_VOLTORB ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.RAIKOU, SpeciesId.THUNDURUS, SpeciesId.XURKITREE, SpeciesId.ZERAORA, SpeciesId.REGIELEKI ]}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ELECTABUZZ, SpeciesId.PLUSLE, SpeciesId.MINUN, SpeciesId.PACHIRISU, SpeciesId.EMOLGA, SpeciesId.TOGEDEMARU ] }, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.MAREEP ], 15: [ SpeciesId.FLAAFFY ] } ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JOLTEON, SpeciesId.HISUI_VOLTORB ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.RAIKOU, SpeciesId.THUNDURUS, SpeciesId.XURKITREE, SpeciesId.ZERAORA, SpeciesId.REGIELEKI ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], @@ -1001,9 +1001,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.RAICHU, SpeciesId.MANECTRIC, SpeciesId.LUXRAY, SpeciesId.MAGNEZONE, SpeciesId.ELECTIVIRE, SpeciesId.DEDENNE, SpeciesId.VIKAVOLT, SpeciesId.TOGEDEMARU, SpeciesId.PAWMOT, SpeciesId.BELLIBOLT ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JOLTEON, SpeciesId.AMPHAROS, SpeciesId.HISUI_ELECTRODE ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZAPDOS, SpeciesId.RAIKOU, SpeciesId.THUNDURUS, SpeciesId.XURKITREE, SpeciesId.ZERAORA, SpeciesId.REGIELEKI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZEKROM ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.JOLTEON, SpeciesId.AMPHAROS, SpeciesId.HISUI_ELECTRODE ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZAPDOS, SpeciesId.RAIKOU, SpeciesId.THUNDURUS, SpeciesId.XURKITREE, SpeciesId.ZERAORA, SpeciesId.REGIELEKI ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZEKROM ] } }, [BiomeId.VOLCANO]: { [BiomePoolTier.COMMON]: { @@ -1014,32 +1014,32 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ SpeciesId.VULPIX, SpeciesId.GROWLITHE, - { 1: [ SpeciesId.PONYTA ], 40: [ SpeciesId.RAPIDASH ]}, - { 1: [ SpeciesId.SLUGMA ], 38: [ SpeciesId.MAGCARGO ]}, - { 1: [ SpeciesId.NUMEL ], 33: [ SpeciesId.CAMERUPT ]}, - { 1: [ SpeciesId.SALANDIT ], 33: [ SpeciesId.SALAZZLE ]}, - { 1: [ SpeciesId.ROLYCOLY ], 18: [ SpeciesId.CARKOL ], 34: [ SpeciesId.COALOSSAL ]} + { 1: [ SpeciesId.PONYTA ], 40: [ SpeciesId.RAPIDASH ] }, + { 1: [ SpeciesId.SLUGMA ], 38: [ SpeciesId.MAGCARGO ] }, + { 1: [ SpeciesId.NUMEL ], 33: [ SpeciesId.CAMERUPT ] }, + { 1: [ SpeciesId.SALANDIT ], 33: [ SpeciesId.SALAZZLE ] }, + { 1: [ SpeciesId.ROLYCOLY ], 18: [ SpeciesId.CARKOL ], 34: [ SpeciesId.COALOSSAL ] } ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MAGMAR, SpeciesId.TORKOAL, { 1: [ SpeciesId.PANSEAR ], 30: [ SpeciesId.SIMISEAR ]}, SpeciesId.HEATMOR, SpeciesId.TURTONATOR ]}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MAGMAR, SpeciesId.TORKOAL, { 1: [ SpeciesId.PANSEAR ], 30: [ SpeciesId.SIMISEAR ] }, SpeciesId.HEATMOR, SpeciesId.TURTONATOR ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.CHARMANDER ], 16: [ SpeciesId.CHARMELEON ], 36: [ SpeciesId.CHARIZARD ]}, - { 1: [ SpeciesId.CYNDAQUIL ], 14: [ SpeciesId.QUILAVA ], 36: [ SpeciesId.TYPHLOSION ]}, - { 1: [ SpeciesId.CHIMCHAR ], 14: [ SpeciesId.MONFERNO ], 36: [ SpeciesId.INFERNAPE ]}, - { 1: [ SpeciesId.TEPIG ], 17: [ SpeciesId.PIGNITE ], 36: [ SpeciesId.EMBOAR ]}, - { 1: [ SpeciesId.FENNEKIN ], 16: [ SpeciesId.BRAIXEN ], 36: [ SpeciesId.DELPHOX ]}, - { 1: [ SpeciesId.LITTEN ], 17: [ SpeciesId.TORRACAT ], 34: [ SpeciesId.INCINEROAR ]}, - { 1: [ SpeciesId.SCORBUNNY ], 16: [ SpeciesId.RABOOT ], 35: [ SpeciesId.CINDERACE ]}, - { 1: [ SpeciesId.CHARCADET ], 30: [ SpeciesId.ARMAROUGE ]} + { 1: [ SpeciesId.CHARMANDER ], 16: [ SpeciesId.CHARMELEON ], 36: [ SpeciesId.CHARIZARD ] }, + { 1: [ SpeciesId.CYNDAQUIL ], 14: [ SpeciesId.QUILAVA ], 36: [ SpeciesId.TYPHLOSION ] }, + { 1: [ SpeciesId.CHIMCHAR ], 14: [ SpeciesId.MONFERNO ], 36: [ SpeciesId.INFERNAPE ] }, + { 1: [ SpeciesId.TEPIG ], 17: [ SpeciesId.PIGNITE ], 36: [ SpeciesId.EMBOAR ] }, + { 1: [ SpeciesId.FENNEKIN ], 16: [ SpeciesId.BRAIXEN ], 36: [ SpeciesId.DELPHOX ] }, + { 1: [ SpeciesId.LITTEN ], 17: [ SpeciesId.TORRACAT ], 34: [ SpeciesId.INCINEROAR ] }, + { 1: [ SpeciesId.SCORBUNNY ], 16: [ SpeciesId.RABOOT ], 35: [ SpeciesId.CINDERACE ] }, + { 1: [ SpeciesId.CHARCADET ], 30: [ SpeciesId.ARMAROUGE ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FLAREON, SpeciesId.ROTOM, { 1: [ SpeciesId.LARVESTA ], 59: [ SpeciesId.VOLCARONA ]}, SpeciesId.HISUI_GROWLITHE ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ENTEI, SpeciesId.HEATRAN, SpeciesId.VOLCANION, SpeciesId.CHI_YU ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.FLAREON, SpeciesId.ROTOM, { 1: [ SpeciesId.LARVESTA ], 59: [ SpeciesId.VOLCARONA ] }, SpeciesId.HISUI_GROWLITHE ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ENTEI, SpeciesId.HEATRAN, SpeciesId.VOLCANION, SpeciesId.CHI_YU ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], @@ -1054,8 +1054,8 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CHARIZARD, SpeciesId.FLAREON, SpeciesId.TYPHLOSION, SpeciesId.INFERNAPE, SpeciesId.EMBOAR, SpeciesId.VOLCARONA, SpeciesId.DELPHOX, SpeciesId.INCINEROAR, SpeciesId.CINDERACE, SpeciesId.ARMAROUGE, SpeciesId.HISUI_ARCANINE ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MOLTRES, SpeciesId.ENTEI, SpeciesId.ROTOM, SpeciesId.HEATRAN, SpeciesId.VOLCANION, SpeciesId.CHI_YU ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.RESHIRAM ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MOLTRES, SpeciesId.ENTEI, SpeciesId.ROTOM, SpeciesId.HEATRAN, SpeciesId.VOLCANION, SpeciesId.CHI_YU ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.RESHIRAM ] } }, [BiomeId.GRAVEYARD]: { [BiomePoolTier.COMMON]: { @@ -1064,14 +1064,14 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.GASTLY ], 25: [ SpeciesId.HAUNTER ]}, - { 1: [ SpeciesId.SHUPPET ], 37: [ SpeciesId.BANETTE ]}, - { 1: [ SpeciesId.DUSKULL ], 37: [ SpeciesId.DUSCLOPS ]}, - { 1: [ SpeciesId.DRIFLOON ], 28: [ SpeciesId.DRIFBLIM ]}, - { 1: [ SpeciesId.LITWICK ], 41: [ SpeciesId.LAMPENT ]}, + { 1: [ SpeciesId.GASTLY ], 25: [ SpeciesId.HAUNTER ] }, + { 1: [ SpeciesId.SHUPPET ], 37: [ SpeciesId.BANETTE ] }, + { 1: [ SpeciesId.DUSKULL ], 37: [ SpeciesId.DUSCLOPS ] }, + { 1: [ SpeciesId.DRIFLOON ], 28: [ SpeciesId.DRIFBLIM ] }, + { 1: [ SpeciesId.LITWICK ], 41: [ SpeciesId.LAMPENT ] }, SpeciesId.PHANTUMP, SpeciesId.PUMPKABOO, - { 1: [ SpeciesId.GREAVARD ], 60: [ SpeciesId.HOUNDSTONE ]} + { 1: [ SpeciesId.GREAVARD ], 30: [ SpeciesId.HOUNDSTONE ] } ] }, [BiomePoolTier.UNCOMMON]: { @@ -1079,11 +1079,11 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.CUBONE ], 28: [ SpeciesId.MAROWAK ]}, { 1: [ SpeciesId.YAMASK ], 34: [ SpeciesId.COFAGRIGUS ]}, { 1: [ SpeciesId.SINISTEA ], 30: [ SpeciesId.POLTEAGEIST ]}] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.CUBONE ], 28: [ SpeciesId.MAROWAK ] }, { 1: [ SpeciesId.YAMASK ], 34: [ SpeciesId.COFAGRIGUS ] }, { 1: [ SpeciesId.SINISTEA ], 30: [ SpeciesId.POLTEAGEIST ] } ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MISDREAVUS, SpeciesId.MIMIKYU, { 1: [ SpeciesId.FUECOCO ], 16: [ SpeciesId.CROCALOR ], 36: [ SpeciesId.SKELEDIRGE ]}, SpeciesId.CERULEDGE ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SPIRITOMB ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MARSHADOW, SpeciesId.SPECTRIER ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MISDREAVUS, SpeciesId.MIMIKYU, { 1: [ SpeciesId.FUECOCO ], 16: [ SpeciesId.CROCALOR ], 36: [ SpeciesId.SKELEDIRGE ] }, SpeciesId.CERULEDGE ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SPIRITOMB ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MARSHADOW, SpeciesId.SPECTRIER ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.MAROWAK ], [TimeOfDay.DAY]: [ SpeciesId.MAROWAK ], @@ -1091,9 +1091,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GENGAR, SpeciesId.BANETTE, SpeciesId.DRIFBLIM, SpeciesId.MISMAGIUS, SpeciesId.DUSKNOIR, SpeciesId.CHANDELURE, SpeciesId.TREVENANT, SpeciesId.GOURGEIST, SpeciesId.MIMIKYU, SpeciesId.POLTEAGEIST, SpeciesId.HOUNDSTONE ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SKELEDIRGE, SpeciesId.CERULEDGE, SpeciesId.HISUI_TYPHLOSION ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MARSHADOW, SpeciesId.SPECTRIER ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GIRATINA ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.SKELEDIRGE, SpeciesId.CERULEDGE, SpeciesId.HISUI_TYPHLOSION ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MARSHADOW, SpeciesId.SPECTRIER ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GIRATINA ] } }, [BiomeId.DOJO]: { [BiomePoolTier.COMMON]: { @@ -1102,11 +1102,11 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.MANKEY ], 28: [ SpeciesId.PRIMEAPE ], 75: [ SpeciesId.ANNIHILAPE ]}, - { 1: [ SpeciesId.MAKUHITA ], 24: [ SpeciesId.HARIYAMA ]}, - { 1: [ SpeciesId.MEDITITE ], 37: [ SpeciesId.MEDICHAM ]}, - { 1: [ SpeciesId.STUFFUL ], 27: [ SpeciesId.BEWEAR ]}, - { 1: [ SpeciesId.CLOBBOPUS ], 55: [ SpeciesId.GRAPPLOCT ]} + { 1: [ SpeciesId.MANKEY ], 28: [ SpeciesId.PRIMEAPE ], 75: [ SpeciesId.ANNIHILAPE ] }, + { 1: [ SpeciesId.MAKUHITA ], 24: [ SpeciesId.HARIYAMA ] }, + { 1: [ SpeciesId.MEDITITE ], 37: [ SpeciesId.MEDICHAM ] }, + { 1: [ SpeciesId.STUFFUL ], 27: [ SpeciesId.BEWEAR ] }, + { 1: [ SpeciesId.CLOBBOPUS ], 35: [ SpeciesId.GRAPPLOCT ] } ] }, [BiomePoolTier.UNCOMMON]: { @@ -1114,11 +1114,11 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.CROAGUNK ], 37: [ SpeciesId.TOXICROAK ]}, { 1: [ SpeciesId.SCRAGGY ], 39: [ SpeciesId.SCRAFTY ]}, { 1: [ SpeciesId.MIENFOO ], 50: [ SpeciesId.MIENSHAO ]}] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.CROAGUNK ], 37: [ SpeciesId.TOXICROAK ] }, { 1: [ SpeciesId.SCRAGGY ], 39: [ SpeciesId.SCRAFTY ] }, { 1: [ SpeciesId.MIENFOO ], 50: [ SpeciesId.MIENSHAO ] } ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONLEE, SpeciesId.HITMONCHAN, SpeciesId.LUCARIO, SpeciesId.THROH, SpeciesId.SAWK, { 1: [ SpeciesId.PANCHAM ], 52: [ SpeciesId.PANGORO ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONTOP, SpeciesId.GALLADE, SpeciesId.GALAR_FARFETCHD ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TERRAKION, SpeciesId.KUBFU, SpeciesId.GALAR_ZAPDOS ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONLEE, SpeciesId.HITMONCHAN, SpeciesId.LUCARIO, SpeciesId.THROH, SpeciesId.SAWK, { 1: [ SpeciesId.PANCHAM ], 52: [ SpeciesId.PANGORO ] } ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONTOP, SpeciesId.GALLADE, SpeciesId.GALAR_FARFETCHD ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TERRAKION, { 1: [ SpeciesId.KUBFU ], 60: [ SpeciesId.URSHIFU] }, SpeciesId.GALAR_ZAPDOS ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], @@ -1126,9 +1126,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONLEE, SpeciesId.HITMONCHAN, SpeciesId.HARIYAMA, SpeciesId.MEDICHAM, SpeciesId.LUCARIO, SpeciesId.TOXICROAK, SpeciesId.THROH, SpeciesId.SAWK, SpeciesId.SCRAFTY, SpeciesId.MIENSHAO, SpeciesId.BEWEAR, SpeciesId.GRAPPLOCT, SpeciesId.ANNIHILAPE ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONTOP, SpeciesId.GALLADE, SpeciesId.PANGORO, SpeciesId.SIRFETCHD, SpeciesId.HISUI_DECIDUEYE ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TERRAKION, SpeciesId.URSHIFU ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZAMAZENTA, SpeciesId.GALAR_ZAPDOS ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HITMONTOP, SpeciesId.GALLADE, SpeciesId.PANGORO, SpeciesId.SIRFETCHD, SpeciesId.HISUI_DECIDUEYE ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TERRAKION, { 1: [ SpeciesId.KUBFU ], 60: [ SpeciesId.URSHIFU] } ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZAMAZENTA, SpeciesId.GALAR_ZAPDOS ] } }, [BiomeId.FACTORY]: { [BiomePoolTier.COMMON]: { @@ -1137,21 +1137,21 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.MACHOP ], 28: [ SpeciesId.MACHOKE ]}, - { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ]}, - { 1: [ SpeciesId.VOLTORB ], 30: [ SpeciesId.ELECTRODE ]}, - { 1: [ SpeciesId.TIMBURR ], 25: [ SpeciesId.GURDURR ]}, - { 1: [ SpeciesId.KLINK ], 38: [ SpeciesId.KLANG ], 49: [ SpeciesId.KLINKLANG ]} + { 1: [ SpeciesId.MACHOP ], 28: [ SpeciesId.MACHOKE ] }, + { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ] }, + { 1: [ SpeciesId.VOLTORB ], 30: [ SpeciesId.ELECTRODE ] }, + { 1: [ SpeciesId.TIMBURR ], 25: [ SpeciesId.GURDURR ] }, + { 1: [ SpeciesId.KLINK ], 38: [ SpeciesId.KLANG ], 49: [ SpeciesId.KLINKLANG ] } ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BRONZOR ], 33: [ SpeciesId.BRONZONG ]}, SpeciesId.KLEFKI ]}, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.PORYGON ], 30: [ SpeciesId.PORYGON2 ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BELDUM ], 20: [ SpeciesId.METANG ], 45: [ SpeciesId.METAGROSS ]}]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GENESECT, SpeciesId.MAGEARNA ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KLINKLANG, SpeciesId.KLEFKI ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GENESECT, SpeciesId.MAGEARNA ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.BRONZOR ], 33: [ SpeciesId.BRONZONG ] }, SpeciesId.KLEFKI ] }, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.PORYGON ], 30: [ SpeciesId.PORYGON2 ] } ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.BELDUM ], 20: [ SpeciesId.METANG ], 45: [ SpeciesId.METAGROSS ] } ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GENESECT, SpeciesId.MAGEARNA ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KLINKLANG, SpeciesId.KLEFKI ] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GENESECT, SpeciesId.MAGEARNA ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.RUINS]: { [BiomePoolTier.COMMON]: { @@ -1160,12 +1160,12 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.DROWZEE ], 26: [ SpeciesId.HYPNO ]}, - { 1: [ SpeciesId.NATU ], 25: [ SpeciesId.XATU ]}, + { 1: [ SpeciesId.DROWZEE ], 26: [ SpeciesId.HYPNO ] }, + { 1: [ SpeciesId.NATU ], 25: [ SpeciesId.XATU ] }, SpeciesId.UNOWN, - { 1: [ SpeciesId.SPOINK ], 32: [ SpeciesId.GRUMPIG ]}, - { 1: [ SpeciesId.BALTOY ], 36: [ SpeciesId.CLAYDOL ]}, - { 1: [ SpeciesId.ELGYEM ], 42: [ SpeciesId.BEHEEYEM ]} + { 1: [ SpeciesId.SPOINK ], 32: [ SpeciesId.GRUMPIG ] }, + { 1: [ SpeciesId.BALTOY ], 36: [ SpeciesId.CLAYDOL ] }, + { 1: [ SpeciesId.ELGYEM ], 42: [ SpeciesId.BEHEEYEM ] } ] }, [BiomePoolTier.UNCOMMON]: { @@ -1173,58 +1173,58 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.ABRA ], 16: [ SpeciesId.KADABRA ]}, SpeciesId.SIGILYPH, { 1: [ SpeciesId.TINKATINK ], 24: [ SpeciesId.TINKATUFF ], 38: [ SpeciesId.TINKATON ]}] + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.ABRA ], 16: [ SpeciesId.KADABRA ] }, SpeciesId.SIGILYPH, { 1: [ SpeciesId.TINKATINK ], 24: [ SpeciesId.TINKATUFF ], 38: [ SpeciesId.TINKATON ] } ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MR_MIME, SpeciesId.WOBBUFFET, { 1: [ SpeciesId.GOTHITA ], 32: [ SpeciesId.GOTHORITA ], 41: [ SpeciesId.GOTHITELLE ]}, SpeciesId.STONJOURNER ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MR_MIME, SpeciesId.WOBBUFFET, { 1: [ SpeciesId.GOTHITA ], 32: [ SpeciesId.GOTHORITA ], 41: [ SpeciesId.GOTHITELLE ] }, SpeciesId.STONJOURNER ] }, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ SpeciesId.ESPEON ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.GALAR_YAMASK ], 34: [ SpeciesId.RUNERIGUS ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.GALAR_YAMASK ], 34: [ SpeciesId.RUNERIGUS ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.ARCHEN ], 37: [ SpeciesId.ARCHEOPS ]}] + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.GALAR_YAMASK ], 34: [ SpeciesId.RUNERIGUS ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.GALAR_YAMASK ], 34: [ SpeciesId.RUNERIGUS ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.ARCHEN ], 37: [ SpeciesId.ARCHEOPS ] } ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGISTEEL, SpeciesId.FEZANDIPITI ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ALAKAZAM, SpeciesId.HYPNO, SpeciesId.XATU, SpeciesId.GRUMPIG, SpeciesId.CLAYDOL, SpeciesId.SIGILYPH, SpeciesId.GOTHITELLE, SpeciesId.BEHEEYEM, SpeciesId.TINKATON ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ SpeciesId.ESPEON ], [TimeOfDay.DUSK]: [ SpeciesId.RUNERIGUS ], [TimeOfDay.NIGHT]: [ SpeciesId.RUNERIGUS ], [TimeOfDay.ALL]: [ SpeciesId.MR_MIME, SpeciesId.WOBBUFFET, SpeciesId.ARCHEOPS ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGISTEEL, SpeciesId.FEZANDIPITI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KORAIDON ]} + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGISTEEL, SpeciesId.FEZANDIPITI ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ALAKAZAM, SpeciesId.HYPNO, SpeciesId.XATU, SpeciesId.GRUMPIG, SpeciesId.CLAYDOL, SpeciesId.SIGILYPH, SpeciesId.GOTHITELLE, SpeciesId.BEHEEYEM, SpeciesId.TINKATON ] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ SpeciesId.ESPEON ], [TimeOfDay.DUSK]: [ SpeciesId.RUNERIGUS ], [TimeOfDay.NIGHT]: [ SpeciesId.RUNERIGUS ], [TimeOfDay.ALL]: [ SpeciesId.MR_MIME, SpeciesId.WOBBUFFET, SpeciesId.ARCHEOPS ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGISTEEL, SpeciesId.FEZANDIPITI ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KORAIDON ] } }, [BiomeId.WASTELAND]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [ - { 1: [ SpeciesId.BAGON ], 30: [ SpeciesId.SHELGON ], 50: [ SpeciesId.SALAMENCE ]}, - { 1: [ SpeciesId.GOOMY ], 40: [ SpeciesId.SLIGGOO ], 80: [ SpeciesId.GOODRA ]}, - { 1: [ SpeciesId.JANGMO_O ], 35: [ SpeciesId.HAKAMO_O ], 45: [ SpeciesId.KOMMO_O ]} + { 1: [ SpeciesId.BAGON ], 30: [ SpeciesId.SHELGON ], 50: [ SpeciesId.SALAMENCE ] }, + { 1: [ SpeciesId.GOOMY ], 40: [ SpeciesId.SLIGGOO ], 80: [ SpeciesId.GOODRA ] }, + { 1: [ SpeciesId.JANGMO_O ], 35: [ SpeciesId.HAKAMO_O ], 45: [ SpeciesId.KOMMO_O ] } ], [TimeOfDay.DAY]: [ - { 1: [ SpeciesId.BAGON ], 30: [ SpeciesId.SHELGON ], 50: [ SpeciesId.SALAMENCE ]}, - { 1: [ SpeciesId.GOOMY ], 40: [ SpeciesId.SLIGGOO ], 80: [ SpeciesId.GOODRA ]}, - { 1: [ SpeciesId.JANGMO_O ], 35: [ SpeciesId.HAKAMO_O ], 45: [ SpeciesId.KOMMO_O ]} + { 1: [ SpeciesId.BAGON ], 30: [ SpeciesId.SHELGON ], 50: [ SpeciesId.SALAMENCE ] }, + { 1: [ SpeciesId.GOOMY ], 40: [ SpeciesId.SLIGGOO ], 80: [ SpeciesId.GOODRA ] }, + { 1: [ SpeciesId.JANGMO_O ], 35: [ SpeciesId.HAKAMO_O ], 45: [ SpeciesId.KOMMO_O ] } ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.LARVITAR ], 30: [ SpeciesId.PUPITAR ], 55: [ SpeciesId.TYRANITAR ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.LARVITAR ], 30: [ SpeciesId.PUPITAR ], 55: [ SpeciesId.TYRANITAR ]}], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.LARVITAR ], 30: [ SpeciesId.PUPITAR ], 55: [ SpeciesId.TYRANITAR ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.LARVITAR ], 30: [ SpeciesId.PUPITAR ], 55: [ SpeciesId.TYRANITAR ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.VIBRAVA ], 45: [ SpeciesId.FLYGON ]}, - { 1: [ SpeciesId.GIBLE ], 24: [ SpeciesId.GABITE ], 48: [ SpeciesId.GARCHOMP ]}, - { 1: [ SpeciesId.AXEW ], 38: [ SpeciesId.FRAXURE ], 48: [ SpeciesId.HAXORUS ]} + { 1: [ SpeciesId.VIBRAVA ], 45: [ SpeciesId.FLYGON ] }, + { 1: [ SpeciesId.GIBLE ], 24: [ SpeciesId.GABITE ], 48: [ SpeciesId.GARCHOMP ] }, + { 1: [ SpeciesId.AXEW ], 38: [ SpeciesId.FRAXURE ], 48: [ SpeciesId.HAXORUS ] } ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.DEINO ], 50: [ SpeciesId.ZWEILOUS ], 64: [ SpeciesId.HYDREIGON ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.DEINO ], 50: [ SpeciesId.ZWEILOUS ], 64: [ SpeciesId.HYDREIGON ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SWABLU ], 35: [ SpeciesId.ALTARIA ]}, SpeciesId.DRAMPA, SpeciesId.CYCLIZAR ] + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.DEINO ], 50: [ SpeciesId.ZWEILOUS ], 64: [ SpeciesId.HYDREIGON ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.DEINO ], 50: [ SpeciesId.ZWEILOUS ], 64: [ SpeciesId.HYDREIGON ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.SWABLU ], 35: [ SpeciesId.ALTARIA ] }, SpeciesId.DRAMPA, SpeciesId.CYCLIZAR ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.DREEPY ], 50: [ SpeciesId.DRAKLOAK ], 60: [ SpeciesId.DRAGAPULT ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.DREEPY ], 50: [ SpeciesId.DRAKLOAK ], 60: [ SpeciesId.DRAGAPULT ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.DRATINI ], 30: [ SpeciesId.DRAGONAIR ], 55: [ SpeciesId.DRAGONITE ]}, { 1: [ SpeciesId.FRIGIBAX ], 35: [ SpeciesId.ARCTIBAX ], 54: [ SpeciesId.BAXCALIBUR ]}] + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.DREEPY ], 50: [ SpeciesId.DRAKLOAK ], 60: [ SpeciesId.DRAGAPULT ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.DREEPY ], 50: [ SpeciesId.DRAKLOAK ], 60: [ SpeciesId.DRAGAPULT ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.DRATINI ], 30: [ SpeciesId.DRAGONAIR ], 55: [ SpeciesId.DRAGONITE ] }, { 1: [ SpeciesId.FRIGIBAX ], 35: [ SpeciesId.ARCTIBAX ], 54: [ SpeciesId.BAXCALIBUR ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AERODACTYL, SpeciesId.DRUDDIGON, { 1: [ SpeciesId.TYRUNT ], 59: [ SpeciesId.TYRANTRUM ]}, SpeciesId.DRACOZOLT, SpeciesId.DRACOVISH ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIDRAGO ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AERODACTYL, SpeciesId.DRUDDIGON, { 1: [ SpeciesId.TYRUNT ], 39: [ SpeciesId.TYRANTRUM ] }, SpeciesId.DRACOZOLT, SpeciesId.DRACOVISH ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIDRAGO ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.SALAMENCE, SpeciesId.GOODRA, SpeciesId.KOMMO_O ], [TimeOfDay.DAY]: [ SpeciesId.SALAMENCE, SpeciesId.GOODRA, SpeciesId.KOMMO_O ], @@ -1232,9 +1232,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.TYRANITAR, SpeciesId.DRAGAPULT ], [TimeOfDay.ALL]: [ SpeciesId.DRAGONITE, SpeciesId.FLYGON, SpeciesId.GARCHOMP, SpeciesId.HAXORUS, SpeciesId.DRAMPA, SpeciesId.BAXCALIBUR ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AERODACTYL, SpeciesId.DRUDDIGON, SpeciesId.TYRANTRUM, SpeciesId.DRACOZOLT, SpeciesId.DRACOVISH ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIDRAGO ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DIALGA ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AERODACTYL, SpeciesId.DRUDDIGON, SpeciesId.TYRANTRUM, SpeciesId.DRACOZOLT, SpeciesId.DRACOVISH ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIDRAGO ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DIALGA ] } }, [BiomeId.ABYSS]: { [BiomePoolTier.COMMON]: { @@ -1244,25 +1244,25 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MURKROW, - { 1: [ SpeciesId.HOUNDOUR ], 24: [ SpeciesId.HOUNDOOM ]}, + { 1: [ SpeciesId.HOUNDOUR ], 24: [ SpeciesId.HOUNDOOM ] }, SpeciesId.SABLEYE, - { 1: [ SpeciesId.PURRLOIN ], 20: [ SpeciesId.LIEPARD ]}, - { 1: [ SpeciesId.PAWNIARD ], 52: [ SpeciesId.BISHARP ], 64: [ SpeciesId.KINGAMBIT ]}, - { 1: [ SpeciesId.NICKIT ], 18: [ SpeciesId.THIEVUL ]}, - { 1: [ SpeciesId.IMPIDIMP ], 32: [ SpeciesId.MORGREM ], 42: [ SpeciesId.GRIMMSNARL ]}, - { 1: [ SpeciesId.MASCHIFF ], 30: [ SpeciesId.MABOSSTIFF ]} + { 1: [ SpeciesId.PURRLOIN ], 20: [ SpeciesId.LIEPARD ] }, + { 1: [ SpeciesId.PAWNIARD ], 52: [ SpeciesId.BISHARP ], 64: [ SpeciesId.KINGAMBIT ] }, + { 1: [ SpeciesId.NICKIT ], 18: [ SpeciesId.THIEVUL ] }, + { 1: [ SpeciesId.IMPIDIMP ], 32: [ SpeciesId.MORGREM ], 42: [ SpeciesId.GRIMMSNARL ] }, + { 1: [ SpeciesId.MASCHIFF ], 30: [ SpeciesId.MABOSSTIFF ] } ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ SpeciesId.ABSOL, SpeciesId.SPIRITOMB, { 1: [ SpeciesId.ZORUA ], 30: [ SpeciesId.ZOROARK ]}, { 1: [ SpeciesId.DEINO ], 50: [ SpeciesId.ZWEILOUS ], 64: [ SpeciesId.HYDREIGON ]}] + [TimeOfDay.ALL]: [ SpeciesId.ABSOL, SpeciesId.SPIRITOMB, { 1: [ SpeciesId.ZORUA ], 30: [ SpeciesId.ZOROARK ] }, { 1: [ SpeciesId.DEINO ], 50: [ SpeciesId.ZWEILOUS ], 64: [ SpeciesId.HYDREIGON ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UMBREON ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DARKRAI, SpeciesId.GALAR_MOLTRES ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UMBREON ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DARKRAI, SpeciesId.GALAR_MOLTRES ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], @@ -1270,9 +1270,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HOUNDOOM, SpeciesId.SABLEYE, SpeciesId.ABSOL, SpeciesId.HONCHKROW, SpeciesId.SPIRITOMB, SpeciesId.LIEPARD, SpeciesId.ZOROARK, SpeciesId.HYDREIGON, SpeciesId.THIEVUL, SpeciesId.GRIMMSNARL, SpeciesId.MABOSSTIFF, SpeciesId.KINGAMBIT ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UMBREON, SpeciesId.HISUI_SAMUROTT ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DARKRAI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.PALKIA, SpeciesId.YVELTAL, SpeciesId.GALAR_MOLTRES ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.UMBREON, SpeciesId.HISUI_SAMUROTT ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DARKRAI ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.PALKIA, SpeciesId.YVELTAL, SpeciesId.GALAR_MOLTRES ] } }, [BiomeId.SPACE]: { [BiomePoolTier.COMMON]: { @@ -1280,22 +1280,22 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [ SpeciesId.SOLROCK ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ SpeciesId.LUNATONE ], - [TimeOfDay.ALL]: [ SpeciesId.CLEFAIRY, { 1: [ SpeciesId.BRONZOR ], 33: [ SpeciesId.BRONZONG ]}, { 1: [ SpeciesId.MUNNA ], 30: [ SpeciesId.MUSHARNA ]}, SpeciesId.MINIOR ] + [TimeOfDay.ALL]: [ SpeciesId.CLEFAIRY, { 1: [ SpeciesId.BRONZOR ], 33: [ SpeciesId.BRONZONG ] }, { 1: [ SpeciesId.MUNNA ], 30: [ SpeciesId.MUSHARNA ] }, SpeciesId.MINIOR ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BALTOY ], 36: [ SpeciesId.CLAYDOL ]}, { 1: [ SpeciesId.ELGYEM ], 42: [ SpeciesId.BEHEEYEM ]}]}, + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.BALTOY ], 36: [ SpeciesId.CLAYDOL ] }, { 1: [ SpeciesId.ELGYEM ], 42: [ SpeciesId.BEHEEYEM ] } ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BELDUM ], 20: [ SpeciesId.METANG ], 45: [ SpeciesId.METAGROSS ]}, SpeciesId.SIGILYPH, { 1: [ SpeciesId.SOLOSIS ], 32: [ SpeciesId.DUOSION ], 41: [ SpeciesId.REUNICLUS ]}] + [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 ], 43: [ 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.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.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 ] } }, [BiomeId.CONSTRUCTION_SITE]: { [BiomePoolTier.COMMON]: { @@ -1304,10 +1304,10 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.MACHOP ], 28: [ SpeciesId.MACHOKE ]}, - { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ]}, - { 1: [ SpeciesId.DRILBUR ], 31: [ SpeciesId.EXCADRILL ]}, - { 1: [ SpeciesId.TIMBURR ], 25: [ SpeciesId.GURDURR ]} + { 1: [ SpeciesId.MACHOP ], 28: [ SpeciesId.MACHOKE ] }, + { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ] }, + { 1: [ SpeciesId.DRILBUR ], 31: [ SpeciesId.EXCADRILL ] }, + { 1: [ SpeciesId.TIMBURR ], 25: [ SpeciesId.GURDURR ] } ] }, [BiomePoolTier.UNCOMMON]: { @@ -1316,60 +1316,60 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.GRIMER ], 38: [ SpeciesId.MUK ]}, - { 1: [ SpeciesId.KOFFING ], 35: [ SpeciesId.WEEZING ]}, - { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ]}, - { 1: [ SpeciesId.SCRAGGY ], 39: [ SpeciesId.SCRAFTY ]} + { 1: [ SpeciesId.GRIMER ], 38: [ SpeciesId.MUK ] }, + { 1: [ SpeciesId.KOFFING ], 35: [ SpeciesId.WEEZING ] }, + { 1: [ SpeciesId.RHYHORN ], 42: [ SpeciesId.RHYDON ] }, + { 1: [ SpeciesId.SCRAGGY ], 39: [ SpeciesId.SCRAFTY ] } ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.GALAR_MEOWTH ], 28: [ SpeciesId.PERRSERKER ]}], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ONIX, SpeciesId.HITMONLEE, SpeciesId.HITMONCHAN, SpeciesId.DURALUDON ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, SpeciesId.HITMONTOP ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.COBALION, SpeciesId.STAKATAKA ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MACHAMP, SpeciesId.CONKELDURR ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.PERRSERKER ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ARCHALUDON ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.COBALION, SpeciesId.STAKATAKA ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.GALAR_MEOWTH ], 28: [ SpeciesId.PERRSERKER ] } ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ONIX, SpeciesId.HITMONLEE, SpeciesId.HITMONCHAN, SpeciesId.DURALUDON ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, SpeciesId.HITMONTOP ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.COBALION, SpeciesId.STAKATAKA ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MACHAMP, SpeciesId.CONKELDURR ] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.PERRSERKER ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ARCHALUDON ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.COBALION, SpeciesId.STAKATAKA ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.JUNGLE]: { [BiomePoolTier.COMMON]: { - [TimeOfDay.DAWN]: [ SpeciesId.VESPIQUEN, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ]}, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ]}], - [TimeOfDay.DAY]: [ SpeciesId.VESPIQUEN, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ]}, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ]}], - [TimeOfDay.DUSK]: [ SpeciesId.SHROOMISH, { 1: [ SpeciesId.PURRLOIN ], 20: [ SpeciesId.LIEPARD ]}, { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}, SpeciesId.SHROOMISH, { 1: [ SpeciesId.PURRLOIN ], 20: [ SpeciesId.LIEPARD ]}, { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}], - [TimeOfDay.ALL]: [ SpeciesId.AIPOM, { 1: [ SpeciesId.BLITZLE ], 27: [ SpeciesId.ZEBSTRIKA ]}, { 1: [ SpeciesId.PIKIPEK ], 14: [ SpeciesId.TRUMBEAK ], 28: [ SpeciesId.TOUCANNON ]}] + [TimeOfDay.DAWN]: [ SpeciesId.VESPIQUEN, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ] }, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ] } ], + [TimeOfDay.DAY]: [ SpeciesId.VESPIQUEN, { 1: [ SpeciesId.CHERUBI ], 25: [ SpeciesId.CHERRIM ] }, { 1: [ SpeciesId.SEWADDLE ], 20: [ SpeciesId.SWADLOON ], 30: [ SpeciesId.LEAVANNY ] } ], + [TimeOfDay.DUSK]: [ SpeciesId.SHROOMISH, { 1: [ SpeciesId.PURRLOIN ], 20: [ SpeciesId.LIEPARD ] }, { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ] }, SpeciesId.SHROOMISH, { 1: [ SpeciesId.PURRLOIN ], 20: [ SpeciesId.LIEPARD ] }, { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ] } ], + [TimeOfDay.ALL]: [ SpeciesId.AIPOM, { 1: [ SpeciesId.BLITZLE ], 27: [ SpeciesId.ZEBSTRIKA ] }, { 1: [ SpeciesId.PIKIPEK ], 14: [ SpeciesId.TRUMBEAK ], 28: [ SpeciesId.TOUCANNON ] } ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [ SpeciesId.EXEGGCUTE, SpeciesId.TROPIUS, SpeciesId.COMBEE, SpeciesId.KOMALA ], [TimeOfDay.DAY]: [ SpeciesId.EXEGGCUTE, SpeciesId.TROPIUS, SpeciesId.COMBEE, SpeciesId.KOMALA ], - [TimeOfDay.DUSK]: [ SpeciesId.TANGELA, { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ]}, { 1: [ SpeciesId.PANCHAM ], 52: [ SpeciesId.PANGORO ]}], - [TimeOfDay.NIGHT]: [ SpeciesId.TANGELA, { 1: [ SpeciesId.PANCHAM ], 52: [ SpeciesId.PANGORO ]}], + [TimeOfDay.DUSK]: [ SpeciesId.TANGELA, { 1: [ SpeciesId.SPINARAK ], 22: [ SpeciesId.ARIADOS ] }, { 1: [ SpeciesId.PANCHAM ], 52: [ SpeciesId.PANGORO ] } ], + [TimeOfDay.NIGHT]: [ SpeciesId.TANGELA, { 1: [ SpeciesId.PANCHAM ], 52: [ SpeciesId.PANGORO ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.PANSAGE ], 30: [ SpeciesId.SIMISAGE ]}, - { 1: [ SpeciesId.PANSEAR ], 30: [ SpeciesId.SIMISEAR ]}, - { 1: [ SpeciesId.PANPOUR ], 30: [ SpeciesId.SIMIPOUR ]}, - { 1: [ SpeciesId.JOLTIK ], 36: [ SpeciesId.GALVANTULA ]}, - { 1: [ SpeciesId.LITLEO ], 35: [ SpeciesId.PYROAR ]}, - { 1: [ SpeciesId.FOMANTIS ], 44: [ SpeciesId.LURANTIS ]}, + { 1: [ SpeciesId.PANSAGE ], 30: [ SpeciesId.SIMISAGE ] }, + { 1: [ SpeciesId.PANSEAR ], 30: [ SpeciesId.SIMISEAR ] }, + { 1: [ SpeciesId.PANPOUR ], 30: [ SpeciesId.SIMIPOUR ] }, + { 1: [ SpeciesId.JOLTIK ], 36: [ SpeciesId.GALVANTULA ] }, + { 1: [ SpeciesId.LITLEO ], 35: [ SpeciesId.PYROAR ] }, + { 1: [ SpeciesId.FOMANTIS ], 34: [ SpeciesId.LURANTIS ] }, SpeciesId.FALINKS ] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}, SpeciesId.PASSIMIAN, { 1: [ SpeciesId.GALAR_PONYTA ], 40: [ SpeciesId.GALAR_RAPIDASH ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ]}, SpeciesId.PASSIMIAN ], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ] }, SpeciesId.PASSIMIAN, { 1: [ SpeciesId.GALAR_PONYTA ], 40: [ SpeciesId.GALAR_RAPIDASH ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.FOONGUS ], 39: [ SpeciesId.AMOONGUSS ] }, SpeciesId.PASSIMIAN ], [TimeOfDay.DUSK]: [ SpeciesId.ORANGURU ], [TimeOfDay.NIGHT]: [ SpeciesId.ORANGURU ], [TimeOfDay.ALL]: [ SpeciesId.SCYTHER, SpeciesId.YANMA, - { 1: [ SpeciesId.SLAKOTH ], 18: [ SpeciesId.VIGOROTH ], 36: [ SpeciesId.SLAKING ]}, + { 1: [ SpeciesId.SLAKOTH ], 18: [ SpeciesId.VIGOROTH ], 36: [ SpeciesId.SLAKING ] }, SpeciesId.SEVIPER, SpeciesId.CARNIVINE, - { 1: [ SpeciesId.SNIVY ], 17: [ SpeciesId.SERVINE ], 36: [ SpeciesId.SERPERIOR ]}, - { 1: [ SpeciesId.GROOKEY ], 16: [ SpeciesId.THWACKEY ], 35: [ SpeciesId.RILLABOOM ]} + { 1: [ SpeciesId.SNIVY ], 17: [ SpeciesId.SERVINE ], 36: [ SpeciesId.SERPERIOR ] }, + { 1: [ SpeciesId.GROOKEY ], 16: [ SpeciesId.THWACKEY ], 35: [ SpeciesId.RILLABOOM ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KANGASKHAN, SpeciesId.CHATOT, SpeciesId.KLEAVOR ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TAPU_LELE, SpeciesId.BUZZWOLE, SpeciesId.ZARUDE, SpeciesId.MUNKIDORI ]}, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KANGASKHAN, SpeciesId.CHATOT, SpeciesId.KLEAVOR ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TAPU_LELE, SpeciesId.BUZZWOLE, SpeciesId.ZARUDE, SpeciesId.MUNKIDORI ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.EXEGGUTOR, SpeciesId.TROPIUS, SpeciesId.CHERRIM, SpeciesId.LEAVANNY, SpeciesId.KOMALA ], [TimeOfDay.DAY]: [ SpeciesId.EXEGGUTOR, SpeciesId.TROPIUS, SpeciesId.CHERRIM, SpeciesId.LEAVANNY, SpeciesId.KOMALA ], @@ -1384,8 +1384,8 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KANGASKHAN, SpeciesId.SCIZOR, SpeciesId.SLAKING, SpeciesId.LEAFEON, SpeciesId.SERPERIOR, SpeciesId.RILLABOOM ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TAPU_LELE, SpeciesId.BUZZWOLE, SpeciesId.ZARUDE, SpeciesId.MUNKIDORI ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KLEAVOR ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TAPU_LELE, SpeciesId.BUZZWOLE, SpeciesId.ZARUDE, SpeciesId.MUNKIDORI ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.KLEAVOR ] } }, [BiomeId.FAIRY_CAVE]: { [BiomePoolTier.COMMON]: { @@ -1394,14 +1394,14 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.JIGGLYPUFF ], 30: [ SpeciesId.WIGGLYTUFF ]}, - { 1: [ SpeciesId.MARILL ], 18: [ SpeciesId.AZUMARILL ]}, + { 1: [ SpeciesId.JIGGLYPUFF ], 30: [ SpeciesId.WIGGLYTUFF ] }, + { 1: [ SpeciesId.MARILL ], 18: [ SpeciesId.AZUMARILL ] }, SpeciesId.MAWILE, - { 1: [ SpeciesId.SPRITZEE ], 40: [ SpeciesId.AROMATISSE ]}, - { 1: [ SpeciesId.SWIRLIX ], 40: [ SpeciesId.SLURPUFF ]}, - { 1: [ SpeciesId.CUTIEFLY ], 25: [ SpeciesId.RIBOMBEE ]}, - { 1: [ SpeciesId.MORELULL ], 24: [ SpeciesId.SHIINOTIC ]}, - { 1: [ SpeciesId.MILCERY ], 30: [ SpeciesId.ALCREMIE ]} + { 1: [ SpeciesId.SPRITZEE ], 40: [ SpeciesId.AROMATISSE ] }, + { 1: [ SpeciesId.SWIRLIX ], 40: [ SpeciesId.SLURPUFF ] }, + { 1: [ SpeciesId.CUTIEFLY ], 25: [ SpeciesId.RIBOMBEE ] }, + { 1: [ SpeciesId.MORELULL ], 24: [ SpeciesId.SHIINOTIC ] }, + { 1: [ SpeciesId.MILCERY ], 30: [ SpeciesId.ALCREMIE ] } ] }, [BiomePoolTier.UNCOMMON]: { @@ -1412,15 +1412,15 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ SpeciesId.CLEFAIRY, SpeciesId.TOGETIC, - { 1: [ SpeciesId.RALTS ], 20: [ SpeciesId.KIRLIA ], 30: [ SpeciesId.GARDEVOIR ]}, + { 1: [ SpeciesId.RALTS ], 20: [ SpeciesId.KIRLIA ], 30: [ SpeciesId.GARDEVOIR ] }, SpeciesId.CARBINK, SpeciesId.COMFEY, - { 1: [ SpeciesId.HATENNA ], 32: [ SpeciesId.HATTREM ], 42: [ SpeciesId.HATTERENE ]} + { 1: [ SpeciesId.HATENNA ], 32: [ SpeciesId.HATTREM ], 42: [ SpeciesId.HATTERENE ] } ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AUDINO, SpeciesId.ETERNAL_FLOETTE ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DIANCIE, SpeciesId.ENAMORUS ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.AUDINO ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ETERNAL_FLOETTE ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DIANCIE, SpeciesId.ENAMORUS ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], @@ -1428,9 +1428,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.WIGGLYTUFF, SpeciesId.MAWILE, SpeciesId.TOGEKISS, SpeciesId.AUDINO, SpeciesId.AROMATISSE, SpeciesId.SLURPUFF, SpeciesId.CARBINK, SpeciesId.RIBOMBEE, SpeciesId.SHIINOTIC, SpeciesId.COMFEY, SpeciesId.HATTERENE, SpeciesId.ALCREMIE ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ETERNAL_FLOETTE ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DIANCIE, SpeciesId.ENAMORUS ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.XERNEAS ]} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ETERNAL_FLOETTE ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DIANCIE, SpeciesId.ENAMORUS ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.XERNEAS ] } }, [BiomeId.TEMPLE]: { [BiomePoolTier.COMMON]: { @@ -1439,12 +1439,12 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.GASTLY ], 25: [ SpeciesId.HAUNTER ]}, - { 1: [ SpeciesId.NATU ], 25: [ SpeciesId.XATU ]}, - { 1: [ SpeciesId.DUSKULL ], 37: [ SpeciesId.DUSCLOPS ]}, - { 1: [ SpeciesId.YAMASK ], 34: [ SpeciesId.COFAGRIGUS ]}, - { 1: [ SpeciesId.GOLETT ], 43: [ SpeciesId.GOLURK ]}, - { 1: [ SpeciesId.HONEDGE ], 35: [ SpeciesId.DOUBLADE ]} + { 1: [ SpeciesId.GASTLY ], 25: [ SpeciesId.HAUNTER ] }, + { 1: [ SpeciesId.NATU ], 25: [ SpeciesId.XATU ] }, + { 1: [ SpeciesId.DUSKULL ], 37: [ SpeciesId.DUSCLOPS ] }, + { 1: [ SpeciesId.YAMASK ], 34: [ SpeciesId.COFAGRIGUS ] }, + { 1: [ SpeciesId.GOLETT ], 43: [ SpeciesId.GOLURK ] }, + { 1: [ SpeciesId.HONEDGE ], 35: [ SpeciesId.DOUBLADE ] } ] }, [BiomePoolTier.UNCOMMON]: { @@ -1453,86 +1453,86 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.CUBONE ], 28: [ SpeciesId.MAROWAK ]}, - { 1: [ SpeciesId.BALTOY ], 36: [ SpeciesId.CLAYDOL ]}, - { 1: [ SpeciesId.CHINGLING ], 20: [ SpeciesId.CHIMECHO ]}, - { 1: [ SpeciesId.SKORUPI ], 40: [ SpeciesId.DRAPION ]}, - { 1: [ SpeciesId.LITWICK ], 41: [ SpeciesId.LAMPENT ]} + { 1: [ SpeciesId.CUBONE ], 28: [ SpeciesId.MAROWAK ] }, + { 1: [ SpeciesId.BALTOY ], 36: [ SpeciesId.CLAYDOL ] }, + { 1: [ SpeciesId.CHINGLING ], 20: [ SpeciesId.CHIMECHO ] }, + { 1: [ SpeciesId.SKORUPI ], 40: [ SpeciesId.DRAPION ] }, + { 1: [ SpeciesId.LITWICK ], 41: [ SpeciesId.LAMPENT ] } ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.GIMMIGHOUL ], 40: [ SpeciesId.GHOLDENGO ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HOOPA, SpeciesId.TAPU_KOKO ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CHIMECHO, SpeciesId.COFAGRIGUS, SpeciesId.GOLURK, SpeciesId.AEGISLASH ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GHOLDENGO ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HOOPA, SpeciesId.TAPU_KOKO ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIGIGAS ]} + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.GIMMIGHOUL ], 40: [ SpeciesId.GHOLDENGO ] } ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HOOPA, SpeciesId.TAPU_KOKO ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.CHIMECHO, SpeciesId.COFAGRIGUS, SpeciesId.GOLURK, SpeciesId.AEGISLASH ] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GHOLDENGO ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.HOOPA, SpeciesId.TAPU_KOKO ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.REGIGIGAS ] } }, [BiomeId.SLUM]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ]}], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.PATRAT ], 20: [ SpeciesId.WATCHOG ] } ], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.RATTATA ], 20: [ SpeciesId.RATICATE ]}, - { 1: [ SpeciesId.GRIMER ], 38: [ SpeciesId.MUK ]}, - { 1: [ SpeciesId.KOFFING ], 35: [ SpeciesId.WEEZING ]}, - { 1: [ SpeciesId.TRUBBISH ], 36: [ SpeciesId.GARBODOR ]} + { 1: [ SpeciesId.RATTATA ], 20: [ SpeciesId.RATICATE ] }, + { 1: [ SpeciesId.GRIMER ], 38: [ SpeciesId.MUK ] }, + { 1: [ SpeciesId.KOFFING ], 35: [ SpeciesId.WEEZING ] }, + { 1: [ SpeciesId.TRUBBISH ], 36: [ SpeciesId.GARBODOR ] } ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.STUNKY ], 34: [ SpeciesId.SKUNTANK ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.STUNKY ], 34: [ SpeciesId.SKUNTANK ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.BURMY ], 20: [ SpeciesId.WORMADAM ]}] + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.STUNKY ], 34: [ SpeciesId.SKUNTANK ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.STUNKY ], 34: [ SpeciesId.SKUNTANK ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.BURMY ], 20: [ SpeciesId.WORMADAM ] } ] }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [ SpeciesId.TOXTRICITY, { 1: [ SpeciesId.GALAR_LINOONE ], 65: [ SpeciesId.OBSTAGOON ]}, SpeciesId.GALAR_ZIGZAGOON ], - [TimeOfDay.NIGHT]: [ SpeciesId.TOXTRICITY, { 1: [ SpeciesId.GALAR_LINOONE ], 65: [ SpeciesId.OBSTAGOON ]}, SpeciesId.GALAR_ZIGZAGOON ], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.VAROOM ], 40: [ SpeciesId.REVAVROOM ]}] + [TimeOfDay.DUSK]: [ SpeciesId.TOXTRICITY, { 1: [ SpeciesId.GALAR_LINOONE ], 35: [ SpeciesId.OBSTAGOON ] }, SpeciesId.GALAR_ZIGZAGOON ], + [TimeOfDay.NIGHT]: [ SpeciesId.TOXTRICITY, { 1: [ SpeciesId.GALAR_LINOONE ], 35: [ SpeciesId.OBSTAGOON ] }, SpeciesId.GALAR_ZIGZAGOON ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.VAROOM ], 40: [ SpeciesId.REVAVROOM ] } ] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GUZZLORD ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.SKUNTANK, SpeciesId.WATCHOG ], [TimeOfDay.NIGHT]: [ SpeciesId.SKUNTANK, SpeciesId.WATCHOG ], [TimeOfDay.ALL]: [ SpeciesId.MUK, SpeciesId.WEEZING, SpeciesId.WORMADAM, SpeciesId.GARBODOR ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.TOXTRICITY, SpeciesId.OBSTAGOON ], [TimeOfDay.NIGHT]: [ SpeciesId.TOXTRICITY, SpeciesId.OBSTAGOON ], [TimeOfDay.ALL]: [ SpeciesId.REVAVROOM, SpeciesId.GALAR_WEEZING ]}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GUZZLORD ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GUZZLORD ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.SKUNTANK, SpeciesId.WATCHOG ], [TimeOfDay.NIGHT]: [ SpeciesId.SKUNTANK, SpeciesId.WATCHOG ], [TimeOfDay.ALL]: [ SpeciesId.MUK, SpeciesId.WEEZING, SpeciesId.WORMADAM, SpeciesId.GARBODOR ] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ SpeciesId.TOXTRICITY, SpeciesId.OBSTAGOON ], [TimeOfDay.NIGHT]: [ SpeciesId.TOXTRICITY, SpeciesId.OBSTAGOON ], [TimeOfDay.ALL]: [ SpeciesId.REVAVROOM, SpeciesId.GALAR_WEEZING ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GUZZLORD ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.SNOWY_FOREST]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, { 1: [ SpeciesId.SNOM ], 20: [ SpeciesId.FROSMOTH ]}], - [TimeOfDay.NIGHT]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, { 1: [ SpeciesId.SNOM ], 20: [ SpeciesId.FROSMOTH ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SWINUB ], 33: [ SpeciesId.PILOSWINE ]}, { 1: [ SpeciesId.SNOVER ], 40: [ SpeciesId.ABOMASNOW ]}, SpeciesId.EISCUE ] + [TimeOfDay.DUSK]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ] }, { 1: [ SpeciesId.SNOM ], 20: [ SpeciesId.FROSMOTH ] } ], + [TimeOfDay.NIGHT]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ] }, { 1: [ SpeciesId.SNOM ], 20: [ SpeciesId.FROSMOTH ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.SWINUB ], 33: [ SpeciesId.PILOSWINE ] }, { 1: [ SpeciesId.SNOVER ], 40: [ SpeciesId.ABOMASNOW ] }, SpeciesId.EISCUE ] }, [BiomePoolTier.UNCOMMON]: { - [TimeOfDay.DAWN]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, SpeciesId.STANTLER ], - [TimeOfDay.DAY]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ]}, SpeciesId.STANTLER ], + [TimeOfDay.DAWN]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ] }, SpeciesId.STANTLER ], + [TimeOfDay.DAY]: [ SpeciesId.SNEASEL, { 1: [ SpeciesId.TEDDIURSA ], 30: [ SpeciesId.URSARING ] }, SpeciesId.STANTLER ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, [BiomePoolTier.RARE]: { - [TimeOfDay.DAWN]: [{ 1: [ SpeciesId.GALAR_DARUMAKA ], 30: [ SpeciesId.GALAR_DARMANITAN ]}], - [TimeOfDay.DAY]: [{ 1: [ SpeciesId.GALAR_DARUMAKA ], 30: [ SpeciesId.GALAR_DARMANITAN ]}], + [TimeOfDay.DAWN]: [ { 1: [ SpeciesId.GALAR_DARUMAKA ], 30: [ SpeciesId.GALAR_DARMANITAN ] } ], + [TimeOfDay.DAY]: [ { 1: [ SpeciesId.GALAR_DARUMAKA ], 30: [ SpeciesId.GALAR_DARMANITAN ] } ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ SpeciesId.DELIBIRD, { 1: [ SpeciesId.ALOLA_SANDSHREW ], 30: [ SpeciesId.ALOLA_SANDSLASH ]}, { 1: [ SpeciesId.ALOLA_VULPIX ], 30: [ SpeciesId.ALOLA_NINETALES ]}] + [TimeOfDay.ALL]: [ SpeciesId.DELIBIRD, { 1: [ SpeciesId.ALOLA_SANDSHREW ], 30: [ SpeciesId.ALOLA_SANDSLASH ] }, { 1: [ SpeciesId.ALOLA_VULPIX ], 30: [ SpeciesId.ALOLA_NINETALES ] } ] }, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.HISUI_SNEASEL ], [TimeOfDay.DAY]: [ SpeciesId.HISUI_SNEASEL ], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.HISUI_ZORUA ], 30: [ SpeciesId.HISUI_ZOROARK ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.HISUI_ZORUA ], 30: [ SpeciesId.HISUI_ZOROARK ]}], - [TimeOfDay.ALL]: [{ 1: [ SpeciesId.GALAR_MR_MIME ], 42: [ SpeciesId.MR_RIME ]}, SpeciesId.ARCTOZOLT, SpeciesId.HISUI_AVALUGG ] + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.HISUI_ZORUA ], 30: [ SpeciesId.HISUI_ZOROARK ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.HISUI_ZORUA ], 30: [ SpeciesId.HISUI_ZOROARK ] } ], + [TimeOfDay.ALL]: [ { 1: [ SpeciesId.GALAR_MR_MIME ], 42: [ SpeciesId.MR_RIME ] }, SpeciesId.ARCTOZOLT, SpeciesId.HISUI_AVALUGG ] }, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GLASTRIER, SpeciesId.CHIEN_PAO, SpeciesId.GALAR_ARTICUNO ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.WYRDEER ], [TimeOfDay.DAY]: [ SpeciesId.WYRDEER ], [TimeOfDay.DUSK]: [ SpeciesId.FROSMOTH ], [TimeOfDay.NIGHT]: [ SpeciesId.FROSMOTH ], [TimeOfDay.ALL]: [ SpeciesId.ABOMASNOW, SpeciesId.URSALUNA ]}, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GLASTRIER, SpeciesId.CHIEN_PAO, SpeciesId.GALAR_ARTICUNO ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.WYRDEER ], [TimeOfDay.DAY]: [ SpeciesId.WYRDEER ], [TimeOfDay.DUSK]: [ SpeciesId.FROSMOTH ], [TimeOfDay.NIGHT]: [ SpeciesId.FROSMOTH ], [TimeOfDay.ALL]: [ SpeciesId.ABOMASNOW, SpeciesId.URSALUNA ] }, [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ SpeciesId.SNEASLER, SpeciesId.GALAR_DARMANITAN ], [TimeOfDay.DAY]: [ SpeciesId.SNEASLER, SpeciesId.GALAR_DARMANITAN ], @@ -1540,22 +1540,22 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.HISUI_ZOROARK ], [TimeOfDay.ALL]: [ SpeciesId.MR_RIME, SpeciesId.ARCTOZOLT, SpeciesId.ALOLA_SANDSLASH, SpeciesId.ALOLA_NINETALES ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GLASTRIER, SpeciesId.CHIEN_PAO ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZACIAN, SpeciesId.GALAR_ARTICUNO ]} + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.GLASTRIER, SpeciesId.CHIEN_PAO ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ZACIAN, SpeciesId.GALAR_ARTICUNO ] } }, [BiomeId.ISLAND]: { [BiomePoolTier.COMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], - [TimeOfDay.DUSK]: [{ 1: [ SpeciesId.ALOLA_RATTATA ], 30: [ SpeciesId.ALOLA_RATICATE ]}, { 1: [ SpeciesId.ALOLA_MEOWTH ], 30: [ SpeciesId.ALOLA_PERSIAN ]}], - [TimeOfDay.NIGHT]: [{ 1: [ SpeciesId.ALOLA_RATTATA ], 30: [ SpeciesId.ALOLA_RATICATE ]}, { 1: [ SpeciesId.ALOLA_MEOWTH ], 30: [ SpeciesId.ALOLA_PERSIAN ]}], + [TimeOfDay.DUSK]: [ { 1: [ SpeciesId.ALOLA_RATTATA ], 20: [ SpeciesId.ALOLA_RATICATE ] }, { 1: [ SpeciesId.ALOLA_MEOWTH ], 30: [ SpeciesId.ALOLA_PERSIAN ] } ], + [TimeOfDay.NIGHT]: [ { 1: [ SpeciesId.ALOLA_RATTATA ], 20: [ SpeciesId.ALOLA_RATICATE ] }, { 1: [ SpeciesId.ALOLA_MEOWTH ], 30: [ SpeciesId.ALOLA_PERSIAN ] } ], [TimeOfDay.ALL]: [ SpeciesId.ORICORIO, - { 1: [ SpeciesId.ALOLA_SANDSHREW ], 30: [ SpeciesId.ALOLA_SANDSLASH ]}, - { 1: [ SpeciesId.ALOLA_VULPIX ], 30: [ SpeciesId.ALOLA_NINETALES ]}, - { 1: [ SpeciesId.ALOLA_DIGLETT ], 26: [ SpeciesId.ALOLA_DUGTRIO ]}, - { 1: [ SpeciesId.ALOLA_GEODUDE ], 25: [ SpeciesId.ALOLA_GRAVELER ], 40: [ SpeciesId.ALOLA_GOLEM ]}, - { 1: [ SpeciesId.ALOLA_GRIMER ], 38: [ SpeciesId.ALOLA_MUK ]} + { 1: [ SpeciesId.ALOLA_SANDSHREW ], 30: [ SpeciesId.ALOLA_SANDSLASH ] }, + { 1: [ SpeciesId.ALOLA_VULPIX ], 30: [ SpeciesId.ALOLA_NINETALES ] }, + { 1: [ SpeciesId.ALOLA_DIGLETT ], 26: [ SpeciesId.ALOLA_DUGTRIO ] }, + { 1: [ SpeciesId.ALOLA_GEODUDE ], 25: [ SpeciesId.ALOLA_GRAVELER ], 40: [ SpeciesId.ALOLA_GOLEM ] }, + { 1: [ SpeciesId.ALOLA_GRIMER ], 38: [ SpeciesId.ALOLA_MUK ] } ] }, [BiomePoolTier.UNCOMMON]: { @@ -1565,9 +1565,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.ALOLA_MAROWAK ], [TimeOfDay.ALL]: [ SpeciesId.BRUXISH ] }, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLACEPHALON ]}, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLACEPHALON ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ SpeciesId.ALOLA_RAICHU, SpeciesId.ALOLA_EXEGGUTOR ], [TimeOfDay.DAY]: [ SpeciesId.ALOLA_RAICHU, SpeciesId.ALOLA_EXEGGUTOR ], @@ -1575,9 +1575,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ SpeciesId.ALOLA_RATICATE, SpeciesId.ALOLA_PERSIAN, SpeciesId.ALOLA_MAROWAK ], [TimeOfDay.ALL]: [ SpeciesId.ORICORIO, SpeciesId.BRUXISH, SpeciesId.ALOLA_SANDSLASH, SpeciesId.ALOLA_NINETALES, SpeciesId.ALOLA_DUGTRIO, SpeciesId.ALOLA_GOLEM, SpeciesId.ALOLA_MUK ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLACEPHALON ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.BLACEPHALON ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [BiomeId.LABORATORY]: { [BiomePoolTier.COMMON]: { @@ -1586,21 +1586,21 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ - { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ]}, - { 1: [ SpeciesId.GRIMER ], 38: [ SpeciesId.MUK ]}, - { 1: [ SpeciesId.VOLTORB ], 30: [ SpeciesId.ELECTRODE ]}, - { 1: [ SpeciesId.BRONZOR ], 33: [ SpeciesId.BRONZONG ]}, - { 1: [ SpeciesId.KLINK ], 38: [ SpeciesId.KLANG ], 49: [ SpeciesId.KLINKLANG ]} + { 1: [ SpeciesId.MAGNEMITE ], 30: [ SpeciesId.MAGNETON ] }, + { 1: [ SpeciesId.GRIMER ], 38: [ SpeciesId.MUK ] }, + { 1: [ SpeciesId.VOLTORB ], 30: [ SpeciesId.ELECTRODE ] }, + { 1: [ SpeciesId.BRONZOR ], 33: [ SpeciesId.BRONZONG ] }, + { 1: [ SpeciesId.KLINK ], 38: [ SpeciesId.KLANG ], 49: [ SpeciesId.KLINKLANG ] } ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [{ 1: [ SpeciesId.SOLOSIS ], 32: [ SpeciesId.DUOSION ], 41: [ SpeciesId.REUNICLUS ]}]}, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, { 1: [ SpeciesId.PORYGON ], 30: [ SpeciesId.PORYGON2 ]}]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM ]}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.TYPE_NULL ]}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MUK, SpeciesId.ELECTRODE, SpeciesId.BRONZONG, SpeciesId.MAGNEZONE, SpeciesId.PORYGON_Z, SpeciesId.REUNICLUS, SpeciesId.KLINKLANG ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM, SpeciesId.ZYGARDE, SpeciesId.SILVALLY ]}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MEWTWO, SpeciesId.MIRAIDON ]} + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ SpeciesId.SOLOSIS ], 32: [ SpeciesId.DUOSION ], 41: [ SpeciesId.REUNICLUS ] } ] }, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.DITTO, { 1: [ SpeciesId.PORYGON ], 30: [ SpeciesId.PORYGON2 ] } ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [SpeciesId.TYPE_NULL], 60: [ SpeciesId.SILVALLY ] } ] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MUK, SpeciesId.ELECTRODE, SpeciesId.BRONZONG, SpeciesId.MAGNEZONE, SpeciesId.PORYGON_Z, SpeciesId.REUNICLUS, SpeciesId.KLINKLANG ] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROTOM, SpeciesId.ZYGARDE, { 1: [SpeciesId.TYPE_NULL], 60: [ SpeciesId.SILVALLY ] } ] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.MEWTWO, SpeciesId.MIRAIDON ] } }, [BiomeId.END]: { [BiomePoolTier.COMMON]: { @@ -1623,14 +1623,14 @@ export const biomePokemonPools: BiomePokemonPools = { SpeciesId.IRON_THORNS ] }, - [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROARING_MOON, SpeciesId.IRON_VALIANT ]}, - [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.WALKING_WAKE, SpeciesId.IRON_LEAVES, SpeciesId.GOUGING_FIRE, SpeciesId.RAGING_BOLT, SpeciesId.IRON_BOULDER, SpeciesId.IRON_CROWN ]}, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ETERNATUS ]}, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []}, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: []} + [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ROARING_MOON, SpeciesId.IRON_VALIANT ] }, + [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.WALKING_WAKE, SpeciesId.IRON_LEAVES, SpeciesId.GOUGING_FIRE, SpeciesId.RAGING_BOLT, SpeciesId.IRON_BOULDER, SpeciesId.IRON_CROWN ] }, + [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ SpeciesId.ETERNATUS ] }, + [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, + [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } } }; @@ -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, [ @@ -6969,7 +6968,7 @@ export function initBiomes() { ] ], [ SpeciesId.ETERNAL_FLOETTE, PokemonType.FAIRY, -1, [ - [ BiomeId.FAIRY_CAVE, BiomePoolTier.RARE ], + [ BiomeId.FAIRY_CAVE, BiomePoolTier.SUPER_RARE ], [ BiomeId.FAIRY_CAVE, BiomePoolTier.BOSS_RARE ] ] ], @@ -7708,10 +7707,10 @@ export function initBiomes() { const traverseBiome = (biome: BiomeId, depth: number) => { if (biome === BiomeId.END) { - const biomeList = Object.keys(BiomeId).filter(key => !Number.isNaN(Number(key))); + const biomeList = getEnumValues(BiomeId) biomeList.pop(); // Removes BiomeId.END from the list const randIndex = randSeedInt(biomeList.length, 1); // Will never be BiomeId.TOWN - biome = BiomeId[biomeList[randIndex]]; + biome = biomeList[randIndex]; } const linkedBiomes: (BiomeId | [ BiomeId, number ])[] = Array.isArray(biomeLinks[biome]) ? biomeLinks[biome] as (BiomeId | [ BiomeId, number ])[] @@ -7871,7 +7870,7 @@ export function initBiomes() { // const trainerOutput = {}; // for (const b of Object.keys(biomePokemonPools)) { - // const biome = Biome[b]; + // const biome = BiomeId[b]; // pokemonOutput[biome] = {}; // trainerOutput[biome] = {}; @@ -7887,12 +7886,12 @@ export function initBiomes() { // for (const f of biomePokemonPools[b][t][tod]) { // if (typeof f === "number") { - // pokemonOutput[biome][tier][timeOfDay].push(Species[f]); + // pokemonOutput[biome][tier][timeOfDay].push(SpeciesId[f]); // } else { // const tree = {}; // for (const l of Object.keys(f)) { - // tree[l] = f[l].map(s => Species[s]); + // tree[l] = f[l].map(s => SpeciesId[s]); // } // pokemonOutput[biome][tier][timeOfDay].push(tree); diff --git a/src/data/balance/egg-moves.ts b/src/data/balance/egg-moves.ts index fa89e558ba7..f5026abe2ef 100644 --- a/src/data/balance/egg-moves.ts +++ b/src/data/balance/egg-moves.ts @@ -1,8 +1,8 @@ -import { allMoves } from "../data-lists"; -import { getEnumKeys, getEnumValues } from "#app/utils/common"; +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"; export const speciesEggMoves = { [SpeciesId.BULBASAUR]: [ MoveId.SAPPY_SEED, MoveId.MALIGNANT_CHAIN, MoveId.EARTH_POWER, MoveId.MATCHA_GOTCHA ], @@ -26,14 +26,14 @@ export const speciesEggMoves = { [SpeciesId.MEOWTH]: [ MoveId.HEART_STAMP, MoveId.SWORDS_DANCE, MoveId.SIZZLY_SLIDE, MoveId.TAIL_SLAP ], [SpeciesId.PSYDUCK]: [ MoveId.FROST_BREATH, MoveId.AQUA_STEP, MoveId.MYSTICAL_POWER, MoveId.BOUNCY_BUBBLE ], [SpeciesId.MANKEY]: [ MoveId.DRAIN_PUNCH, MoveId.SLACK_OFF, MoveId.METEOR_MASH, MoveId.NO_RETREAT ], - [SpeciesId.GROWLITHE]: [ MoveId.ZING_ZAP, MoveId.PARTING_SHOT, MoveId.MORNING_SUN, MoveId.SACRED_FIRE ], + [SpeciesId.GROWLITHE]: [ MoveId.ZING_ZAP, MoveId.DRAGON_DANCE, MoveId.MORNING_SUN, MoveId.SACRED_FIRE ], [SpeciesId.POLIWAG]: [ MoveId.SLACK_OFF, MoveId.WILDBOLT_STORM, MoveId.DRAIN_PUNCH, MoveId.SURGING_STRIKES ], [SpeciesId.ABRA]: [ MoveId.AURA_SPHERE, MoveId.BADDY_BAD, MoveId.ICE_BEAM, MoveId.PSYSTRIKE ], [SpeciesId.MACHOP]: [ MoveId.COMBAT_TORQUE, MoveId.METEOR_MASH, MoveId.MOUNTAIN_GALE, MoveId.FISSURE ], [SpeciesId.BELLSPROUT]: [ MoveId.SOLAR_BLADE, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.VICTORY_DANCE ], [SpeciesId.TENTACOOL]: [ MoveId.BANEFUL_BUNKER, MoveId.MALIGNANT_CHAIN, MoveId.BOUNCY_BUBBLE, MoveId.STRENGTH_SAP ], [SpeciesId.GEODUDE]: [ MoveId.FLARE_BLITZ, MoveId.HEAD_SMASH, MoveId.SHORE_UP, MoveId.SHELL_SMASH ], - [SpeciesId.PONYTA]: [ MoveId.HEADLONG_RUSH, MoveId.FIRE_LASH, MoveId.SWORDS_DANCE, MoveId.VOLT_TACKLE ], + [SpeciesId.PONYTA]: [ MoveId.HEADLONG_RUSH, MoveId.HIGH_JUMP_KICK, MoveId.SWORDS_DANCE, MoveId.VOLT_TACKLE ], [SpeciesId.SLOWPOKE]: [ MoveId.SPLISHY_SPLASH, MoveId.FROST_BREATH, MoveId.SHED_TAIL, MoveId.MYSTICAL_POWER ], [SpeciesId.MAGNEMITE]: [ MoveId.PARABOLIC_CHARGE, MoveId.FLAMETHROWER, MoveId.ICE_BEAM, MoveId.THUNDERCLAP ], [SpeciesId.FARFETCHD]: [ MoveId.IVY_CUDGEL, MoveId.TRIPLE_ARROWS, MoveId.DRILL_RUN, MoveId.VICTORY_DANCE ], @@ -63,9 +63,9 @@ export const speciesEggMoves = { [SpeciesId.LAPRAS]: [ MoveId.RECOVER, MoveId.FREEZE_DRY, MoveId.SCALD, MoveId.SHELL_SMASH ], [SpeciesId.DITTO]: [ MoveId.MIMIC, MoveId.SKETCH, MoveId.METRONOME, MoveId.IMPRISON ], [SpeciesId.EEVEE]: [ MoveId.WISH, MoveId.NO_RETREAT, MoveId.ZIPPY_ZAP, MoveId.BOOMBURST ], - [SpeciesId.PORYGON]: [ MoveId.THUNDERCLAP, MoveId.AURA_SPHERE, MoveId.FLAMETHROWER, MoveId.TECHNO_BLAST ], + [SpeciesId.PORYGON]: [ MoveId.THUNDERCLAP, MoveId.DAZZLING_GLEAM, MoveId.FLAMETHROWER, MoveId.TECHNO_BLAST ], [SpeciesId.OMANYTE]: [ MoveId.FREEZE_DRY, MoveId.GIGA_DRAIN, MoveId.POWER_GEM, MoveId.STEAM_ERUPTION ], - [SpeciesId.KABUTO]: [ MoveId.CEASELESS_EDGE, MoveId.HIGH_HORSEPOWER, MoveId.CRABHAMMER, MoveId.MIGHTY_CLEAVE ], + [SpeciesId.KABUTO]: [ MoveId.CEASELESS_EDGE, MoveId.HIGH_HORSEPOWER, MoveId.MIGHTY_CLEAVE, MoveId.CRABHAMMER ], [SpeciesId.AERODACTYL]: [ MoveId.FLOATY_FALL, MoveId.HIGH_HORSEPOWER, MoveId.STONE_AXE, MoveId.SWORDS_DANCE ], [SpeciesId.ARTICUNO]: [ MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.AURORA_VEIL, MoveId.AEROBLAST ], [SpeciesId.ZAPDOS]: [ MoveId.BLEAKWIND_STORM, MoveId.CALM_MIND, MoveId.SANDSEAR_STORM, MoveId.ELECTRO_SHOT ], @@ -75,8 +75,8 @@ export const speciesEggMoves = { [SpeciesId.MEW]: [ MoveId.PHOTON_GEYSER, MoveId.MOONBLAST, MoveId.ASTRAL_BARRAGE, MoveId.SHELL_SMASH ], [SpeciesId.CHIKORITA]: [ MoveId.SAPPY_SEED, MoveId.STONE_AXE, MoveId.DRAGON_DANCE, MoveId.SPORE ], - [SpeciesId.CYNDAQUIL]: [ MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.FIERY_DANCE, MoveId.ELECTRO_DRIFT ], - [SpeciesId.TOTODILE]: [ MoveId.THUNDER_PUNCH, MoveId.DRAGON_DANCE, MoveId.PLAY_ROUGH, MoveId.SURGING_STRIKES ], + [SpeciesId.CYNDAQUIL]: [ MoveId.BURNING_BULWARK, MoveId.EARTH_POWER, MoveId.FIERY_DANCE, MoveId.ELECTRO_DRIFT ], + [SpeciesId.TOTODILE]: [ MoveId.THUNDER_FANG, MoveId.DRAGON_DANCE, MoveId.DRAIN_PUNCH, MoveId.SURGING_STRIKES ], [SpeciesId.SENTRET]: [ MoveId.TIDY_UP, MoveId.FAKE_OUT, MoveId.NUZZLE, MoveId.EXTREME_SPEED ], [SpeciesId.HOOTHOOT]: [ MoveId.TAKE_HEART, MoveId.ESPER_WING, MoveId.AEROBLAST, MoveId.BOOMBURST ], [SpeciesId.LEDYBA]: [ MoveId.POLLEN_PUFF, MoveId.MAT_BLOCK, MoveId.PARTING_SHOT, MoveId.SPORE ], @@ -97,7 +97,7 @@ export const speciesEggMoves = { [SpeciesId.MISDREAVUS]: [ MoveId.TAKE_HEART, MoveId.MOONBLAST, MoveId.AURA_SPHERE, MoveId.MOONGEIST_BEAM ], [SpeciesId.UNOWN]: [ MoveId.NATURE_POWER, MoveId.COSMIC_POWER, MoveId.ANCIENT_POWER, MoveId.MYSTICAL_POWER ], [SpeciesId.GIRAFARIG]: [ MoveId.MYSTICAL_POWER, MoveId.NIGHT_DAZE, MoveId.RECOVER, MoveId.BOOMBURST ], - [SpeciesId.PINECO]: [ MoveId.METAL_BURST, MoveId.SHORE_UP, MoveId.BODY_PRESS, MoveId.DIAMOND_STORM ], + [SpeciesId.PINECO]: [ MoveId.METAL_BURST, MoveId.RECOVER, MoveId.LEECH_LIFE, MoveId.SPIN_OUT ], [SpeciesId.DUNSPARCE]: [ MoveId.WICKED_TORQUE, MoveId.MAGICAL_TORQUE, MoveId.BLAZING_TORQUE, MoveId.EXTREME_SPEED ], [SpeciesId.GLIGAR]: [ MoveId.FLOATY_FALL, MoveId.THOUSAND_WAVES, MoveId.SPIKY_SHIELD, MoveId.MIGHTY_CLEAVE ], [SpeciesId.SNUBBULL]: [ MoveId.FACADE, MoveId.HIGH_HORSEPOWER, MoveId.SWORDS_DANCE, MoveId.EXTREME_SPEED ], @@ -111,12 +111,12 @@ export const speciesEggMoves = { [SpeciesId.CORSOLA]: [ MoveId.SCALD, MoveId.FREEZE_DRY, MoveId.STRENGTH_SAP, MoveId.SALT_CURE ], [SpeciesId.REMORAID]: [ MoveId.WATER_SHURIKEN, MoveId.TAKE_HEART, MoveId.SHELL_SIDE_ARM, MoveId.BOUNCY_BUBBLE ], [SpeciesId.DELIBIRD]: [ MoveId.BONEMERANG, MoveId.FLOATY_FALL, MoveId.VICTORY_DANCE, MoveId.GLACIAL_LANCE ], - [SpeciesId.SKARMORY]: [ MoveId.ROOST, MoveId.BODY_PRESS, MoveId.SPIKY_SHIELD, MoveId.BEAK_BLAST ], + [SpeciesId.SKARMORY]: [ MoveId.ROOST, MoveId.BODY_PRESS, MoveId.CEASELESS_EDGE, MoveId.BEAK_BLAST ], [SpeciesId.HOUNDOUR]: [ MoveId.FIERY_WRATH, MoveId.THUNDERBOLT, MoveId.MOONBLAST, MoveId.ARMOR_CANNON ], [SpeciesId.PHANPY]: [ MoveId.SHORE_UP, MoveId.SWORDS_DANCE, MoveId.MOUNTAIN_GALE, MoveId.COLLISION_COURSE ], [SpeciesId.STANTLER]: [ MoveId.THUNDEROUS_KICK, MoveId.PHOTON_GEYSER, MoveId.SWORDS_DANCE, MoveId.BOOMBURST ], [SpeciesId.SMEARGLE]: [ MoveId.CONVERSION, MoveId.BURNING_BULWARK, MoveId.SALT_CURE, MoveId.DARK_VOID ], - [SpeciesId.TYROGUE]: [ MoveId.VICTORY_DANCE, MoveId.THUNDEROUS_KICK, MoveId.METEOR_MASH, MoveId.WICKED_BLOW ], + [SpeciesId.TYROGUE]: [ MoveId.DARKEST_LARIAT, MoveId.THUNDEROUS_KICK, MoveId.METEOR_MASH, MoveId.VICTORY_DANCE ], [SpeciesId.SMOOCHUM]: [ MoveId.LUSTER_PURGE, MoveId.AURA_SPHERE, MoveId.FREEZE_DRY, MoveId.QUIVER_DANCE ], [SpeciesId.ELEKID]: [ MoveId.FIRE_LASH, MoveId.ZING_ZAP, MoveId.MOUNTAIN_GALE, MoveId.SHIFT_GEAR ], [SpeciesId.MAGBY]: [ MoveId.THUNDERCLAP, MoveId.EARTH_POWER, MoveId.ENERGY_BALL, MoveId.BLUE_FLARE ], @@ -142,7 +142,7 @@ export const speciesEggMoves = { [SpeciesId.RALTS]: [ MoveId.PSYBLADE, MoveId.BITTER_BLADE, MoveId.NO_RETREAT, MoveId.BOOMBURST ], [SpeciesId.SURSKIT]: [ MoveId.POLLEN_PUFF, MoveId.FIERY_DANCE, MoveId.BOUNCY_BUBBLE, MoveId.AEROBLAST ], [SpeciesId.SHROOMISH]: [ MoveId.ACCELEROCK, MoveId.TRAILBLAZE, MoveId.STORM_THROW, MoveId.SAPPY_SEED ], - [SpeciesId.SLAKOTH]: [ MoveId.FACADE, MoveId.DRAIN_PUNCH, MoveId.KNOCK_OFF, MoveId.SKILL_SWAP ], + [SpeciesId.SLAKOTH]: [ MoveId.CRUSH_GRIP, MoveId.DRAIN_PUNCH, MoveId.PARTING_SHOT, MoveId.SKILL_SWAP ], [SpeciesId.NINCADA]: [ MoveId.BULLDOZE, MoveId.STICKY_WEB, MoveId.SHADOW_BONE, MoveId.SHELL_SMASH ], [SpeciesId.WHISMUR]: [ MoveId.ALLURING_VOICE, MoveId.SHIFT_GEAR, MoveId.SPARKLING_ARIA, MoveId.TORCH_SONG ], [SpeciesId.MAKUHITA]: [ MoveId.COMBAT_TORQUE, MoveId.SLACK_OFF, MoveId.HEAT_CRASH, MoveId.DOUBLE_IRON_BASH ], @@ -167,7 +167,7 @@ export const speciesEggMoves = { [SpeciesId.SPINDA]: [ MoveId.SUPERPOWER, MoveId.SLACK_OFF, MoveId.FLEUR_CANNON, MoveId.V_CREATE ], [SpeciesId.TRAPINCH]: [ MoveId.FIRE_LASH, MoveId.DRAGON_DARTS, MoveId.THOUSAND_ARROWS, MoveId.DRAGON_ENERGY ], [SpeciesId.CACNEA]: [ MoveId.EARTH_POWER, MoveId.CEASELESS_EDGE, MoveId.NIGHT_DAZE, MoveId.IVY_CUDGEL ], - [SpeciesId.SWABLU]: [ MoveId.ROOST, MoveId.NASTY_PLOT, MoveId.FLOATY_FALL, MoveId.BOOMBURST ], + [SpeciesId.SWABLU]: [ MoveId.ROOST, MoveId.TAKE_HEART, MoveId.AEROBLAST, MoveId.BOOMBURST ], [SpeciesId.ZANGOOSE]: [ MoveId.FACADE, MoveId.HIGH_HORSEPOWER, MoveId.EXTREME_SPEED, MoveId.TIDY_UP ], [SpeciesId.SEVIPER]: [ MoveId.ICE_BEAM, MoveId.BITTER_BLADE, MoveId.SUCKER_PUNCH, MoveId.NO_RETREAT ], [SpeciesId.LUNATONE]: [ MoveId.REVELATION_DANCE, MoveId.MOONGEIST_BEAM, MoveId.SHELL_SMASH, MoveId.LUMINA_CRASH ], @@ -203,13 +203,13 @@ export const speciesEggMoves = { [SpeciesId.JIRACHI]: [ MoveId.TACHYON_CUTTER, MoveId.TRIPLE_ARROWS, MoveId.ROCK_SLIDE, MoveId.SHELL_SMASH ], [SpeciesId.DEOXYS]: [ MoveId.COLLISION_COURSE, MoveId.FUSION_FLARE, MoveId.PARTING_SHOT, MoveId.LUMINA_CRASH ], - [SpeciesId.TURTWIG]: [ MoveId.SHELL_SMASH, MoveId.MIGHTY_CLEAVE, MoveId.ICE_SPINNER, MoveId.SAPPY_SEED ], + [SpeciesId.TURTWIG]: [ MoveId.SHELL_SMASH, MoveId.STONE_AXE, MoveId.ICE_SPINNER, MoveId.SAPPY_SEED ], [SpeciesId.CHIMCHAR]: [ MoveId.THUNDERBOLT, MoveId.SECRET_SWORD, MoveId.TRIPLE_AXEL, MoveId.SACRED_FIRE ], [SpeciesId.PIPLUP]: [ MoveId.KINGS_SHIELD, MoveId.TACHYON_CUTTER, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION ], [SpeciesId.STARLY]: [ MoveId.SWORDS_DANCE, MoveId.HEAD_CHARGE, MoveId.FLARE_BLITZ, MoveId.EXTREME_SPEED ], [SpeciesId.BIDOOF]: [ MoveId.EXTREME_SPEED, MoveId.COSMIC_POWER, MoveId.POWER_TRIP, MoveId.AQUA_STEP ], [SpeciesId.KRICKETOT]: [ MoveId.BONEMERANG, MoveId.VICTORY_DANCE, MoveId.STONE_AXE, MoveId.POPULATION_BOMB ], - [SpeciesId.SHINX]: [ MoveId.FIRE_LASH, MoveId.TRIPLE_AXEL, MoveId.ZIPPY_ZAP, MoveId.BOLT_STRIKE ], + [SpeciesId.SHINX]: [ MoveId.THUNDEROUS_KICK, MoveId.TRIPLE_AXEL, MoveId.ZIPPY_ZAP, MoveId.BOLT_STRIKE ], [SpeciesId.BUDEW]: [ MoveId.FIERY_DANCE, MoveId.ACID_SPRAY, MoveId.BOUNCY_BUBBLE, MoveId.QUIVER_DANCE ], [SpeciesId.CRANIDOS]: [ MoveId.VOLT_TACKLE, MoveId.ACCELEROCK, MoveId.FLARE_BLITZ, MoveId.SHIFT_GEAR ], [SpeciesId.SHIELDON]: [ MoveId.SHORE_UP, MoveId.BODY_PRESS, MoveId.KINGS_SHIELD, MoveId.DIAMOND_STORM ], @@ -253,14 +253,14 @@ export const speciesEggMoves = { [SpeciesId.PHIONE]: [ MoveId.BOUNCY_BUBBLE, MoveId.FREEZE_DRY, MoveId.STORED_POWER, MoveId.ORIGIN_PULSE ], [SpeciesId.MANAPHY]: [ MoveId.BOUNCY_BUBBLE, MoveId.FROST_BREATH, MoveId.WILDBOLT_STORM, MoveId.ORIGIN_PULSE ], [SpeciesId.DARKRAI]: [ MoveId.FIERY_WRATH, MoveId.MOONBLAST, MoveId.FIERY_DANCE, MoveId.MAKE_IT_RAIN ], - [SpeciesId.SHAYMIN]: [ MoveId.MATCHA_GOTCHA, MoveId.FIERY_DANCE, MoveId.AEROBLAST, MoveId.QUIVER_DANCE ], + [SpeciesId.SHAYMIN]: [ MoveId.MATCHA_GOTCHA, MoveId.HEAT_WAVE, MoveId.AEROBLAST, MoveId.QUIVER_DANCE ], [SpeciesId.ARCEUS]: [ MoveId.NO_RETREAT, MoveId.COLLISION_COURSE, MoveId.ASTRAL_BARRAGE, MoveId.MULTI_ATTACK ], [SpeciesId.VICTINI]: [ MoveId.BLUE_FLARE, MoveId.BOLT_STRIKE, MoveId.LUSTER_PURGE, MoveId.VICTORY_DANCE ], [SpeciesId.SNIVY]: [ MoveId.FLAMETHROWER, MoveId.CLANGING_SCALES, MoveId.MAKE_IT_RAIN, MoveId.FLEUR_CANNON ], [SpeciesId.TEPIG]: [ MoveId.WAVE_CRASH, MoveId.VOLT_TACKLE, MoveId.AXE_KICK, MoveId.VICTORY_DANCE ], [SpeciesId.OSHAWOTT]: [ MoveId.FREEZE_DRY, MoveId.SHELL_SIDE_ARM, MoveId.SACRED_SWORD, MoveId.SHELL_SMASH ], - [SpeciesId.PATRAT]: [ MoveId.FAKE_OUT, MoveId.SWORDS_DANCE, MoveId.DYNAMIC_PUNCH, MoveId.EXTREME_SPEED ], + [SpeciesId.PATRAT]: [ MoveId.FAKE_OUT, MoveId.INSTRUCT, MoveId.DYNAMIC_PUNCH, MoveId.EXTREME_SPEED ], [SpeciesId.LILLIPUP]: [ MoveId.CLOSE_COMBAT, MoveId.BODY_SLAM, MoveId.HIGH_HORSEPOWER, MoveId.LAST_RESPECTS ], [SpeciesId.PURRLOIN]: [ MoveId.ENCORE, MoveId.OBSTRUCT, MoveId.PARTING_SHOT, MoveId.WICKED_BLOW ], [SpeciesId.PANSAGE]: [ MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.EARTHQUAKE, MoveId.IVY_CUDGEL ], @@ -269,7 +269,7 @@ export const speciesEggMoves = { [SpeciesId.MUNNA]: [ MoveId.COSMIC_POWER, MoveId.AURA_SPHERE, MoveId.LUNAR_BLESSING, MoveId.MYSTICAL_POWER ], [SpeciesId.PIDOVE]: [ MoveId.SLASH, MoveId.TIDY_UP, MoveId.FLOATY_FALL, MoveId.TRIPLE_ARROWS ], [SpeciesId.BLITZLE]: [ MoveId.HORN_LEECH, MoveId.SWORDS_DANCE, MoveId.FLARE_BLITZ, MoveId.BOLT_STRIKE ], - [SpeciesId.ROGGENROLA]: [ MoveId.BODY_PRESS, MoveId.CURSE, MoveId.SHORE_UP, MoveId.DIAMOND_STORM ], + [SpeciesId.ROGGENROLA]: [ MoveId.BODY_PRESS, MoveId.SPIKY_SHIELD, MoveId.SHORE_UP, MoveId.DIAMOND_STORM ], [SpeciesId.WOOBAT]: [ MoveId.ESPER_WING, MoveId.STORED_POWER, MoveId.MYSTICAL_FIRE, MoveId.OBLIVION_WING ], [SpeciesId.DRILBUR]: [ MoveId.METEOR_MASH, MoveId.ICE_SPINNER, MoveId.SHIFT_GEAR, MoveId.THOUSAND_ARROWS ], [SpeciesId.AUDINO]: [ MoveId.TAKE_HEART, MoveId.MOONBLAST, MoveId.WISH, MoveId.MATCHA_GOTCHA ], @@ -298,7 +298,7 @@ export const speciesEggMoves = { [SpeciesId.SOLOSIS]: [ MoveId.MIST_BALL, MoveId.SPEED_SWAP, MoveId.FLAMETHROWER, MoveId.LIGHT_OF_RUIN ], [SpeciesId.DUCKLETT]: [ MoveId.SPLISHY_SPLASH, MoveId.SANDSEAR_STORM, MoveId.WILDBOLT_STORM, MoveId.QUIVER_DANCE ], [SpeciesId.VANILLITE]: [ MoveId.EARTH_POWER, MoveId.AURORA_VEIL, MoveId.CALM_MIND, MoveId.SPARKLY_SWIRL ], - [SpeciesId.DEERLING]: [ MoveId.TIDY_UP, MoveId.HEADBUTT, MoveId.COMBAT_TORQUE, MoveId.FLOWER_TRICK ], + [SpeciesId.DEERLING]: [ MoveId.TIDY_UP, MoveId.HEADBUTT, MoveId.AXE_KICK, MoveId.FLOWER_TRICK ], [SpeciesId.EMOLGA]: [ MoveId.ICICLE_CRASH, MoveId.ZING_ZAP, MoveId.FLOATY_FALL, MoveId.ELECTRIFY ], [SpeciesId.KARRABLAST]: [ MoveId.LEECH_LIFE, MoveId.BITTER_BLADE, MoveId.OBSTRUCT, MoveId.DOUBLE_IRON_BASH ], [SpeciesId.FOONGUS]: [ MoveId.POLLEN_PUFF, MoveId.PARTING_SHOT, MoveId.FOUL_PLAY, MoveId.SAPPY_SEED ], @@ -322,8 +322,8 @@ export const speciesEggMoves = { [SpeciesId.BOUFFALANT]: [ MoveId.HORN_LEECH, MoveId.HIGH_JUMP_KICK, MoveId.HEAD_SMASH, MoveId.FLARE_BLITZ ], [SpeciesId.RUFFLET]: [ MoveId.FLOATY_FALL, MoveId.AURA_SPHERE, MoveId.NO_RETREAT, MoveId.BOLT_BEAK ], [SpeciesId.VULLABY]: [ MoveId.FOUL_PLAY, MoveId.BODY_PRESS, MoveId.ROOST, MoveId.RUINATION ], - [SpeciesId.HEATMOR]: [ MoveId.EARTH_POWER, MoveId.OVERHEAT, MoveId.THUNDERBOLT, MoveId.V_CREATE ], - [SpeciesId.DURANT]: [ MoveId.HIGH_HORSEPOWER, MoveId.FIRST_IMPRESSION, MoveId.SWORDS_DANCE, MoveId.BEHEMOTH_BASH ], + [SpeciesId.HEATMOR]: [ MoveId.EARTH_POWER, MoveId.OVERHEAT, MoveId.SUPERCELL_SLAM, MoveId.V_CREATE ], + [SpeciesId.DURANT]: [ MoveId.HIGH_HORSEPOWER, MoveId.FIRST_IMPRESSION, MoveId.U_TURN, MoveId.BEHEMOTH_BASH ], [SpeciesId.DEINO]: [ MoveId.FIERY_WRATH, MoveId.ESPER_WING, MoveId.SLUDGE_BOMB, MoveId.FICKLE_BEAM ], [SpeciesId.LARVESTA]: [ MoveId.THUNDERBOLT, MoveId.DAZZLING_GLEAM, MoveId.EARTH_POWER, MoveId.HYDRO_STEAM ], [SpeciesId.COBALION]: [ MoveId.BEHEMOTH_BLADE, MoveId.MIGHTY_CLEAVE, MoveId.CEASELESS_EDGE, MoveId.VICTORY_DANCE ], @@ -381,8 +381,8 @@ export const speciesEggMoves = { [SpeciesId.ROWLET]: [ MoveId.THOUSAND_ARROWS, MoveId.SHADOW_BONE, MoveId.FIRST_IMPRESSION, MoveId.VICTORY_DANCE ], [SpeciesId.LITTEN]: [ MoveId.SUCKER_PUNCH, MoveId.PARTING_SHOT, MoveId.SLACK_OFF, MoveId.SACRED_FIRE ], [SpeciesId.POPPLIO]: [ MoveId.PSYCHIC_NOISE, MoveId.MOONLIGHT, MoveId.OVERDRIVE, MoveId.TORCH_SONG ], - [SpeciesId.PIKIPEK]: [ MoveId.DUAL_WINGBEAT, MoveId.BONE_RUSH, MoveId.BURNING_BULWARK, MoveId.POPULATION_BOMB ], - [SpeciesId.YUNGOOS]: [ MoveId.EXTREME_SPEED, MoveId.KNOCK_OFF, MoveId.TIDY_UP, MoveId.MULTI_ATTACK ], + [SpeciesId.PIKIPEK]: [ MoveId.TRAILBLAZE, MoveId.BONE_RUSH, MoveId.BURNING_BULWARK, MoveId.POPULATION_BOMB ], + [SpeciesId.YUNGOOS]: [ MoveId.FAKE_OUT, MoveId.HIGH_HORSEPOWER, MoveId.TIDY_UP, MoveId.EXTREME_SPEED ], [SpeciesId.GRUBBIN]: [ MoveId.ICE_BEAM, MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.THUNDERCLAP ], [SpeciesId.CRABRAWLER]: [ MoveId.JET_PUNCH, MoveId.SHORE_UP, MoveId.MACH_PUNCH, MoveId.SURGING_STRIKES ], [SpeciesId.ORICORIO]: [ MoveId.QUIVER_DANCE, MoveId.FIERY_DANCE, MoveId.THUNDERCLAP, MoveId.OBLIVION_WING ], @@ -396,7 +396,7 @@ export const speciesEggMoves = { [SpeciesId.MORELULL]: [ MoveId.CALM_MIND, MoveId.SAPPY_SEED, MoveId.DRAINING_KISS, MoveId.MATCHA_GOTCHA ], [SpeciesId.SALANDIT]: [ MoveId.SCALD, MoveId.MALIGNANT_CHAIN, MoveId.CORE_ENFORCER, MoveId.ERUPTION ], [SpeciesId.STUFFUL]: [ MoveId.DRAIN_PUNCH, MoveId.METEOR_MASH, MoveId.TRIPLE_AXEL, MoveId.RAGE_FIST ], - [SpeciesId.BOUNSWEET]: [ MoveId.TRIPLE_AXEL, MoveId.AQUA_STEP, MoveId.THUNDEROUS_KICK, MoveId.SAPPY_SEED ], + [SpeciesId.BOUNSWEET]: [ MoveId.TRIPLE_AXEL, MoveId.AQUA_STEP, MoveId.THUNDEROUS_KICK, MoveId.FLOWER_TRICK ], [SpeciesId.COMFEY]: [ MoveId.REVIVAL_BLESSING, MoveId.TAKE_HEART, MoveId.STRENGTH_SAP, MoveId.MATCHA_GOTCHA ], [SpeciesId.ORANGURU]: [ MoveId.JUNGLE_HEALING, MoveId.YAWN, MoveId.FOLLOW_ME, MoveId.LUMINA_CRASH ], [SpeciesId.PASSIMIAN]: [ MoveId.PYRO_BALL, MoveId.SUCKER_PUNCH, MoveId.ZING_ZAP, MoveId.VICTORY_DANCE ], @@ -423,7 +423,7 @@ export const speciesEggMoves = { [SpeciesId.PHEROMOSA]: [ MoveId.SECRET_SWORD, MoveId.MAKE_IT_RAIN, MoveId.ATTACK_ORDER, MoveId.DIAMOND_STORM ], [SpeciesId.XURKITREE]: [ MoveId.FLAMETHROWER, MoveId.GIGA_DRAIN, MoveId.TAIL_GLOW, MoveId.THUNDERCLAP ], [SpeciesId.CELESTEELA]: [ MoveId.RECOVER, MoveId.BUZZY_BUZZ, MoveId.EARTH_POWER, MoveId.OBLIVION_WING ], - [SpeciesId.KARTANA]: [ MoveId.MIGHTY_CLEAVE, MoveId.DUAL_CHOP, MoveId.BITTER_BLADE, MoveId.BEHEMOTH_BLADE ], + [SpeciesId.KARTANA]: [ MoveId.MIGHTY_CLEAVE, MoveId.DUAL_CHOP, MoveId.BEHEMOTH_BLADE, MoveId.BITTER_BLADE ], [SpeciesId.GUZZLORD]: [ MoveId.SUCKER_PUNCH, MoveId.COMEUPPANCE, MoveId.SLACK_OFF, MoveId.SHED_TAIL ], [SpeciesId.NECROZMA]: [ MoveId.DYNAMAX_CANNON, MoveId.SACRED_FIRE, MoveId.ASTRAL_BARRAGE, MoveId.CLANGOROUS_SOUL ], [SpeciesId.MAGEARNA]: [ MoveId.STRENGTH_SAP, MoveId.EARTH_POWER, MoveId.MOONBLAST, MoveId.MAKE_IT_RAIN ], @@ -431,23 +431,23 @@ export const speciesEggMoves = { [SpeciesId.POIPOLE]: [ MoveId.MALIGNANT_CHAIN, MoveId.ICE_BEAM, MoveId.ARMOR_CANNON, MoveId.CLANGING_SCALES ], [SpeciesId.STAKATAKA]: [ MoveId.HEAVY_SLAM, MoveId.SHORE_UP, MoveId.CURSE, MoveId.SALT_CURE ], [SpeciesId.BLACEPHALON]: [ MoveId.STEEL_BEAM, MoveId.MOONBLAST, MoveId.CHLOROBLAST, MoveId.MOONGEIST_BEAM ], - [SpeciesId.ZERAORA]: [ MoveId.SWORDS_DANCE, MoveId.U_TURN, MoveId.COLLISION_COURSE, MoveId.TRIPLE_AXEL ], + [SpeciesId.ZERAORA]: [ MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.COLLISION_COURSE, MoveId.TRIPLE_AXEL ], [SpeciesId.MELTAN]: [ MoveId.BULLET_PUNCH, MoveId.DRAIN_PUNCH, MoveId.BULK_UP, MoveId.PLASMA_FISTS ], [SpeciesId.ALOLA_RATTATA]: [ MoveId.FALSE_SURRENDER, MoveId.PSYCHIC_FANGS, MoveId.COIL, MoveId.EXTREME_SPEED ], [SpeciesId.ALOLA_SANDSHREW]: [ MoveId.SPIKY_SHIELD, MoveId.LIQUIDATION, MoveId.SHIFT_GEAR, MoveId.GLACIAL_LANCE ], - [SpeciesId.ALOLA_VULPIX]: [ MoveId.MOONBLAST, MoveId.GLARE, MoveId.MYSTICAL_FIRE, MoveId.REVIVAL_BLESSING ], + [SpeciesId.ALOLA_VULPIX]: [ MoveId.MOONBLAST, MoveId.GLARE, MoveId.MYSTICAL_FIRE, MoveId.LUNAR_BLESSING ], [SpeciesId.ALOLA_DIGLETT]: [ MoveId.THOUSAND_WAVES, MoveId.SWORDS_DANCE, MoveId.TRIPLE_DIVE, MoveId.PYRO_BALL ], [SpeciesId.ALOLA_MEOWTH]: [ MoveId.BADDY_BAD, MoveId.BUZZY_BUZZ, MoveId.PARTING_SHOT, MoveId.MAKE_IT_RAIN ], - [SpeciesId.ALOLA_GEODUDE]: [ MoveId.THOUSAND_WAVES, MoveId.BULK_UP, MoveId.STONE_AXE, MoveId.EXTREME_SPEED ], + [SpeciesId.ALOLA_GEODUDE]: [ MoveId.LANDS_WRATH, MoveId.FUSION_BOLT, MoveId.STONE_AXE, MoveId.EXTREME_SPEED ], [SpeciesId.ALOLA_GRIMER]: [ MoveId.SUCKER_PUNCH, MoveId.BARB_BARRAGE, MoveId.RECOVER, MoveId.SURGING_STRIKES ], [SpeciesId.GROOKEY]: [ MoveId.ROCK_SLIDE, MoveId.PLAY_ROUGH, MoveId.GRASSY_GLIDE, MoveId.CLANGOROUS_SOUL ], - [SpeciesId.SCORBUNNY]: [ MoveId.EXTREME_SPEED, MoveId.HIGH_JUMP_KICK, MoveId.TRIPLE_AXEL, MoveId.BOLT_STRIKE ], + [SpeciesId.SCORBUNNY]: [ MoveId.EXTREME_SPEED, MoveId.HIGH_JUMP_KICK, MoveId.SUPERCELL_SLAM, MoveId.TRIPLE_AXEL ], [SpeciesId.SOBBLE]: [ MoveId.AEROBLAST, MoveId.FROST_BREATH, MoveId.ENERGY_BALL, MoveId.NASTY_PLOT ], [SpeciesId.SKWOVET]: [ MoveId.SUCKER_PUNCH, MoveId.SLACK_OFF, MoveId.COIL, MoveId.POPULATION_BOMB ], [SpeciesId.ROOKIDEE]: [ MoveId.ROOST, MoveId.BODY_PRESS, MoveId.KINGS_SHIELD, MoveId.BEHEMOTH_BASH ], [SpeciesId.BLIPBUG]: [ MoveId.HEAL_ORDER, MoveId.LUSTER_PURGE, MoveId.SLEEP_POWDER, MoveId.TAIL_GLOW ], - [SpeciesId.NICKIT]: [ MoveId.BADDY_BAD, MoveId.FLAMETHROWER, MoveId.SPARKLY_SWIRL, MoveId.MAKE_IT_RAIN ], + [SpeciesId.NICKIT]: [ MoveId.BADDY_BAD, MoveId.MYSTICAL_FIRE, MoveId.SPARKLY_SWIRL, MoveId.MAKE_IT_RAIN ], [SpeciesId.GOSSIFLEUR]: [ MoveId.PARTING_SHOT, MoveId.STRENGTH_SAP, MoveId.SAPPY_SEED, MoveId.SEED_FLARE ], [SpeciesId.WOOLOO]: [ MoveId.NUZZLE, MoveId.MILK_DRINK, MoveId.BODY_PRESS, MoveId.MULTI_ATTACK ], [SpeciesId.CHEWTLE]: [ MoveId.ICE_FANG, MoveId.PSYCHIC_FANGS, MoveId.SHELL_SMASH, MoveId.MIGHTY_CLEAVE ], @@ -467,7 +467,7 @@ export const speciesEggMoves = { [SpeciesId.FALINKS]: [ MoveId.BATON_PASS, MoveId.POWER_TRIP, MoveId.COMBAT_TORQUE, MoveId.HEAL_ORDER ], [SpeciesId.PINCURCHIN]: [ MoveId.TRICK_ROOM, MoveId.VOLT_SWITCH, MoveId.STRENGTH_SAP, MoveId.THUNDERCLAP ], [SpeciesId.SNOM]: [ MoveId.FROST_BREATH, MoveId.HEAL_ORDER, MoveId.EARTH_POWER, MoveId.SPORE ], - [SpeciesId.STONJOURNER]: [ MoveId.BODY_PRESS, MoveId.HELPING_HAND, MoveId.ACCELEROCK, MoveId.DIAMOND_STORM ], + [SpeciesId.STONJOURNER]: [ MoveId.AXE_KICK, MoveId.HELPING_HAND, MoveId.ACCELEROCK, MoveId.DIAMOND_STORM ], [SpeciesId.EISCUE]: [ MoveId.TRIPLE_AXEL, MoveId.AQUA_STEP, MoveId.AXE_KICK, MoveId.SHELL_SMASH ], [SpeciesId.INDEEDEE]: [ MoveId.MATCHA_GOTCHA, MoveId.EXPANDING_FORCE, MoveId.MOONBLAST, MoveId.REVIVAL_BLESSING ], [SpeciesId.MORPEKO]: [ MoveId.TRIPLE_AXEL, MoveId.OBSTRUCT, MoveId.SWORDS_DANCE, MoveId.COLLISION_COURSE ], @@ -478,8 +478,8 @@ export const speciesEggMoves = { [SpeciesId.ARCTOVISH]: [ MoveId.ICE_FANG, MoveId.THUNDER_FANG, MoveId.HIGH_HORSEPOWER, MoveId.SHIFT_GEAR ], [SpeciesId.DURALUDON]: [ MoveId.CORE_ENFORCER, MoveId.BODY_PRESS, MoveId.RECOVER, MoveId.TACHYON_CUTTER ], [SpeciesId.DREEPY]: [ MoveId.SHADOW_BONE, MoveId.POWER_UP_PUNCH, MoveId.FIRE_LASH, MoveId.DIRE_CLAW ], - [SpeciesId.ZACIAN]: [ MoveId.MAGICAL_TORQUE, MoveId.MIGHTY_CLEAVE, MoveId.BITTER_BLADE, MoveId.PRECIPICE_BLADES ], - [SpeciesId.ZAMAZENTA]: [ MoveId.BULK_UP, MoveId.BODY_PRESS, MoveId.SLACK_OFF, MoveId.DIAMOND_STORM ], + [SpeciesId.ZACIAN]: [ MoveId.MAGICAL_TORQUE, MoveId.MIGHTY_CLEAVE, MoveId.EARTHQUAKE, MoveId.BITTER_BLADE ], + [SpeciesId.ZAMAZENTA]: [ MoveId.BULK_UP, MoveId.BODY_PRESS, MoveId.POWER_TRIP, MoveId.SLACK_OFF ], [SpeciesId.ETERNATUS]: [ MoveId.BODY_PRESS, MoveId.NASTY_PLOT, MoveId.MALIGNANT_CHAIN, MoveId.DRAGON_ENERGY ], [SpeciesId.KUBFU]: [ MoveId.METEOR_MASH, MoveId.DRAIN_PUNCH, MoveId.JET_PUNCH, MoveId.DRAGON_DANCE ], [SpeciesId.ZARUDE]: [ MoveId.SAPPY_SEED, MoveId.MIGHTY_CLEAVE, MoveId.WICKED_BLOW, MoveId.VICTORY_DANCE ], @@ -511,18 +511,18 @@ export const speciesEggMoves = { [SpeciesId.FUECOCO]: [ MoveId.ALLURING_VOICE, MoveId.SLACK_OFF, MoveId.OVERDRIVE, MoveId.MOONGEIST_BEAM ], [SpeciesId.QUAXLY]: [ MoveId.DRAGON_DANCE, MoveId.TRIPLE_AXEL, MoveId.POWER_TRIP, MoveId.THUNDEROUS_KICK ], [SpeciesId.LECHONK]: [ MoveId.MILK_DRINK, MoveId.PSYSHIELD_BASH, MoveId.BLAZING_TORQUE, MoveId.FILLET_AWAY ], - [SpeciesId.TAROUNTULA]: [ MoveId.STONE_AXE, MoveId.LEECH_LIFE, MoveId.THIEF, MoveId.SPORE ], + [SpeciesId.TAROUNTULA]: [ MoveId.STONE_AXE, MoveId.LEECH_LIFE, MoveId.FAKE_OUT, MoveId.SPORE ], [SpeciesId.NYMBLE]: [ MoveId.KNOCK_OFF, MoveId.FELL_STINGER, MoveId.ATTACK_ORDER, MoveId.WICKED_BLOW ], [SpeciesId.PAWMI]: [ MoveId.DRAIN_PUNCH, MoveId.METEOR_MASH, MoveId.JET_PUNCH, MoveId.PLASMA_FISTS ], [SpeciesId.TANDEMAUS]: [ MoveId.BATON_PASS, MoveId.COVET, MoveId.SIZZLY_SLIDE, MoveId.REVIVAL_BLESSING ], [SpeciesId.FIDOUGH]: [ MoveId.SOFT_BOILED, MoveId.HIGH_HORSEPOWER, MoveId.SIZZLY_SLIDE, MoveId.TIDY_UP ], [SpeciesId.SMOLIV]: [ MoveId.STRENGTH_SAP, MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.BOOMBURST ], [SpeciesId.SQUAWKABILLY]: [ MoveId.PARTING_SHOT, MoveId.EARTHQUAKE, MoveId.FLARE_BLITZ, MoveId.EXTREME_SPEED ], - [SpeciesId.NACLI]: [ MoveId.BODY_PRESS, MoveId.TOXIC, MoveId.CURSE, MoveId.DIAMOND_STORM ], + [SpeciesId.NACLI]: [ MoveId.KNOCK_OFF, MoveId.TOXIC, MoveId.SAND_TOMB, MoveId.DIAMOND_STORM ], [SpeciesId.CHARCADET]: [ MoveId.SACRED_SWORD, MoveId.PHOTON_GEYSER, MoveId.MOONBLAST, MoveId.SPECTRAL_THIEF ], [SpeciesId.TADBULB]: [ MoveId.PARABOLIC_CHARGE, MoveId.SCALD, MoveId.EARTH_POWER, MoveId.ELECTRO_SHOT ], [SpeciesId.WATTREL]: [ MoveId.NASTY_PLOT, MoveId.SPLISHY_SPLASH, MoveId.SANDSEAR_STORM, MoveId.WILDBOLT_STORM ], - [SpeciesId.MASCHIFF]: [ MoveId.PARTING_SHOT, MoveId.COMBAT_TORQUE, MoveId.PSYCHIC_FANGS, MoveId.NO_RETREAT ], + [SpeciesId.MASCHIFF]: [ MoveId.PARTING_SHOT, MoveId.LEECH_LIFE, MoveId.PSYCHIC_FANGS, MoveId.NO_RETREAT ], [SpeciesId.SHROODLE]: [ MoveId.GASTRO_ACID, MoveId.PARTING_SHOT, MoveId.TOXIC, MoveId.SKETCH ], [SpeciesId.BRAMBLIN]: [ MoveId.TAILWIND, MoveId.STRENGTH_SAP, MoveId.FLOWER_TRICK, MoveId.LAST_RESPECTS ], [SpeciesId.TOEDSCOOL]: [ MoveId.STRENGTH_SAP, MoveId.TOPSY_TURVY, MoveId.SAPPY_SEED, MoveId.TAIL_GLOW ], @@ -535,7 +535,7 @@ export const speciesEggMoves = { [SpeciesId.BOMBIRDIER]: [ MoveId.FLOATY_FALL, MoveId.SWORDS_DANCE, MoveId.SUCKER_PUNCH, MoveId.MIGHTY_CLEAVE ], [SpeciesId.FINIZEN]: [ MoveId.TRIPLE_AXEL, MoveId.DRAIN_PUNCH, MoveId.HEADLONG_RUSH, MoveId.SURGING_STRIKES ], [SpeciesId.VAROOM]: [ MoveId.COMBAT_TORQUE, MoveId.U_TURN, MoveId.BLAZING_TORQUE, MoveId.NOXIOUS_TORQUE ], - [SpeciesId.CYCLIZAR]: [ MoveId.PARTING_SHOT, MoveId.FIRE_LASH, MoveId.MAGICAL_TORQUE, MoveId.GLAIVE_RUSH ], + [SpeciesId.CYCLIZAR]: [ MoveId.PARTING_SHOT, MoveId.FIRE_LASH, MoveId.HIGH_HORSEPOWER, MoveId.MAGICAL_TORQUE ], [SpeciesId.ORTHWORM]: [ MoveId.SIZZLY_SLIDE, MoveId.COIL, MoveId.BODY_PRESS, MoveId.SHORE_UP ], [SpeciesId.GLIMMET]: [ MoveId.CALM_MIND, MoveId.GIGA_DRAIN, MoveId.FIERY_DANCE, MoveId.MALIGNANT_CHAIN ], [SpeciesId.GREAVARD]: [ MoveId.SHADOW_BONE, MoveId.SIZZLY_SLIDE, MoveId.SHORE_UP, MoveId.COLLISION_COURSE ], @@ -548,7 +548,7 @@ export const speciesEggMoves = { [SpeciesId.SCREAM_TAIL]: [ MoveId.TORCH_SONG, MoveId.GLITZY_GLOW, MoveId.MOONLIGHT, MoveId.SPARKLY_SWIRL ], [SpeciesId.BRUTE_BONNET]: [ MoveId.SAPPY_SEED, MoveId.STRENGTH_SAP, MoveId.EARTHQUAKE, MoveId.WICKED_BLOW ], [SpeciesId.FLUTTER_MANE]: [ MoveId.MOONLIGHT, MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.MOONGEIST_BEAM ], - [SpeciesId.SLITHER_WING]: [ MoveId.MIGHTY_CLEAVE, MoveId.THUNDEROUS_KICK, MoveId.FIRE_LASH, MoveId.VICTORY_DANCE ], + [SpeciesId.SLITHER_WING]: [ MoveId.ROCK_SLIDE, MoveId.THUNDEROUS_KICK, MoveId.SUNSTEEL_STRIKE, MoveId.VICTORY_DANCE ], [SpeciesId.SANDY_SHOCKS]: [ MoveId.MORNING_SUN, MoveId.ICE_BEAM, MoveId.NASTY_PLOT, MoveId.THUNDERCLAP ], [SpeciesId.IRON_TREADS]: [ MoveId.FUSION_BOLT, MoveId.SHIFT_GEAR, MoveId.SHORE_UP, MoveId.SUNSTEEL_STRIKE ], [SpeciesId.IRON_BUNDLE]: [ MoveId.EARTH_POWER, MoveId.SPLISHY_SPLASH, MoveId.VOLT_SWITCH, MoveId.NASTY_PLOT ], @@ -563,7 +563,7 @@ export const speciesEggMoves = { [SpeciesId.TING_LU]: [ MoveId.SHORE_UP, MoveId.CEASELESS_EDGE, MoveId.SAPPY_SEED, MoveId.PRECIPICE_BLADES ], [SpeciesId.CHI_YU]: [ MoveId.FIERY_WRATH, MoveId.HYDRO_STEAM, MoveId.MORNING_SUN, MoveId.BLUE_FLARE ], [SpeciesId.ROARING_MOON]: [ MoveId.FIRE_LASH, MoveId.DRAGON_HAMMER, MoveId.METEOR_MASH, MoveId.DRAGON_ASCENT ], - [SpeciesId.IRON_VALIANT]: [ MoveId.PLASMA_FISTS, MoveId.NO_RETREAT, MoveId.SECRET_SWORD, MoveId.MAGICAL_TORQUE ], + [SpeciesId.IRON_VALIANT]: [ MoveId.PHOTON_GEYSER, MoveId.NO_RETREAT, MoveId.SECRET_SWORD, MoveId.MAGICAL_TORQUE ], [SpeciesId.KORAIDON]: [ MoveId.SUNSTEEL_STRIKE, MoveId.SOLAR_BLADE, MoveId.DRAGON_DARTS, MoveId.BITTER_BLADE ], [SpeciesId.MIRAIDON]: [ MoveId.FROST_BREATH, MoveId.WILDBOLT_STORM, MoveId.SPACIAL_REND, MoveId.RISING_VOLTAGE ], [SpeciesId.WALKING_WAKE]: [ MoveId.BOUNCY_BUBBLE, MoveId.FUSION_FLARE, MoveId.SLUDGE_WAVE, MoveId.CORE_ENFORCER ], @@ -573,7 +573,7 @@ export const speciesEggMoves = { [SpeciesId.MUNKIDORI]: [ MoveId.TWIN_BEAM, MoveId.HEAT_WAVE, MoveId.EARTH_POWER, MoveId.MALIGNANT_CHAIN ], [SpeciesId.FEZANDIPITI]: [ MoveId.BARB_BARRAGE, MoveId.BONEMERANG, MoveId.TRIPLE_AXEL, MoveId.VICTORY_DANCE ], [SpeciesId.OGERPON]: [ MoveId.SLEEP_POWDER, MoveId.BONEMERANG, MoveId.TRIPLE_AXEL, MoveId.FLOWER_TRICK ], - [SpeciesId.GOUGING_FIRE]: [ MoveId.EXTREME_SPEED, MoveId.BULK_UP, MoveId.SACRED_FIRE, MoveId.GLAIVE_RUSH ], + [SpeciesId.GOUGING_FIRE]: [ MoveId.EXTREME_SPEED, MoveId.DRAGON_DANCE, MoveId.ZING_ZAP, MoveId.SACRED_FIRE ], [SpeciesId.RAGING_BOLT]: [ MoveId.NASTY_PLOT, MoveId.FLAMETHROWER, MoveId.MORNING_SUN, MoveId.ELECTRO_DRIFT ], [SpeciesId.IRON_BOULDER]: [ MoveId.PSYBLADE, MoveId.KOWTOW_CLEAVE, MoveId.STONE_AXE, MoveId.BITTER_BLADE ], [SpeciesId.IRON_CROWN]: [ MoveId.NASTY_PLOT, MoveId.SECRET_SWORD, MoveId.PSYSTRIKE, MoveId.ELECTRO_DRIFT ], @@ -584,17 +584,24 @@ export const speciesEggMoves = { [SpeciesId.BLOODMOON_URSALUNA]: [ MoveId.NASTY_PLOT, MoveId.ROCK_POLISH, MoveId.SANDSEAR_STORM, MoveId.BOOMBURST ] }; +/** + * Parse a CSV-separated list of Egg Moves (such as one sourced from a Google Sheets) + * into code able to form the `speciesEggMoves` const object as above. + * @param content - The CSV-formatted string to convert into code. + */ +// TODO: Move this into the scripts folder and stop running it on initialization function parseEggMoves(content: string): void { let output = ""; const speciesNames = getEnumKeys(SpeciesId); const speciesValues = getEnumValues(SpeciesId); + const moveNames = allMoves.map(m => m.name.replace(/ \([A-Z]\)$/, "").toLowerCase()); const lines = content.split(/\n/g); for (const line of lines) { const cols = line.split(",").slice(0, 5); - const moveNames = allMoves.map(m => m.name.replace(/ \([A-Z]\)$/, "").toLowerCase()); - const enumSpeciesName = cols[0].toUpperCase().replace(/[ -]/g, "_"); + const enumSpeciesName = cols[0].toUpperCase().replace(/[ -]/g, "_") as keyof typeof SpeciesId; + // TODO: This should use reverse mapping instead of `indexOf` const species = speciesValues[speciesNames.indexOf(enumSpeciesName)]; const eggMoves: MoveId[] = []; @@ -602,14 +609,16 @@ function parseEggMoves(content: string): void { for (let m = 0; m < 4; m++) { const moveName = cols[m + 1].trim(); const moveIndex = moveName !== "N/A" ? moveNames.indexOf(moveName.toLowerCase()) : -1; - eggMoves.push(moveIndex > -1 ? moveIndex as MoveId : MoveId.NONE); - if (moveIndex === -1) { console.warn(moveName, "could not be parsed"); } + + eggMoves.push(moveIndex > -1 ? moveIndex as MoveId : MoveId.NONE); } - if (eggMoves.find(m => m !== MoveId.NONE)) { + if (eggMoves.every(m => m === MoveId.NONE)) { + console.warn(`Species ${toReadableString(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/passives.ts b/src/data/balance/passives.ts index 80790b44735..0a76b3036b9 100644 --- a/src/data/balance/passives.ts +++ b/src/data/balance/passives.ts @@ -178,9 +178,9 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.QUILAVA]: { 0: AbilityId.DROUGHT }, [SpeciesId.TYPHLOSION]: { 0: AbilityId.DROUGHT }, [SpeciesId.HISUI_TYPHLOSION]: { 0: AbilityId.DROUGHT }, - [SpeciesId.TOTODILE]: { 0: AbilityId.TOUGH_CLAWS }, - [SpeciesId.CROCONAW]: { 0: AbilityId.TOUGH_CLAWS }, - [SpeciesId.FERALIGATR]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.TOTODILE]: { 0: AbilityId.STRONG_JAW }, + [SpeciesId.CROCONAW]: { 0: AbilityId.STRONG_JAW }, + [SpeciesId.FERALIGATR]: { 0: AbilityId.STRONG_JAW }, [SpeciesId.SENTRET]: { 0: AbilityId.PICKUP }, [SpeciesId.FURRET]: { 0: AbilityId.PICKUP }, [SpeciesId.HOOTHOOT]: { 0: AbilityId.AERILATE }, @@ -252,7 +252,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.REMORAID]: { 0: AbilityId.SIMPLE }, [SpeciesId.OCTILLERY]: { 0: AbilityId.SIMPLE }, [SpeciesId.DELIBIRD]: { 0: AbilityId.HUGE_POWER }, - [SpeciesId.SKARMORY]: { 0: AbilityId.LIGHTNING_ROD }, + [SpeciesId.SKARMORY]: { 0: AbilityId.STAMINA }, [SpeciesId.HOUNDOUR]: { 0: AbilityId.BALL_FETCH }, [SpeciesId.HOUNDOOM]: { 0: AbilityId.LIGHTNING_ROD, 1: AbilityId.LIGHTNING_ROD }, [SpeciesId.PHANPY]: { 0: AbilityId.STURDY }, @@ -319,9 +319,9 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.MASQUERAIN]: { 0: AbilityId.WATER_BUBBLE }, [SpeciesId.SHROOMISH]: { 0: AbilityId.GUTS }, [SpeciesId.BRELOOM]: { 0: AbilityId.GUTS }, - [SpeciesId.SLAKOTH]: { 0: AbilityId.GUTS }, - [SpeciesId.VIGOROTH]: { 0: AbilityId.GUTS }, - [SpeciesId.SLAKING]: { 0: AbilityId.GUTS }, + [SpeciesId.SLAKOTH]: { 0: AbilityId.COMATOSE }, + [SpeciesId.VIGOROTH]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.SLAKING]: { 0: AbilityId.COMATOSE }, [SpeciesId.NINCADA]: { 0: AbilityId.TECHNICIAN }, [SpeciesId.NINJASK]: { 0: AbilityId.TECHNICIAN }, [SpeciesId.SHEDINJA]: { 0: AbilityId.MAGIC_GUARD }, @@ -421,7 +421,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.KYOGRE]: { 0: AbilityId.MOLD_BREAKER, 1: AbilityId.TERAVOLT }, [SpeciesId.GROUDON]: { 0: AbilityId.MOLD_BREAKER, 1: AbilityId.TURBOBLAZE }, [SpeciesId.RAYQUAZA]: { 0: AbilityId.UNNERVE, 1: AbilityId.UNNERVE }, - [SpeciesId.JIRACHI]: { 0: AbilityId.COMATOSE }, + [SpeciesId.JIRACHI]: { 0: AbilityId.PURIFYING_SALT }, [SpeciesId.DEOXYS]: { 0: AbilityId.PROTEAN, 1: AbilityId.ADAPTABILITY, 2: AbilityId.REGENERATOR, 3: AbilityId.SHADOW_SHIELD }, [SpeciesId.TURTWIG]: { 0: AbilityId.SOLID_ROCK }, @@ -689,9 +689,9 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.FENNEKIN]: { 0: AbilityId.FLUFFY }, [SpeciesId.BRAIXEN]: { 0: AbilityId.PSYCHIC_SURGE }, [SpeciesId.DELPHOX]: { 0: AbilityId.PSYCHIC_SURGE }, - [SpeciesId.FROAKIE]: { 0: AbilityId.STAKEOUT, 1: AbilityId.STAKEOUT }, - [SpeciesId.FROGADIER]: { 0: AbilityId.STAKEOUT, 1: AbilityId.STAKEOUT }, - [SpeciesId.GRENINJA]: { 0: AbilityId.STAKEOUT, 1: AbilityId.STAKEOUT, 2: AbilityId.STAKEOUT }, + [SpeciesId.FROAKIE]: { 0: AbilityId.TECHNICIAN, 1: AbilityId.STAKEOUT }, + [SpeciesId.FROGADIER]: { 0: AbilityId.TECHNICIAN, 1: AbilityId.STAKEOUT }, + [SpeciesId.GRENINJA]: { 0: AbilityId.TECHNICIAN, 1: AbilityId.STAKEOUT, 2: AbilityId.SUPER_LUCK }, [SpeciesId.BUNNELBY]: { 0: AbilityId.INNER_FOCUS }, [SpeciesId.DIGGERSBY]: { 0: AbilityId.THICK_FAT }, [SpeciesId.FLETCHLING]: { 0: AbilityId.FLAME_BODY }, @@ -763,9 +763,9 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.DARTRIX]: { 0: AbilityId.WIND_RIDER }, [SpeciesId.DECIDUEYE]: { 0: AbilityId.SNIPER }, [SpeciesId.HISUI_DECIDUEYE]: { 0: AbilityId.SNIPER }, - [SpeciesId.LITTEN]: { 0: AbilityId.OPPORTUNIST }, - [SpeciesId.TORRACAT]: { 0: AbilityId.OPPORTUNIST }, - [SpeciesId.INCINEROAR]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.LITTEN]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.TORRACAT]: { 0: AbilityId.TOUGH_CLAWS }, + [SpeciesId.INCINEROAR]: { 0: AbilityId.TOUGH_CLAWS }, [SpeciesId.POPPLIO]: { 0: AbilityId.PUNK_ROCK }, [SpeciesId.BRIONNE]: { 0: AbilityId.PUNK_ROCK }, [SpeciesId.PRIMARINA]: { 0: AbilityId.PUNK_ROCK }, @@ -815,7 +815,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.MINIOR]: { 0: AbilityId.STURDY, 1: AbilityId.STURDY, 2: AbilityId.STURDY, 3: AbilityId.STURDY, 4: AbilityId.STURDY, 5: AbilityId.STURDY, 6: AbilityId.STURDY, 7: AbilityId.AERILATE, 8: AbilityId.AERILATE, 9: AbilityId.AERILATE, 10: AbilityId.AERILATE, 11: AbilityId.AERILATE, 12: AbilityId.AERILATE, 13: AbilityId.AERILATE }, [SpeciesId.KOMALA]: { 0: AbilityId.GUTS }, [SpeciesId.TURTONATOR]: { 0: AbilityId.DAUNTLESS_SHIELD }, - [SpeciesId.TOGEDEMARU]: { 0: AbilityId.ROUGH_SKIN }, + [SpeciesId.TOGEDEMARU]: { 0: AbilityId.CHEEK_POUCH }, [SpeciesId.MIMIKYU]: { 0: AbilityId.TOUGH_CLAWS, 1: AbilityId.TOUGH_CLAWS }, [SpeciesId.BRUXISH]: { 0: AbilityId.MULTISCALE }, [SpeciesId.DRAMPA]: { 0: AbilityId.THICK_FAT }, @@ -856,8 +856,8 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.ALOLA_NINETALES]: { 0: AbilityId.ICE_BODY }, [SpeciesId.ALOLA_DIGLETT]: { 0: AbilityId.STURDY }, [SpeciesId.ALOLA_DUGTRIO]: { 0: AbilityId.STURDY }, - [SpeciesId.ALOLA_MEOWTH]: { 0: AbilityId.DARK_AURA }, - [SpeciesId.ALOLA_PERSIAN]: { 0: AbilityId.DARK_AURA }, + [SpeciesId.ALOLA_MEOWTH]: { 0: AbilityId.DAZZLING }, + [SpeciesId.ALOLA_PERSIAN]: { 0: AbilityId.DAZZLING }, [SpeciesId.ALOLA_GEODUDE]: { 0: AbilityId.DRY_SKIN }, [SpeciesId.ALOLA_GRAVELER]: { 0: AbilityId.DRY_SKIN }, [SpeciesId.ALOLA_GOLEM]: { 0: AbilityId.DRY_SKIN }, @@ -867,9 +867,9 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.GROOKEY]: { 0: AbilityId.PICKPOCKET }, [SpeciesId.THWACKEY]: { 0: AbilityId.PICKPOCKET }, [SpeciesId.RILLABOOM]: { 0: AbilityId.GRASS_PELT, 1: AbilityId.GRASS_PELT }, - [SpeciesId.SCORBUNNY]: { 0: AbilityId.SHEER_FORCE }, - [SpeciesId.RABOOT]: { 0: AbilityId.SHEER_FORCE }, - [SpeciesId.CINDERACE]: { 0: AbilityId.NO_GUARD, 1: AbilityId.NO_GUARD }, + [SpeciesId.SCORBUNNY]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.RABOOT]: { 0: AbilityId.OPPORTUNIST }, + [SpeciesId.CINDERACE]: { 0: AbilityId.OPPORTUNIST, 1: AbilityId.OPPORTUNIST }, [SpeciesId.SOBBLE]: { 0: AbilityId.SUPER_LUCK }, [SpeciesId.DRIZZILE]: { 0: AbilityId.SUPER_LUCK }, [SpeciesId.INTELEON]: { 0: AbilityId.SUPER_LUCK, 1: AbilityId.SUPER_LUCK }, @@ -1041,7 +1041,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = { [SpeciesId.WIGLETT]: { 0: AbilityId.STURDY }, [SpeciesId.WUGTRIO]: { 0: AbilityId.STURDY }, [SpeciesId.BOMBIRDIER]: { 0: AbilityId.UNBURDEN }, - [SpeciesId.FINIZEN]: { 0: AbilityId.SWIFT_SWIM }, + [SpeciesId.FINIZEN]: { 0: AbilityId.FRIEND_GUARD }, [SpeciesId.PALAFIN]: { 0: AbilityId.EMERGENCY_EXIT, 1: AbilityId.IRON_FIST }, [SpeciesId.VAROOM]: { 0: AbilityId.LEVITATE }, [SpeciesId.REVAVROOM]: { 0: AbilityId.LEVITATE, 1: AbilityId.DARK_AURA, 2: AbilityId.FLASH_FIRE, 3: AbilityId.MERCILESS, 4: AbilityId.FILTER, 5: AbilityId.SCRAPPY }, diff --git a/src/data/balance/pokemon-evolutions.ts b/src/data/balance/pokemon-evolutions.ts index 8714d6c0c9a..c632889326d 100644 --- a/src/data/balance/pokemon-evolutions.ts +++ b/src/data/balance/pokemon-evolutions.ts @@ -1,21 +1,21 @@ import { globalScene } from "#app/global-scene"; -import { Gender, getGenderSymbol } from "#app/data/gender"; -import { PokeballType } from "#enums/pokeball"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonType } from "#enums/pokemon-type"; -import { coerceArray, isNullOrUndefined, randSeedInt } from "#app/utils/common"; -import { WeatherType } from "#enums/weather-type"; -import { Nature } from "#enums/nature"; +import { speciesStarterCosts } from "#balance/starters"; +import { allMoves } from "#data/data-lists"; +import { Gender, getGenderSymbol } from "#data/gender"; import { BiomeId } from "#enums/biome-id"; import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; +import { Nature } from "#enums/nature"; +import { PokeballType } from "#enums/pokeball"; +import { PokemonType } from "#enums/pokemon-type"; import { SpeciesFormKey } from "#enums/species-form-key"; +import { SpeciesId } from "#enums/species-id"; import { TimeOfDay } from "#enums/time-of-day"; -import type { SpeciesStatBoosterItem, SpeciesStatBoosterModifierType } from "#app/modifier/modifier-type"; -import { speciesStarterCosts } from "./starters"; +import { WeatherType } from "#enums/weather-type"; +import type { Pokemon } from "#field/pokemon"; +import type { SpeciesStatBoosterItem, SpeciesStatBoosterModifierType } from "#modifiers/modifier-type"; +import { coerceArray, isNullOrUndefined, randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import { allMoves } from "#app/data/data-lists"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; export enum SpeciesWildEvolutionDelay { NONE, @@ -1630,7 +1630,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(SpeciesId.TSAREENA, 28, null, {key: EvoCondKey.MOVE, move: MoveId.STOMP}, SpeciesWildEvolutionDelay.LONG) ], [SpeciesId.POIPOLE]: [ - new SpeciesEvolution(SpeciesId.NAGANADEL, 1, null, {key: EvoCondKey.MOVE, move: MoveId.DRAGON_PULSE}, SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(SpeciesId.NAGANADEL, 1, null, {key: EvoCondKey.MOVE, move: MoveId.DRAGON_PULSE}, SpeciesWildEvolutionDelay.VERY_LONG) ], [SpeciesId.ALOLA_SANDSHREW]: [ new SpeciesEvolution(SpeciesId.ALOLA_SANDSLASH, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) @@ -1845,7 +1845,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(SpeciesId.LEAVANNY, 1, null, {key: EvoCondKey.FRIENDSHIP, value: 120}, SpeciesWildEvolutionDelay.LONG) ], [SpeciesId.TYPE_NULL]: [ - new SpeciesEvolution(SpeciesId.SILVALLY, 1, null, {key: EvoCondKey.FRIENDSHIP, value: 100}, SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(SpeciesId.SILVALLY, 1, null, {key: EvoCondKey.FRIENDSHIP, value: 100}, SpeciesWildEvolutionDelay.VERY_LONG) ], [SpeciesId.ALOLA_MEOWTH]: [ new SpeciesEvolution(SpeciesId.ALOLA_PERSIAN, 1, null, {key: EvoCondKey.FRIENDSHIP, value: 120}, SpeciesWildEvolutionDelay.LONG) diff --git a/src/data/balance/species-egg-tiers.ts b/src/data/balance/species-egg-tiers.ts index 4d953921e92..4c125fb07fa 100644 --- a/src/data/balance/species-egg-tiers.ts +++ b/src/data/balance/species-egg-tiers.ts @@ -1,5 +1,5 @@ -import { SpeciesId } from "#enums/species-id"; import { EggTier } from "#enums/egg-type"; +import { SpeciesId } from "#enums/species-id"; /** * Map of all starters and their respective {@linkcode EggTier}, which determines the type of egg the starter hatches from. diff --git a/src/data/balance/starters.ts b/src/data/balance/starters.ts index 2db10f2e67a..8b91c12ae2d 100644 --- a/src/data/balance/starters.ts +++ b/src/data/balance/starters.ts @@ -234,7 +234,7 @@ export const speciesStarterCosts = { [SpeciesId.KYOGRE]: 9, [SpeciesId.GROUDON]: 9, [SpeciesId.RAYQUAZA]: 9, - [SpeciesId.JIRACHI]: 7, + [SpeciesId.JIRACHI]: 6, [SpeciesId.DEOXYS]: 7, [SpeciesId.TURTWIG]: 3, @@ -319,7 +319,7 @@ export const speciesStarterCosts = { [SpeciesId.SANDILE]: 4, [SpeciesId.DARUMAKA]: 4, [SpeciesId.MARACTUS]: 2, - [SpeciesId.DWEBBLE]: 2, + [SpeciesId.DWEBBLE]: 3, [SpeciesId.SCRAGGY]: 3, [SpeciesId.SIGILYPH]: 4, [SpeciesId.YAMASK]: 3, diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index bed17fb0ebc..0dc8bf4850c 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -1,22 +1,15 @@ import { globalScene } from "#app/global-scene"; -import { allMoves } from "#app/data/data-lists"; -import { MoveFlags } from "#enums/MoveFlags"; -import type Pokemon from "#app/field/pokemon"; -import { - type nil, - getFrameMs, - getEnumKeys, - getEnumValues, - animationFileName, - coerceArray, - isNullOrUndefined, -} from "#app/utils/common"; +import { allMoves } from "#data/data-lists"; import type { BattlerIndex } from "#enums/battler-index"; -import { MoveId } from "#enums/move-id"; -import Phaser from "phaser"; -import { EncounterAnim } from "#enums/encounter-anims"; -import { AnimBlendType, AnimFrameTarget, AnimFocus, ChargeAnim, CommonAnim } from "#enums/move-anims-common"; import { BattlerTagType } from "#enums/battler-tag-type"; +import { EncounterAnim } from "#enums/encounter-anims"; +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 { getEnumKeys, getEnumValues } from "#utils/enums"; +import Phaser from "phaser"; export class AnimConfig { public id: number; @@ -880,6 +873,10 @@ export abstract class BattleAnim { targetSprite.pipelineData["tone"] = [0.0, 0.0, 0.0, 0.0]; targetSprite.setAngle(0); + // Remove animation event listeners to enable sprites to be freed. + userSprite.off("animationupdate"); + targetSprite.off("animationupdate"); + /** * This and `targetSpriteToShow` are used to restore context lost * from the `isOppAnim` swap. Using these references instead of `this.user` @@ -1402,10 +1399,10 @@ export class EncounterBattleAnim extends BattleAnim { export async function populateAnims() { const commonAnimNames = getEnumKeys(CommonAnim).map(k => k.toLowerCase()); const commonAnimMatchNames = commonAnimNames.map(k => k.replace(/_/g, "")); - const commonAnimIds = getEnumValues(CommonAnim) as CommonAnim[]; + const commonAnimIds = getEnumValues(CommonAnim); const chargeAnimNames = getEnumKeys(ChargeAnim).map(k => k.toLowerCase()); const chargeAnimMatchNames = chargeAnimNames.map(k => k.replace(/_/g, " ")); - const chargeAnimIds = getEnumValues(ChargeAnim) as ChargeAnim[]; + const chargeAnimIds = getEnumValues(ChargeAnim); const commonNamePattern = /name: (?:Common:)?(Opp )?(.*)/; const moveNameToId = {}; for (const move of getEnumValues(MoveId).slice(1)) { diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 7e9b9825e06..c8ddfe32f0b 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1,39 +1,37 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import Overrides from "#app/overrides"; -import { applyAbAttrs } from "./abilities/apply-ab-attrs"; -import { allAbilities } from "./data-lists"; -import { CommonBattleAnim, MoveChargeAnim } from "#app/data/battle-anims"; -import { ChargeAnim, CommonAnim } from "#enums/move-anims-common"; -import type Move from "#app/data/moves/move"; -import { applyMoveAttrs } from "./moves/apply-attrs"; -import { allMoves } from "./data-lists"; -import { MoveFlags } from "#enums/MoveFlags"; -import { MoveCategory } from "#enums/MoveCategory"; -import { SpeciesFormChangeAbilityTrigger } from "./pokemon-forms/form-change-triggers"; -import { getStatusEffectHealText } from "#app/data/status-effect"; -import { TerrainType } from "#app/data/terrain"; -import { PokemonType } from "#enums/pokemon-type"; -import type Pokemon from "#app/field/pokemon"; -import { MoveResult } from "#enums/move-result"; -import { HitResult } from "#enums/hit-result"; import { getPokemonNameWithAffix } from "#app/messages"; -import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import type { MovePhase } from "#app/phases/move-phase"; -import type { StatStageChangeCallback } from "#app/phases/stat-stage-change-phase"; -import i18next from "#app/plugins/i18n"; -import { BooleanHolder, coerceArray, getFrameMs, NumberHolder, toDmgValue } from "#app/utils/common"; +import Overrides from "#app/overrides"; +import { CommonBattleAnim, MoveChargeAnim } from "#data/battle-anims"; +import { allAbilities, allMoves } from "#data/data-lists"; +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 { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import { BattlerTagType } from "#enums/battler-tag-type"; +import { HitResult } from "#enums/hit-result"; +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"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; +import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { EFFECTIVE_STATS, getStatKey, Stat, type BattleStat, type EffectiveStat } from "#enums/stat"; +import { type BattleStat, EFFECTIVE_STATS, type EffectiveStat, getStatKey, Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; -import { isNullOrUndefined } from "#app/utils/common"; -import { MoveUseMode } from "#enums/move-use-mode"; -import { invalidEncoreMoves } from "./moves/invalid-moves"; -import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; +import type { Pokemon } from "#field/pokemon"; +import { applyMoveAttrs } from "#moves/apply-attrs"; +import { invalidEncoreMoves } from "#moves/invalid-moves"; +import type { Move } from "#moves/move"; +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 { BooleanHolder, coerceArray, getFrameMs, isNullOrUndefined, NumberHolder, toDmgValue } from "#utils/common"; /** * A {@linkcode BattlerTag} represents a semi-persistent effect that can be attached to a {@linkcode Pokemon}. @@ -76,10 +74,13 @@ export class BattlerTag { /** * Tick down this {@linkcode BattlerTag}'s duration. - * @returns `true` if the tag should be kept (`turnCount > 0`) + * @param _pokemon - The {@linkcode Pokemon} whom this tag belongs to. + * Unused by default but can be used by subclasses. + * @param _lapseType - The {@linkcode BattlerTagLapseType} being lapsed. + * Unused by default but can be used by subclasses. + * @returns `true` if the tag should be kept (`turnCount` > 0`) */ lapse(_pokemon: Pokemon, _lapseType: BattlerTagLapseType): boolean { - // TODO: Maybe flip this (return `true` if tag needs removal) return --this.turnCount > 0; } @@ -125,7 +126,7 @@ export interface TerrainBattlerTag { /** * Base class for tags that restrict the usage of moves. This effect is generally referred to as "disabling" a move - * in-game. This is not to be confused with {@linkcode MoveId.DISABLE}. + * in-game (not to be confused with {@linkcode MoveId.DISABLE}). * * Descendants can override {@linkcode isMoveRestricted} to restrict moves that * match a condition. A restricted move gets cancelled before it is used. @@ -673,7 +674,12 @@ export class ConfusedTag extends BattlerTag { } canAdd(pokemon: Pokemon): boolean { - return globalScene.arena.terrain?.terrainType !== TerrainType.MISTY || !pokemon.isGrounded(); + const blockedByTerrain = pokemon.isGrounded() && globalScene.arena.terrain?.terrainType === TerrainType.MISTY; + if (blockedByTerrain) { + pokemon.queueStatusImmuneMessage(false, TerrainType.MISTY); + return false; + } + return true; } onAdd(pokemon: Pokemon): void { diff --git a/src/data/berry.ts b/src/data/berry.ts index be6e5c28f84..61235b75e21 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -1,14 +1,14 @@ -import { getPokemonNameWithAffix } from "../messages"; -import type Pokemon from "../field/pokemon"; -import { HitResult } from "#enums/hit-result"; -import { getStatusEffectHealText } from "./status-effect"; -import { NumberHolder, toDmgValue, randSeedInt } from "#app/utils/common"; -import { applyAbAttrs } from "./abilities/apply-ab-attrs"; -import i18next from "i18next"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { getStatusEffectHealText } from "#data/status-effect"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; -import { Stat, type BattleStat } from "#app/enums/stat"; -import { globalScene } from "#app/global-scene"; +import { HitResult } from "#enums/hit-result"; +import { type BattleStat, Stat } from "#enums/stat"; +import type { Pokemon } from "#field/pokemon"; +import { NumberHolder, randSeedInt, toDmgValue } from "#utils/common"; +import i18next from "i18next"; export function getBerryName(berryType: BerryType): string { return i18next.t(`berry:${BerryType[berryType]}.name`); diff --git a/src/data/challenge.ts b/src/data/challenge.ts index 3fdd83c185d..938ee482d01 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -1,33 +1,33 @@ -import { BooleanHolder, type NumberHolder, randSeedItem } from "#app/utils/common"; -import { deepCopy } from "#app/utils/data"; -import i18next from "i18next"; -import type { DexAttrProps, GameData } from "#app/system/game-data"; -import { defaultStarterSpecies } from "#app/constants"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpeciesForm } from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonMove } from "./moves/pokemon-move"; import type { FixedBattleConfig } from "#app/battle"; import { getRandomTrainerFunc } from "#app/battle"; -import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves"; +import { defaultStarterSpecies } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +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 Trainer from "#app/field/trainer"; -import { TrainerVariant } from "#enums/trainer-variant"; -import { PokemonType } from "#enums/pokemon-type"; +import { ChallengeType } from "#enums/challenge-type"; import { Challenges } from "#enums/challenges"; +import { TypeColor, TypeShadow } from "#enums/color"; +import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves"; +import { ModifierTier } from "#enums/modifier-tier"; +import type { MoveId } from "#enums/move-id"; +import type { MoveSourceType } from "#enums/move-source-type"; +import { Nature } from "#enums/nature"; +import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { TrainerType } from "#enums/trainer-type"; -import { Nature } from "#enums/nature"; -import type { MoveId } from "#enums/move-id"; -import { TypeColor, TypeShadow } from "#enums/color"; -import { ModifierTier } from "#enums/modifier-tier"; -import { globalScene } from "#app/global-scene"; -import { pokemonFormChanges } from "./pokemon-forms"; -import { pokemonEvolutions } from "./balance/pokemon-evolutions"; -import { ChallengeType } from "#enums/challenge-type"; -import type { MoveSourceType } from "#enums/move-source-type"; +import { TrainerVariant } from "#enums/trainer-variant"; +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 { deepCopy } from "#utils/data"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import i18next from "i18next"; /** A constant for the default max cost of the starting party before a run */ const DEFAULT_PARTY_MAX_COST = 10; diff --git a/src/data/custom-pokemon-data.ts b/src/data/custom-pokemon-data.ts deleted file mode 100644 index 252e302ccf3..00000000000 --- a/src/data/custom-pokemon-data.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { AbilityId } from "#enums/ability-id"; -import type { PokemonType } from "#enums/pokemon-type"; -import type { Nature } from "#enums/nature"; - -/** - * Data that can customize a Pokemon in non-standard ways from its Species. - * Includes abilities, nature, changed types, etc. - */ -export class CustomPokemonData { - // TODO: Change the default value for all these from -1 to something a bit more sensible - /** - * The scale at which to render this Pokemon's sprite. - */ - public spriteScale = -1; - public ability: AbilityId | -1; - public passive: AbilityId | -1; - public nature: Nature | -1; - public types: PokemonType[]; - /** Deprecated but needed for session save migration */ - // TODO: Remove this once pre-session migration is implemented - public hitsRecCount: number | null = null; - - constructor(data?: CustomPokemonData | Partial) { - this.spriteScale = data?.spriteScale ?? -1; - this.ability = data?.ability ?? -1; - this.passive = data?.passive ?? -1; - this.nature = data?.nature ?? -1; - this.types = data?.types ?? []; - this.hitsRecCount = data?.hitsRecCount ?? null; - } -} diff --git a/src/data/daily-run.ts b/src/data/daily-run.ts index e869ba7f28f..9a6f560933a 100644 --- a/src/data/daily-run.ts +++ b/src/data/daily-run.ts @@ -1,15 +1,16 @@ +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 { BiomeId } from "#enums/biome-id"; import { PartyMemberStrength } from "#enums/party-member-strength"; import type { SpeciesId } from "#enums/species-id"; -import { globalScene } from "#app/global-scene"; -import { PlayerPokemon } from "#app/field/pokemon"; -import type { Starter } from "#app/ui/starter-select-ui-handler"; -import { randSeedGauss, randSeedInt, randSeedItem, getEnumValues } from "#app/utils/common"; -import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; -import PokemonSpecies, { getPokemonSpeciesForm } from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import { BiomeId } from "#enums/biome-id"; +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"; export interface DailyRunConfig { seed: number; @@ -165,5 +166,6 @@ export function getDailyStartingBiome(): BiomeId { } // Fallback in case something went wrong + // TODO: should this use `randSeedItem`? return biomes[randSeedInt(biomes.length)]; } diff --git a/src/data/data-lists.ts b/src/data/data-lists.ts index ed172846fe1..ae3d0acc77f 100644 --- a/src/data/data-lists.ts +++ b/src/data/data-lists.ts @@ -1,7 +1,7 @@ -import type PokemonSpecies from "#app/data/pokemon-species"; -import type { ModifierTypes } from "#app/modifier/modifier-type"; -import type { Ability } from "./abilities/ability"; -import type Move from "./moves/move"; +import type { Ability } from "#abilities/ability"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import type { ModifierTypes } from "#modifiers/modifier-type"; +import type { Move } from "#moves/move"; export const allAbilities: Ability[] = []; export const allMoves: Move[] = []; diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index 6bb96f0efb2..406e72ee82b 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -1,6 +1,6 @@ import { BattleSpec } from "#enums/battle-spec"; import { TrainerType } from "#enums/trainer-type"; -import { trainerConfigs } from "./trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-config"; export interface TrainerTypeMessages { encounter?: string | string[]; @@ -1744,6 +1744,7 @@ export function getCharVariantFromDialogue(message: string): string { } export function initTrainerTypeDialogue(): void { + // TODO: this should not be using `Object.Keys` const trainerTypes = Object.keys(trainerTypeDialogue).map(t => Number.parseInt(t) as TrainerType); for (const trainerType of trainerTypes) { const messages = trainerTypeDialogue[trainerType]; diff --git a/src/data/egg-hatch-data.ts b/src/data/egg-hatch-data.ts index e81ae69515c..6aead19eb7f 100644 --- a/src/data/egg-hatch-data.ts +++ b/src/data/egg-hatch-data.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type { StarterDataEntry } from "#app/system/game-data"; -import type { DexEntry } from "#app/@types/dex-data"; +import type { PlayerPokemon } from "#field/pokemon"; +import type { StarterDataEntry } from "#system/game-data"; +import type { DexEntry } from "#types/dex-data"; /** * Stores data associated with a specific egg and the hatched pokemon diff --git a/src/data/egg.ts b/src/data/egg.ts index 1ef08a4f1da..2c567686fc2 100644 --- a/src/data/egg.ts +++ b/src/data/egg.ts @@ -1,43 +1,43 @@ -import type BattleScene from "#app/battle-scene"; +import type { BattleScene } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import { VariantTier } from "#enums/variant-tier"; -import { randInt, randomString, randSeedInt, getIvsFromId } from "#app/utils/common"; import Overrides from "#app/overrides"; -import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import i18next from "i18next"; -import { EggTier } from "#enums/egg-type"; -import { SpeciesId } from "#enums/species-id"; -import { EggSourceType } from "#enums/egg-source-types"; +import { pokemonPrevolutions } from "#balance/pokemon-evolutions"; import { - MANAPHY_EGG_MANAPHY_RATE, - SAME_SPECIES_EGG_HA_RATE, - GACHA_EGG_HA_RATE, - GACHA_DEFAULT_RARE_EGGMOVE_RATE, - SAME_SPECIES_EGG_RARE_EGGMOVE_RATE, - GACHA_MOVE_UP_RARE_EGGMOVE_RATE, - GACHA_DEFAULT_SHINY_RATE, - GACHA_SHINY_UP_SHINY_RATE, - SAME_SPECIES_EGG_SHINY_RATE, - EGG_PITY_LEGENDARY_THRESHOLD, EGG_PITY_EPIC_THRESHOLD, + EGG_PITY_LEGENDARY_THRESHOLD, EGG_PITY_RARE_THRESHOLD, - SHINY_VARIANT_CHANCE, - SHINY_EPIC_CHANCE, GACHA_DEFAULT_COMMON_EGG_THRESHOLD, - GACHA_DEFAULT_RARE_EGG_THRESHOLD, GACHA_DEFAULT_EPIC_EGG_THRESHOLD, + GACHA_DEFAULT_RARE_EGG_THRESHOLD, + GACHA_DEFAULT_RARE_EGGMOVE_RATE, + GACHA_DEFAULT_SHINY_RATE, + GACHA_EGG_HA_RATE, GACHA_LEGENDARY_UP_THRESHOLD_OFFSET, - HATCH_WAVES_MANAPHY_EGG, + GACHA_MOVE_UP_RARE_EGGMOVE_RATE, + GACHA_SHINY_UP_SHINY_RATE, HATCH_WAVES_COMMON_EGG, - HATCH_WAVES_RARE_EGG, HATCH_WAVES_EPIC_EGG, HATCH_WAVES_LEGENDARY_EGG, -} from "#app/data/balance/rates"; -import { speciesEggTiers } from "#app/data/balance/species-egg-tiers"; + HATCH_WAVES_MANAPHY_EGG, + HATCH_WAVES_RARE_EGG, + MANAPHY_EGG_MANAPHY_RATE, + SAME_SPECIES_EGG_HA_RATE, + SAME_SPECIES_EGG_RARE_EGGMOVE_RATE, + SAME_SPECIES_EGG_SHINY_RATE, + SHINY_EPIC_CHANCE, + SHINY_VARIANT_CHANCE, +} from "#balance/rates"; +import { speciesEggTiers } from "#balance/species-egg-tiers"; +import { speciesStarterCosts } from "#balance/starters"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { EggSourceType } from "#enums/egg-source-types"; +import { EggTier } from "#enums/egg-type"; +import { SpeciesId } from "#enums/species-id"; +import { VariantTier } from "#enums/variant-tier"; +import type { PlayerPokemon } from "#field/pokemon"; +import { getIvsFromId, randInt, randomString, randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import i18next from "i18next"; export const EGG_SEED = 1073741824; @@ -294,7 +294,7 @@ export class Egg { public getEggDescriptor(): string { if (this.isManaphyEgg()) { - return "Manaphy"; + return i18next.t("egg:manaphyTier"); } switch (this.tier) { case EggTier.RARE: diff --git a/src/data/moves/apply-attrs.ts b/src/data/moves/apply-attrs.ts index 98e7b6d791f..3162ba02bde 100644 --- a/src/data/moves/apply-attrs.ts +++ b/src/data/moves/apply-attrs.ts @@ -1,11 +1,11 @@ -/** +/* * Module holding functions to apply move attributes. * Must not import anything that is not a type. */ -import type Pokemon from "#app/field/pokemon"; -import type { default as Move, MoveAttr } from "./move"; -import type { ChargingMove } from "#app/@types/move-types"; -import type { MoveAttrFilter, MoveAttrString } from "#app/@types/move-types"; + +import type { Pokemon } from "#field/pokemon"; +import type { Move, MoveAttr } from "#moves/move"; +import type { ChargingMove, MoveAttrFilter, MoveAttrString } from "#types/move-types"; function applyMoveAttrsInternal( attrFilter: MoveAttrFilter, diff --git a/src/data/moves/move-utils.ts b/src/data/moves/move-utils.ts index 20723ab0347..241144599e5 100644 --- a/src/data/moves/move-utils.ts +++ b/src/data/moves/move-utils.ts @@ -1,14 +1,13 @@ -import type Pokemon from "#app/field/pokemon"; +import { allMoves } from "#data/data-lists"; import type { BattlerIndex } from "#enums/battler-index"; -import type { MoveId } from "#enums/move-id"; -import type { MoveTargetSet, UserMoveConditionFunc } from "./move"; -import type Move from "./move"; -import { NumberHolder, isNullOrUndefined } from "#app/utils/common"; -import { MoveTarget } from "#enums/MoveTarget"; -import { PokemonType } from "#enums/pokemon-type"; -import { allMoves } from "#app/data/data-lists"; -import { applyMoveAttrs } from "./apply-attrs"; import { BattlerTagType } from "#enums/battler-tag-type"; +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"; +import type { Move, MoveTargetSet, UserMoveConditionFunc } from "#moves/move"; +import { isNullOrUndefined, NumberHolder } from "#utils/common"; /** * Return whether the move targets the field @@ -28,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 13955b94dd6..e63eee0a076 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -1,5 +1,14 @@ -import { MoveChargeAnim } from "../battle-anims"; -import { ChargeAnim } from "#enums/move-anims-common"; +import { AbAttrParamsWithCancel, PreAttackModifyPowerAbAttrParams } from "#abilities/ability"; +import { + applyAbAttrs +} from "#abilities/apply-ab-attrs"; +import { loggedInUser } from "#app/account"; +import type { GameMode } from "#app/game-mode"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import type { ArenaTrapTag } from "#data/arena-tag"; +import { WeakenMoveTypeTag } from "#data/arena-tag"; +import { MoveChargeAnim } from "#data/battle-anims"; import { CommandedTag, EncoreTag, @@ -11,31 +20,53 @@ import { SubstituteTag, TrappedTag, TypeBoostTag, -} from "../battler-tags"; -import { getPokemonNameWithAffix } from "../../messages"; -import type { AttackMoveResult, TurnMove } from "../../field/pokemon"; -import type Pokemon from "../../field/pokemon"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import { PokemonMove } from "./pokemon-move"; -import { MoveResult } from "#enums/move-result"; -import { HitResult } from "#enums/hit-result"; -import { FieldPosition } from "#enums/field-position"; +} from "#data/battler-tags"; +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 { getNonVolatileStatusEffects, getStatusEffectHealText, isNonVolatileStatusEffect, -} from "../status-effect"; -import { getTypeDamageMultiplier } from "../type"; -import { PokemonType } from "#enums/pokemon-type"; -import { BooleanHolder, NumberHolder, isNullOrUndefined, toDmgValue, randSeedItem, randSeedInt, getEnumValues, toReadableString, type Constructor, randSeedFloat } from "#app/utils/common"; -import { WeatherType } from "#enums/weather-type"; -import type { ArenaTrapTag } from "../arena-tag"; -import { WeakenMoveTypeTag } from "../arena-tag"; +} from "#data/status-effect"; +import { TerrainType } from "#data/terrain"; +import { getTypeDamageMultiplier } from "#data/type"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagSide } from "#enums/arena-tag-side"; +import { ArenaTagType } from "#enums/arena-tag-type"; +import { BattleType } from "#enums/battle-type"; +import type { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { BiomeId } from "#enums/biome-id"; +import { ChallengeType } from "#enums/challenge-type"; +import { Command } from "#enums/command"; +import { FieldPosition } from "#enums/field-position"; +import { HitResult } from "#enums/hit-result"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; +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/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 { SpeciesId } from "#enums/species-id"; import { - applyAbAttrs -} from "../abilities/apply-ab-attrs"; -import { allAbilities, allMoves } from "../data-lists"; + BATTLE_STATS, + type BattleStat, + type EffectiveStat, + getStatKey, + Stat, +} from "#enums/stat"; +import { StatusEffect } from "#enums/status-effect"; +import { SwitchType } from "#enums/switch-type"; +import { WeatherType } from "#enums/weather-type"; +import { MoveUsedEvent } from "#events/battle-scene"; +import type { EnemyPokemon, Pokemon } from "#field/pokemon"; import { AttackTypeBoosterModifier, BerryModifier, @@ -43,52 +74,22 @@ import { PokemonMoveAccuracyBoosterModifier, PokemonMultiHitModifier, PreserveBerryModifier, -} from "../../modifier/modifier"; -import type { BattlerIndex } from "#enums/battler-index"; -import { BattleType } from "#enums/battle-type"; -import { TerrainType } from "../terrain"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import { Command } from "#enums/command"; +} from "#modifiers/modifier"; +import { applyMoveAttrs } from "#moves/apply-attrs"; +import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidMirrorMoveMoves, invalidSketchMoves, invalidSleepTalkMoves } from "#moves/invalid-moves"; +import { frenzyMissFunc, getMoveTargets } from "#moves/move-utils"; +import { PokemonMove } from "#moves/pokemon-move"; +import { MoveEndPhase } from "#phases/move-end-phase"; +import { MovePhase } from "#phases/move-phase"; +import { PokemonHealPhase } from "#phases/pokemon-heal-phase"; +import { SwitchSummonPhase } from "#phases/switch-summon-phase"; +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 { getEnumValues } from "#utils/enums"; import i18next from "i18next"; -import type { Localizable } from "#app/@types/locales"; -import { getBerryEffectFunc } from "../berry"; -import { AbilityId } from "#enums/ability-id"; -import { ArenaTagType } from "#enums/arena-tag-type"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { BiomeId } from "#enums/biome-id"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { MoveUsedEvent } from "#app/events/battle-scene"; -import { - BATTLE_STATS, - type BattleStat, - type EffectiveStat, - getStatKey, - Stat, -} from "#app/enums/stat"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; -import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; -import { SpeciesFormChangeRevertWeatherFormTrigger } from "../pokemon-forms/form-change-triggers"; -import type { GameMode } from "#app/game-mode"; -import { applyChallenges } from "../challenge"; -import { ChallengeType } from "#enums/challenge-type"; -import { SwitchType } from "#enums/switch-type"; -import { StatusEffect } from "#enums/status-effect"; -import { globalScene } from "#app/global-scene"; -import { loggedInUser } from "#app/account"; -import { MoveCategory } from "#enums/MoveCategory"; -import { MoveTarget } from "#enums/MoveTarget"; -import { MoveFlags } from "#enums/MoveFlags"; -import { MoveEffectTrigger } from "#enums/MoveEffectTrigger"; -import { MultiHitType } from "#enums/MultiHitType"; -import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidMirrorMoveMoves, invalidSleepTalkMoves, invalidSketchMoves } from "./invalid-moves"; -import { isVirtual, MoveUseMode } from "#enums/move-use-mode"; -import type { ChargingMove, MoveAttrMap, MoveAttrString, MoveKindString, MoveClassMap } from "#app/@types/move-types"; -import { applyMoveAttrs } from "./apply-attrs"; -import { frenzyMissFunc, getMoveTargets } from "./move-utils"; -import { AbAttrBaseParams, AbAttrParamsWithCancel, PreAttackModifyPowerAbAttrParams } from "../abilities/ability"; /** * A function used to conditionally determine execution of a given {@linkcode MoveAttr}. @@ -97,7 +98,7 @@ import { AbAttrBaseParams, AbAttrParamsWithCancel, PreAttackModifyPowerAbAttrPar type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean; export type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean; -export default abstract class Move implements Localizable { +export abstract class Move implements Localizable { public id: MoveId; public name: string; private _type: PokemonType; @@ -165,9 +166,9 @@ export default abstract class Move implements Localizable { } /** - * Get all move attributes that match `attrType` - * @param attrType any attribute that extends {@linkcode MoveAttr} - * @returns Array of attributes that match `attrType`, Empty Array if none match. + * Get all move attributes that match `attrType`. + * @param attrType - The name of a {@linkcode MoveAttr} to search for + * @returns An array containing all attributes matching `attrType`, or an empty array if none match. */ getAttrs(attrType: T): (MoveAttrMap[T])[] { const targetAttr = MoveAttrs[attrType]; @@ -178,9 +179,9 @@ export default abstract class Move implements Localizable { } /** - * Check if a move has an attribute that matches `attrType` - * @param attrType any attribute that extends {@linkcode MoveAttr} - * @returns true if the move has attribute `attrType` + * Check if a move has an attribute that matches `attrType`. + * @param attrType - The name of a {@linkcode MoveAttr} to search for + * @returns Whether this move has at least 1 attribute that matches `attrType` */ hasAttr(attrType: MoveAttrString): boolean { const targetAttr = MoveAttrs[attrType]; @@ -192,23 +193,25 @@ export default abstract class Move implements Localizable { } /** - * Takes as input a boolean function and returns the first MoveAttr in attrs that matches true - * @param attrPredicate - * @returns the first {@linkcode MoveAttr} element in attrs that makes the input function return true + * Find the first attribute that matches a given predicate function. + * @param attrPredicate - The predicate function to search `MoveAttr`s by + * @returns The first {@linkcode MoveAttr} for which `attrPredicate` returns `true` */ findAttr(attrPredicate: (attr: MoveAttr) => boolean): MoveAttr { - return this.attrs.find(attrPredicate)!; // TODO: is the bang correct? + // TODO: Remove bang and make return type `MoveAttr | undefined`, + // as well as add overload for functions of type `x is T` + return this.attrs.find(attrPredicate)!; } /** - * Adds a new MoveAttr to the move (appends to the attr array) - * if the MoveAttr also comes with a condition, also adds that to the conditions array: {@linkcode MoveCondition} - * @param AttrType {@linkcode MoveAttr} the constructor of a MoveAttr class - * @param args the args needed to instantiate a the given class - * @returns the called object {@linkcode Move} + * Adds a new MoveAttr to this move (appends to the attr array). + * If the MoveAttr also comes with a condition, it is added to its {@linkcode MoveCondition} array. + * @param attrType - The {@linkcode MoveAttr} to add + * @param args - The arguments needed to instantiate the given class + * @returns `this` */ - attr>(AttrType: T, ...args: ConstructorParameters): this { - const attr = new AttrType(...args); + attr>(attrType: T, ...args: ConstructorParameters): this { + const attr = new attrType(...args); this.attrs.push(attr); let attrCondition = attr.getCondition(); if (attrCondition) { @@ -222,11 +225,13 @@ export default abstract class Move implements Localizable { } /** - * Adds a new MoveAttr to the move (appends to the attr array) - * if the MoveAttr also comes with a condition, also adds that to the conditions array: {@linkcode MoveCondition} - * Almost identical to {@link attr}, except you are passing in a MoveAttr object, instead of a constructor and it's arguments - * @param attrAdd {@linkcode MoveAttr} the attribute to add - * @returns the called object {@linkcode Move} + * Adds a new MoveAttr to this move (appends to the attr array). + * If the MoveAttr also comes with a condition, it is added to its {@linkcode MoveCondition} array. + * + * Similar to {@linkcode attr}, except this takes an already instantiated {@linkcode MoveAttr} object + * as opposed to a constructor and its arguments. + * @param attrAdd - The {@linkcode MoveAttr} to add + * @returns `this` */ addAttr(attrAdd: MoveAttr): this { this.attrs.push(attrAdd); @@ -243,8 +248,8 @@ export default abstract class Move implements Localizable { /** * Sets the move target of this move - * @param moveTarget {@linkcode MoveTarget} the move target to set - * @returns the called object {@linkcode Move} + * @param moveTarget - The {@linkcode MoveTarget} to set + * @returns `this` */ target(moveTarget: MoveTarget): this { this.moveTarget = moveTarget; @@ -252,13 +257,13 @@ export default abstract class Move implements Localizable { } /** - * Getter function that returns if this Move has a MoveFlag - * @param flag {@linkcode MoveFlags} to check - * @returns boolean + * Getter function that returns if this Move has a given MoveFlag. + * @param flag - The {@linkcode MoveFlags} to check + * @returns Whether this Move has the specified flag. */ hasFlag(flag: MoveFlags): boolean { - // internally it is taking the bitwise AND (MoveFlags are represented as bit-shifts) and returning False if result is 0 and true otherwise - return !!(this.flags & flag); + // Flags are internally represented as bitmasks, so we check by taking the bitwise AND. + return (this.flags & flag) !== MoveFlags.NONE; } /** @@ -303,12 +308,13 @@ export default abstract class Move implements Localizable { } /** - * Checks if the move is immune to certain types. + * Checks if the target is immune to this Move's type. * Currently looks at cases of Grass types with powder moves and Dark types with moves affected by Prankster. - * @param {Pokemon} user the source of this move - * @param {Pokemon} target the target of this move - * @param {PokemonType} type the type of the move's target - * @returns boolean + * @param user - The {@linkcode Pokemon} using this move + * @param target - The {@linkcode Pokemon} targeted by this move + * @param type - The {@linkcode PokemonType} of the target + * @returns Whether the move is blocked by the target's type. + * Self-targeted moves will return `false` regardless of circumstances. */ isTypeImmune(user: Pokemon, target: Pokemon, type: PokemonType): boolean { if (this.moveTarget === MoveTarget.USER) { @@ -322,7 +328,7 @@ export default abstract class Move implements Localizable { } break; case PokemonType.DARK: - if (user.hasAbility(AbilityId.PRANKSTER) && this.category === MoveCategory.STATUS && (user.isPlayer() !== target.isPlayer())) { + if (user.hasAbility(AbilityId.PRANKSTER) && this.category === MoveCategory.STATUS && user.isOpponent(target)) { return true; } break; @@ -332,9 +338,9 @@ export default abstract class Move implements Localizable { /** * Checks if the move would hit its target's Substitute instead of the target itself. - * @param user The {@linkcode Pokemon} using this move - * @param target The {@linkcode Pokemon} targeted by this move - * @returns `true` if the move can bypass the target's Substitute; `false` otherwise. + * @param user - The {@linkcode Pokemon} using this move + * @param target - The {@linkcode Pokemon} targeted by this move + * @returns Whether this Move will hit the target's Substitute (assuming one exists). */ hitsSubstitute(user: Pokemon, target?: Pokemon): boolean { if ([ MoveTarget.USER, MoveTarget.USER_SIDE, MoveTarget.ENEMY_SIDE, MoveTarget.BOTH_SIDES ].includes(this.moveTarget) @@ -352,13 +358,14 @@ export default abstract class Move implements Localizable { } /** - * Adds a move condition to the move - * @param condition {@linkcode MoveCondition} or {@linkcode MoveConditionFunc}, appends to conditions array a new MoveCondition object - * @returns the called object {@linkcode Move} + * Adds a condition to this move (in addition to any provided by its prior {@linkcode MoveAttr}s). + * The move will fail upon use if at least 1 of its conditions is not met. + * @param condition - The {@linkcode MoveCondition} or {@linkcode MoveConditionFunc} to add to the conditions array. + * @returns `this` */ condition(condition: MoveCondition | MoveConditionFunc): this { if (typeof condition === "function") { - condition = new MoveCondition(condition as MoveConditionFunc); + condition = new MoveCondition(condition); } this.conditions.push(condition); @@ -366,16 +373,22 @@ export default abstract class Move implements Localizable { } /** - * Internal dev flag for documenting edge cases. When using this, please document the known edge case. - * @returns the called object {@linkcode Move} + * Mark a move as having one or more edge cases. + * The move may lack certain niche interactions with other moves/abilities, + * but still functions as intended in most cases. + * + * When using this, **make sure to document the edge case** (or else this becomes pointless). + * @returns `this` */ edgeCase(): this { return this; } /** - * Marks the move as "partial": appends texts to the move name - * @returns the called object {@linkcode Move} + * Mark this move as partially implemented. + * Partial moves are expected to have some core functionality implemented, but may lack + * certain notable features or interactions with other moves or abilities. + * @returns `this` */ partial(): this { this.nameAppend += " (P)"; @@ -383,8 +396,10 @@ export default abstract class Move implements Localizable { } /** - * Marks the move as "unimplemented": appends texts to the move name - * @returns the called object {@linkcode Move} + * Mark this move as unimplemented. + * Unimplemented moves are ones which have _none_ of their basic functionality enabled, + * and cannot be used. + * @returns `this` */ unimplemented(): this { this.nameAppend += " (N)"; @@ -680,13 +695,7 @@ export default abstract class Move implements Localizable { * @returns boolean: false if any of the apply()'s return false, else true */ applyConditions(user: Pokemon, target: Pokemon, move: Move): boolean { - for (const condition of this.conditions) { - if (!condition.apply(user, target, move)) { - return false; - } - } - - return true; + return this.conditions.every(cond => cond.apply(user, target, move)); } /** @@ -799,16 +808,14 @@ export default 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, @@ -823,6 +830,13 @@ export default 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 => { @@ -846,7 +860,6 @@ export default 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); @@ -965,10 +978,8 @@ export class AttackMove extends Move { constructor(id: MoveId, type: PokemonType, category: MoveCategory, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { super(id, type, category, MoveTarget.NEAR_OTHER, power, accuracy, pp, chance, priority, generation); - /** - * {@link https://bulbapedia.bulbagarden.net/wiki/Freeze_(status_condition)} - * > All damaging Fire-type moves can now thaw a frozen target, regardless of whether or not they have a chance to burn; - */ + // > All damaging Fire-type moves can... thaw a frozen target, regardless of whether or not they have a chance to burn. + // - https://bulbapedia.bulbagarden.net/wiki/Freeze_(status_condition) if (this.type === PokemonType.FIRE) { this.addAttr(new HealStatusEffectAttr(false, StatusEffect.FREEZE)); } @@ -1224,7 +1235,8 @@ interface MoveEffectAttrOptions { effectChanceOverride?: number; } -/** Base class defining all Move Effect Attributes +/** + * Base class defining all Move Effect Attributes * @extends MoveAttr * @see {@linkcode apply} */ @@ -1242,8 +1254,7 @@ export class MoveEffectAttr extends MoveAttr { /** * Defines when this effect should trigger in the move's effect order. - * @default MoveEffectTrigger.POST_APPLY - * @see {@linkcode MoveEffectTrigger} + * @defaultValue {@linkcode MoveEffectTrigger.POST_APPLY} */ public get trigger () { return this.options?.trigger ?? MoveEffectTrigger.POST_APPLY; @@ -1252,7 +1263,7 @@ export class MoveEffectAttr extends MoveAttr { /** * `true` if this effect should only trigger on the first hit of * multi-hit moves. - * @default false + * @defaultValue `false` */ public get firstHitOnly () { return this.options?.firstHitOnly ?? false; @@ -1261,7 +1272,7 @@ export class MoveEffectAttr extends MoveAttr { /** * `true` if this effect should only trigger on the last hit of * multi-hit moves. - * @default false + * @defaultValue `false` */ public get lastHitOnly () { return this.options?.lastHitOnly ?? false; @@ -1270,7 +1281,7 @@ export class MoveEffectAttr extends MoveAttr { /** * `true` if this effect should apply only upon hitting a target * for the first time when targeting multiple {@linkcode Pokemon}. - * @default false + * @defaultValue `false` */ public get firstTargetOnly () { return this.options?.firstTargetOnly ?? false; @@ -2574,9 +2585,12 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr { } /** - * Applies the effect of 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. - * @returns `true` if Psycho Shift's effect is able to be applied to the target + * Applies the effect of {@linkcode Moves.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 + * @param target - The {@linkcode Pokemon} targeted by the move. + * @returns - Whether the effect was successfully applied to the target. */ apply(user: Pokemon, target: Pokemon, _move: Move, _args: any[]): boolean { const statusToApply: StatusEffect | undefined = user.status?.effect ?? (user.hasAbility(AbilityId.COMATOSE) ? StatusEffect.SLEEP : undefined); @@ -2909,6 +2923,12 @@ 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}. + */ +// TODO: Should this use a battler tag? +// TODO: Give this `userSleptOrComatoseCondition` by default export class BypassSleepAttr extends MoveAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (user.status?.effect === StatusEffect.SLEEP) { @@ -2926,7 +2946,7 @@ export class BypassSleepAttr extends MoveAttr { * @param move */ getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): number { - return user.status && user.status.effect === StatusEffect.SLEEP ? 200 : -10; + return user.status?.effect === StatusEffect.SLEEP ? 200 : -10; } } @@ -3255,7 +3275,7 @@ export class StatStageChangeAttr extends MoveEffectAttr { /** * `true` to display a message for the stat change. - * @default true + * @defaultValue `true` */ private get showMessage () { return this.options?.showMessage ?? true; @@ -4096,30 +4116,6 @@ export class OpponentHighHpPowerAttr extends VariablePowerAttr { } } -/** - * Attribute to double this move's power if the target hasn't acted yet in the current turn. - * Used by {@linkcode Moves.BOLT_BEAK} and {@linkcode Moves.FISHIOUS_REND} - */ -export class FirstAttackDoublePowerAttr extends VariablePowerAttr { - /** - * Double this move's power if the user is acting before the target. - * @param user - Unused - * @param target - The {@linkcode Pokemon} being targeted by this move - * @param move - Unused - * @param args `[0]` - A {@linkcode NumberHolder} containing move base power - * @returns Whether the attribute was successfully applied - */ - apply(_user: Pokemon, target: Pokemon, move: Move, args: [NumberHolder]): boolean { - if (target.turnData.acted) { - return false; - } - - args[0].value *= 2; - return true; - } -} - - export class TurnDamagedDoublePowerAttr extends VariablePowerAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (user.turnData.attacksReceived.find(r => r.damage && r.sourceId === target.id)) { @@ -5442,7 +5438,10 @@ export class NoEffectAttr extends MoveAttr { } } -const crashDamageFunc = (user: Pokemon, move: Move) => { +/** + * Function to deal Crash Damage (1/2 max hp) to the user on apply. + */ +const crashDamageFunc: UserMoveConditionFunc = (user: Pokemon, move: Move) => { const cancelled = new BooleanHolder(false); applyAbAttrs("BlockNonDirectDamageAbAttr", {pokemon: user, cancelled}); if (cancelled.value) { @@ -7070,7 +7069,8 @@ export class CopyMoveAttr extends CallMoveAttr { /** * Attribute used for moves that cause the target to repeat their last used move. * - * Used for [Instruct](https://bulbapedia.bulbagarden.net/wiki/Instruct_(move)). + * Used by {@linkcode Moves.INSTRUCT | Instruct}. + * @see [Instruct on Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Instruct_(move)) */ export class RepeatMoveAttr extends MoveEffectAttr { private movesetMove: PokemonMove; @@ -7601,7 +7601,9 @@ export class SuppressAbilitiesIfActedAttr extends MoveEffectAttr { } /** - * Used by Transform + * Attribute used to transform into the target on move use. + * + * Used for {@linkcode MoveId.TRANSFORM}. */ export class TransformAttr extends MoveEffectAttr { override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { @@ -7610,11 +7612,12 @@ export class TransformAttr extends MoveEffectAttr { } globalScene.phaseManager.unshiftNew("PokemonTransformPhase", user.getBattlerIndex(), target.getBattlerIndex()); - - globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:transformedIntoTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); - return true; } + + getCondition(): MoveConditionFunc { + return (user, target) => user.canTransformInto(target) + } } /** @@ -8288,7 +8291,6 @@ const MoveAttrs = Object.freeze({ CompareWeightPowerAttr, HpPowerAttr, OpponentHighHpPowerAttr, - FirstAttackDoublePowerAttr, TurnDamagedDoublePowerAttr, MagnitudePowerAttr, AntiSunlightPowerDecreaseAttr, @@ -8836,12 +8838,12 @@ export function initMoves() { .makesContact(false), new StatusMove(MoveId.TRANSFORM, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(TransformAttr) - .condition((user, target, move) => !target.getTag(BattlerTagType.SUBSTITUTE)) - .condition((user, target, move) => !target.summonData.illusion && !user.summonData.illusion) - // transforming from or into fusion pokemon causes various problems (such as crashes) - .condition((user, target, move) => !target.getTag(BattlerTagType.SUBSTITUTE) && !user.fusionSpecies && !target.fusionSpecies) .ignoresProtect() - // Transforming should copy the target's rage fist hit count + /* Transform: + * Does not copy the target's rage fist hit count + * Does not copy the target's volatile status conditions (ie BattlerTags) + * Renders user typeless when copying typeless opponent (should revert to original typing) + */ .edgeCase(), new AttackMove(MoveId.BUBBLE, PokemonType.WATER, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) @@ -9591,7 +9593,8 @@ export function initMoves() { new AttackMove(MoveId.CLOSE_COMBAT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), new AttackMove(MoveId.PAYBACK, PokemonType.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 4) - .attr(MovePowerMultiplierAttr, (user, target, move) => target.getLastXMoves(1).find(m => m.turn === globalScene.currentBattle.turn) || globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.BALL ? 2 : 1), + // Payback boosts power on item use + .attr(MovePowerMultiplierAttr, (_user, target) => target.turnData.acted || globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.BALL ? 2 : 1), new AttackMove(MoveId.ASSURANCE, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => target.turnData.damageTaken > 0 ? 2 : 1), new StatusMove(MoveId.EMBARGO, PokemonType.DARK, 100, 15, -1, 0, 4) @@ -10803,9 +10806,9 @@ export function initMoves() { .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.OCTOLOCK, false, true, 1), new AttackMove(MoveId.BOLT_BEAK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) - .attr(FirstAttackDoublePowerAttr), + .attr(MovePowerMultiplierAttr, (_user, target) => target.turnData.acted ? 1 : 2), new AttackMove(MoveId.FISHIOUS_REND, PokemonType.WATER, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) - .attr(FirstAttackDoublePowerAttr) + .attr(MovePowerMultiplierAttr, (_user, target) => target.turnData.acted ? 1 : 2) .bitingMove(), new StatusMove(MoveId.COURT_CHANGE, PokemonType.NORMAL, 100, 10, -1, 0, 8) .attr(SwapArenaTagsAttr, [ ArenaTagType.AURORA_VEIL, ArenaTagType.LIGHT_SCREEN, ArenaTagType.MIST, ArenaTagType.REFLECT, ArenaTagType.SPIKES, ArenaTagType.STEALTH_ROCK, ArenaTagType.STICKY_WEB, ArenaTagType.TAILWIND, ArenaTagType.TOXIC_SPIKES ]), diff --git a/src/data/moves/pokemon-move.ts b/src/data/moves/pokemon-move.ts index ab774c9fff9..d3f68fe9db4 100644 --- a/src/data/moves/pokemon-move.ts +++ b/src/data/moves/pokemon-move.ts @@ -1,8 +1,8 @@ -import type Pokemon from "#app/field/pokemon"; -import { toDmgValue } from "#app/utils/common"; +import { allMoves } from "#data/data-lists"; import type { MoveId } from "#enums/move-id"; -import { allMoves } from "../data-lists"; -import type Move from "./move"; +import type { Pokemon } from "#field/pokemon"; +import type { Move } from "#moves/move"; +import { toDmgValue } from "#utils/common"; /** * Wrapper class for the {@linkcode Move} class for Pokemon to interact with. @@ -36,13 +36,13 @@ export class PokemonMove { } /** - * Checks whether the move can be selected or performed by a Pokemon, without consideration for the move's targets. + * Checks whether this move can be selected/performed by a Pokemon, without consideration for the move's targets. * The move is unusable if it is out of PP, restricted by an effect, or unimplemented. * - * @param pokemon - {@linkcode Pokemon} that would be using this move - * @param ignorePp - If `true`, skips the PP check - * @param ignoreRestrictionTags - If `true`, skips the check for move restriction tags (see {@link MoveRestrictionBattlerTag}) - * @returns `true` if the move can be selected and used by the Pokemon, otherwise `false`. + * @param pokemon - The {@linkcode Pokemon} attempting to use this move + * @param ignorePp - Whether to ignore checking if the move is out of PP; default `false` + * @param ignoreRestrictionTags - Whether to skip checks for {@linkcode MoveRestrictionBattlerTag}s; default `false` + * @returns Whether this {@linkcode PokemonMove} can be selected by this Pokemon. */ isUsable(pokemon: Pokemon, ignorePp = false, ignoreRestrictionTags = false): boolean { // TODO: Add Sky Drop's 1 turn stall diff --git a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts index 7a1c9821e89..5b2805f9310 100644 --- a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts +++ b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts @@ -1,27 +1,27 @@ +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { globalScene } from "#app/global-scene"; -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { modifierTypes } from "#data/data-lists"; +import type { IEggOptions } from "#data/egg"; +import { EggSourceType } from "#enums/egg-source-types"; +import { EggTier } from "#enums/egg-type"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; +import { TrainerType } from "#enums/trainer-type"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { TrainerType } from "#enums/trainer-type"; -import { SpeciesId } from "#enums/species-id"; -import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { randSeedInt } from "#app/utils/common"; +} from "#mystery-encounters/encounter-phase-utils"; +import { getSpriteKeysFromSpecies } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { trainerConfigs } from "#trainers/trainer-config"; +import { randSeedInt } from "#utils/common"; import i18next from "i18next"; -import type { IEggOptions } from "#app/data/egg"; -import { EggSourceType } from "#enums/egg-source-types"; -import { EggTier } from "#enums/egg-type"; -import { ModifierTier } from "#enums/modifier-tier"; -import { modifierTypes } from "#app/data/data-lists"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/aTrainersTest"; diff --git a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts index bec75288837..d6058eb9eaf 100644 --- a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts +++ b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts @@ -1,44 +1,44 @@ -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; +import { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import type { BerryType } from "#enums/berry-type"; +import { MoveId } from "#enums/move-id"; +import { MoveUseMode } from "#enums/move-use-mode"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PokeballType } from "#enums/pokeball"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import { TrainerSlot } from "#enums/trainer-slot"; +import type { Pokemon } from "#field/pokemon"; +import { EnemyPokemon } from "#field/pokemon"; +import { BerryModifier, PokemonInstantReviveModifier } from "#modifiers/modifier"; +import type { BerryModifierType, PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type Pokemon from "#app/field/pokemon"; -import { EnemyPokemon } from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import type { BerryModifierType, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { PersistentModifierRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { BerryModifier, PokemonInstantReviveModifier } from "#app/modifier/modifier"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { MoveId } from "#enums/move-id"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { randInt } from "#app/utils/common"; -import { BattlerIndex } from "#enums/battler-index"; +} from "#mystery-encounters/encounter-phase-utils"; import { applyModifierTypeToPlayerPokemon, catchPokemon, getHighestLevelPlayerPokemon, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { PokeballType } from "#enums/pokeball"; -import type HeldModifierConfig from "#app/@types/held-modifier-config"; -import type { BerryType } from "#enums/berry-type"; -import { Stat } from "#enums/stat"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { PersistentModifierRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import type { HeldModifierConfig } from "#types/held-modifier-config"; +import { randInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import { MoveUseMode } from "#enums/move-use-mode"; /** the i18n namespace for this encounter */ const namespace = "mysteryEncounters/absoluteAvarice"; diff --git a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts index f8a904cdb45..619acabe200 100644 --- a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts +++ b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts @@ -1,28 +1,28 @@ +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { speciesStarterCosts } from "#balance/starters"; +import { modifierTypes } from "#data/data-lists"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; import { generateModifierType, leaveEncounterWithoutBattle, setEncounterExp, updatePlayerMoney, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { modifierTypes } from "#app/data/data-lists"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; +} from "#mystery-encounters/encounter-phase-utils"; +import { getHighestStatTotalPlayerPokemon } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; import { AbilityRequirement, CombinationPokemonRequirement, MoveRequirement, -} from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { getHighestStatTotalPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { EXTORTION_ABILITIES, EXTORTION_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +} from "#mystery-encounters/mystery-encounter-requirements"; +import { EXTORTION_ABILITIES, EXTORTION_MOVES } from "#mystery-encounters/requirement-groups"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; /** the i18n namespace for this encounter */ diff --git a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts index d86a8439804..a827c3fcc0a 100644 --- a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts +++ b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts @@ -1,5 +1,20 @@ -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { modifierTypes } from "#data/data-lists"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { BerryType } from "#enums/berry-type"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PERMANENT_STATS, Stat } from "#enums/stat"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import { BerryModifier } from "#modifiers/modifier"; +import type { BerryModifierType, ModifierTypeOption } from "#modifiers/modifier-type"; +import { regenerateModifierPoolThresholds } from "#modifiers/modifier-type"; +import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { generateModifierType, generateModifierTypeOption, @@ -8,36 +23,21 @@ import { leaveEncounterWithoutBattle, setEncounterExp, setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import type { BerryModifierType, ModifierTypeOption } from "#app/modifier/modifier-type"; -import { regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import { randSeedInt } from "#app/utils/common"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +} from "#mystery-encounters/encounter-phase-utils"; import { applyModifierTypeToPlayerPokemon, getEncounterPokemonLevelForWave, getHighestStatPlayerPokemon, getSpriteKeysFromPokemon, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import PokemonData from "#app/system/pokemon-data"; -import { BerryModifier } from "#app/modifier/modifier"; -import i18next from "#app/plugins/i18n"; -import { BerryType } from "#enums/berry-type"; -import { PERMANENT_STATS, Stat } from "#enums/stat"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import i18next from "#plugins/i18n"; +import { PokemonData } from "#system/pokemon-data"; +import { randSeedItem } from "#utils/common"; +import { getEnumValues } from "#utils/enums"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/berriesAbound"; @@ -311,7 +311,7 @@ export const BerriesAboundEncounter: MysteryEncounter = MysteryEncounterBuilder. .build(); function tryGiveBerry(prioritizedPokemon?: PlayerPokemon) { - const berryType = randSeedInt(Object.keys(BerryType).filter(s => !Number.isNaN(Number(s))).length) as BerryType; + const berryType = randSeedItem(getEnumValues(BerryType)); const berry = generateModifierType(modifierTypes.BERRY, [berryType]) as BerryModifierType; const party = globalScene.getPlayerParty(); diff --git a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts index df06f40c159..d60ebe690ac 100644 --- a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts +++ b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts @@ -1,4 +1,29 @@ -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { allMoves, modifierTypes } from "#data/data-lists"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PartyMemberStrength } from "#enums/party-member-strength"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { TrainerType } from "#enums/trainer-type"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import type { PokemonHeldItemModifier } from "#modifiers/modifier"; +import { + AttackTypeBoosterModifier, + BypassSpeedChanceModifier, + ContactHeldItemTransferChanceModifier, + GigantamaxAccessModifier, + MegaEvolutionAccessModifier, +} from "#modifiers/modifier"; +import type { AttackTypeBoosterModifierType, ModifierTypeOption } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { getEncounterText, showEncounterDialogue } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { generateModifierType, generateModifierTypeOption, @@ -8,51 +33,23 @@ import { selectPokemonForOption, setEncounterRewards, transitionMysteryEncounterIntroVisuals, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { getRandomPartyMemberFunc, trainerConfigs } from "#app/data/trainers/trainer-config"; -import { TrainerPartyCompoundTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { PartyMemberStrength } from "#enums/party-member-strength"; -import { globalScene } from "#app/global-scene"; -import { isNullOrUndefined, randSeedInt, randSeedShuffle } from "#app/utils/common"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { TrainerType } from "#enums/trainer-type"; -import { SpeciesId } from "#enums/species-id"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { getEncounterText, showEncounterDialogue } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { MoveId } from "#enums/move-id"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +} from "#mystery-encounters/encounter-phase-utils"; +import { getSpriteKeysFromSpecies } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; import { AttackTypeBoosterHeldItemTypeRequirement, CombinationPokemonRequirement, HeldItemRequirement, TypeRequirement, -} from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { PokemonType } from "#enums/pokemon-type"; -import type { AttackTypeBoosterModifierType, ModifierTypeOption } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { - AttackTypeBoosterModifier, - BypassSpeedChanceModifier, - ContactHeldItemTransferChanceModifier, - GigantamaxAccessModifier, - MegaEvolutionAccessModifier, -} from "#app/modifier/modifier"; +} from "#mystery-encounters/mystery-encounter-requirements"; +import { getRandomPartyMemberFunc, trainerConfigs } from "#trainers/trainer-config"; +import { TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#trainers/trainer-party-template"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { MoveInfoOverlay } from "#ui/move-info-overlay"; +import { isNullOrUndefined, randSeedInt, randSeedShuffle } from "#utils/common"; import i18next from "i18next"; -import MoveInfoOverlay from "#app/ui/move-info-overlay"; -import { allMoves } from "#app/data/data-lists"; -import { ModifierTier } from "#enums/modifier-tier"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/bugTypeSuperfan"; @@ -292,6 +289,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = MysteryEncounterBuilde // Init the moves available for tutor const moveTutorOptions: PokemonMove[] = []; + // TODO: should this use `randSeedItem`? moveTutorOptions.push(new PokemonMove(PHYSICAL_TUTOR_MOVES[randSeedInt(PHYSICAL_TUTOR_MOVES.length)])); moveTutorOptions.push(new PokemonMove(SPECIAL_TUTOR_MOVES[randSeedInt(SPECIAL_TUTOR_MOVES.length)])); moveTutorOptions.push(new PokemonMove(STATUS_TUTOR_MOVES[randSeedInt(STATUS_TUTOR_MOVES.length)])); @@ -389,6 +387,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = MysteryEncounterBuilde specialOptions.push(rareFormChangeModifier); } if (specialOptions.length > 0) { + // TODO: should this use `randSeedItem`? modifierOptions.push(specialOptions[randSeedInt(specialOptions.length)]); } diff --git a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts index 818318bb499..1c85cb7595c 100644 --- a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts +++ b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts @@ -1,4 +1,32 @@ -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { EncounterBattleAnim } from "#data/battle-anims"; +import { allAbilities, modifierTypes } from "#data/data-lists"; +import { CustomPokemonData } from "#data/pokemon-data"; +import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { BerryType } from "#enums/berry-type"; +import { Challenges } from "#enums/challenges"; +import { EncounterAnim } from "#enums/encounter-anims"; +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"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PartyMemberStrength } from "#enums/party-member-strength"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { TrainerType } from "#enums/trainer-type"; +import { UiMode } from "#enums/ui-mode"; +import type { PlayerPokemon } from "#field/pokemon"; +import { BerryModifier } from "#modifiers/modifier"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { showEncounterDialogue, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { generateModifierType, initBattleWithEnemyConfig, @@ -7,49 +35,20 @@ import { selectPokemonForOption, setEncounterRewards, transitionMysteryEncounterIntroVisuals, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import { TrainerPartyCompoundTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { ModifierTier } from "#enums/modifier-tier"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { PartyMemberStrength } from "#enums/party-member-strength"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { SpeciesId } from "#enums/species-id"; -import { TrainerType } from "#enums/trainer-type"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { AbilityId } from "#enums/ability-id"; +} from "#mystery-encounters/encounter-phase-utils"; import { applyAbilityOverrideToPokemon, applyModifierTypeToPlayerPokemon, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { PokemonType } from "#enums/pokemon-type"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { randSeedInt, randSeedShuffle } from "#app/utils/common"; -import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { UiMode } from "#enums/ui-mode"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { trainerConfigs } from "#trainers/trainer-config"; +import { TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#trainers/trainer-party-template"; +import type { OptionSelectConfig } from "#ui/abstact-option-select-ui-handler"; +import { randSeedInt, randSeedShuffle } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import type { OptionSelectConfig } from "#app/ui/abstact-option-select-ui-handler"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { BerryModifier } from "#app/modifier/modifier"; -import { BerryType } from "#enums/berry-type"; -import { BattlerIndex } from "#enums/battler-index"; -import { MoveId } from "#enums/move-id"; -import { EncounterBattleAnim } from "#app/data/battle-anims"; -import { MoveCategory } from "#enums/MoveCategory"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { EncounterAnim } from "#enums/encounter-anims"; -import { Challenges } from "#enums/challenges"; -import { MoveUseMode } from "#enums/move-use-mode"; -import { allAbilities, modifierTypes } from "#app/data/data-lists"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/clowningAround"; @@ -139,6 +138,7 @@ export const ClowningAroundEncounter: MysteryEncounter = MysteryEncounterBuilder clownConfig.partyTemplateFunc = null; // Overrides party template func if it exists // Generate random ability for Blacephalon from pool + // TODO: should this use `randSeedItem`? const ability = RANDOM_ABILITY_POOL[randSeedInt(RANDOM_ABILITY_POOL.length)]; encounter.setDialogueToken("ability", allAbilities[ability].name); encounter.misc = { ability }; diff --git a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts index cf24d1dd7e0..94006a43837 100644 --- a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts +++ b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts @@ -1,46 +1,45 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { globalScene } from "#app/global-scene"; -import { EncounterBattleAnim } from "#app/data/battle-anims"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { DANCING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import { getEncounterText, queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { - initBattleWithEnemyConfig, - leaveEncounterWithoutBattle, - selectPokemonForOption, - setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { - catchPokemon, - getEncounterPokemonLevelForWave, - STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { TrainerSlot } from "#enums/trainer-slot"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { EnemyPokemon } from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { modifierTypes } from "#app/data/data-lists"; -import PokemonData from "#app/system/pokemon-data"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import { globalScene } from "#app/global-scene"; +import { EncounterBattleAnim } from "#data/battle-anims"; +import { modifierTypes } from "#data/data-lists"; +import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BiomeId } from "#enums/biome-id"; import { EncounterAnim } from "#enums/encounter-anims"; import { MoveId } from "#enums/move-id"; +import { MoveUseMode } from "#enums/move-use-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PokeballType } from "#enums/pokeball"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; +import { TrainerSlot } from "#enums/trainer-slot"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import { EnemyPokemon } from "#field/pokemon"; +import { PokemonMove } from "#moves/pokemon-move"; +import { getEncounterText, queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; +import { + initBattleWithEnemyConfig, + leaveEncounterWithoutBattle, + selectPokemonForOption, + setEncounterRewards, +} from "#mystery-encounters/encounter-phase-utils"; +import { + catchPokemon, + getEncounterPokemonLevelForWave, + STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER, +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoveRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { DANCING_MOVES } from "#mystery-encounters/requirement-groups"; +import { PokemonData } from "#system/pokemon-data"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import { MoveUseMode } from "#enums/move-use-mode"; /** the i18n namespace for this encounter */ const namespace = "mysteryEncounters/dancingLessons"; diff --git a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts index 4056ba3532e..29517ac2531 100644 --- a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts +++ b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts @@ -1,25 +1,22 @@ -import type { PokemonType } from "#enums/pokemon-type"; -import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import { globalScene } from "#app/global-scene"; -import { modifierTypes } from "#app/data/data-lists"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import type { EnemyPartyConfig, EnemyPokemonConfig } from "../utils/encounter-phase-utils"; -import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle } from "../utils/encounter-phase-utils"; -import { - getRandomPlayerPokemon, - getRandomSpeciesByStarterCost, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { PokemonFormChangeItemModifier } from "#app/modifier/modifier"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; import { Challenges } from "#enums/challenges"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import type { PokemonHeldItemModifier } from "#modifiers/modifier"; +import { PokemonFormChangeItemModifier } from "#modifiers/modifier"; +import type { EnemyPartyConfig, EnemyPokemonConfig } from "#mystery-encounters/encounter-phase-utils"; +import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle } from "#mystery-encounters/encounter-phase-utils"; +import { getRandomPlayerPokemon, getRandomSpeciesByStarterCost } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { isNullOrUndefined, randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** i18n namespace for encounter */ const namespace = "mysteryEncounters/darkDeal"; diff --git a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts index 842fc9d73bd..66f50f134dd 100644 --- a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts +++ b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts @@ -1,42 +1,41 @@ -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { - CombinationPokemonRequirement, - HeldItemRequirement, - MoneyRequirement, -} from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { - generateModifierType, - leaveEncounterWithoutBattle, - selectPokemonForOption, - updatePlayerMoney, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import type { PokemonHeldItemModifier, PokemonInstantReviveModifier } from "#app/modifier/modifier"; +import { timedEventManager } from "#app/global-event-manager"; +import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import type { PokemonHeldItemModifier, PokemonInstantReviveModifier } from "#modifiers/modifier"; import { BerryModifier, HealingBoosterModifier, LevelIncrementBoosterModifier, MoneyMultiplierModifier, PreserveBerryModifier, -} from "#app/modifier/modifier"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import i18next from "#app/plugins/i18n"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import { randSeedItem } from "#app/utils/common"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import { timedEventManager } from "#app/global-event-manager"; +} from "#modifiers/modifier"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { getEncounterText, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import { + generateModifierType, + leaveEncounterWithoutBattle, + selectPokemonForOption, + updatePlayerMoney, +} from "#mystery-encounters/encounter-phase-utils"; +import { applyModifierTypeToPlayerPokemon } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { + CombinationPokemonRequirement, + HeldItemRequirement, + MoneyRequirement, +} from "#mystery-encounters/mystery-encounter-requirements"; +import i18next from "#plugins/i18n"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { randSeedItem } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** the i18n namespace for this encounter */ const namespace = "mysteryEncounters/delibirdy"; diff --git a/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts b/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts index 46152a7dc41..a45c5301a3e 100644 --- a/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts +++ b/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts @@ -1,16 +1,13 @@ -import { - leaveEncounterWithoutBattle, - setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type { ModifierTypeFunc } from "#app/@types/modifier-types"; -import { modifierTypes } from "#app/data/data-lists"; -import { randSeedInt } from "#app/utils/common"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { modifierTypes } from "#data/data-lists"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { leaveEncounterWithoutBattle, setEncounterRewards } from "#mystery-encounters/encounter-phase-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import type { ModifierTypeFunc } from "#types/modifier-types"; +import { randSeedInt } from "#utils/common"; /** i18n namespace for encounter */ const namespace = "mysteryEncounters/departmentStoreSale"; diff --git a/src/data/mystery-encounters/encounters/field-trip-encounter.ts b/src/data/mystery-encounters/encounters/field-trip-encounter.ts index 6ab0f8a6a4b..9c655e70b8c 100644 --- a/src/data/mystery-encounters/encounters/field-trip-encounter.ts +++ b/src/data/mystery-encounters/encounters/field-trip-encounter.ts @@ -1,25 +1,25 @@ -import { MoveCategory } from "#enums/MoveCategory"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; +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/move-category"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Stat } from "#enums/stat"; +import type { PlayerPokemon } from "#field/pokemon"; +import type { PokemonMove } from "#moves/pokemon-move"; import { generateModifierTypeOption, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterExp, setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type { PokemonMove } from "#app/data/moves/pokemon-move"; -import { modifierTypes } from "#app/data/data-lists"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { Stat } from "#enums/stat"; +} from "#mystery-encounters/encounter-phase-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; import i18next from "i18next"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; /** i18n namespace for the encounter */ const namespace = "mysteryEncounters/fieldTrip"; diff --git a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts index e8900f8def4..7d2583a00cb 100644 --- a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts +++ b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts @@ -1,52 +1,52 @@ -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { EncounterBattleAnim } from "#data/battle-anims"; +import { allAbilities, modifierTypes } from "#data/data-lists"; +import { Gender } from "#data/gender"; +import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { EncounterAnim } from "#enums/encounter-anims"; +import { MoveId } from "#enums/move-id"; +import { MoveUseMode } from "#enums/move-use-mode"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import { StatusEffect } from "#enums/status-effect"; +import { WeatherType } from "#enums/weather-type"; +import type { Pokemon } from "#field/pokemon"; +import type { AttackTypeBoosterModifierType } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { + generateModifierType, initBattleWithEnemyConfig, - loadCustomMovesForEncounter, leaveEncounterWithoutBattle, + loadCustomMovesForEncounter, setEncounterExp, setEncounterRewards, transitionMysteryEncounterIntroVisuals, - generateModifierType, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type { AttackTypeBoosterModifierType } from "#app/modifier/modifier-type"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { - AbilityRequirement, - CombinationPokemonRequirement, - TypeRequirement, -} from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { SpeciesId } from "#enums/species-id"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { Gender } from "#app/data/gender"; -import { PokemonType } from "#enums/pokemon-type"; -import { BattlerIndex } from "#enums/battler-index"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { MoveId } from "#enums/move-id"; -import { EncounterBattleAnim } from "#app/data/battle-anims"; -import { WeatherType } from "#enums/weather-type"; -import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; -import { StatusEffect } from "#enums/status-effect"; -import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; +} from "#mystery-encounters/encounter-phase-utils"; import { applyAbilityOverrideToPokemon, applyDamageToPokemon, applyModifierTypeToPlayerPokemon, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { EncounterAnim } from "#enums/encounter-anims"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { Stat } from "#enums/stat"; -import { FIRE_RESISTANT_ABILITIES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import { MoveUseMode } from "#enums/move-use-mode"; -import { allAbilities, modifierTypes } from "#app/data/data-lists"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { + AbilityRequirement, + CombinationPokemonRequirement, + TypeRequirement, +} from "#mystery-encounters/mystery-encounter-requirements"; +import { FIRE_RESISTANT_ABILITIES } from "#mystery-encounters/requirement-groups"; +import { isNullOrUndefined, randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/fieryFallout"; diff --git a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts index c53ff610c48..6ee2ebcdf67 100644 --- a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts +++ b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts @@ -1,35 +1,35 @@ -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { Pokemon } from "#field/pokemon"; +import type { ModifierTypeOption } from "#modifiers/modifier-type"; +import { getPlayerModifierTypeOptions, regenerateModifierPoolThresholds } from "#modifiers/modifier-type"; +import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { getRandomEncounterSpecies, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterExp, setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { STEALING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import type Pokemon from "#app/field/pokemon"; -import { ModifierTier } from "#enums/modifier-tier"; -import type { ModifierTypeOption } from "#app/modifier/modifier-type"; -import { getPlayerModifierTypeOptions, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +} from "#mystery-encounters/encounter-phase-utils"; import { getEncounterPokemonLevelForWave, getSpriteKeysFromPokemon, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import PokemonData from "#app/system/pokemon-data"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { randSeedInt } from "#app/utils/common"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoveRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { STEALING_MOVES } from "#mystery-encounters/requirement-groups"; +import { PokemonData } from "#system/pokemon-data"; +import { randSeedInt } from "#utils/common"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/fightOrFlight"; diff --git a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts index 9611560fe62..bf376c04843 100644 --- a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts +++ b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts @@ -1,35 +1,34 @@ +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { modifierTypes } from "#data/data-lists"; +import { SpeciesFormChangeActiveTrigger } from "#data/form-change-triggers"; +import { getPokeballAtlasKey, getPokeballTintColor } from "#data/pokeball"; +import { FieldPosition } from "#enums/field-position"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { PlayerGender } from "#enums/player-gender"; +import { SpeciesId } from "#enums/species-id"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { addPokeballOpenParticles } from "#field/anims"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; import { leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterRewards, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { TrainerSlot } from "#enums/trainer-slot"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { FieldPosition } from "#enums/field-position"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { SpeciesId } from "#enums/species-id"; +} from "#mystery-encounters/encounter-phase-utils"; +import { isPokemonValidForEncounterOptionSelection } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoneyRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { PlayerGender } from "#enums/player-gender"; -import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball"; -import { addPokeballOpenParticles } from "#app/field/anims"; -import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { modifierTypes } from "#app/data/data-lists"; -import { Nature } from "#enums/nature"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { isPokemonValidForEncounterOptionSelection } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/funAndGames"; 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 6bbc1a68772..b914927123a 100644 --- a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts +++ b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts @@ -1,58 +1,50 @@ -import { - leaveEncounterWithoutBattle, - selectPokemonForOption, - setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { ModifierTier } from "#enums/modifier-tier"; -import { MusicPreference } from "#app/system/settings/settings"; -import type { ModifierTypeOption } from "#app/modifier/modifier-type"; -import { getPlayerModifierTypeOptions, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { timedEventManager } from "#app/global-event-manager"; import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { SpeciesId } from "#enums/species-id"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { allSpecies } from "#app/data/data-lists"; -import { getTypeRgb } from "#app/data/type"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; +import { allSpecies } from "#data/data-lists"; +import { Gender, getGenderSymbol } from "#data/gender"; +import { getNatureName } from "#data/nature"; +import { getPokeballAtlasKey, getPokeballTintColor } from "#data/pokeball"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { getTypeRgb } from "#data/type"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; +import { ModifierTier } from "#enums/modifier-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { - NumberHolder, - isNullOrUndefined, - randInt, - randSeedInt, - randSeedShuffle, - randSeedItem, -} from "#app/utils/common"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { EnemyPokemon } from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { PokeballType } from "#enums/pokeball"; +import { SpeciesId } from "#enums/species-id"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { TrainerType } from "#enums/trainer-type"; +import { doShinySparkleAnim } from "#field/anims"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import { EnemyPokemon } from "#field/pokemon"; +import type { PokemonHeldItemModifier } from "#modifiers/modifier"; import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier, ShinyRateBoosterModifier, SpeciesStatBoosterModifier, -} from "#app/modifier/modifier"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import PokemonData from "#app/system/pokemon-data"; +} from "#modifiers/modifier"; +import type { ModifierTypeOption } from "#modifiers/modifier-type"; +import { getPlayerModifierTypeOptions, regenerateModifierPoolThresholds } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { getEncounterText, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import { + leaveEncounterWithoutBattle, + selectPokemonForOption, + setEncounterRewards, +} from "#mystery-encounters/encounter-phase-utils"; +import { addPokemonDataToDexAndValidateAchievements } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { PokemonData } from "#system/pokemon-data"; +import { MusicPreference } from "#system/settings"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { isNullOrUndefined, NumberHolder, randInt, randSeedInt, randSeedItem, randSeedShuffle } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import { Gender, getGenderSymbol } from "#app/data/gender"; -import { getNatureName } from "#app/data/nature"; -import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball"; -import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { addPokemonDataToDexAndValidateAchievements } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import type { PokeballType } from "#enums/pokeball"; -import { doShinySparkleAnim } from "#app/field/anims"; -import { TrainerType } from "#enums/trainer-type"; -import { timedEventManager } from "#app/global-event-manager"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/globalTradeSystem"; diff --git a/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts b/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts index 2b54b0a42f5..10f45c21b68 100644 --- a/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts +++ b/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts @@ -1,17 +1,17 @@ -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { leaveEncounterWithoutBattle, setEncounterExp } from "../utils/encounter-phase-utils"; -import { applyDamageToPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; +import { globalScene } from "#app/global-scene"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; +import { PokemonMove } from "#moves/pokemon-move"; +import { leaveEncounterWithoutBattle, setEncounterExp } from "#mystery-encounters/encounter-phase-utils"; +import { applyDamageToPokemon } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; const OPTION_1_REQUIRED_MOVE = MoveId.SURF; const OPTION_2_REQUIRED_MOVE = MoveId.FLY; diff --git a/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts index ae3d905cf91..6f15f150d8b 100644 --- a/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts @@ -1,22 +1,21 @@ -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { - initBattleWithEnemyConfig, - setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import { trainerPartyTemplates } from "#app/data/trainers/TrainerPartyTemplate"; -import { TrainerPartyCompoundTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; import { ModifierTier } from "#enums/modifier-tier"; -import { modifierTypes } from "#app/data/data-lists"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PartyMemberStrength } from "#enums/party-member-strength"; -import { globalScene } from "#app/global-scene"; -import { randSeedInt } from "#app/utils/common"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; +import { initBattleWithEnemyConfig, setEncounterRewards } from "#mystery-encounters/encounter-phase-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { trainerConfigs } from "#trainers/trainer-config"; +import { + TrainerPartyCompoundTemplate, + TrainerPartyTemplate, + trainerPartyTemplates, +} from "#trainers/trainer-party-template"; +import { randSeedInt } from "#utils/common"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/mysteriousChallengers"; diff --git a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts index 321e65d7008..1bc2404dc27 100644 --- a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts @@ -1,28 +1,25 @@ -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { - initBattleWithEnemyConfig, - leaveEncounterWithoutBattle, - setEncounterRewards, - transitionMysteryEncounterIntroVisuals, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { - getHighestLevelPlayerPokemon, - koPlayerPokemon, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; import { ModifierTier } from "#enums/modifier-tier"; -import { randSeedInt } from "#app/utils/common"; import { MoveId } from "#enums/move-id"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; +import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; +import { + initBattleWithEnemyConfig, + leaveEncounterWithoutBattle, + setEncounterRewards, + transitionMysteryEncounterIntroVisuals, +} from "#mystery-encounters/encounter-phase-utils"; +import { getHighestLevelPlayerPokemon, koPlayerPokemon } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** i18n namespace for encounter */ const namespace = "mysteryEncounters/mysteriousChest"; diff --git a/src/data/mystery-encounters/encounters/part-timer-encounter.ts b/src/data/mystery-encounters/encounters/part-timer-encounter.ts index 1074eaf8c81..a865de3b19d 100644 --- a/src/data/mystery-encounters/encounters/part-timer-encounter.ts +++ b/src/data/mystery-encounters/encounters/part-timer-encounter.ts @@ -1,4 +1,11 @@ -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Stat } from "#enums/stat"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import { showEncounterDialogue, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; import { leaveEncounterWithoutBattle, selectPokemonForOption, @@ -6,22 +13,14 @@ import { setEncounterRewards, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { Stat } from "#enums/stat"; -import { CHARMING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; +} from "#mystery-encounters/encounter-phase-utils"; +import { isPokemonValidForEncounterOptionSelection } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoveRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { CHARMING_MOVES } from "#mystery-encounters/requirement-groups"; import i18next from "i18next"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { isPokemonValidForEncounterOptionSelection } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/partTimer"; diff --git a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts index 207e6ca400d..c3400b41327 100644 --- a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts +++ b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts @@ -1,36 +1,36 @@ +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { NON_LEGEND_PARADOX_POKEMON } from "#balance/special-species-groups"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PlayerGender } from "#enums/player-gender"; +import { PokeballType } from "#enums/pokeball"; +import { TrainerSlot } from "#enums/trainer-slot"; +import type { EnemyPokemon } from "#field/pokemon"; +import { HiddenAbilityRateBoosterModifier, IvScannerModifier } from "#modifiers/modifier"; +import { getEncounterText, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; import { initSubsequentOptionSelect, leaveEncounterWithoutBattle, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { HiddenAbilityRateBoosterModifier, IvScannerModifier } from "#app/modifier/modifier"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import { PokeballType } from "#enums/pokeball"; -import { PlayerGender } from "#enums/player-gender"; -import { NumberHolder, randSeedInt } from "#app/utils/common"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; +} from "#mystery-encounters/encounter-phase-utils"; import { doPlayerFlee, doPokemonFlee, getRandomSpeciesByStarterCost, trainerThrowPokeball, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import type { MysteryEncounterOption } from "#mystery-encounters/mystery-encounter-option"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoneyRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { NumberHolder, randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/safariZone"; diff --git a/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts b/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts index 967c105c740..47317c12b50 100644 --- a/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts +++ b/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts @@ -1,32 +1,31 @@ +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; +import { getNatureName } from "#data/nature"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { Nature } from "#enums/nature"; +import { SpeciesId } from "#enums/species-id"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import { getEncounterText, queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils"; import { generateModifierType, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterExp, updatePlayerMoney, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { modifierTypes } from "#app/data/data-lists"; -import { randSeedInt } from "#app/utils/common"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { getEncounterText, queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; +} from "#mystery-encounters/encounter-phase-utils"; import { applyDamageToPokemon, applyModifierTypeToPlayerPokemon, isPokemonValidForEncounterOptionSelection, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import type { Nature } from "#enums/nature"; -import { getNatureName } from "#app/data/nature"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoneyRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { randSeedInt } from "#utils/common"; import i18next from "i18next"; /** the i18n namespace for this encounter */ diff --git a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts index 4169fd6d7c5..cddfef1ef76 100644 --- a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts +++ b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts @@ -1,15 +1,22 @@ -import { STEALING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; +import { CustomPokemonData } from "#data/pokemon-data"; +import { AiType } from "#enums/ai-type"; +import { BattlerIndex } from "#enums/battler-index"; +import { BerryType } from "#enums/berry-type"; +import { MoveId } from "#enums/move-id"; +import { MoveUseMode } from "#enums/move-use-mode"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import type { EnemyPartyConfig, EnemyPokemonConfig } from "../utils/encounter-phase-utils"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig, EnemyPokemonConfig } from "#mystery-encounters/encounter-phase-utils"; import { generateModifierType, initBattleWithEnemyConfig, @@ -17,21 +24,14 @@ import { loadCustomMovesForEncounter, setEncounterExp, setEncounterRewards, -} from "../utils/encounter-phase-utils"; -import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { Nature } from "#enums/nature"; -import { MoveId } from "#enums/move-id"; -import { BattlerIndex } from "#enums/battler-index"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { AiType } from "#enums/ai-type"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { BerryType } from "#enums/berry-type"; -import { Stat } from "#enums/stat"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import { randSeedInt } from "#app/utils/common"; -import { MoveUseMode } from "#enums/move-use-mode"; +} from "#mystery-encounters/encounter-phase-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoveRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { STEALING_MOVES } from "#mystery-encounters/requirement-groups"; +import { randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** i18n namespace for the encounter */ const namespace = "mysteryEncounters/slumberingSnorlax"; diff --git a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts index 9c9232612c6..b547064fd66 100644 --- a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts +++ b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts @@ -1,4 +1,21 @@ -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { modifierTypes } from "#data/data-lists"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { BiomeId } from "#enums/biome-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PokemonType } from "#enums/pokemon-type"; +import { Stat } from "#enums/stat"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { getBiomeKey } from "#field/arena"; +import type { Pokemon } from "#field/pokemon"; +import { EnemyPokemon } from "#field/pokemon"; +import { getPartyLuckValue } from "#modifiers/modifier-type"; +import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { generateModifierTypeOption, initBattleWithEnemyConfig, @@ -6,34 +23,17 @@ import { setEncounterRewards, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { randSeedInt } from "#app/utils/common"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MoneyRequirement, WaveModulusRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import type Pokemon from "#app/field/pokemon"; -import { EnemyPokemon } from "#app/field/pokemon"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import PokemonData from "#app/system/pokemon-data"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { BiomeId } from "#enums/biome-id"; -import { getBiomeKey } from "#app/field/arena"; -import { PokemonType } from "#enums/pokemon-type"; -import { getPartyLuckValue } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { Stat } from "#enums/stat"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +} from "#mystery-encounters/encounter-phase-utils"; import { getEncounterPokemonLevelForWave, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoneyRequirement, WaveModulusRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { PokemonData } from "#system/pokemon-data"; +import { randSeedInt } from "#utils/common"; /** the i18n namespace for this encounter */ const namespace = "mysteryEncounters/teleportingHijinks"; @@ -190,6 +190,7 @@ async function doBiomeTransitionDialogueAndBattleInit() { // Calculate new biome (cannot be current biome) const filteredBiomes = BIOME_CANDIDATES.filter(b => globalScene.arena.biomeType !== b); + // TODO: should this use `randSeedItem`? const newBiome = filteredBiomes[randSeedInt(filteredBiomes.length)]; // Show dialogue and transition biome diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index 03c09f6918e..235bd322ef8 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -1,34 +1,34 @@ -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { globalScene } from "#app/global-scene"; +import { speciesStarterCosts } from "#balance/starters"; +import { modifierTypes } from "#data/data-lists"; +import type { IEggOptions } from "#data/egg"; +import { getPokeballTintColor } from "#data/pokeball"; +import { BiomeId } from "#enums/biome-id"; +import { EggSourceType } from "#enums/egg-source-types"; +import { EggTier } from "#enums/egg-type"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { TrainerType } from "#enums/trainer-type"; +import type { PlayerPokemon } from "#field/pokemon"; +import { getEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { handleMysteryEncounterBattleFailed, initBattleWithEnemyConfig, setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import { randSeedShuffle } from "#app/utils/common"; -import type MysteryEncounter from "../mystery-encounter"; -import { MysteryEncounterBuilder } from "../mystery-encounter"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { BiomeId } from "#enums/biome-id"; -import { TrainerType } from "#enums/trainer-type"; +} from "#mystery-encounters/encounter-phase-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { trainerConfigs } from "#trainers/trainer-config"; +import { randSeedShuffle } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import { SpeciesId } from "#enums/species-id"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import { Nature } from "#enums/nature"; -import { MoveId } from "#enums/move-id"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import type { IEggOptions } from "#app/data/egg"; -import { EggSourceType } from "#enums/egg-source-types"; -import { EggTier } from "#enums/egg-type"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { modifierTypes } from "#app/data/data-lists"; -import { PokemonType } from "#enums/pokemon-type"; -import { getPokeballTintColor } from "#app/data/pokeball"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/theExpertPokemonBreeder"; diff --git a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts index c3bcf9ceb24..91662993a51 100644 --- a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts @@ -1,35 +1,35 @@ +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { timedEventManager } from "#app/global-event-manager"; +import { globalScene } from "#app/global-scene"; +import { NON_LEGEND_PARADOX_POKEMON, NON_LEGEND_ULTRA_BEASTS } from "#balance/special-species-groups"; +import { speciesStarterCosts } from "#balance/starters"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { AbilityId } from "#enums/ability-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PokeballType } from "#enums/pokeball"; +import { SpeciesId } from "#enums/species-id"; +import type { EnemyPokemon } from "#field/pokemon"; +import { PlayerPokemon } from "#field/pokemon"; +import { showEncounterDialogue } from "#mystery-encounters/encounter-dialogue-utils"; import { leaveEncounterWithoutBattle, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils/common"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; +} from "#mystery-encounters/encounter-phase-utils"; import { catchPokemon, getRandomSpeciesByStarterCost, getSpriteKeysFromPokemon, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import { SpeciesId } from "#enums/species-id"; -import { PokeballType } from "#enums/pokeball"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import { PlayerPokemon } from "#app/field/pokemon"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { showEncounterDialogue } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import PokemonData from "#app/system/pokemon-data"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { AbilityId } from "#enums/ability-id"; -import { NON_LEGEND_PARADOX_POKEMON, NON_LEGEND_ULTRA_BEASTS } from "#app/data/balance/special-species-groups"; -import { timedEventManager } from "#app/global-event-manager"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoneyRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { PokemonData } from "#system/pokemon-data"; +import { isNullOrUndefined, randSeedInt, randSeedItem } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** the i18n namespace for this encounter */ const namespace = "mysteryEncounters/thePokemonSalesman"; diff --git a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts index 37d16075543..568dc5de8b1 100644 --- a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts @@ -1,34 +1,34 @@ -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { - initBattleWithEnemyConfig, - loadCustomMovesForEncounter, - leaveEncounterWithoutBattle, - setEncounterRewards, - transitionMysteryEncounterIntroVisuals, - generateModifierType, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { SpeciesId } from "#enums/species-id"; -import { Nature } from "#enums/nature"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { modifyPlayerPokemonBST } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { MoveId } from "#enums/move-id"; +import { modifierTypes } from "#data/data-lists"; +import { CustomPokemonData } from "#data/pokemon-data"; import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import { Stat } from "#enums/stat"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { MoveId } from "#enums/move-id"; import { MoveUseMode } from "#enums/move-use-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import type { Pokemon } from "#field/pokemon"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; +import { + generateModifierType, + initBattleWithEnemyConfig, + leaveEncounterWithoutBattle, + loadCustomMovesForEncounter, + setEncounterRewards, + transitionMysteryEncounterIntroVisuals, +} from "#mystery-encounters/encounter-phase-utils"; +import { modifyPlayerPokemonBST } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/theStrongStuff"; @@ -54,7 +54,7 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder .withFleeAllowed(false) .withIntroSpriteConfigs([ { - spriteKey: "berry_juice", + spriteKey: "berry_juice_good", fileRoot: "items", hasShadow: true, isItem: true, @@ -171,11 +171,11 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder sortedParty.forEach((pokemon, index) => { if (index < 2) { // -15 to the two highest BST mons - modifyPlayerPokemonBST(pokemon, -HIGH_BST_REDUCTION_VALUE); + modifyPlayerPokemonBST(pokemon, false); encounter.setDialogueToken("highBstPokemon" + (index + 1), pokemon.getNameToRender()); } else { // +10 for the rest - modifyPlayerPokemonBST(pokemon, BST_INCREASE_VALUE); + modifyPlayerPokemonBST(pokemon, true); } }); diff --git a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts index 6d28a710953..e17bf0575d7 100644 --- a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts @@ -1,4 +1,24 @@ -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; +import { SpeciesFormChangeAbilityTrigger } from "#data/form-change-triggers"; +import { AbilityId } from "#enums/ability-id"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { BerryType } from "#enums/berry-type"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import { TrainerType } from "#enums/trainer-type"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { showEncounterDialogue, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { generateModifierType, generateModifierTypeOption, @@ -6,31 +26,11 @@ import { leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { TrainerType } from "#enums/trainer-type"; -import { SpeciesId } from "#enums/species-id"; -import { AbilityId } from "#enums/ability-id"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { MoveId } from "#enums/move-id"; -import { Nature } from "#enums/nature"; -import { PokemonType } from "#enums/pokemon-type"; -import { BerryType } from "#enums/berry-type"; -import { Stat } from "#enums/stat"; -import { SpeciesFormChangeAbilityTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +} from "#mystery-encounters/encounter-phase-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import { ModifierTier } from "#enums/modifier-tier"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { BattlerTagType } from "#enums/battler-tag-type"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/theWinstrateChallenge"; diff --git a/src/data/mystery-encounters/encounters/training-session-encounter.ts b/src/data/mystery-encounters/encounters/training-session-encounter.ts index 04e64083602..393f8a24e51 100644 --- a/src/data/mystery-encounters/encounters/training-session-encounter.ts +++ b/src/data/mystery-encounters/encounters/training-session-encounter.ts @@ -1,36 +1,36 @@ -import type { Ability } from "#app/data/abilities/ability"; -import { allAbilities } from "#app/data/data-lists"; -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { Ability } from "#abilities/ability"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { speciesStarterCosts } from "#balance/starters"; +import { allAbilities } from "#data/data-lists"; +import { getNatureName } from "#data/nature"; +import { AbilityAttr } from "#enums/ability-attr"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { getStatKey } from "#enums/stat"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import type { PokemonHeldItemModifier } from "#modifiers/modifier"; +import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { getNatureName } from "#app/data/nature"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { AbilityAttr } from "#enums/ability-attr"; -import PokemonData from "#app/system/pokemon-data"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import { isNullOrUndefined, randSeedShuffle } from "#app/utils/common"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import type HeldModifierConfig from "#app/@types/held-modifier-config"; +} from "#mystery-encounters/encounter-phase-utils"; +import { isPokemonValidForEncounterOptionSelection } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { PokemonData } from "#system/pokemon-data"; +import type { HeldModifierConfig } from "#types/held-modifier-config"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { isNullOrUndefined, randSeedShuffle } from "#utils/common"; +import { getEnumValues } from "#utils/enums"; import i18next from "i18next"; -import { getStatKey } from "#enums/stat"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { isPokemonValidForEncounterOptionSelection } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import type { Nature } from "#enums/nature"; /** The i18n namespace for the encounter */ const namespace = "mysteryEncounters/trainingSession"; @@ -184,10 +184,9 @@ export const TrainingSessionEncounter: MysteryEncounter = MysteryEncounterBuilde .withPreOptionPhase(async (): Promise => { // Open menu for selecting pokemon and Nature const encounter = globalScene.currentBattle.mysteryEncounter!; - const natures = new Array(25).fill(null).map((_val, i) => i as Nature); const onPokemonSelected = (pokemon: PlayerPokemon) => { // Return the options for nature selection - return natures.map((nature: Nature) => { + return getEnumValues(Nature).map((nature: Nature) => { const option: OptionSelectItem = { label: getNatureName(nature, true, true, true, globalScene.uiTheme), handler: () => { diff --git a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts index e2a740c4900..452a9a8bb4b 100644 --- a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts +++ b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts @@ -1,4 +1,19 @@ -import type { EnemyPartyConfig, EnemyPokemonConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; +import { BattlerIndex } from "#enums/battler-index"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MoveId } from "#enums/move-id"; +import { MoveUseMode } from "#enums/move-use-mode"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; +import { HitHealModifier, PokemonHeldItemModifier, TurnHealModifier } from "#modifiers/modifier"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig, EnemyPokemonConfig } from "#mystery-encounters/encounter-phase-utils"; import { generateModifierType, initBattleWithEnemyConfig, @@ -6,29 +21,14 @@ import { loadCustomMovesForEncounter, setEncounterRewards, transitionMysteryEncounterIntroVisuals, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { SpeciesId } from "#enums/species-id"; -import { HitHealModifier, PokemonHeldItemModifier, TurnHealModifier } from "#app/modifier/modifier"; -import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import i18next from "#app/plugins/i18n"; -import { ModifierTier } from "#enums/modifier-tier"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { MoveId } from "#enums/move-id"; -import { BattlerIndex } from "#enums/battler-index"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { randSeedInt } from "#app/utils/common"; -import { MoveUseMode } from "#enums/move-use-mode"; +} from "#mystery-encounters/encounter-phase-utils"; +import { applyModifierTypeToPlayerPokemon } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import i18next from "#plugins/i18n"; +import { randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** the i18n namespace for this encounter */ const namespace = "mysteryEncounters/trashToTreasure"; diff --git a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts index 44e578540dd..c9e2ffedeec 100644 --- a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts +++ b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts @@ -1,42 +1,38 @@ -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; +import { globalScene } from "#app/global-scene"; +import { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import type { MoveId } from "#enums/move-id"; +import { MoveUseMode } from "#enums/move-use-mode"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PokeballType } from "#enums/pokeball"; +import { Stat } from "#enums/stat"; +import type { EnemyPokemon, Pokemon } from "#field/pokemon"; +import { BerryModifier } from "#modifiers/modifier"; +import { PokemonMove } from "#moves/pokemon-move"; +import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; import { getRandomEncounterSpecies, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterExp, setEncounterRewards, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { CHARMING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import type Pokemon from "#app/field/pokemon"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { - MoveRequirement, - PersistentModifierRequirement, -} from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +} from "#mystery-encounters/encounter-phase-utils"; import { catchPokemon, getHighestLevelPlayerPokemon, getSpriteKeysFromPokemon, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import PokemonData from "#app/system/pokemon-data"; -import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; -import type { MoveId } from "#enums/move-id"; -import { BattlerIndex } from "#enums/battler-index"; -import { PokeballType } from "#enums/pokeball"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { BerryModifier } from "#app/modifier/modifier"; -import { Stat } from "#enums/stat"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; -import { MoveUseMode } from "#enums/move-use-mode"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import { MoveRequirement, PersistentModifierRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { CHARMING_MOVES } from "#mystery-encounters/requirement-groups"; +import { PokemonData } from "#system/pokemon-data"; +import { isNullOrUndefined, randSeedInt } from "#utils/common"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/uncommonBreed"; diff --git a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts index 1ba756c7f5d..1164d2ca7ca 100644 --- a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts +++ b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts @@ -1,49 +1,46 @@ -import { PokemonType } from "#enums/pokemon-type"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import type { EnemyPartyConfig, EnemyPokemonConfig } from "../utils/encounter-phase-utils"; +import { allSpecies, modifierTypes } from "#data/data-lists"; +import { getLevelTotalExp } from "#data/exp"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { Challenges } from "#enums/challenges"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { PartyMemberStrength } from "#enums/party-member-strength"; +import { PlayerGender } from "#enums/player-gender"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { TrainerType } from "#enums/trainer-type"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import type { PokemonHeldItemModifier } from "#modifiers/modifier"; +import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier } from "#modifiers/modifier"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { EnemyPartyConfig, EnemyPokemonConfig } from "#mystery-encounters/encounter-phase-utils"; import { generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, -} from "../utils/encounter-phase-utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { NumberHolder, isNullOrUndefined, randSeedInt, randSeedShuffle } from "#app/utils/common"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { allSpecies } from "#app/data/data-lists"; -import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier } from "#app/modifier/modifier"; -import { achvs } from "#app/system/achv"; -import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import i18next from "#app/plugins/i18n"; +} from "#mystery-encounters/encounter-phase-utils"; import { doPokemonTransformationSequence, TransformationScreenPosition, -} from "#app/data/mystery-encounters/utils/encounter-transformation-sequence"; -import { getLevelTotalExp } from "#app/data/exp"; -import { Stat } from "#enums/stat"; -import { Challenges } from "#enums/challenges"; -import { ModifierTier } from "#enums/modifier-tier"; -import { PlayerGender } from "#enums/player-gender"; -import { TrainerType } from "#enums/trainer-type"; -import PokemonData from "#app/system/pokemon-data"; -import { Nature } from "#enums/nature"; -import type HeldModifierConfig from "#app/@types/held-modifier-config"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { PartyMemberStrength } from "#enums/party-member-strength"; +} from "#mystery-encounters/encounter-transformation-sequence"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; +import i18next from "#plugins/i18n"; +import { achvs } from "#system/achv"; +import { PokemonData } from "#system/pokemon-data"; +import { trainerConfigs } from "#trainers/trainer-config"; +import { TrainerPartyTemplate } from "#trainers/trainer-party-template"; +import type { HeldModifierConfig } from "#types/held-modifier-config"; +import { isNullOrUndefined, NumberHolder, randSeedInt, randSeedShuffle } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** i18n namespace for encounter */ const namespace = "mysteryEncounters/weirdDream"; @@ -104,8 +101,6 @@ const EXCLUDED_TRANSFORMATION_SPECIES = [ const SUPER_LEGENDARY_BST_THRESHOLD = 600; const NON_LEGENDARY_BST_THRESHOLD = 570; -const OLD_GATEAU_STATS_UP = 20; - /** 0-100 */ const PERCENT_LEVEL_LOSS_ON_REFUSE = 10; @@ -275,12 +270,8 @@ export const WeirdDreamEncounter: MysteryEncounter = MysteryEncounterBuilder.wit } // Any pokemon that is below 570 BST gets +20 permanent BST to 3 stats if (shouldGetOldGateau(newPokemon)) { - const stats = getOldGateauBoostedStats(newPokemon); newPokemonHeldItemConfigs.push({ - modifier: generateModifierType(modifierTypes.MYSTERY_ENCOUNTER_OLD_GATEAU, [ - OLD_GATEAU_STATS_UP, - stats, - ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.MYSTERY_ENCOUNTER_OLD_GATEAU) as PokemonHeldItemModifierType, stackCount: 1, isTransferable: false, }); @@ -314,6 +305,7 @@ export const WeirdDreamEncounter: MysteryEncounter = MysteryEncounterBuilder.wit // One random pokemon will get its passive unlocked const passiveDisabledPokemon = globalScene.getPlayerParty().filter(p => !p.passive); if (passiveDisabledPokemon?.length > 0) { + // TODO: should this use `randSeedItem`? const enablePassiveMon = passiveDisabledPokemon[randSeedInt(passiveDisabledPokemon.length)]; enablePassiveMon.passive = true; enablePassiveMon.updateInfo(true); @@ -461,11 +453,7 @@ async function doNewTeamPostProcess(transformations: PokemonTransformation[]) { } // Any pokemon that is below 570 BST gets +20 permanent BST to 3 stats if (shouldGetOldGateau(newPokemon)) { - const stats = getOldGateauBoostedStats(newPokemon); - const modType = modifierTypes - .MYSTERY_ENCOUNTER_OLD_GATEAU() - .generateType(globalScene.getPlayerParty(), [OLD_GATEAU_STATS_UP, stats]) - ?.withIdFromFunc(modifierTypes.MYSTERY_ENCOUNTER_OLD_GATEAU); + const modType = modifierTypes.MYSTERY_ENCOUNTER_OLD_GATEAU(); const modifier = modType?.newModifier(newPokemon); if (modifier) { globalScene.addModifier(modifier, false, false, false, true); @@ -479,6 +467,7 @@ async function doNewTeamPostProcess(transformations: PokemonTransformation[]) { // One random pokemon will get its passive unlocked const passiveDisabledPokemon = globalScene.getPlayerParty().filter(p => !p.passive); if (passiveDisabledPokemon?.length > 0) { + // TODO: should this use `randSeedItem`? const enablePassiveMon = passiveDisabledPokemon[randSeedInt(passiveDisabledPokemon.length)]; enablePassiveMon.passive = true; await enablePassiveMon.updateInfo(true); @@ -616,22 +605,6 @@ function shouldGetOldGateau(pokemon: Pokemon): boolean { return pokemon.getSpeciesForm().getBaseStatTotal() < NON_LEGENDARY_BST_THRESHOLD; } -/** - * Get the lowest of HP/Spd, lowest of Atk/SpAtk, and lowest of Def/SpDef - * @returns Array of 3 {@linkcode Stat}s to boost - */ -function getOldGateauBoostedStats(pokemon: Pokemon): Stat[] { - const stats: Stat[] = []; - const baseStats = pokemon.getSpeciesForm().baseStats.slice(0); - // HP or Speed - stats.push(baseStats[Stat.HP] < baseStats[Stat.SPD] ? Stat.HP : Stat.SPD); - // Attack or SpAtk - stats.push(baseStats[Stat.ATK] < baseStats[Stat.SPATK] ? Stat.ATK : Stat.SPATK); - // Def or SpDef - stats.push(baseStats[Stat.DEF] < baseStats[Stat.SPDEF] ? Stat.DEF : Stat.SPDEF); - return stats; -} - function getTransformedSpecies( originalBst: number, bstSearchRange: [number, number], diff --git a/src/data/mystery-encounters/mystery-encounter-dialogue.ts b/src/data/mystery-encounters/mystery-encounter-dialogue.ts index 71e1b382f61..42383940755 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 "#app/ui/text"; +import type { TextStyle } from "#ui/text"; export class TextDisplay { speaker?: string; @@ -67,7 +67,7 @@ export class EncounterOptionsDialogue { } * */ -export default class MysteryEncounterDialogue { +export class MysteryEncounterDialogue { intro?: TextDisplay[]; encounterOptionsDialogue?: EncounterOptionsDialogue; outro?: TextDisplay[]; diff --git a/src/data/mystery-encounters/mystery-encounter-option.ts b/src/data/mystery-encounters/mystery-encounter-option.ts index 53b53392bb8..504310eeabd 100644 --- a/src/data/mystery-encounters/mystery-encounter-option.ts +++ b/src/data/mystery-encounters/mystery-encounter-option.ts @@ -1,19 +1,18 @@ -import type { OptionTextDisplay } from "#app/data/mystery-encounters/mystery-encounter-dialogue"; -import type { MoveId } from "#enums/move-id"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; import { globalScene } from "#app/global-scene"; +import type { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import type { PokemonType } from "#enums/pokemon-type"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import type { CanLearnMoveRequirementOptions } from "#mystery-encounters/can-learn-move-requirement"; +import { CanLearnMoveRequirement } from "#mystery-encounters/can-learn-move-requirement"; +import type { OptionTextDisplay } from "#mystery-encounters/mystery-encounter-dialogue"; import { EncounterPokemonRequirement, EncounterSceneRequirement, MoneyRequirement, TypeRequirement, -} from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import type { CanLearnMoveRequirementOptions } from "./requirements/can-learn-move-requirement"; -import { CanLearnMoveRequirement } from "./requirements/can-learn-move-requirement"; -import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +} from "#mystery-encounters/mystery-encounter-requirements"; +import { isNullOrUndefined, randSeedInt } from "#utils/common"; // biome-ignore lint/suspicious/noConfusingVoidType: void unions in callbacks are OK export type OptionPhaseCallback = () => Promise; @@ -39,7 +38,7 @@ export interface IMysteryEncounterOption { onPostOptionPhase?: OptionPhaseCallback; } -export default class MysteryEncounterOption implements IMysteryEncounterOption { +export class MysteryEncounterOption implements IMysteryEncounterOption { optionMode: MysteryEncounterOptionMode; hasDexProgress: boolean; requirements: EncounterSceneRequirement[]; @@ -145,11 +144,13 @@ export default class MysteryEncounterOption implements IMysteryEncounterOption { } if (truePrimaryPool.length > 0) { // always choose from the non-overlapping pokemon first + // TODO: should this use `randSeedItem`? this.primaryPokemon = truePrimaryPool[randSeedInt(truePrimaryPool.length)]; return true; } // if there are multiple overlapping pokemon, we're okay - just choose one and take it out of the supporting pokemon pool if (overlap.length > 1 || this.secondaryPokemon.length - overlap.length >= 1) { + // TODO: should this use `randSeedItem`? this.primaryPokemon = overlap[randSeedInt(overlap.length)]; this.secondaryPokemon = this.secondaryPokemon.filter(supp => supp !== this.primaryPokemon); return true; diff --git a/src/data/mystery-encounters/mystery-encounter-requirements.ts b/src/data/mystery-encounters/mystery-encounter-requirements.ts index 07fd155b2b2..d71964db4b8 100644 --- a/src/data/mystery-encounters/mystery-encounter-requirements.ts +++ b/src/data/mystery-encounters/mystery-encounter-requirements.ts @@ -1,21 +1,21 @@ import { globalScene } from "#app/global-scene"; -import { allAbilities } from "../data-lists"; -import { Nature } from "#enums/nature"; -import { pokemonFormChanges } from "#app/data/pokemon-forms"; -import { SpeciesFormChangeItemTrigger } from "../pokemon-forms/form-change-triggers"; -import { FormChangeItem } from "#enums/form-change-item"; -import { StatusEffect } from "#enums/status-effect"; -import { PokemonType } from "#enums/pokemon-type"; -import { WeatherType } from "#enums/weather-type"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import { AttackTypeBoosterModifier } from "#app/modifier/modifier"; -import type { AttackTypeBoosterModifierType } from "#app/modifier/modifier-type"; -import { coerceArray, isNullOrUndefined } from "#app/utils/common"; +import { allAbilities } from "#data/data-lists"; +import { SpeciesFormChangeItemTrigger } from "#data/form-change-triggers"; +import { pokemonFormChanges } from "#data/pokemon-forms"; import type { AbilityId } from "#enums/ability-id"; +import { FormChangeItem } from "#enums/form-change-item"; import { MoveId } from "#enums/move-id"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; +import { StatusEffect } from "#enums/status-effect"; import { TimeOfDay } from "#enums/time-of-day"; +import { WeatherType } from "#enums/weather-type"; +import type { PlayerPokemon } from "#field/pokemon"; +import { AttackTypeBoosterModifier } from "#modifiers/modifier"; +import type { AttackTypeBoosterModifierType } from "#modifiers/modifier-type"; +import { coerceArray, isNullOrUndefined } from "#utils/common"; export interface EncounterRequirement { meetsRequirement(): boolean; // Boolean to see if a requirement is met diff --git a/src/data/mystery-encounters/mystery-encounter-save-data.ts b/src/data/mystery-encounters/mystery-encounter-save-data.ts index 20c10c7c5b9..f04abccba5f 100644 --- a/src/data/mystery-encounters/mystery-encounter-save-data.ts +++ b/src/data/mystery-encounters/mystery-encounter-save-data.ts @@ -1,7 +1,7 @@ -import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { BASE_MYSTERY_ENCOUNTER_SPAWN_WEIGHT } from "#app/constants"; -import { isNullOrUndefined } from "#app/utils/common"; import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { isNullOrUndefined } from "#utils/common"; export class SeenEncounterData { type: MysteryEncounterType; diff --git a/src/data/mystery-encounters/mystery-encounter.ts b/src/data/mystery-encounters/mystery-encounter.ts index fa97a7f4d40..a2ca2b20ce7 100644 --- a/src/data/mystery-encounters/mystery-encounter.ts +++ b/src/data/mystery-encounters/mystery-encounter.ts @@ -1,18 +1,22 @@ -import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type { PokemonMove } from "../moves/pokemon-move"; -import type Pokemon from "#app/field/pokemon"; -import { capitalizeFirstLetter, coerceArray, isNullOrUndefined } from "#app/utils/common"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#enums/battler-index"; +import type { Challenges } from "#enums/challenges"; +import type { EncounterAnim } from "#enums/encounter-anims"; +import type { GameModes } from "#enums/game-modes"; +import type { MoveUseMode } from "#enums/move-use-mode"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import type { MysteryEncounterSpriteConfig } from "#app/field/mystery-encounter-intro"; -import MysteryEncounterIntroVisuals from "#app/field/mystery-encounter-intro"; -import { randSeedInt } from "#app/utils/common"; import type { StatusEffect } from "#enums/status-effect"; -import type { OptionTextDisplay } from "./mystery-encounter-dialogue"; -import type MysteryEncounterDialogue from "./mystery-encounter-dialogue"; -import type { OptionPhaseCallback } from "./mystery-encounter-option"; -import type MysteryEncounterOption from "./mystery-encounter-option"; -import { MysteryEncounterOptionBuilder } from "./mystery-encounter-option"; +import type { MysteryEncounterSpriteConfig } from "#field/mystery-encounter-intro"; +import { MysteryEncounterIntroVisuals } from "#field/mystery-encounter-intro"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import type { PokemonMove } from "#moves/pokemon-move"; +import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils"; +import type { MysteryEncounterDialogue, OptionTextDisplay } from "#mystery-encounters/mystery-encounter-dialogue"; +import type { MysteryEncounterOption, OptionPhaseCallback } from "#mystery-encounters/mystery-encounter-option"; +import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; import { EncounterPokemonRequirement, EncounterSceneRequirement, @@ -20,16 +24,8 @@ import { PartySizeRequirement, StatusEffectRequirement, WaveRangeRequirement, -} from "./mystery-encounter-requirements"; -import type { BattlerIndex } from "#enums/battler-index"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import type { GameModes } from "#enums/game-modes"; -import type { EncounterAnim } from "#enums/encounter-anims"; -import type { Challenges } from "#enums/challenges"; -import { globalScene } from "#app/global-scene"; -import type { MoveUseMode } from "#enums/move-use-mode"; +} from "#mystery-encounters/mystery-encounter-requirements"; +import { capitalizeFirstLetter, coerceArray, isNullOrUndefined, randSeedInt } from "#utils/common"; export interface EncounterStartOfBattleEffect { sourcePokemon?: Pokemon; @@ -91,7 +87,7 @@ export interface IMysteryEncounter { * These objects will be saved as part of session data any time the player is on a floor with an encounter * Unless you know what you're doing, you should use MysteryEncounterBuilder to create an instance for this class */ -export default class MysteryEncounter implements IMysteryEncounter { +export class MysteryEncounter implements IMysteryEncounter { // #region Required params encounterType: MysteryEncounterType; @@ -385,6 +381,7 @@ export default class MysteryEncounter implements IMysteryEncounter { // If there are multiple overlapping pokemon, we're okay - just choose one and take it out of the primary pokemon pool if (overlap.length > 1 || this.secondaryPokemon.length - overlap.length >= 1) { // is this working? + // TODO: should this use `randSeedItem`? this.primaryPokemon = overlap[randSeedInt(overlap.length, 0)]; this.secondaryPokemon = this.secondaryPokemon.filter(supp => supp !== this.primaryPokemon); return true; @@ -395,6 +392,7 @@ export default class MysteryEncounter implements IMysteryEncounter { return false; } // this means we CAN have the same pokemon be a primary and secondary pokemon, so just choose any qualifying one randomly. + // TODO: should this use `randSeedItem`? this.primaryPokemon = qualified[randSeedInt(qualified.length, 0)]; return true; } diff --git a/src/data/mystery-encounters/mystery-encounters.ts b/src/data/mystery-encounters/mystery-encounters.ts index 5ee289a6c56..34eac5cab94 100644 --- a/src/data/mystery-encounters/mystery-encounters.ts +++ b/src/data/mystery-encounters/mystery-encounters.ts @@ -1,38 +1,38 @@ +import { getBiomeName } from "#balance/biomes"; import { BiomeId } from "#enums/biome-id"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { DarkDealEncounter } from "./encounters/dark-deal-encounter"; -import { DepartmentStoreSaleEncounter } from "./encounters/department-store-sale-encounter"; -import { FieldTripEncounter } from "./encounters/field-trip-encounter"; -import { FightOrFlightEncounter } from "./encounters/fight-or-flight-encounter"; -import { LostAtSeaEncounter } from "./encounters/lost-at-sea-encounter"; -import { MysteriousChallengersEncounter } from "./encounters/mysterious-challengers-encounter"; -import { MysteriousChestEncounter } from "./encounters/mysterious-chest-encounter"; -import { ShadyVitaminDealerEncounter } from "./encounters/shady-vitamin-dealer-encounter"; -import { SlumberingSnorlaxEncounter } from "./encounters/slumbering-snorlax-encounter"; -import { TrainingSessionEncounter } from "./encounters/training-session-encounter"; -import type MysteryEncounter from "./mystery-encounter"; -import { SafariZoneEncounter } from "#app/data/mystery-encounters/encounters/safari-zone-encounter"; -import { FieryFalloutEncounter } from "#app/data/mystery-encounters/encounters/fiery-fallout-encounter"; -import { TheStrongStuffEncounter } from "#app/data/mystery-encounters/encounters/the-strong-stuff-encounter"; -import { ThePokemonSalesmanEncounter } from "#app/data/mystery-encounters/encounters/the-pokemon-salesman-encounter"; -import { AnOfferYouCantRefuseEncounter } from "#app/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter"; -import { DelibirdyEncounter } from "#app/data/mystery-encounters/encounters/delibirdy-encounter"; -import { AbsoluteAvariceEncounter } from "#app/data/mystery-encounters/encounters/absolute-avarice-encounter"; -import { ATrainersTestEncounter } from "#app/data/mystery-encounters/encounters/a-trainers-test-encounter"; -import { TrashToTreasureEncounter } from "#app/data/mystery-encounters/encounters/trash-to-treasure-encounter"; -import { BerriesAboundEncounter } from "#app/data/mystery-encounters/encounters/berries-abound-encounter"; -import { ClowningAroundEncounter } from "#app/data/mystery-encounters/encounters/clowning-around-encounter"; -import { PartTimerEncounter } from "#app/data/mystery-encounters/encounters/part-timer-encounter"; -import { DancingLessonsEncounter } from "#app/data/mystery-encounters/encounters/dancing-lessons-encounter"; -import { WeirdDreamEncounter } from "#app/data/mystery-encounters/encounters/weird-dream-encounter"; -import { TheWinstrateChallengeEncounter } from "#app/data/mystery-encounters/encounters/the-winstrate-challenge-encounter"; -import { TeleportingHijinksEncounter } from "#app/data/mystery-encounters/encounters/teleporting-hijinks-encounter"; -import { BugTypeSuperfanEncounter } from "#app/data/mystery-encounters/encounters/bug-type-superfan-encounter"; -import { FunAndGamesEncounter } from "#app/data/mystery-encounters/encounters/fun-and-games-encounter"; -import { UncommonBreedEncounter } from "#app/data/mystery-encounters/encounters/uncommon-breed-encounter"; -import { GlobalTradeSystemEncounter } from "#app/data/mystery-encounters/encounters/global-trade-system-encounter"; -import { TheExpertPokemonBreederEncounter } from "#app/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter"; -import { getBiomeName } from "#app/data/balance/biomes"; +import { ATrainersTestEncounter } from "#mystery-encounters/a-trainers-test-encounter"; +import { AbsoluteAvariceEncounter } from "#mystery-encounters/absolute-avarice-encounter"; +import { AnOfferYouCantRefuseEncounter } from "#mystery-encounters/an-offer-you-cant-refuse-encounter"; +import { BerriesAboundEncounter } from "#mystery-encounters/berries-abound-encounter"; +import { BugTypeSuperfanEncounter } from "#mystery-encounters/bug-type-superfan-encounter"; +import { ClowningAroundEncounter } from "#mystery-encounters/clowning-around-encounter"; +import { DancingLessonsEncounter } from "#mystery-encounters/dancing-lessons-encounter"; +import { DarkDealEncounter } from "#mystery-encounters/dark-deal-encounter"; +import { DelibirdyEncounter } from "#mystery-encounters/delibirdy-encounter"; +import { DepartmentStoreSaleEncounter } from "#mystery-encounters/department-store-sale-encounter"; +import { FieldTripEncounter } from "#mystery-encounters/field-trip-encounter"; +import { FieryFalloutEncounter } from "#mystery-encounters/fiery-fallout-encounter"; +import { FightOrFlightEncounter } from "#mystery-encounters/fight-or-flight-encounter"; +import { FunAndGamesEncounter } from "#mystery-encounters/fun-and-games-encounter"; +import { GlobalTradeSystemEncounter } from "#mystery-encounters/global-trade-system-encounter"; +import { LostAtSeaEncounter } from "#mystery-encounters/lost-at-sea-encounter"; +import { MysteriousChallengersEncounter } from "#mystery-encounters/mysterious-challengers-encounter"; +import { MysteriousChestEncounter } from "#mystery-encounters/mysterious-chest-encounter"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { PartTimerEncounter } from "#mystery-encounters/part-timer-encounter"; +import { SafariZoneEncounter } from "#mystery-encounters/safari-zone-encounter"; +import { ShadyVitaminDealerEncounter } from "#mystery-encounters/shady-vitamin-dealer-encounter"; +import { SlumberingSnorlaxEncounter } from "#mystery-encounters/slumbering-snorlax-encounter"; +import { TeleportingHijinksEncounter } from "#mystery-encounters/teleporting-hijinks-encounter"; +import { TheExpertPokemonBreederEncounter } from "#mystery-encounters/the-expert-pokemon-breeder-encounter"; +import { ThePokemonSalesmanEncounter } from "#mystery-encounters/the-pokemon-salesman-encounter"; +import { TheStrongStuffEncounter } from "#mystery-encounters/the-strong-stuff-encounter"; +import { TheWinstrateChallengeEncounter } from "#mystery-encounters/the-winstrate-challenge-encounter"; +import { TrainingSessionEncounter } from "#mystery-encounters/training-session-encounter"; +import { TrashToTreasureEncounter } from "#mystery-encounters/trash-to-treasure-encounter"; +import { UncommonBreedEncounter } from "#mystery-encounters/uncommon-breed-encounter"; +import { WeirdDreamEncounter } from "#mystery-encounters/weird-dream-encounter"; export const EXTREME_ENCOUNTER_BIOMES = [ BiomeId.SEA, diff --git a/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts b/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts index 0123ea7d6ba..26602b8ae31 100644 --- a/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts +++ b/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts @@ -1,9 +1,9 @@ -import type { MoveId } from "#enums/move-id"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { coerceArray, isNullOrUndefined } from "#app/utils/common"; -import { EncounterPokemonRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { globalScene } from "#app/global-scene"; +import type { MoveId } from "#enums/move-id"; +import type { PlayerPokemon } from "#field/pokemon"; +import { PokemonMove } from "#moves/pokemon-move"; +import { EncounterPokemonRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import { coerceArray, isNullOrUndefined } from "#utils/common"; /** * {@linkcode CanLearnMoveRequirement} options diff --git a/src/data/mystery-encounters/requirements/requirement-groups.ts b/src/data/mystery-encounters/requirements/requirement-groups.ts index 0140a5fe320..8981dfe173c 100644 --- a/src/data/mystery-encounters/requirements/requirement-groups.ts +++ b/src/data/mystery-encounters/requirements/requirement-groups.ts @@ -1,5 +1,5 @@ -import { MoveId } from "#enums/move-id"; import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; /** * Moves that "steal" things diff --git a/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts b/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts index e1055f57496..4f4af94a88d 100644 --- a/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts @@ -1,8 +1,8 @@ import { globalScene } from "#app/global-scene"; -import type { TextStyle } from "#app/ui/text"; -import { getTextWithColors } from "#app/ui/text"; import { UiTheme } from "#enums/ui-theme"; -import { isNullOrUndefined } from "#app/utils/common"; +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/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index f698f636cac..6b085978b27 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -1,58 +1,57 @@ -import type Battle from "#app/battle"; -import { BattleType } from "#enums/battle-type"; -import { biomeLinks, BiomePoolTier } from "#app/data/balance/biomes"; -import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; +import type { Battle } from "#app/battle"; import { AVERAGE_ENCOUNTERS_PER_RUN_TARGET, WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/constants"; -import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import type { PlayerPokemon } from "#app/field/pokemon"; +import { timedEventManager } from "#app/global-event-manager"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { BiomePoolTier, biomeLinks } from "#balance/biomes"; +import { initMoveAnim, loadMoveAnimAssets } from "#data/battle-anims"; +import { modifierTypes } from "#data/data-lists"; +import type { IEggOptions } from "#data/egg"; +import { Egg } from "#data/egg"; +import type { Gender } from "#data/gender"; +import { getNatureName } from "#data/nature"; +import type { CustomPokemonData } from "#data/pokemon-data"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { Status } from "#data/status-effect"; import type { AiType } from "#enums/ai-type"; -import type Pokemon from "#app/field/pokemon"; -import { EnemyPokemon } from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; +import { BattleType } from "#enums/battle-type"; +import type { BattlerTagType } from "#enums/battler-tag-type"; +import { BiomeId } from "#enums/biome-id"; import { FieldPosition } from "#enums/field-position"; -import type { CustomModifierSettings, ModifierType } from "#app/modifier/modifier-type"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; +import type { MoveId } from "#enums/move-id"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import type { Nature } from "#enums/nature"; +import { PokemonType } from "#enums/pokemon-type"; +import { StatusEffect } from "#enums/status-effect"; +import { TrainerSlot } from "#enums/trainer-slot"; +import type { TrainerType } from "#enums/trainer-type"; +import { TrainerVariant } from "#enums/trainer-variant"; +import { UiMode } from "#enums/ui-mode"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import { EnemyPokemon } from "#field/pokemon"; +import { Trainer } from "#field/trainer"; +import type { CustomModifierSettings, ModifierType } from "#modifiers/modifier-type"; import { getPartyLuckValue, ModifierTypeGenerator, ModifierTypeOption, regenerateModifierPoolThresholds, -} from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import type PokemonData from "#app/system/pokemon-data"; -import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import type { PartyOption, PokemonSelectFilter } from "#app/ui/party-ui-handler"; -import { PartyUiMode } from "#app/ui/party-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import { isNullOrUndefined, randSeedInt, randomString, randSeedItem, coerceArray } from "#app/utils/common"; -import type { BattlerTagType } from "#enums/battler-tag-type"; -import { BiomeId } from "#enums/biome-id"; -import type { TrainerType } from "#enums/trainer-type"; +} from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { MysteryEncounterOption } from "#mystery-encounters/mystery-encounter-option"; +import type { Variant } from "#sprites/variant"; +import type { PokemonData } from "#system/pokemon-data"; +import type { TrainerConfig } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-config"; +import type { HeldModifierConfig } from "#types/held-modifier-config"; +import type { OptionSelectConfig, OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import type { PartyOption, PokemonSelectFilter } from "#ui/party-ui-handler"; +import { PartyUiMode } from "#ui/party-ui-handler"; +import { coerceArray, isNullOrUndefined, randomString, randSeedInt, randSeedItem } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import Trainer from "#app/field/trainer"; -import { TrainerVariant } from "#enums/trainer-variant"; -import type { Gender } from "#app/data/gender"; -import type { Nature } from "#enums/nature"; -import type { MoveId } from "#enums/move-id"; -import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import { Status } from "#app/data/status-effect"; -import type { TrainerConfig } from "#app/data/trainers/trainer-config"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import { TrainerSlot } from "#enums/trainer-slot"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import type { IEggOptions } from "#app/data/egg"; -import { Egg } from "#app/data/egg"; -import type { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import type HeldModifierConfig from "#app/@types/held-modifier-config"; -import type { Variant } from "#app/sprites/variant"; -import { StatusEffect } from "#enums/status-effect"; -import { globalScene } from "#app/global-scene"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { PokemonType } from "#enums/pokemon-type"; -import { getNatureName } from "#app/data/nature"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { timedEventManager } from "#app/global-event-manager"; /** * Animates exclamation sprite over trainer's head at start of encounter @@ -1099,8 +1098,10 @@ export function calculateMEAggregateStats(baseSpawnWeight: number) { if (biomes! && biomes.length > 0) { const specialBiomes = biomes.filter(b => alwaysPickTheseBiomes.includes(b)); if (specialBiomes.length > 0) { + // TODO: should this use `randSeedItem`? currentBiome = specialBiomes[randSeedInt(specialBiomes.length)]; } else { + // TODO: should this use `randSeedItem`? currentBiome = biomes[randSeedInt(biomes.length)]; } } diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index f6ac5b0d38b..19f06707257 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -1,42 +1,41 @@ import { globalScene } from "#app/global-scene"; -import i18next from "i18next"; -import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; -import { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { speciesStarterCosts } from "#balance/starters"; +import { modifierTypes } from "#data/data-lists"; +import { Gender } from "#data/gender"; import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, -} from "#app/data/pokeball"; +} from "#data/pokeball"; +import { CustomPokemonData } from "#data/pokemon-data"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { getStatusEffectCatchRateMultiplier } from "#data/status-effect"; +import type { AbilityId } from "#enums/ability-id"; import { PlayerGender } from "#enums/player-gender"; -import { addPokeballCaptureStars, addPokeballOpenParticles } from "#app/field/anims"; -import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect"; -import { achvs } from "#app/system/achv"; -import { UiMode } from "#enums/ui-mode"; -import type { PartyOption } from "#app/ui/party-ui-handler"; -import { PartyUiMode } from "#app/ui/party-ui-handler"; -import { SpeciesId } from "#enums/species-id"; +import type { PokeballType } from "#enums/pokeball"; import type { PokemonType } from "#enums/pokemon-type"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { speciesStarterCosts } from "#app/data/balance/starters"; +import { SpeciesId } from "#enums/species-id"; +import type { PermanentStat } from "#enums/stat"; +import { StatusEffect } from "#enums/status-effect"; +import { UiMode } from "#enums/ui-mode"; +import { addPokeballCaptureStars, addPokeballOpenParticles } from "#field/anims"; +import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon"; +import { PokemonHeldItemModifier } from "#modifiers/modifier"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; import { getEncounterText, queueEncounterMessage, showEncounterText, -} from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { getPokemonNameWithAffix } from "#app/messages"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { Gender } from "#app/data/gender"; -import type { PermanentStat } from "#enums/stat"; -import { SummaryUiMode } from "#app/ui/summary-ui-handler"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import type { AbilityId } from "#enums/ability-id"; -import type { PokeballType } from "#enums/pokeball"; -import { StatusEffect } from "#enums/status-effect"; +} from "#mystery-encounters/encounter-dialogue-utils"; +import { achvs } from "#system/achv"; +import type { PartyOption } from "#ui/party-ui-handler"; +import { PartyUiMode } from "#ui/party-ui-handler"; +import { SummaryUiMode } from "#ui/summary-ui-handler"; +import { isNullOrUndefined, randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import i18next from "i18next"; /** Will give +1 level every 10 waves */ export const STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER = 1; @@ -111,20 +110,24 @@ export function getRandomPlayerPokemon( // If there is only 1 legal/unfainted mon left, select from fainted legal mons const faintedLegalMons = party.filter(p => (!isAllowed || p.isAllowedInChallenge()) && p.isFainted()); if (faintedLegalMons.length > 0) { + // TODO: should this use `randSeedItem`? chosenIndex = randSeedInt(faintedLegalMons.length); chosenPokemon = faintedLegalMons[chosenIndex]; } } if (!chosenPokemon && fullyLegalMons.length > 0) { + // TODO: should this use `randSeedItem`? chosenIndex = randSeedInt(fullyLegalMons.length); chosenPokemon = fullyLegalMons[chosenIndex]; } if (!chosenPokemon && isAllowed && allowedOnlyMons.length > 0) { + // TODO: should this use `randSeedItem`? chosenIndex = randSeedInt(allowedOnlyMons.length); chosenPokemon = allowedOnlyMons[chosenIndex]; } if (!chosenPokemon) { // If no other options worked, returns fully random + // TODO: should this use `randSeedItem`? chosenIndex = randSeedInt(party.length); chosenPokemon = party[chosenIndex]; } @@ -375,10 +378,10 @@ export function applyHealToPokemon(pokemon: PlayerPokemon, heal: number) { * @param pokemon * @param value */ -export async function modifyPlayerPokemonBST(pokemon: PlayerPokemon, value: number) { +export async function modifyPlayerPokemonBST(pokemon: PlayerPokemon, good: boolean) { const modType = modifierTypes .MYSTERY_ENCOUNTER_SHUCKLE_JUICE() - .generateType(globalScene.getPlayerParty(), [value]) + .generateType(globalScene.getPlayerParty(), [good ? 10 : -15]) ?.withIdFromFunc(modifierTypes.MYSTERY_ENCOUNTER_SHUCKLE_JUICE); const modifier = modType?.newModifier(pokemon); if (modifier) { @@ -403,12 +406,12 @@ export async function applyModifierTypeToPlayerPokemon( // Check if the Pokemon has max stacks of that item already const modifier = modType.newModifier(pokemon); const existing = globalScene.findModifier( - m => + (m): m is PokemonHeldItemModifier => m instanceof PokemonHeldItemModifier && m.type.id === modType.id && m.pokemonId === pokemon.id && m.matchType(modifier), - ) as PokemonHeldItemModifier; + ) as PokemonHeldItemModifier | undefined; // At max stacks if (existing && existing.getStackCount() >= existing.getMaxStackCount()) { @@ -518,7 +521,7 @@ export function trainerThrowPokeball( repeatDelay: 500, onUpdate: t => { if (shakeCount && shakeCount < 4) { - const value = t.getValue(); + const value = t.getValue() ?? 0; const directionMultiplier = shakeCount % 2 === 1 ? 1 : -1; pokeball.setX(pbX + value * 4 * directionMultiplier); pokeball.setAngle(value * 27.5 * directionMultiplier); diff --git a/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts b/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts index ebef47eac2d..718d97c0875 100644 --- a/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts +++ b/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts @@ -1,8 +1,8 @@ -import type { PlayerPokemon } from "#app/field/pokemon"; -import { getFrameMs } from "#app/utils/common"; -import { cos, sin } from "#app/field/anims"; -import { getTypeRgb } from "#app/data/type"; import { globalScene } from "#app/global-scene"; +import { getTypeRgb } from "#data/type"; +import { cos, sin } from "#field/anims"; +import type { PlayerPokemon } from "#field/pokemon"; +import { getFrameMs } from "#utils/common"; export enum TransformationScreenPosition { CENTER, @@ -127,7 +127,7 @@ export function doPokemonTransformationSequence( to: 1, duration: 1000, onUpdate: t => { - pokemonTintSprite.setAlpha(t.getValue()); + pokemonTintSprite.setAlpha(t.getValue() ?? 1); }, onComplete: () => { pokemonSprite.setVisible(false); diff --git a/src/data/nature.ts b/src/data/nature.ts index 83b3ee7538d..4f4e627daf3 100644 --- a/src/data/nature.ts +++ b/src/data/nature.ts @@ -1,9 +1,9 @@ -import { toReadableString } from "#app/utils/common"; -import { TextStyle, getBBCodeFrag } from "../ui/text"; import { Nature } from "#enums/nature"; +import { EFFECTIVE_STATS, getShortenedStatKey, Stat } from "#enums/stat"; import { UiTheme } from "#enums/ui-theme"; +import { getBBCodeFrag, TextStyle } from "#ui/text"; +import { toReadableString } from "#utils/common"; import i18next from "i18next"; -import { Stat, EFFECTIVE_STATS, getShortenedStatKey } from "#enums/stat"; export function getNatureName( nature: Nature, diff --git a/src/data/phase-priority-queue.ts b/src/data/phase-priority-queue.ts index b815a6ac34f..88361b0f4fa 100644 --- a/src/data/phase-priority-queue.ts +++ b/src/data/phase-priority-queue.ts @@ -1,12 +1,12 @@ import { globalScene } from "#app/global-scene"; import type { Phase } from "#app/phase"; -import { ActivatePriorityQueuePhase } from "#app/phases/activate-priority-queue-phase"; -import type { PostSummonPhase } from "#app/phases/post-summon-phase"; -import { PostSummonActivateAbilityPhase } from "#app/phases/post-summon-activate-ability-phase"; -import { Stat } from "#enums/stat"; -import { BooleanHolder } from "#app/utils/common"; -import { TrickRoomTag } from "#app/data/arena-tag"; +import { TrickRoomTag } from "#data/arena-tag"; import { DynamicPhaseType } from "#enums/dynamic-phase-type"; +import { Stat } from "#enums/stat"; +import { ActivatePriorityQueuePhase } from "#phases/activate-priority-queue-phase"; +import { PostSummonActivateAbilityPhase } from "#phases/post-summon-activate-ability-phase"; +import type { PostSummonPhase } from "#phases/post-summon-phase"; +import { BooleanHolder } from "#utils/common"; /** * Stores a list of {@linkcode Phase}s diff --git a/src/data/pokeball.ts b/src/data/pokeball.ts index a479fd8068a..50ea5076aee 100644 --- a/src/data/pokeball.ts +++ b/src/data/pokeball.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; -import { NumberHolder } from "#app/utils/common"; import { PokeballType } from "#enums/pokeball"; +import { NumberHolder } from "#utils/common"; import i18next from "i18next"; export const MAX_PER_TYPE_POKEBALLS: number = 99; diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index ea129454034..5a50713c5a9 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -1,14 +1,5 @@ -import type Pokemon from "../field/pokemon"; -import { allMoves } from "./data-lists"; -import { MoveCategory } from "#enums/MoveCategory"; -import type { Constructor, nil } from "#app/utils/common"; -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 { SpeciesFormKey } from "#enums/species-form-key"; import { globalScene } from "#app/global-scene"; -import { FormChangeItem } from "#enums/form-change-item"; +import { allMoves } from "#data/data-lists"; import { MeloettaFormChangePostMoveTrigger, SpeciesDefaultFormMatchTrigger, @@ -24,7 +15,16 @@ import { SpeciesFormChangeTeraTrigger, type SpeciesFormChangeTrigger, SpeciesFormChangeWeatherTrigger, -} from "./pokemon-forms/form-change-triggers"; +} from "#data/form-change-triggers"; +import { AbilityId } from "#enums/ability-id"; +import { FormChangeItem } from "#enums/form-change-item"; +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"; +import { WeatherType } from "#enums/weather-type"; +import type { Pokemon } from "#field/pokemon"; +import type { Constructor, nil } from "#utils/common"; export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean; export type SpeciesFormChangeConditionEnforceFunc = (p: Pokemon) => void; diff --git a/src/data/pokemon-forms/form-change-triggers.ts b/src/data/pokemon-forms/form-change-triggers.ts index 3726781d9e3..75734bf085b 100644 --- a/src/data/pokemon-forms/form-change-triggers.ts +++ b/src/data/pokemon-forms/form-change-triggers.ts @@ -1,18 +1,18 @@ -import i18next from "i18next"; -import { coerceArray, type Constructor } from "#app/utils/common"; -import type { TimeOfDay } from "#enums/time-of-day"; -import type Pokemon from "#app/field/pokemon"; -import type { SpeciesFormChange } from "#app/data/pokemon-forms"; -import type { PokemonFormChangeItemModifier } from "#app/modifier/modifier"; -import { getPokemonNameWithAffix } from "#app/messages"; import { globalScene } from "#app/global-scene"; -import { FormChangeItem } from "#enums/form-change-item"; +import { getPokemonNameWithAffix } from "#app/messages"; +import type { SpeciesFormChange } from "#data/pokemon-forms"; import { AbilityId } from "#enums/ability-id"; import { Challenges } from "#enums/challenges"; +import { FormChangeItem } from "#enums/form-change-item"; import { MoveId } from "#enums/move-id"; import { SpeciesFormKey } from "#enums/species-form-key"; import { StatusEffect } from "#enums/status-effect"; +import type { TimeOfDay } from "#enums/time-of-day"; import { WeatherType } from "#enums/weather-type"; +import type { Pokemon } from "#field/pokemon"; +import type { PokemonFormChangeItemModifier } from "#modifiers/modifier"; +import { type Constructor, coerceArray } from "#utils/common"; +import i18next from "i18next"; export abstract class SpeciesFormChangeTrigger { public description = ""; diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index d2a48495195..4e1c01642cb 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -1,49 +1,45 @@ -import type { Localizable } from "#app/@types/locales"; -import { AbilityId } from "#enums/ability-id"; -import { PartyMemberStrength } from "#enums/party-member-strength"; -import { SpeciesId } from "#enums/species-id"; -import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from "@material/material-color-utilities"; -import i18next from "i18next"; import type { AnySound } from "#app/battle-scene"; -import { globalScene } from "#app/global-scene"; import type { GameMode } from "#app/game-mode"; -import type { StarterMoveset } from "#app/system/game-data"; -import { DexAttr } from "#enums/dex-attr"; -import { - isNullOrUndefined, - capitalizeString, - randSeedInt, - randSeedGauss, - randSeedItem, - randSeedFloat, -} from "#app/utils/common"; -import { uncatchableSpecies } from "#app/data/balance/biomes"; -import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { GrowthRate } from "#app/data/exp"; -import type { EvolutionLevel } from "#app/data/balance/pokemon-evolutions"; -import { - SpeciesWildEvolutionDelay, - pokemonEvolutions, - pokemonPrevolutions, -} from "#app/data/balance/pokemon-evolutions"; -import { PokemonType } from "#enums/pokemon-type"; -import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; +import { globalScene } from "#app/global-scene"; +import { uncatchableSpecies } from "#balance/biomes"; +import { speciesEggMoves } from "#balance/egg-moves"; +import { starterPassiveAbilities } from "#balance/passives"; +import type { EvolutionLevel } from "#balance/pokemon-evolutions"; +import { pokemonEvolutions, pokemonPrevolutions, SpeciesWildEvolutionDelay } from "#balance/pokemon-evolutions"; +import type { LevelMoves } from "#balance/pokemon-level-moves"; import { pokemonFormLevelMoves, pokemonFormLevelMoves as pokemonSpeciesFormLevelMoves, pokemonSpeciesLevelMoves, -} from "#app/data/balance/pokemon-level-moves"; -import type { Stat } from "#enums/stat"; -import type { Variant, VariantSet } from "#app/sprites/variant"; -import { populateVariantColorCache, variantColorCache, variantData } from "#app/sprites/variant"; -import { speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; +} 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 { 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 { SpeciesFormKey } from "#enums/species-form-key"; -import { starterPassiveAbilities } from "#app/data/balance/passives"; -import { loadPokemonVariantAssets } from "#app/sprites/pokemon-sprite"; -import { hasExpSprite } from "#app/sprites/sprite-utils"; -import { Gender } from "./gender"; -import { allSpecies } from "#app/data/data-lists"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; +import { SpeciesId } from "#enums/species-id"; +import type { Stat } from "#enums/stat"; +import { loadPokemonVariantAssets } from "#sprites/pokemon-sprite"; +import { hasExpSprite } from "#sprites/sprite-utils"; +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 { getPokemonSpecies } from "#utils/pokemon-utils"; +import { argbFromRgba, QuantizerCelebi, rgbaFromArgb } from "@material/material-color-utilities"; +import i18next from "i18next"; export enum Region { NORMAL, @@ -759,7 +755,7 @@ export abstract class PokemonSpeciesForm { } } -export default class PokemonSpecies extends PokemonSpeciesForm implements Localizable { +export class PokemonSpecies extends PokemonSpeciesForm implements Localizable { public name: string; readonly subLegendary: boolean; readonly legendary: boolean; @@ -2855,11 +2851,11 @@ export function initSpecies() { 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 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, 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), @@ -3113,11 +3109,11 @@ export function initSpecies() { 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 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), - 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 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), diff --git a/src/data/pokemon/pokemon-data.ts b/src/data/pokemon/pokemon-data.ts new file mode 100644 index 00000000000..6ae86bed5e7 --- /dev/null +++ b/src/data/pokemon/pokemon-data.ts @@ -0,0 +1,208 @@ +import { type BattlerTag, loadBattlerTag } from "#data/battler-tags"; +import type { Gender } from "#data/gender"; +import { PokemonMove } from "#data/moves/pokemon-move"; +import type { PokemonSpeciesForm } from "#data/pokemon-species"; +import type { TypeDamageMultiplier } from "#data/type"; +import type { AbilityId } from "#enums/ability-id"; +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 { AttackMoveResult } from "#types/attack-move-result"; +import type { IllusionData } from "#types/illusion-data"; +import type { TurnMove } from "#types/turn-move"; +import { isNullOrUndefined } from "#utils/common"; + +/** + * Permanent data that can customize a Pokemon in non-standard ways from its Species. + * Includes abilities, nature, changed types, etc. + */ +export class CustomPokemonData { + // TODO: Change the default value for all these from -1 to something a bit more sensible + /** + * The scale at which to render this Pokemon's sprite. + */ + public spriteScale = -1; + public ability: AbilityId | -1; + public passive: AbilityId | -1; + public nature: Nature | -1; + public types: PokemonType[]; + /** Deprecated but needed for session save migration */ + // TODO: Remove this once pre-session migration is implemented + public hitsRecCount: number | null = null; + + constructor(data?: CustomPokemonData | Partial) { + this.spriteScale = data?.spriteScale ?? -1; + this.ability = data?.ability ?? -1; + this.passive = data?.passive ?? -1; + this.nature = data?.nature ?? -1; + this.types = data?.types ?? []; + this.hitsRecCount = data?.hitsRecCount ?? null; + } +} + +/** + * Persistent in-battle data for a {@linkcode Pokemon}. + * Resets on switch or new battle. + */ +export class PokemonSummonData { + /** [Atk, Def, SpAtk, SpDef, Spd, Acc, Eva] */ + public statStages: number[] = [0, 0, 0, 0, 0, 0, 0]; + /** + * A queue of moves yet to be executed, used by charging, recharging and frenzy moves. + * So long as this array is nonempty, this Pokemon's corresponding `CommandPhase` will be skipped over entirely + * in favor of using the queued move. + * TODO: Clean up a lot of the code surrounding the move queue. + */ + public moveQueue: TurnMove[] = []; + public tags: BattlerTag[] = []; + public abilitySuppressed = false; + + // Overrides for transform. + // TODO: Move these into a separate class & add rage fist hit count + public speciesForm: PokemonSpeciesForm | null = null; + public fusionSpeciesForm: PokemonSpeciesForm | null = null; + public ability: AbilityId | undefined; + public passiveAbility: AbilityId | undefined; + public gender: Gender | undefined; + public fusionGender: Gender | undefined; + public stats: number[] = [0, 0, 0, 0, 0, 0]; + public moveset: PokemonMove[] | null; + + // If not initialized this value will not be populated from save data. + public types: PokemonType[] = []; + public addedType: PokemonType | null = null; + + /** Data pertaining to this pokemon's illusion. */ + public illusion: IllusionData | null = null; + public illusionBroken = false; + + /** Array containing all berries eaten in the last turn; used by {@linkcode AbilityId.CUD_CHEW} */ + public berriesEatenLast: BerryType[] = []; + + /** + * An array of all moves this pokemon has used since entering the battle. + * Used for most moves and abilities that check prior move usage or copy already-used moves. + */ + public moveHistory: TurnMove[] = []; + + constructor(source?: PokemonSummonData | Partial) { + if (isNullOrUndefined(source)) { + return; + } + + // TODO: Rework this into an actual generic function for use elsewhere + for (const [key, value] of Object.entries(source)) { + if (isNullOrUndefined(value) && this.hasOwnProperty(key)) { + 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)); + continue; + } + this[key] = value; + } + } +} + +// TODO: Merge this inside `summmonData` but exclude from save if/when a save data serializer is added +export class PokemonTempSummonData { + /** + * The number of turns this pokemon has spent without switching out. + * 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. + * Reset on switch and new wave, but not stored in `SummonData` to avoid being written to the save file. + + * Used to evaluate "first turn only" conditions such as + * {@linkcode MoveId.FAKE_OUT | Fake Out} and {@linkcode MoveId.FIRST_IMPRESSION | First Impression}). + */ + waveTurnCount = 1; +} + +/** + * Persistent data for a {@linkcode Pokemon}. + * Resets at the start of a new battle (but not on switch). + */ +export class PokemonBattleData { + /** Counter tracking direct hits this Pokemon has received during this battle; used for {@linkcode MoveId.RAGE_FIST} */ + public hitCount = 0; + /** Whether this Pokemon has eaten a berry this battle; used for {@linkcode MoveId.BELCH} */ + public hasEatenBerry = false; + /** Array containing all berries eaten and not yet recovered during this current battle; used by {@linkcode AbilityId.HARVEST} */ + public berriesEaten: BerryType[] = []; + + constructor(source?: PokemonBattleData | Partial) { + if (!isNullOrUndefined(source)) { + this.hitCount = source.hitCount ?? 0; + this.hasEatenBerry = source.hasEatenBerry ?? false; + this.berriesEaten = source.berriesEaten ?? []; + } + } +} + +/** + * Temporary data for a {@linkcode Pokemon}. + * Resets on new wave/battle start (but not on switch). + */ +export class PokemonWaveData { + /** Whether the pokemon has endured due to a {@linkcode BattlerTagType.ENDURE_TOKEN} */ + public endured = false; + /** + * A set of all the abilities this {@linkcode Pokemon} has used in this wave. + * Used to track once per battle conditions, as well as (hopefully) by the updated AI for move effectiveness. + */ + public abilitiesApplied: Set = new Set(); + /** Whether the pokemon's ability has been revealed or not */ + public abilityRevealed = false; +} + +/** + * Temporary data for a {@linkcode Pokemon}. + * Resets at the start of a new turn, as well as on switch. + */ +export class PokemonTurnData { + public acted = false; + /** How many times the current move should hit the target(s) */ + public hitCount = 0; + /** + * - `-1` = Calculate how many hits are left + * - `0` = Move is finished + */ + public hitsLeft = -1; + public totalDamageDealt = 0; + public singleHitDamageDealt = 0; + public damageTaken = 0; + public attacksReceived: AttackMoveResult[] = []; + public order: number; + public statStagesIncreased = false; + public statStagesDecreased = false; + public moveEffectiveness: TypeDamageMultiplier | null = null; + public combiningPledge?: MoveId; + public switchedInThisTurn = false; + public failedRunAway = false; + public joinedRound = false; + /** + * The amount of times this Pokemon has acted again and used a move in the current turn. + * Used to make sure multi-hits occur properly when the user is + * forced to act again in the same turn, and **must be incremented** by any effects that grant extra actions. + */ + public extraTurns = 0; + /** + * All berries eaten by this pokemon in this turn. + * Saved into {@linkcode PokemonSummonData | SummonData} by {@linkcode AbilityId.CUD_CHEW} on turn end. + * @see {@linkcode PokemonSummonData.berriesEatenLast} + */ + public berriesEaten: BerryType[] = []; +} diff --git a/src/data/status-effect.ts b/src/data/status-effect.ts index a90304c9f7d..211e265ccf6 100644 --- a/src/data/status-effect.ts +++ b/src/data/status-effect.ts @@ -1,5 +1,5 @@ -import { randIntRange } from "#app/utils/common"; import { StatusEffect } from "#enums/status-effect"; +import { randIntRange } from "#utils/common"; import type { ParseKeys } from "i18next"; import i18next from "i18next"; diff --git a/src/data/terrain.ts b/src/data/terrain.ts index b3ee62ac2f9..7906450d0ea 100644 --- a/src/data/terrain.ts +++ b/src/data/terrain.ts @@ -1,7 +1,9 @@ -import type Pokemon from "../field/pokemon"; -import type Move from "./moves/move"; -import { PokemonType } from "#enums/pokemon-type"; +import { getPokemonNameWithAffix } from "#app/messages"; 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 { @@ -12,6 +14,11 @@ export enum TerrainType { PSYCHIC, } +export interface SerializedTerrain { + terrainType: TerrainType; + turnsLeft: number; +} + export class Terrain { public terrainType: TerrainType; public turnsLeft: number; @@ -54,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; @@ -96,3 +109,76 @@ export function getTerrainColor(terrainType: TerrainType): [number, number, numb return [0, 0, 0]; } + +/** + * Return the message associated with a terrain effect starting. + * @param terrainType - The {@linkcode TerrainType} starting. + * @returns A string containing the appropriate terrain start text. + */ +export function getTerrainStartMessage(terrainType: TerrainType): string { + switch (terrainType) { + case TerrainType.MISTY: + return i18next.t("terrain:mistyStartMessage"); + case TerrainType.ELECTRIC: + return i18next.t("terrain:electricStartMessage"); + case TerrainType.GRASSY: + return i18next.t("terrain:grassyStartMessage"); + case TerrainType.PSYCHIC: + return i18next.t("terrain:psychicStartMessage"); + case TerrainType.NONE: + default: + terrainType satisfies TerrainType.NONE; + console.warn(`${terrainType} unexpectedly provided as terrain type to getTerrainStartMessage!`); + return ""; + } +} + +/** + * Return the message associated with a terrain effect ceasing to exist. + * @param terrainType - The {@linkcode TerrainType} being cleared. + * @returns A string containing the appropriate terrain clear text. + */ +export function getTerrainClearMessage(terrainType: TerrainType): string { + switch (terrainType) { + case TerrainType.MISTY: + return i18next.t("terrain:mistyClearMessage"); + case TerrainType.ELECTRIC: + return i18next.t("terrain:electricClearMessage"); + case TerrainType.GRASSY: + return i18next.t("terrain:grassyClearMessage"); + case TerrainType.PSYCHIC: + return i18next.t("terrain:psychicClearMessage"); + case TerrainType.NONE: + default: + terrainType satisfies TerrainType.NONE; + console.warn(`${terrainType} unexpectedly provided as terrain type to getTerrainClearMessage!`); + return ""; + } +} + +/** + * Return the message associated with a terrain-induced move/effect blockage. + * @param pokemon - The {@linkcode Pokemon} being protected. + * @param terrainType - The {@linkcode TerrainType} in question + * @returns A string containing the appropriate terrain block text. + */ +export function getTerrainBlockMessage(pokemon: Pokemon, terrainType: TerrainType): string { + switch (terrainType) { + case TerrainType.MISTY: + return i18next.t("terrain:mistyBlockMessage", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + }); + case TerrainType.ELECTRIC: + case TerrainType.GRASSY: + case TerrainType.PSYCHIC: + return i18next.t("terrain:defaultBlockMessage", { + pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), + terrainName: getTerrainName(terrainType), + }); + case TerrainType.NONE: + default: + terrainType satisfies TerrainType.NONE; + console.warn(`${terrainType} unexpectedly provided as terrain type to getTerrainBlockMessage!`); + return ""; + } +} diff --git a/src/data/trainer-names.ts b/src/data/trainer-names.ts index 8714dad0fc9..6b882d1ddc1 100644 --- a/src/data/trainer-names.ts +++ b/src/data/trainer-names.ts @@ -1,5 +1,5 @@ import { TrainerType } from "#enums/trainer-type"; -import { toReadableString } from "#app/utils/common"; +import { toReadableString } from "#utils/common"; class TrainerNameConfig { public urls: string[]; diff --git a/src/data/trainers/evil-admin-trainer-pools.ts b/src/data/trainers/evil-admin-trainer-pools.ts index 74ee3e8cb3d..ad08a17d29f 100644 --- a/src/data/trainers/evil-admin-trainer-pools.ts +++ b/src/data/trainers/evil-admin-trainer-pools.ts @@ -1,6 +1,6 @@ -import type { TrainerTierPools } from "#app/@types/trainer-funcs"; -import { TrainerPoolTier } from "#enums/trainer-pool-tier"; import { SpeciesId } from "#enums/species-id"; +import { TrainerPoolTier } from "#enums/trainer-pool-tier"; +import type { TrainerTierPools } from "#types/trainer-funcs"; /** Team Rocket's admin trainer pool. */ const ROCKET: TrainerTierPools = { diff --git a/src/data/trainers/fixed-battle-configs.ts b/src/data/trainers/fixed-battle-configs.ts new file mode 100644 index 00000000000..bb6d591654b --- /dev/null +++ b/src/data/trainers/fixed-battle-configs.ts @@ -0,0 +1,376 @@ +import { FixedBattleConfig, getRandomTrainerFunc } from "#app/battle"; +import { Trainer } from "#app/field/trainer"; +import { globalScene } from "#app/global-scene"; +import { randSeedInt } from "#app/utils/common"; +import { BattleType } from "#enums/battle-type"; +import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves"; +import { ModifierTier } from "#enums/modifier-tier"; +import { PlayerGender } from "#enums/player-gender"; +import { TrainerType } from "#enums/trainer-type"; +import { TrainerVariant } from "#enums/trainer-variant"; + +export interface FixedBattleConfigs { + [key: number]: FixedBattleConfig; +} +/** + * Youngster/Lass on 5 + * Rival on 8, 55, 95, 145, 195 + * Evil team grunts on 35, 62, 64, and 112 + * Evil team admin on 66 and 114 + * Evil leader on 115, 165 + * E4 on 182, 184, 186, 188 + * Champion on 190 + */ +export const classicFixedBattles: FixedBattleConfigs = { + [ClassicFixedBossWaves.TOWN_YOUNGSTER]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setGetTrainerFunc( + () => new Trainer(TrainerType.YOUNGSTER, randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT), + ), + [ClassicFixedBossWaves.RIVAL_1]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setGetTrainerFunc( + () => + new Trainer( + TrainerType.RIVAL, + globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, + ), + ), + [ClassicFixedBossWaves.RIVAL_2]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setGetTrainerFunc( + () => + new Trainer( + TrainerType.RIVAL_2, + globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, + ), + ) + .setCustomModifierRewards({ + guaranteedModifierTiers: [ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT], + allowLuckUpgrades: false, + }), + [ClassicFixedBossWaves.EVIL_GRUNT_1]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setGetTrainerFunc( + getRandomTrainerFunc( + [ + TrainerType.ROCKET_GRUNT, + TrainerType.MAGMA_GRUNT, + TrainerType.AQUA_GRUNT, + TrainerType.GALACTIC_GRUNT, + TrainerType.PLASMA_GRUNT, + TrainerType.FLARE_GRUNT, + TrainerType.AETHER_GRUNT, + TrainerType.SKULL_GRUNT, + TrainerType.MACRO_GRUNT, + TrainerType.STAR_GRUNT, + ], + true, + ), + ), + [ClassicFixedBossWaves.RIVAL_3]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setGetTrainerFunc( + () => + new Trainer( + TrainerType.RIVAL_3, + globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, + ), + ) + .setCustomModifierRewards({ + guaranteedModifierTiers: [ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT], + allowLuckUpgrades: false, + }), + [ClassicFixedBossWaves.EVIL_GRUNT_2]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) + .setGetTrainerFunc( + getRandomTrainerFunc( + [ + TrainerType.ROCKET_GRUNT, + TrainerType.MAGMA_GRUNT, + TrainerType.AQUA_GRUNT, + TrainerType.GALACTIC_GRUNT, + TrainerType.PLASMA_GRUNT, + TrainerType.FLARE_GRUNT, + TrainerType.AETHER_GRUNT, + TrainerType.SKULL_GRUNT, + TrainerType.MACRO_GRUNT, + TrainerType.STAR_GRUNT, + ], + true, + ), + ), + [ClassicFixedBossWaves.EVIL_GRUNT_3]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) + .setGetTrainerFunc( + getRandomTrainerFunc( + [ + TrainerType.ROCKET_GRUNT, + TrainerType.MAGMA_GRUNT, + TrainerType.AQUA_GRUNT, + TrainerType.GALACTIC_GRUNT, + TrainerType.PLASMA_GRUNT, + TrainerType.FLARE_GRUNT, + TrainerType.AETHER_GRUNT, + TrainerType.SKULL_GRUNT, + TrainerType.MACRO_GRUNT, + TrainerType.STAR_GRUNT, + ], + true, + ), + ), + [ClassicFixedBossWaves.EVIL_ADMIN_1]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) + .setGetTrainerFunc( + getRandomTrainerFunc( + [ + [TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL], + [TrainerType.TABITHA, TrainerType.COURTNEY], + [TrainerType.MATT, TrainerType.SHELLY], + [TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN], + [TrainerType.ZINZOLIN, TrainerType.COLRESS], + [TrainerType.XEROSIC, TrainerType.BRYONY], + TrainerType.FABA, + TrainerType.PLUMERIA, + TrainerType.OLEANA, + [TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI], + ], + true, + ), + ), + [ClassicFixedBossWaves.RIVAL_4]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setGetTrainerFunc( + () => + new Trainer( + TrainerType.RIVAL_4, + globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, + ), + ) + .setCustomModifierRewards({ + guaranteedModifierTiers: [ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA], + allowLuckUpgrades: false, + }), + [ClassicFixedBossWaves.EVIL_GRUNT_4]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) + .setGetTrainerFunc( + getRandomTrainerFunc( + [ + TrainerType.ROCKET_GRUNT, + TrainerType.MAGMA_GRUNT, + TrainerType.AQUA_GRUNT, + TrainerType.GALACTIC_GRUNT, + TrainerType.PLASMA_GRUNT, + TrainerType.FLARE_GRUNT, + TrainerType.AETHER_GRUNT, + TrainerType.SKULL_GRUNT, + TrainerType.MACRO_GRUNT, + TrainerType.STAR_GRUNT, + ], + true, + ), + ), + [ClassicFixedBossWaves.EVIL_ADMIN_2]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) + .setGetTrainerFunc( + getRandomTrainerFunc( + [ + [TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL], + [TrainerType.TABITHA, TrainerType.COURTNEY], + [TrainerType.MATT, TrainerType.SHELLY], + [TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN], + [TrainerType.ZINZOLIN, TrainerType.COLRESS], + [TrainerType.XEROSIC, TrainerType.BRYONY], + TrainerType.FABA, + TrainerType.PLUMERIA, + TrainerType.OLEANA, + [TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI], + ], + true, + 1, + ), + ), + [ClassicFixedBossWaves.EVIL_BOSS_1]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) + .setGetTrainerFunc( + getRandomTrainerFunc([ + TrainerType.ROCKET_BOSS_GIOVANNI_1, + TrainerType.MAXIE, + TrainerType.ARCHIE, + TrainerType.CYRUS, + TrainerType.GHETSIS, + TrainerType.LYSANDRE, + TrainerType.LUSAMINE, + TrainerType.GUZMA, + TrainerType.ROSE, + TrainerType.PENNY, + ]), + ) + .setCustomModifierRewards({ + guaranteedModifierTiers: [ + ModifierTier.ROGUE, + ModifierTier.ROGUE, + ModifierTier.ULTRA, + ModifierTier.ULTRA, + ModifierTier.ULTRA, + ], + allowLuckUpgrades: false, + }), + [ClassicFixedBossWaves.RIVAL_5]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setGetTrainerFunc( + () => + new Trainer( + TrainerType.RIVAL_5, + globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, + ), + ) + .setCustomModifierRewards({ + guaranteedModifierTiers: [ + ModifierTier.ROGUE, + ModifierTier.ROGUE, + ModifierTier.ROGUE, + ModifierTier.ULTRA, + ModifierTier.ULTRA, + ], + allowLuckUpgrades: false, + }), + [ClassicFixedBossWaves.EVIL_BOSS_2]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) + .setGetTrainerFunc( + getRandomTrainerFunc([ + TrainerType.ROCKET_BOSS_GIOVANNI_2, + TrainerType.MAXIE_2, + TrainerType.ARCHIE_2, + TrainerType.CYRUS_2, + TrainerType.GHETSIS_2, + TrainerType.LYSANDRE_2, + TrainerType.LUSAMINE_2, + TrainerType.GUZMA_2, + TrainerType.ROSE_2, + TrainerType.PENNY_2, + ]), + ) + .setCustomModifierRewards({ + guaranteedModifierTiers: [ + ModifierTier.ROGUE, + ModifierTier.ROGUE, + ModifierTier.ULTRA, + ModifierTier.ULTRA, + ModifierTier.ULTRA, + ModifierTier.ULTRA, + ], + allowLuckUpgrades: false, + }), + [ClassicFixedBossWaves.ELITE_FOUR_1]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setGetTrainerFunc( + getRandomTrainerFunc([ + TrainerType.LORELEI, + TrainerType.WILL, + TrainerType.SIDNEY, + TrainerType.AARON, + TrainerType.SHAUNTAL, + TrainerType.MALVA, + [TrainerType.HALA, TrainerType.MOLAYNE], + TrainerType.MARNIE_ELITE, + TrainerType.RIKA, + TrainerType.CRISPIN, + ]), + ), + [ClassicFixedBossWaves.ELITE_FOUR_2]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) + .setGetTrainerFunc( + getRandomTrainerFunc([ + TrainerType.BRUNO, + TrainerType.KOGA, + TrainerType.PHOEBE, + TrainerType.BERTHA, + TrainerType.MARSHAL, + TrainerType.SIEBOLD, + TrainerType.OLIVIA, + TrainerType.NESSA_ELITE, + TrainerType.POPPY, + TrainerType.AMARYS, + ]), + ), + [ClassicFixedBossWaves.ELITE_FOUR_3]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) + .setGetTrainerFunc( + getRandomTrainerFunc([ + TrainerType.AGATHA, + TrainerType.BRUNO, + TrainerType.GLACIA, + TrainerType.FLINT, + TrainerType.GRIMSLEY, + TrainerType.WIKSTROM, + TrainerType.ACEROLA, + [TrainerType.BEA_ELITE, TrainerType.ALLISTER_ELITE], + TrainerType.LARRY_ELITE, + TrainerType.LACEY, + ]), + ), + [ClassicFixedBossWaves.ELITE_FOUR_4]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) + .setGetTrainerFunc( + getRandomTrainerFunc([ + TrainerType.LANCE, + TrainerType.KAREN, + TrainerType.DRAKE, + TrainerType.LUCIAN, + TrainerType.CAITLIN, + TrainerType.DRASNA, + TrainerType.KAHILI, + TrainerType.RAIHAN_ELITE, + TrainerType.HASSEL, + TrainerType.DRAYTON, + ]), + ), + [ClassicFixedBossWaves.CHAMPION]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) + .setGetTrainerFunc( + getRandomTrainerFunc([ + TrainerType.BLUE, + [TrainerType.RED, TrainerType.LANCE_CHAMPION], + [TrainerType.STEVEN, TrainerType.WALLACE], + TrainerType.CYNTHIA, + [TrainerType.ALDER, TrainerType.IRIS], + TrainerType.DIANTHA, + [TrainerType.KUKUI, TrainerType.HAU], + [TrainerType.LEON, TrainerType.MUSTARD], + [TrainerType.GEETA, TrainerType.NEMONA], + TrainerType.KIERAN, + ]), + ), + [ClassicFixedBossWaves.RIVAL_6]: new FixedBattleConfig() + .setBattleType(BattleType.TRAINER) + .setGetTrainerFunc( + () => + new Trainer( + TrainerType.RIVAL_6, + globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, + ), + ) + .setCustomModifierRewards({ + guaranteedModifierTiers: [ + ModifierTier.ROGUE, + ModifierTier.ROGUE, + ModifierTier.ULTRA, + ModifierTier.ULTRA, + ModifierTier.GREAT, + ModifierTier.GREAT, + ], + allowLuckUpgrades: false, + }), +}; diff --git a/src/data/trainers/trainer-config.ts b/src/data/trainers/trainer-config.ts index 7c8b5b29fcd..4e88399bec3 100644 --- a/src/data/trainers/trainer-config.ts +++ b/src/data/trainers/trainer-config.ts @@ -1,23 +1,28 @@ +import { timedEventManager } from "#app/global-event-manager"; import { globalScene } from "#app/global-scene"; -import { modifierTypes } from "../data-lists"; -import { PokemonMove } from "../moves/pokemon-move"; -import { - toReadableString, - isNullOrUndefined, - randSeedItem, - randSeedInt, - coerceArray, - randSeedIntRange, -} from "#app/utils/common"; -import { pokemonEvolutions, pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { tmSpecies } from "#app/data/balance/tms"; -import { doubleBattleDialogue } from "../double-battle-dialogue"; +import { pokemonEvolutions, pokemonPrevolutions } from "#balance/pokemon-evolutions"; +import { signatureSpecies } from "#balance/signature-species"; +import { tmSpecies } from "#balance/tms"; +import { modifierTypes } from "#data/data-lists"; +import { doubleBattleDialogue } from "#data/double-battle-dialogue"; +import { Gender } from "#data/gender"; +import type { PokemonSpecies, PokemonSpeciesFilter } from "#data/pokemon-species"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { PartyMemberStrength } from "#enums/party-member-strength"; +import { PokeballType } from "#enums/pokeball"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { TeraAIMode } from "#enums/tera-ai-mode"; +import { TrainerPoolTier } from "#enums/trainer-pool-tier"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { TrainerType } from "#enums/trainer-type"; import { TrainerVariant } from "#enums/trainer-variant"; -import { getIsInitialized, initI18n } from "#app/plugins/i18n"; -import i18next from "i18next"; -import { Gender } from "#app/data/gender"; -import { signatureSpecies } from "../balance/signature-species"; +import type { EnemyPokemon } from "#field/pokemon"; +import { PokemonMove } from "#moves/pokemon-move"; +import { getIsInitialized, initI18n } from "#plugins/i18n"; +import type { EvilTeam } from "#trainers/evil-admin-trainer-pools"; +import { evilAdminTrainerPools } from "#trainers/evil-admin-trainer-pools"; import { getEvilGruntPartyTemplate, getGymLeaderPartyTemplate, @@ -25,37 +30,27 @@ import { TrainerPartyCompoundTemplate, TrainerPartyTemplate, trainerPartyTemplates, -} from "./TrainerPartyTemplate"; -import { evilAdminTrainerPools } from "./evil-admin-trainer-pools"; - -// Enum imports -import { PartyMemberStrength } from "#enums/party-member-strength"; -import { SpeciesId } from "#enums/species-id"; -import { PokeballType } from "#enums/pokeball"; -import { PokemonType } from "#enums/pokemon-type"; -import { MoveId } from "#enums/move-id"; -import { AbilityId } from "#enums/ability-id"; -import { TeraAIMode } from "#enums/tera-ai-mode"; -import { TrainerPoolTier } from "#enums/trainer-pool-tier"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { TrainerType } from "#enums/trainer-type"; -import { timedEventManager } from "#app/global-event-manager"; - -// Type imports -import type { PokemonSpeciesFilter } from "#app/data/pokemon-species"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import type { ModifierTypeFunc } from "#app/@types/modifier-types"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import type { EvilTeam } from "./evil-admin-trainer-pools"; +} from "#trainers/trainer-party-template"; +import type { ModifierTypeFunc } from "#types/modifier-types"; import type { - PartyMemberFunc, - GenModifiersFunc, GenAIFunc, - PartyTemplateFunc, - TrainerTierPools, - TrainerConfigs, + GenModifiersFunc, + PartyMemberFunc, PartyMemberFuncs, -} from "../../@types/trainer-funcs"; + PartyTemplateFunc, + TrainerConfigs, + TrainerTierPools, +} from "#types/trainer-funcs"; +import { + coerceArray, + isNullOrUndefined, + randSeedInt, + randSeedIntRange, + randSeedItem, + toReadableString, +} from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import i18next from "i18next"; /** Minimum BST for Pokemon generated onto the Elite Four's teams */ const ELITE_FOUR_MINIMUM_BST = 460; diff --git a/src/data/trainers/TrainerPartyTemplate.ts b/src/data/trainers/trainer-party-template.ts similarity index 100% rename from src/data/trainers/TrainerPartyTemplate.ts rename to src/data/trainers/trainer-party-template.ts index 135fe669825..d4e7fe7a261 100644 --- a/src/data/trainers/TrainerPartyTemplate.ts +++ b/src/data/trainers/trainer-party-template.ts @@ -1,8 +1,8 @@ -import { startingWave } from "#app/starting-wave"; import { globalScene } from "#app/global-scene"; -import { PartyMemberStrength } from "#enums/party-member-strength"; -import { GameModes } from "#enums/game-modes"; +import { startingWave } from "#app/starting-wave"; import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves"; +import { GameModes } from "#enums/game-modes"; +import { PartyMemberStrength } from "#enums/party-member-strength"; export class TrainerPartyTemplate { public size: number; diff --git a/src/data/weather.ts b/src/data/weather.ts index 425e15b12a8..59be56826a4 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -1,16 +1,20 @@ -import { BiomeId } from "#enums/biome-id"; -import { WeatherType } from "#enums/weather-type"; -import { getPokemonNameWithAffix } from "../messages"; -import type Pokemon from "../field/pokemon"; -import { PokemonType } from "#enums/pokemon-type"; -import type Move from "./moves/move"; -import { randSeedInt } from "#app/utils/common"; -import { TerrainType, getTerrainName } from "./terrain"; -import i18next from "i18next"; -import { globalScene } from "#app/global-scene"; -import type { Arena } from "#app/field/arena"; +import type { SuppressWeatherEffectAbAttr } from "#abilities/ability"; import { timedEventManager } from "#app/global-event-manager"; -import type { SuppressWeatherEffectAbAttr } from "./abilities/ability"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { BiomeId } from "#enums/biome-id"; +import { PokemonType } from "#enums/pokemon-type"; +import { WeatherType } from "#enums/weather-type"; +import type { Arena } from "#field/arena"; +import type { Pokemon } from "#field/pokemon"; +import type { Move } from "#moves/move"; +import { randSeedInt } from "#utils/common"; +import i18next from "i18next"; + +export interface SerializedWeather { + weatherType: WeatherType; + turnsLeft: number; +} export class Weather { public weatherType: WeatherType; @@ -235,50 +239,6 @@ export function getWeatherBlockMessage(weatherType: WeatherType): string { return i18next.t("weather:defaultEffectMessage"); } -export function getTerrainStartMessage(terrainType: TerrainType): string | null { - switch (terrainType) { - case TerrainType.MISTY: - return i18next.t("terrain:mistyStartMessage"); - case TerrainType.ELECTRIC: - return i18next.t("terrain:electricStartMessage"); - case TerrainType.GRASSY: - return i18next.t("terrain:grassyStartMessage"); - case TerrainType.PSYCHIC: - return i18next.t("terrain:psychicStartMessage"); - default: - console.warn("getTerrainStartMessage not defined. Using default null"); - return null; - } -} - -export function getTerrainClearMessage(terrainType: TerrainType): string | null { - switch (terrainType) { - case TerrainType.MISTY: - return i18next.t("terrain:mistyClearMessage"); - case TerrainType.ELECTRIC: - return i18next.t("terrain:electricClearMessage"); - case TerrainType.GRASSY: - return i18next.t("terrain:grassyClearMessage"); - case TerrainType.PSYCHIC: - return i18next.t("terrain:psychicClearMessage"); - default: - console.warn("getTerrainClearMessage not defined. Using default null"); - return null; - } -} - -export function getTerrainBlockMessage(pokemon: Pokemon, terrainType: TerrainType): string { - if (terrainType === TerrainType.MISTY) { - return i18next.t("terrain:mistyBlockMessage", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - }); - } - return i18next.t("terrain:defaultBlockMessage", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - terrainName: getTerrainName(terrainType), - }); -} - export interface WeatherPoolEntry { weatherType: WeatherType; weight: number; diff --git a/src/enums/arena-tag-type.ts b/src/enums/arena-tag-type.ts index 4180aa00ef5..214826993b3 100644 --- a/src/enums/arena-tag-type.ts +++ b/src/enums/arena-tag-type.ts @@ -1,3 +1,13 @@ +import type { ArenaTagTypeMap } from "#data/arena-tag"; +import type { NonSerializableArenaTagType, SerializableArenaTagType } from "#types/arena-tags"; + +/** + * Enum representing all different types of {@linkcode ArenaTag}s. + * @privateRemarks + * ⚠️ When modifying the fields in this enum, ensure that: + * - The entry is added to / removed from {@linkcode ArenaTagTypeMap} + * - The tag is added to / removed from {@linkcode NonSerializableArenaTagType} or {@linkcode SerializableArenaTagType} +*/ export enum ArenaTagType { NONE = "NONE", MUD_SPORT = "MUD_SPORT", diff --git a/src/enums/battle-style.ts b/src/enums/battle-style.ts index 3f3e7f6d8f6..2fba10f1bf9 100644 --- a/src/enums/battle-style.ts +++ b/src/enums/battle-style.ts @@ -1,9 +1,7 @@ -/** - * Determines the selected battle style. - * - 'Switch' - The option to switch the active pokemon at the start of a battle will be displayed. - * - 'Set' - The option to switch the active pokemon at the start of a battle will not display. -*/ +/** Enum for selected battle style. */ export enum BattleStyle { - SWITCH, - SET + /** Display option to switch active pokemon at battle start. */ + SWITCH, + /** Hide option to switch active pokemon at battle start. */ + SET } diff --git a/src/enums/battler-index.ts b/src/enums/battler-index.ts index 32b1684c86c..253e5bfc3ed 100644 --- a/src/enums/battler-index.ts +++ b/src/enums/battler-index.ts @@ -1,3 +1,7 @@ +/** + * The index of a given Pokemon on-field. + * Used as an index into `globalScene.getField`, as well as for most target-specifying effects. + */ export enum BattlerIndex { ATTACKER = -1, PLAYER, diff --git a/src/enums/exp-gains-speed.ts b/src/enums/exp-gains-speed.ts index 964c4f99c70..f5f36a1c78d 100644 --- a/src/enums/exp-gains-speed.ts +++ b/src/enums/exp-gains-speed.ts @@ -1,15 +1,4 @@ -/** - * Defines the speed of gaining experience. - * - * @remarks - * The `expGainSpeed` can have several modes: - * - `0` - Default: The normal speed. - * - `1` - Fast: Fast speed. - * - `2` - Faster: Faster speed. - * - `3` - Skip: Skip gaining exp animation. - * - * @default 0 - Uses the default normal speed. - */ +/** Defines the speed of gaining experience. */ export enum ExpGainsSpeed { /** The normal speed. */ DEFAULT, diff --git a/src/enums/exp-notification.ts b/src/enums/exp-notification.ts index b7f50814d3a..a64d8591e76 100644 --- a/src/enums/exp-notification.ts +++ b/src/enums/exp-notification.ts @@ -1,11 +1,9 @@ -/** - * Determines exp notification style. - * - Default - the normal exp gain display, nothing changed - * - Only level up - we display the level up in the small frame instead of a message - * - Skip - no level up frame nor message -*/ +/** Enum for party experience gain notification style. */ export enum ExpNotification { - DEFAULT, - ONLY_LEVEL_UP, - SKIP + /** Display amount flyout for all off-field party members upon gaining any amount of EXP. */ + DEFAULT, + /** Display smaller flyout showing level gained on gaining a new level. */ + ONLY_LEVEL_UP, + /** Do not show any flyouts for EXP gains or levelups. */ + SKIP } diff --git a/src/enums/gacha-types.ts b/src/enums/gacha-types.ts index c8beff5cad2..cd0bc67eae0 100644 --- a/src/enums/gacha-types.ts +++ b/src/enums/gacha-types.ts @@ -1,5 +1,7 @@ -export enum GachaType { - MOVE, - LEGENDARY, - SHINY -} +export const GachaType = Object.freeze({ + MOVE: 0, + LEGENDARY: 1, + SHINY: 2 +}); + +export type GachaType = typeof GachaType[keyof typeof GachaType]; 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 95% rename from src/enums/MoveFlags.ts rename to src/enums/move-flags.ts index 1155417da6d..06de265df09 100644 --- a/src/enums/MoveFlags.ts +++ b/src/enums/move-flags.ts @@ -1,3 +1,7 @@ +/** + * A list of possible flags that various moves may have. + * Represented internally as a bitmask. + */ export enum MoveFlags { NONE = 0, MAKES_CONTACT = 1 << 0, 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 31694ad4081..1bb9d6374b7 100644 --- a/src/enums/move-use-mode.ts +++ b/src/enums/move-use-mode.ts @@ -1,4 +1,4 @@ -import type { PostDancingMoveAbAttr } from "#app/data/abilities/ability"; +import type { PostDancingMoveAbAttr } from "#abilities/ability"; import type { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; /** 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/events/arena.ts b/src/events/arena.ts index 3b65506db98..5415b8eb026 100644 --- a/src/events/arena.ts +++ b/src/events/arena.ts @@ -1,6 +1,6 @@ +import type { TerrainType } from "#data/terrain"; import type { ArenaTagSide } from "#enums/arena-tag-side"; import type { ArenaTagType } from "#enums/arena-tag-type"; -import type { TerrainType } from "#app/data/terrain"; import type { WeatherType } from "#enums/weather-type"; /** Alias for all {@linkcode ArenaEvent} type strings */ diff --git a/src/events/battle-scene.ts b/src/events/battle-scene.ts index 83d260bd7d2..29aee1053cd 100644 --- a/src/events/battle-scene.ts +++ b/src/events/battle-scene.ts @@ -1,5 +1,5 @@ -import type Move from "../data/moves/move"; -import type { BerryModifier } from "../modifier/modifier"; +import type { BerryModifier } from "#modifiers/modifier"; +import type { Move } from "#moves/move"; /** Alias for all {@linkcode BattleScene} events */ export enum BattleSceneEventType { diff --git a/src/field/anims.ts b/src/field/anims.ts index 2fd23e4262b..82aa7b7e894 100644 --- a/src/field/anims.ts +++ b/src/field/anims.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import { PokeballType } from "#enums/pokeball"; -import type { Variant } from "#app/sprites/variant"; -import { getFrameMs, randGauss } from "#app/utils/common"; +import type { Variant } from "#sprites/variant"; +import { getFrameMs, randGauss } from "#utils/common"; export function addPokeballOpenParticles(x: number, y: number, pokeballType: PokeballType): void { switch (pokeballType) { @@ -150,7 +150,7 @@ function doFanOutParticle( } export function addPokeballCaptureStars(pokeball: Phaser.GameObjects.Sprite): void { - const addParticle = () => { + const addParticle = (): void => { const particle = globalScene.add.sprite(pokeball.x, pokeball.y, "pb_particles", "4.png"); particle.setOrigin(pokeball.originX, pokeball.originY); particle.setAlpha(0.5); @@ -188,7 +188,9 @@ export function addPokeballCaptureStars(pokeball: Phaser.GameObjects.Sprite): vo }); }; - new Array(3).fill(null).map(() => addParticle()); + for (let i = 0; i < 3; i++) { + addParticle(); + } } export function sin(index: number, amplitude: number): number { diff --git a/src/field/arena.ts b/src/field/arena.ts index 6893678d4a8..8f27ddb22e9 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -1,42 +1,38 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import type { BiomeTierTrainerPools, PokemonPools } from "#app/data/balance/biomes"; -import { biomePokemonPools, BiomePoolTier, biomeTrainerPools } from "#app/data/balance/biomes"; -import { randSeedInt, NumberHolder, isNullOrUndefined, type Constructor } from "#app/utils/common"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; +import Overrides from "#app/overrides"; +import type { BiomeTierTrainerPools, PokemonPools } from "#balance/biomes"; +import { BiomePoolTier, biomePokemonPools, biomeTrainerPools } from "#balance/biomes"; +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 { getTerrainClearMessage, getTerrainStartMessage, Terrain, TerrainType } from "#data/terrain"; import { - getTerrainClearMessage, - getTerrainStartMessage, + getLegendaryWeatherContinuesMessage, getWeatherClearMessage, getWeatherStartMessage, - getLegendaryWeatherContinuesMessage, Weather, -} from "#app/data/weather"; -import { CommonAnim } from "#enums/move-anims-common"; -import type { PokemonType } from "#enums/pokemon-type"; -import type Move from "#app/data/moves/move"; -import type { ArenaTag } from "#app/data/arena-tag"; -import { ArenaTrapTag, getArenaTag } from "#app/data/arena-tag"; +} from "#data/weather"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagSide } from "#enums/arena-tag-side"; -import type { BattlerIndex } from "#enums/battler-index"; -import { Terrain, TerrainType } from "#app/data/terrain"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import type Pokemon from "#app/field/pokemon"; -import Overrides from "#app/overrides"; -import { TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#app/events/arena"; import type { ArenaTagType } from "#enums/arena-tag-type"; +import type { BattlerIndex } from "#enums/battler-index"; import { BiomeId } from "#enums/biome-id"; +import { CommonAnim } from "#enums/move-anims-common"; import type { MoveId } from "#enums/move-id"; +import type { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { TimeOfDay } from "#enums/time-of-day"; import { TrainerType } from "#enums/trainer-type"; -import { AbilityId } from "#enums/ability-id"; -import { - SpeciesFormChangeRevertWeatherFormTrigger, - SpeciesFormChangeWeatherTrigger, -} from "#app/data/pokemon-forms/form-change-triggers"; import { WeatherType } from "#enums/weather-type"; -import { FieldEffectModifier } from "#app/modifier/modifier"; +import { TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#events/arena"; +import type { Pokemon } from "#field/pokemon"; +import { FieldEffectModifier } from "#modifiers/modifier"; +import type { Move } from "#moves/move"; +import type { AbstractConstructor } from "#types/type-helpers"; +import { type Constructor, isNullOrUndefined, NumberHolder, randSeedInt } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; export class Arena { public biomeType: BiomeId; @@ -148,6 +144,7 @@ export class Arena { if (!tierPool.length) { ret = globalScene.randomSpecies(waveIndex, level); } else { + // TODO: should this use `randSeedItem`? const entry = tierPool[randSeedInt(tierPool.length)]; let species: SpeciesId; if (typeof entry === "number") { @@ -159,6 +156,7 @@ export class Arena { if (level >= levelThreshold) { const speciesIds = entry[levelThreshold]; if (speciesIds.length > 1) { + // TODO: should this use `randSeedItem`? species = speciesIds[randSeedInt(speciesIds.length)]; } else { species = speciesIds[0]; @@ -171,19 +169,11 @@ export class Arena { ret = getPokemonSpecies(species!); if (ret.subLegendary || ret.legendary || ret.mythical) { - switch (true) { - case ret.baseTotal >= 720: - regen = level < 90; - break; - case ret.baseTotal >= 670: - regen = level < 70; - break; - case ret.baseTotal >= 580: - regen = level < 50; - break; - default: - regen = level < 30; - break; + const waveDifficulty = globalScene.gameMode.getWaveForDifficulty(waveIndex); + if (ret.baseTotal >= 660) { + regen = waveDifficulty < 80; // Wave 50+ in daily (however, max Daily wave is 50 currently so not possible) + } else { + regen = waveDifficulty < 55; // Wave 25+ in daily } } } @@ -445,9 +435,9 @@ export class Arena { CommonAnim.MISTY_TERRAIN + (terrain - 1), ); } - globalScene.phaseManager.queueMessage(getTerrainStartMessage(terrain)!); // TODO: is this bang correct? + globalScene.phaseManager.queueMessage(getTerrainStartMessage(terrain)); } else { - globalScene.phaseManager.queueMessage(getTerrainClearMessage(oldTerrainType)!); // TODO: is this bang correct? + globalScene.phaseManager.queueMessage(getTerrainClearMessage(oldTerrainType)); } globalScene @@ -501,38 +491,37 @@ export class Arena { getTrainerChance(): number { switch (this.biomeType) { case BiomeId.METROPOLIS: - return 2; - case BiomeId.SLUM: - case BiomeId.BEACH: case BiomeId.DOJO: - case BiomeId.CONSTRUCTION_SITE: return 4; case BiomeId.PLAINS: case BiomeId.GRASS: + case BiomeId.BEACH: case BiomeId.LAKE: case BiomeId.CAVE: + case BiomeId.DESERT: + case BiomeId.CONSTRUCTION_SITE: + case BiomeId.SLUM: return 6; case BiomeId.TALL_GRASS: case BiomeId.FOREST: - case BiomeId.SEA: case BiomeId.SWAMP: case BiomeId.MOUNTAIN: case BiomeId.BADLANDS: - case BiomeId.DESERT: case BiomeId.MEADOW: case BiomeId.POWER_PLANT: - case BiomeId.GRAVEYARD: case BiomeId.FACTORY: case BiomeId.SNOWY_FOREST: return 8; + case BiomeId.SEA: case BiomeId.ICE_CAVE: case BiomeId.VOLCANO: + case BiomeId.GRAVEYARD: case BiomeId.RUINS: case BiomeId.WASTELAND: case BiomeId.JUNGLE: case BiomeId.FAIRY_CAVE: + case BiomeId.ISLAND: return 12; - case BiomeId.SEABED: case BiomeId.ABYSS: case BiomeId.SPACE: case BiomeId.TEMPLE: @@ -656,7 +645,7 @@ export class Arena { * @param args array of parameters that the called upon tags may need */ applyTagsForSide( - tagType: ArenaTagType | Constructor, + tagType: ArenaTagType | Constructor | AbstractConstructor, side: ArenaTagSide, simulated: boolean, ...args: unknown[] @@ -678,7 +667,11 @@ export class Arena { * @param simulated if `true`, this applies arena tags without changing game state * @param args array of parameters that the called upon tags may need */ - applyTags(tagType: ArenaTagType | Constructor, simulated: boolean, ...args: unknown[]): void { + applyTags( + tagType: ArenaTagType | Constructor | AbstractConstructor, + simulated: boolean, + ...args: unknown[] + ): void { this.applyTagsForSide(tagType, ArenaTagSide.BOTH, simulated, ...args); } @@ -735,7 +728,7 @@ export class Arena { * @param tagType The {@linkcode ArenaTagType} or {@linkcode ArenaTag} to get * @returns either the {@linkcode ArenaTag}, or `undefined` if it isn't there */ - getTag(tagType: ArenaTagType | Constructor): ArenaTag | undefined { + getTag(tagType: ArenaTagType | Constructor | AbstractConstructor): ArenaTag | undefined { return this.getTagOnSide(tagType, ArenaTagSide.BOTH); } @@ -751,7 +744,10 @@ export class Arena { * @param side The {@linkcode ArenaTagSide} to look at * @returns either the {@linkcode ArenaTag}, or `undefined` if it isn't there */ - getTagOnSide(tagType: ArenaTagType | Constructor, side: ArenaTagSide): ArenaTag | undefined { + getTagOnSide( + tagType: ArenaTagType | Constructor | AbstractConstructor, + side: ArenaTagSide, + ): ArenaTag | undefined { return typeof tagType === "string" ? this.tags.find( t => t.tagType === tagType && (side === ArenaTagSide.BOTH || t.side === ArenaTagSide.BOTH || t.side === side), @@ -899,7 +895,7 @@ export class Arena { case BiomeId.WASTELAND: return 6.336; case BiomeId.ABYSS: - return 5.13; + return 20.113; case BiomeId.SPACE: return 20.036; case BiomeId.CONSTRUCTION_SITE: @@ -937,6 +933,7 @@ export function getBiomeKey(biome: BiomeId): string { export function getBiomeHasProps(biomeType: BiomeId): boolean { switch (biomeType) { + case BiomeId.PLAINS: case BiomeId.METROPOLIS: case BiomeId.BEACH: case BiomeId.LAKE: @@ -983,14 +980,15 @@ export class ArenaBase extends Phaser.GameObjects.Container { this.base = globalScene.addFieldSprite(0, 0, "plains_a", undefined, 1); this.base.setOrigin(0, 0); - this.props = !player - ? new Array(3).fill(null).map(() => { - const ret = globalScene.addFieldSprite(0, 0, "plains_b", undefined, 1); - ret.setOrigin(0, 0); - ret.setVisible(false); - return ret; - }) - : []; + this.props = []; + if (!player) { + for (let i = 0; i < 3; i++) { + const ret = globalScene.addFieldSprite(0, 0, "plains_b", undefined, 1); + ret.setOrigin(0, 0); + ret.setVisible(false); + this.props.push(ret); + } + } } setBiome(biome: BiomeId, propValue?: number): void { diff --git a/src/field/damage-number-handler.ts b/src/field/damage-number-handler.ts index b8b3ed76e18..acb279a17a0 100644 --- a/src/field/damage-number-handler.ts +++ b/src/field/damage-number-handler.ts @@ -1,14 +1,14 @@ -import { TextStyle, addTextObject } from "../ui/text"; -import type { DamageResult } from "./pokemon"; -import type Pokemon from "./pokemon"; -import { HitResult } from "#enums/hit-result"; -import { formatStat, fixedInt } from "#app/utils/common"; -import type { BattlerIndex } from "#enums/battler-index"; import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#enums/battler-index"; +import { HitResult } from "#enums/hit-result"; +import type { Pokemon } from "#field/pokemon"; +import type { DamageResult } from "#types/damage-result"; +import { addTextObject, TextStyle } from "#ui/text"; +import { fixedInt, formatStat } from "#utils/common"; type TextAndShadowArr = [string | null, string | null]; -export default class DamageNumberHandler { +export class DamageNumberHandler { private damageNumbers: Map; constructor() { diff --git a/src/field/mystery-encounter-intro.ts b/src/field/mystery-encounter-intro.ts index f6702c690bd..d3776f349e6 100644 --- a/src/field/mystery-encounter-intro.ts +++ b/src/field/mystery-encounter-intro.ts @@ -1,13 +1,14 @@ -import type { GameObjects } from "phaser"; import { globalScene } from "#app/global-scene"; -import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import type { SpeciesId } from "#enums/species-id"; -import { isNullOrUndefined } from "#app/utils/common"; -import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import type { Variant } from "#app/sprites/variant"; -import { doShinySparkleAnim } from "#app/field/anims"; -import { loadPokemonVariantAssets } from "#app/sprites/pokemon-sprite"; -import PlayAnimationConfig = Phaser.Types.Animations.PlayAnimationConfig; +import { doShinySparkleAnim } from "#field/anims"; +import { getSpriteKeysFromSpecies } from "#mystery-encounters/encounter-pokemon-utils"; +import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { loadPokemonVariantAssets } from "#sprites/pokemon-sprite"; +import type { Variant } from "#sprites/variant"; +import { isNullOrUndefined } from "#utils/common"; +import type { GameObjects } from "phaser"; + +type PlayAnimationConfig = Phaser.Types.Animations.PlayAnimationConfig; type KnownFileRoot = | "arenas" @@ -77,7 +78,7 @@ export class MysteryEncounterSpriteConfig { * These slide in with the field as part of standard field change cycle, and will typically be hidden after the player has selected an option for the encounter * Note: intro visuals are not "Trainers" or any other specific game object, though they may contain trainer sprites */ -export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Container { +export class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Container { public encounter: MysteryEncounter; public spriteConfigs: MysteryEncounterSpriteConfig[]; public enterFromRight: boolean; diff --git a/src/field/pokemon-sprite-sparkle-handler.ts b/src/field/pokemon-sprite-sparkle-handler.ts index bda9414bb92..725229ce723 100644 --- a/src/field/pokemon-sprite-sparkle-handler.ts +++ b/src/field/pokemon-sprite-sparkle-handler.ts @@ -1,8 +1,8 @@ import { globalScene } from "#app/global-scene"; -import Pokemon from "./pokemon"; -import { fixedInt, coerceArray, randInt } from "#app/utils/common"; +import { Pokemon } from "#field/pokemon"; +import { coerceArray, fixedInt, randInt } from "#utils/common"; -export default class PokemonSpriteSparkleHandler { +export class PokemonSpriteSparkleHandler { private sprites: Set; setup(): void { diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index eee6c309859..32edd721cd9 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1,180 +1,179 @@ -import Phaser from "phaser"; -import type { AnySound } from "#app/battle-scene"; -import type BattleScene from "#app/battle-scene"; +import type { Ability, PreAttackModifyDamageAbAttrParams } from "#abilities/ability"; +import { applyAbAttrs, applyOnGainAbAttrs, applyOnLoseAbAttrs } from "#abilities/apply-ab-attrs"; +import type { AnySound, BattleScene } from "#app/battle-scene"; +import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; +import { timedEventManager } from "#app/global-event-manager"; import { globalScene } from "#app/global-scene"; -import type { Variant } from "#app/sprites/variant"; -import { populateVariantColors, variantColorCache } from "#app/sprites/variant"; -import { variantData } from "#app/sprites/variant"; -import BattleInfo from "#app/ui/battle-info/battle-info"; -import { EnemyBattleInfo } from "#app/ui/battle-info/enemy-battle-info"; -import { PlayerBattleInfo } from "#app/ui/battle-info/player-battle-info"; -import type Move from "#app/data/moves/move"; -import { getMoveTargets } from "#app/data/moves/move-utils"; -import { applyMoveAttrs } from "#app/data/moves/apply-attrs"; -import { allMoves } from "#app/data/data-lists"; -import { MoveTarget } from "#enums/MoveTarget"; -import { MoveCategory } from "#enums/MoveCategory"; -import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; -import { default as PokemonSpecies, getFusedSpeciesName, getPokemonSpeciesForm } from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; -import { - NumberHolder, - randSeedInt, - getIvsFromId, - BooleanHolder, - randSeedItem, - isNullOrUndefined, - getEnumValues, - toDmgValue, - fixedInt, - rgbaToInt, - rgbHexToRgba, - rgbToHsv, - deltaRgb, - isBetween, - randSeedFloat, - type Constructor, - randSeedIntRange, - coerceArray, -} from "#app/utils/common"; -import type { TypeDamageMultiplier } from "#app/data/type"; -import { getTypeDamageMultiplier, getTypeRgb } from "#app/data/type"; -import { PokemonType } from "#enums/pokemon-type"; -import { getLevelTotalExp } from "#app/data/exp"; -import { - Stat, - type PermanentStat, - type BattleStat, - type EffectiveStat, - PERMANENT_STATS, - BATTLE_STATS, - EFFECTIVE_STATS, -} from "#enums/stat"; -import { - EnemyDamageBoosterModifier, - EnemyDamageReducerModifier, - EnemyFusionChanceModifier, - HiddenAbilityRateBoosterModifier, - BaseStatModifier, - PokemonFriendshipBoosterModifier, - PokemonHeldItemModifier, - PokemonNatureWeightModifier, - ShinyRateBoosterModifier, - SurviveDamageModifier, - TempStatStageBoosterModifier, - TempCritBoosterModifier, - StatBoosterModifier, - CritBoosterModifier, - PokemonBaseStatFlatModifier, - PokemonBaseStatTotalModifier, - PokemonIncrementingStatModifier, - EvoTrackerModifier, - PokemonMultiHitModifier, -} from "#app/modifier/modifier"; -import { PokeballType } from "#enums/pokeball"; -import { Gender } from "#app/data/gender"; -import { Status, getRandomStatus } from "#app/data/status-effect"; -import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; +import { getPokemonNameWithAffix } from "#app/messages"; +import Overrides from "#app/overrides"; +import { speciesEggMoves } from "#balance/egg-moves"; +import type { SpeciesFormEvolution } from "#balance/pokemon-evolutions"; import { + FusionSpeciesFormEvolution, pokemonEvolutions, pokemonPrevolutions, - FusionSpeciesFormEvolution, validateShedinjaEvo, -} from "#app/data/balance/pokemon-evolutions"; -import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "#app/data/balance/tms"; +} from "#balance/pokemon-evolutions"; +import type { LevelMoves } from "#balance/pokemon-level-moves"; +import { EVOLVE_MOVE, RELEARN_MOVE } from "#balance/pokemon-level-moves"; +import { BASE_HIDDEN_ABILITY_CHANCE, BASE_SHINY_CHANCE, SHINY_EPIC_CHANCE, SHINY_VARIANT_CHANCE } from "#balance/rates"; +import { getStarterValueFriendshipCap, speciesStarterCosts } from "#balance/starters"; +import { reverseCompatibleTms, tmPoolTiers, tmSpecies } from "#balance/tms"; +import type { SuppressAbilitiesTag } from "#data/arena-tag"; +import { NoCritTag, WeakenMoveScreenTag } from "#data/arena-tag"; import { - BattlerTag, - EncoreTag, - GroundedTag, - HighestStatBoostTag, - SubstituteTag, - TypeImmuneTag, - getBattlerTag, - SemiInvulnerableTag, - MoveRestrictionBattlerTag, - ExposedTag, - DragonCheerTag, - CritBoostTag, - TrappedTag, - TarShotTag, AutotomizedTag, - PowerTrickTag, - loadBattlerTag, + BattlerTag, + CritBoostTag, + DragonCheerTag, + EncoreTag, + ExposedTag, + GroundedTag, type GrudgeTag, -} from "../data/battler-tags"; -import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; -import { WeatherType } from "#enums/weather-type"; -import { NoCritTag, WeakenMoveScreenTag } from "#app/data/arena-tag"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import type { SuppressAbilitiesTag } from "#app/data/arena-tag"; -import type { Ability, PreAttackModifyDamageAbAttrParams } from "#app/data/abilities/ability"; -import { applyAbAttrs, applyOnGainAbAttrs, applyOnLoseAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { allAbilities } from "#app/data/data-lists"; -import type PokemonData from "#app/system/pokemon-data"; -import { BattlerIndex } from "#enums/battler-index"; -import { UiMode } from "#enums/ui-mode"; -import type { PartyOption } from "#app/ui/party-ui-handler"; -import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; -import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; -import { EVOLVE_MOVE, RELEARN_MOVE } from "#app/data/balance/pokemon-level-moves"; -import { achvs } from "#app/system/achv"; -import type { StarterDataEntry, StarterMoveset } from "#app/system/game-data"; -import { DexAttr } from "#enums/dex-attr"; -import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from "@material/material-color-utilities"; -import { getNatureStatMultiplier } from "#app/data/nature"; -import type { SpeciesFormChange } from "#app/data/pokemon-forms"; + getBattlerTag, + HighestStatBoostTag, + MoveRestrictionBattlerTag, + PowerTrickTag, + SemiInvulnerableTag, + SubstituteTag, + TarShotTag, + TrappedTag, + TypeImmuneTag, +} from "#data/battler-tags"; +import { applyChallenges } from "#data/challenge"; +import { allAbilities, allMoves } from "#data/data-lists"; +import { getLevelTotalExp } from "#data/exp"; import { SpeciesFormChangeActiveTrigger, SpeciesFormChangeLapseTeraTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, -} from "#app/data/pokemon-forms/form-change-triggers"; -import { TerrainType } from "#app/data/terrain"; -import type { TrainerSlot } from "#enums/trainer-slot"; -import Overrides from "#app/overrides"; -import i18next from "i18next"; -import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { ModifierTier } from "#enums/modifier-tier"; -import { applyChallenges } from "#app/data/challenge"; -import { ChallengeType } from "#enums/challenge-type"; +} from "#data/form-change-triggers"; +import { Gender } from "#data/gender"; +import { getNatureStatMultiplier } from "#data/nature"; +import { + CustomPokemonData, + PokemonBattleData, + PokemonSummonData, + PokemonTempSummonData, + PokemonTurnData, + PokemonWaveData, +} 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 { getRandomStatus, getStatusEffectOverlapText, Status } from "#data/status-effect"; +import { getTerrainBlockMessage, TerrainType } from "#data/terrain"; +import type { TypeDamageMultiplier } from "#data/type"; +import { getTypeDamageMultiplier, getTypeRgb } from "#data/type"; import { AbilityId } from "#enums/ability-id"; +import { AiType } from "#enums/ai-type"; +import { ArenaTagSide } from "#enums/arena-tag-side"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattleSpec } from "#enums/battle-spec"; +import { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import type { BerryType } from "#enums/berry-type"; import { BiomeId } from "#enums/biome-id"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { getPokemonNameWithAffix } from "#app/messages"; +import { ChallengeType } from "#enums/challenge-type"; import { Challenges } from "#enums/challenges"; -import { PokemonAnimType } from "#enums/pokemon-anim-type"; -import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import { SwitchType } from "#enums/switch-type"; -import { SpeciesFormKey } from "#enums/species-form-key"; -import { getStatusEffectOverlapText } from "#app/data/status-effect"; -import { - BASE_HIDDEN_ABILITY_CHANCE, - BASE_SHINY_CHANCE, - SHINY_EPIC_CHANCE, - SHINY_VARIANT_CHANCE, -} from "#app/data/balance/rates"; -import { Nature } from "#enums/nature"; -import { StatusEffect } from "#enums/status-effect"; -import { doShinySparkleAnim } from "#app/field/anims"; -import { MoveFlags } from "#enums/MoveFlags"; -import { timedEventManager } from "#app/global-event-manager"; -import { loadMoveAnimations } from "#app/sprites/pokemon-asset-loader"; -import { isVirtual, isIgnorePP, MoveUseMode } from "#enums/move-use-mode"; +import { DexAttr } from "#enums/dex-attr"; import { FieldPosition } from "#enums/field-position"; -import { LearnMoveSituation } from "#enums/learn-move-situation"; import { HitResult } from "#enums/hit-result"; -import { AiType } from "#enums/ai-type"; -import type { MoveResult } from "#enums/move-result"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import type { AbAttrMap, AbAttrString, TypeMultiplierAbAttrParams } from "#app/@types/ability-types"; +import { LearnMoveSituation } from "#enums/learn-move-situation"; +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"; +import { PokemonAnimType } from "#enums/pokemon-anim-type"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesFormKey } from "#enums/species-form-key"; +import { SpeciesId } from "#enums/species-id"; +import { + BATTLE_STATS, + type BattleStat, + EFFECTIVE_STATS, + type EffectiveStat, + PERMANENT_STATS, + type PermanentStat, + Stat, +} from "#enums/stat"; +import { StatusEffect } from "#enums/status-effect"; +import { SwitchType } from "#enums/switch-type"; +import type { TrainerSlot } from "#enums/trainer-slot"; +import { UiMode } from "#enums/ui-mode"; +import { WeatherType } from "#enums/weather-type"; +import { doShinySparkleAnim } from "#field/anims"; +import { + BaseStatModifier, + CritBoosterModifier, + EnemyDamageBoosterModifier, + EnemyDamageReducerModifier, + EnemyFusionChanceModifier, + EvoTrackerModifier, + HiddenAbilityRateBoosterModifier, + PokemonBaseStatFlatModifier, + PokemonBaseStatTotalModifier, + PokemonFriendshipBoosterModifier, + PokemonHeldItemModifier, + PokemonIncrementingStatModifier, + PokemonMultiHitModifier, + PokemonNatureWeightModifier, + ShinyRateBoosterModifier, + StatBoosterModifier, + SurviveDamageModifier, + TempCritBoosterModifier, + TempStatStageBoosterModifier, +} from "#modifiers/modifier"; +import { applyMoveAttrs } from "#moves/apply-attrs"; +import type { Move } from "#moves/move"; +import { getMoveTargets } from "#moves/move-utils"; +import { PokemonMove } from "#moves/pokemon-move"; +import { loadMoveAnimations } from "#sprites/pokemon-asset-loader"; +import type { Variant } from "#sprites/variant"; +import { populateVariantColors, variantColorCache, variantData } from "#sprites/variant"; +import { achvs } from "#system/achv"; +import type { StarterDataEntry, StarterMoveset } from "#system/game-data"; +import type { PokemonData } from "#system/pokemon-data"; +import type { AbAttrMap, AbAttrString, TypeMultiplierAbAttrParams } from "#types/ability-types"; +import type { DamageCalculationResult, DamageResult } from "#types/damage-result"; +import type { IllusionData } from "#types/illusion-data"; +import type { TurnMove } from "#types/turn-move"; +import { BattleInfo } from "#ui/battle-info"; +import { EnemyBattleInfo } from "#ui/enemy-battle-info"; +import type { PartyOption } from "#ui/party-ui-handler"; +import { PartyUiHandler, PartyUiMode } from "#ui/party-ui-handler"; +import { PlayerBattleInfo } from "#ui/player-battle-info"; +import { + BooleanHolder, + type Constructor, + coerceArray, + deltaRgb, + fixedInt, + getIvsFromId, + isBetween, + isNullOrUndefined, + NumberHolder, + randSeedFloat, + randSeedInt, + randSeedIntRange, + randSeedItem, + rgbaToInt, + rgbHexToRgba, + rgbToHsv, + toDmgValue, +} from "#utils/common"; +import { getEnumValues } from "#utils/enums"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { argbFromRgba, QuantizerCelebi, rgbaFromArgb } from "@material/material-color-utilities"; +import i18next from "i18next"; +import Phaser from "phaser"; +import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; /** Base typeclass for damage parameter methods, used for DRY */ type damageParams = { @@ -206,7 +205,7 @@ type getBaseDamageParams = Omit; /** Type for the parameters of {@linkcode Pokemon#getAttackDamage | getAttackDamage} */ type getAttackDamageParams = Omit; -export default abstract class Pokemon extends Phaser.GameObjects.Container { +export abstract class Pokemon extends Phaser.GameObjects.Container { /** * This pokemon's {@link https://bulbapedia.bulbagarden.net/wiki/Personality_value | Personality value/PID}, * used to determine various parameters of this Pokemon. @@ -376,7 +375,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.ivs = ivs || getIvsFromId(this.id); if (this.gender === undefined) { - this.generateGender(); + this.gender = this.species.generateGender(); } if (this.formIndex === undefined) { @@ -438,7 +437,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param useIllusion - Whether we want the fake name or the real name of the Pokemon (for Illusion ability). + * Return the name that will be displayed when this Pokemon is sent out into battle. + * @param useIllusion - Whether to consider this Pokemon's illusion if present; default `true` + * @returns The name to render for this {@linkcode Pokemon}. */ getNameToRender(useIllusion = true) { const name: string = @@ -447,7 +448,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { !useIllusion && this.summonData.illusion ? this.summonData.illusion.basePokemon.nickname : this.nickname; try { if (nickname) { - return decodeURIComponent(escape(atob(nickname))); + return decodeURIComponent(escape(atob(nickname))); // TODO: Remove `atob` and `escape`... eventually... } return name; } catch (err) { @@ -456,11 +457,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } - getPokeball(useIllusion = false) { - if (useIllusion) { - return this.summonData.illusion?.pokeball ?? this.pokeball; - } - return this.pokeball; + /** + * Return this Pokemon's {@linkcode PokeballType}. + * @param useIllusion - Whether to consider this Pokemon's illusion if present; default `false` + * @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; } init(): void { @@ -517,17 +520,17 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Checks if a pokemon is fainted (ie: its `hp <= 0`). - * It's usually better to call {@linkcode isAllowedInBattle()} - * @param checkStatus `true` to also check that the pokemon's status is {@linkcode StatusEffect.FAINT} - * @returns `true` if the pokemon is fainted + * Usually should not be called directly in favor of calling {@linkcode isAllowedInBattle()}. + * @param checkStatus - Whether to also check that the pokemon's status is {@linkcode StatusEffect.FAINT}; default `false` + * @returns Whether this Pokemon is fainted, as described above. */ public isFainted(checkStatus = false): boolean { return this.hp <= 0 && (!checkStatus || this.status?.effect === StatusEffect.FAINT); } /** - * Check if this pokemon is both not fainted and allowed to be in battle based on currently active challenges. - * @returns {boolean} `true` if pokemon is allowed in battle + * Check if this pokemon is both not fainted and allowed to be used based on currently active challenges. + * @returns Whether this Pokemon is allowed to partake in battle. */ public isAllowedInBattle(): boolean { return !this.isFainted() && this.isAllowedInChallenge(); @@ -535,8 +538,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Check if this pokemon is allowed based on any active challenges. - * It's usually better to call {@linkcode isAllowedInBattle()} - * @returns {boolean} `true` if pokemon is allowed in battle + * Usually should not be called directly in favor of consulting {@linkcode isAllowedInBattle()}. + * @returns Whether this Pokemon is allowed under the current challenge conditions. */ public isAllowedInChallenge(): boolean { const challengeAllowed = new BooleanHolder(true); @@ -546,8 +549,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Checks if this {@linkcode Pokemon} is allowed in battle (ie: not fainted, and allowed under any active challenges). - * @param onField `true` to also check if the pokemon is currently on the field; default `false` - * @returns `true` if the pokemon is "active", as described above. + * @param onField - Whether to also check if the pokemon is currently on the field; default `false` + * @returns Whether this pokemon is considered "active", as described above. * Returns `false` if there is no active {@linkcode BattleScene} or the pokemon is disallowed. */ public isActive(onField = false): boolean { @@ -559,7 +562,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getDexAttr(): bigint { let ret = 0n; - ret |= this.gender !== Gender.FEMALE ? DexAttr.MALE : DexAttr.FEMALE; + if (this.gender !== Gender.GENDERLESS) { + ret |= this.gender !== Gender.FEMALE ? DexAttr.MALE : DexAttr.FEMALE; + } ret |= !this.shiny ? DexAttr.NON_SHINY : DexAttr.SHINY; ret |= this.variant >= 2 ? DexAttr.VARIANT_3 : this.variant === 1 ? DexAttr.VARIANT_2 : DexAttr.DEFAULT_VARIANT; ret |= globalScene.gameData.getFormAttr(this.formIndex); @@ -702,7 +707,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { abstract getBattlerIndex(): BattlerIndex; /** - * @param useIllusion - Whether we want the illusion or not. + * 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 useIllusion - Whether to consider this pokemon's active illusion; default `false` + * @returns A promise that resolves once all the corresponding assets have been loaded. */ async loadAssets(ignoreOverride = true, useIllusion = false): Promise { /** Promises that are loading assets and can be run concurrently. */ @@ -831,11 +839,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Attempt to process variant sprite. - * - * @param cacheKey the cache key for the variant color sprite - * @param useExpSprite should the experimental sprite be used - * @param battleSpritePath the filename of the sprite + * Attempt to process variant sprite color caches. + * @param cacheKey - the cache key for the variant color sprite + * @param useExpSprite - Whether experimental sprites should be used if present + * @param battleSpritePath - the filename of the sprite */ async populateVariantColorCache(cacheKey: string, useExpSprite: boolean, battleSpritePath: string) { const spritePath = `./images/pokemon/variant/${useExpSprite ? "exp/" : ""}${battleSpritePath}.json`; @@ -882,8 +889,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.fusionSpecies.forms[this.fusionFormIndex].formKey; } - getSpriteAtlasPath(ignoreOverride?: boolean): string { + // TODO: Add more documentation for all these attributes. + // They may be all similar, but what each one actually _does_ is quite unclear at first glance + + getSpriteAtlasPath(ignoreOverride = false): string { const spriteId = this.getSpriteId(ignoreOverride).replace(/_{2}/g, "/"); + return `${/_[1-3]$/.test(spriteId) ? "variant/" : ""}${spriteId}`; } @@ -1026,10 +1037,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Get this {@linkcode Pokemon}'s {@linkcode PokemonSpeciesForm}. - * @param ignoreOverride - Whether to ignore overridden species from {@linkcode MoveId.TRANSFORM}, default `false`. - * This overrides `useIllusion` if `true`. - * @param useIllusion - `true` to use the speciesForm of the illusion; default `false`. + * Return this Pokemon's {@linkcode PokemonSpeciesForm | SpeciesForm}. + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.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}. */ getSpeciesForm(ignoreOverride = false, useIllusion = false): PokemonSpeciesForm { if (!ignoreOverride && this.summonData.speciesForm) { @@ -1048,9 +1060,45 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param {boolean} useIllusion - Whether we want the fusionSpeciesForm of the illusion or not. + * Getter function that returns whether this {@linkcode Pokemon} is currently transformed into another one + * (such as by the effects of {@linkcode MoveId.TRANSFORM} or {@linkcode AbilityId.IMPOSTER}. + * @returns Whether this Pokemon is currently transformed. */ - getFusionSpeciesForm(ignoreOverride?: boolean, useIllusion = false): PokemonSpeciesForm { + isTransformed(): boolean { + return this.summonData.speciesForm !== null; + } + + /** + * Return whether this Pokemon can transform into an opposing Pokemon. + * @param target - The {@linkcode Pokemon} being transformed into + * @returns Whether this Pokemon can transform into `target`. + */ + canTransformInto(target: Pokemon): boolean { + return !( + // Neither pokemon can be already transformed + ( + this.isTransformed() || + target.isTransformed() || + // Neither pokemon can be behind an illusion + target.summonData.illusion || + this.summonData.illusion || + // The target cannot be behind a substitute + target.getTag(BattlerTagType.SUBSTITUTE) || + // Transforming to/from fusion pokemon causes various problems (crashes, etc.) + // TODO: Consider lifting restriction once bug is fixed + this.isFusion() || + target.isFusion() + ) + ); + } + + /** + * 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 useIllusion - Whether to consider the species of this Pokemon's illusion; default `false` + * @returns The {@linkcode PokemonSpeciesForm} of this Pokemon's fusion counterpart. + */ + getFusionSpeciesForm(ignoreOverride = false, useIllusion = false): PokemonSpeciesForm { const fusionSpecies: PokemonSpecies = useIllusion && this.summonData.illusion ? this.summonData.illusion.fusionSpecies! : this.fusionSpecies!; const fusionFormIndex = @@ -1261,39 +1309,39 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Retrieves the entire set of stats of this {@linkcode Pokemon}. - * @param bypassSummonData - whether to use actual stats or in-battle overriden stats from Transform; default `true` - * @returns the numeric values of this {@linkcode Pokemon}'s stats + * @param bypassSummonData - Whether to prefer actual stats (`true`) or in-battle overridden stats (`false`); default `true` + * @returns The numeric values of this {@linkcode Pokemon}'s stats as an array. */ getStats(bypassSummonData = true): number[] { - if (!bypassSummonData && this.summonData.stats) { - return this.summonData.stats; + if (!bypassSummonData) { + // Only grab summon data stats if nonzero + return this.summonData.stats.map((s, i) => s || this.stats[i]); } return this.stats; } /** * Retrieves the corresponding {@linkcode PermanentStat} of the {@linkcode Pokemon}. - * @param stat the desired {@linkcode PermanentStat} - * @param bypassSummonData prefer actual stats (`true` by default) or in-battle overridden stats (`false`) - * @returns the numeric value of the desired {@linkcode Stat} + * @param stat - The {@linkcode PermanentStat} to retrieve + * @param bypassSummonData - Whether to prefer actual stats (`true`) or in-battle overridden stats (`false`); default `true` + * @returns The numeric value of the desired {@linkcode Stat}. */ getStat(stat: PermanentStat, bypassSummonData = true): number { - if (!bypassSummonData && this.summonData.stats[stat] !== 0) { - return this.summonData.stats[stat]; + if (!bypassSummonData) { + // 0 = no override + return this.summonData.stats[stat] || this.stats[stat]; } return this.stats[stat]; } /** - * Writes the value to the corrseponding {@linkcode PermanentStat} of the {@linkcode Pokemon}. - * - * Note that this does nothing if {@linkcode value} is less than 0. - * @param stat the desired {@linkcode PermanentStat} to be overwritten - * @param value the desired numeric value - * @param bypassSummonData write to actual stats (`true` by default) or in-battle overridden stats (`false`) + * Change one of this {@linkcode Pokemon}'s {@linkcode PermanentStat}s to the specified value. + * @param stat - The {@linkcode PermanentStat} to be overwritten + * @param value - The stat value to set. Ignored if `<=0` + * @param bypassSummonData - Whether to write to actual stats (`true`) or in-battle overridden stats (`false`); default `true` */ setStat(stat: PermanentStat, value: number, bypassSummonData = true): void { - if (value < 0) { + if (value <= 0) { return; } @@ -1309,31 +1357,25 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns the numeric values of the {@linkcode Pokemon}'s in-battle stat stages if available, a fresh stat stage array otherwise */ getStatStages(): number[] { - return this.summonData ? this.summonData.statStages : [0, 0, 0, 0, 0, 0, 0]; + return this.summonData.statStages; } /** - * Retrieves the in-battle stage of the specified {@linkcode BattleStat}. - * @param stat the {@linkcode BattleStat} whose stage is desired - * @returns the stage of the desired {@linkcode BattleStat} if available, 0 otherwise + * Retrieve the value of the given stat stage for this {@linkcode Pokemon}. + * @param stat - The {@linkcode BattleStat} to retrieve the stat stage for + * @returns The value of the desired stat stage as a number within the range `[-6, +6]`. */ getStatStage(stat: BattleStat): number { - return this.summonData ? this.summonData.statStages[stat - 1] : 0; + return this.summonData.statStages[stat - 1]; } /** - * Writes the value to the in-battle stage of the corresponding {@linkcode BattleStat} of the {@linkcode Pokemon}. - * - * Note that, if the value is not within a range of [-6, 6], it will be forced to the closest range bound. - * @param stat the {@linkcode BattleStat} whose stage is to be overwritten - * @param value the desired numeric value + * Sets this {@linkcode Pokemon}'s in-battle stat stage to the corresponding value. + * @param stat - The {@linkcode BattleStat} whose stage is to be overwritten + * @param value - The value of the stat stage to set, forcibly clamped within the range `[-6, +6]`. */ setStatStage(stat: BattleStat, value: number): void { - if (value >= -6) { - this.summonData.statStages[stat - 1] = Math.min(value, 6); - } else { - this.summonData.statStages[stat - 1] = Math.max(value, -6); - } + this.summonData.statStages[stat - 1] = Phaser.Math.Clamp(value, -6, 6); } /** @@ -1378,17 +1420,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Calculates and retrieves the final value of a stat considering any held * items, move effects, opponent abilities, and whether there was a critical * hit. - * @param stat the desired {@linkcode EffectiveStat} - * @param opponent the target {@linkcode Pokemon} - * @param move the {@linkcode Move} being used - * @param ignoreAbility determines whether this Pokemon's abilities should be ignored during the stat calculation - * @param ignoreOppAbility during an attack, determines whether the opposing Pokemon's abilities should be ignored during the stat calculation. - * @param ignoreAllyAbility during an attack, determines whether the ally Pokemon's abilities should be ignored during the stat calculation. - * @param isCritical determines whether a critical hit has occurred or not (`false` by default) - * @param simulated if `true`, nullifies any effects that produce any changes to game state from triggering - * @param ignoreHeldItems determines whether this Pokemon's held items should be ignored during the stat calculation, default `false` - * @returns the final in-battle value of a stat + * @param stat - The desired {@linkcode EffectiveStat | Stat} to check. + * @param opponent - The {@linkcode Pokemon} being targeted, if applicable. + * @param move - The {@linkcode Move} being used, if any. Used to check ability ignoring effects and similar. + * @param ignoreAbility - Whether to ignore ability effects of the user; default `false`. + * @param ignoreOppAbility - Whether to ignore ability effects of the target; default `false`. + * @param ignoreAllyAbility - Whether to ignore ability effects of the user's allies; default `false`. + * @param isCritical - Whether a critical hit has occurred or not; default `false`. + * If `true`, will nullify offensive stat drops or defensive stat boosts. + * @param simulated - Whether to nullify any effects that produce changes to game state during calculations; default `true` + * @param ignoreHeldItems - Whether to ignore the user's held items during stat calculation; default `false`. + * @returns The final in-battle value for the given stat. */ + // TODO: Replace the optional parameters with an object to make calling this method less cumbersome getEffectiveStat( stat: EffectiveStat, opponent?: Pokemon, @@ -1408,6 +1452,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // The Ruin abilities here are never ignored, but they reveal themselves on summon anyway const fieldApplied = new BooleanHolder(false); for (const pokemon of globalScene.getField(true)) { + // TODO: remove `canStack` toggle from ability as breaking out renders it useless applyAbAttrs("FieldMultiplyStatAbAttr", { pokemon, stat, @@ -1420,6 +1465,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { break; } } + if (!ignoreAbility) { applyAbAttrs("StatMultiplierAbAttr", { pokemon: this, @@ -1619,9 +1665,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param useIllusion - Whether we want the fake or real gender (illusion ability). + * Return this Pokemon's {@linkcode Gender}. + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.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}. */ - getGender(ignoreOverride?: boolean, useIllusion = false): Gender { + getGender(ignoreOverride = false, useIllusion = false): Gender { if (useIllusion && this.summonData.illusion) { return this.summonData.illusion.gender; } @@ -1632,9 +1681,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param useIllusion - Whether we want the fake or real gender (illusion ability). + * Return this Pokemon's fusion's {@linkcode Gender}. + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.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. */ - getFusionGender(ignoreOverride?: boolean, useIllusion = false): Gender { + getFusionGender(ignoreOverride = false, useIllusion = false): Gender { if (useIllusion && this.summonData.illusion?.fusionGender) { return this.summonData.illusion.fusionGender; } @@ -1645,15 +1697,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param useIllusion - Whether we want the fake or real shininess (illusion ability). + * Check whether this Pokemon is shiny. + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns Whether this Pokemon is shiny */ isShiny(useIllusion = false): boolean { if (!useIllusion && this.summonData.illusion) { - return !!( + return ( this.summonData.illusion.basePokemon?.shiny || - (this.summonData.illusion.fusionSpecies && this.summonData.illusion.basePokemon?.fusionShiny) + (this.summonData.illusion.fusionSpecies && this.summonData.illusion.basePokemon?.fusionShiny) || + false ); } + return this.shiny || (this.isFusion(useIllusion) && this.fusionShiny); } @@ -1672,9 +1728,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * - * @param useIllusion - Whether we want the fake or real shininess (illusion ability). - * @returns `true` if the {@linkcode Pokemon} is shiny and the fusion is shiny as well, `false` otherwise + * Check whether this Pokemon is doubly shiny (both normal and fusion are shiny). + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns Whether this pokemon's base and fusion counterparts are both shiny. */ isDoubleShiny(useIllusion = false): boolean { if (!useIllusion && this.summonData.illusion?.basePokemon) { @@ -1684,11 +1740,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.summonData.illusion.basePokemon.fusionShiny ); } + return this.isFusion(useIllusion) && this.shiny && this.fusionShiny; } /** - * @param useIllusion - Whether we want the fake or real variant (illusion ability). + * Return this Pokemon's {@linkcode Variant | shiny variant}. + * 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) { @@ -1696,9 +1756,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ? this.summonData.illusion.basePokemon!.variant : (Math.max(this.variant, this.fusionVariant) as Variant); } + return !this.isFusion(true) ? this.variant : (Math.max(this.variant, this.fusionVariant) as Variant); } + // TODO: Clarify how this differs from `getVariant` getBaseVariant(doubleShiny: boolean): Variant { if (doubleShiny) { return this.summonData.illusion?.basePokemon?.variant ?? this.variant; @@ -1706,19 +1768,28 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.getVariant(); } + /** + * Return this pokemon's overall luck value, based on its shininess (1 pt per variant lvl). + * @returns The luck value of this Pokemon. + */ getLuck(): number { return this.luck + (this.isFusion() ? this.fusionLuck : 0); } + /** + * Return whether this {@linkcode Pokemon} is currently fused with anything. + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns Whether this Pokemon is currently fused with another species. + */ isFusion(useIllusion = false): boolean { - if (useIllusion && this.summonData.illusion) { - return !!this.summonData.illusion.fusionSpecies; - } - return !!this.fusionSpecies; + return useIllusion && this.summonData.illusion ? !!this.summonData.illusion.fusionSpecies : !!this.fusionSpecies; } /** - * @param useIllusion - Whether we want the fake name or the real name of the Pokemon (for Illusion ability). + * Return this {@linkcode Pokemon}'s name. + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns This Pokemon's name. + * @see {@linkcode getNameToRender} - gets this Pokemon's display name. */ getName(useIllusion = false): string { return !useIllusion && this.summonData.illusion?.basePokemon @@ -1727,19 +1798,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks if the {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}. - * @param species the pokemon {@linkcode SpeciesId} to check - * @returns `true` if the {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}, `false` otherwise + * Check whether this {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}. + * @param species - The {@linkcode SpeciesId} to check against. + * @returns Whether this Pokemon is currently fused with the specified {@linkcode SpeciesId}. */ hasFusionSpecies(species: SpeciesId): boolean { return this.fusionSpecies?.speciesId === species; } /** - * Checks if the {@linkcode Pokemon} has is the specified {@linkcode SpeciesId} or is fused with it. - * @param species the pokemon {@linkcode SpeciesId} to check - * @param formKey If provided, requires the species to be in that form - * @returns `true` if the pokemon is the species or is fused with it, `false` otherwise + * Check whether this {@linkcode Pokemon} either is or is fused with the given {@linkcode SpeciesId}. + * @param species - The {@linkcode SpeciesId} to check against. + * @param formKey - If provided, will require the species to be in the given form. + * @returns Whether this Pokemon has this species as either its base or fusion counterpart. */ hasSpecies(species: SpeciesId, formKey?: string): boolean { if (isNullOrUndefined(formKey)) { @@ -1754,7 +1825,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { abstract isBoss(): boolean; - getMoveset(ignoreOverride?: boolean): PokemonMove[] { + /** + * 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` + * @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 @@ -1776,11 +1853,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks which egg moves have been unlocked for the {@linkcode Pokemon} based - * on the species it was met at or by the first {@linkcode Pokemon} in its evolution + * Check which egg moves have been unlocked for this {@linkcode Pokemon}. + * Looks at either the species it was met at or the first {@linkcode Species} in its evolution * line that can act as a starter and provides those egg moves. - * @returns an array of {@linkcode MoveId}, the length of which is determined by how many - * egg moves are unlocked for that species. + * @returns An array of all {@linkcode MoveId}s that are egg moves and unlocked for this Pokemon. */ getUnlockedEggMoves(): MoveId[] { const moves: MoveId[] = []; @@ -1797,13 +1873,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Gets all possible learnable level moves for the {@linkcode Pokemon}, + * Get all possible learnable level moves for the {@linkcode Pokemon}, * excluding any moves already known. * * Available egg moves are only included if the {@linkcode Pokemon} was * in the starting party of the run and if Fresh Start is not active. - * @returns an array of {@linkcode MoveId}, the length of which is determined - * by how many learnable moves there are for the {@linkcode Pokemon}. + * @returns An array of {@linkcode MoveId}s, as described above. */ public getLearnableLevelMoves(): MoveId[] { let levelMoves = this.getLevelMoves(1, true, false, true).map(lm => lm[1]); @@ -1818,12 +1893,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Gets the types of a pokemon - * @param includeTeraType - `true` to include tera-formed type; Default: `false` - * @param forDefend - `true` if the pokemon is defending from an attack; Default: `false` - * @param ignoreOverride - If `true`, ignore ability changing effects; Default: `false` - * @param useIllusion - `true` to return the types of the illusion instead of the actual types; Default: `false` - * @returns array of {@linkcode PokemonType} + * 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 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). */ public getTypes( includeTeraType = false, @@ -1919,7 +1994,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } // remove UNKNOWN if other types are present - if (types.length > 1 && types.includes(PokemonType.UNKNOWN)) { + if (types.length > 1) { const index = types.indexOf(PokemonType.UNKNOWN); if (index !== -1) { types.splice(index, 1); @@ -1940,24 +2015,25 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks if the pokemon's typing includes the specified type - * @param type - {@linkcode PokemonType} to check - * @param includeTeraType - `true` to include tera-formed type; Default: `true` - * @param forDefend - `true` if the pokemon is defending from an attack; Default: `false` - * @param ignoreOverride - If `true`, ignore ability changing effects; Default: `false` - * @returns `true` if the Pokemon's type matches + * Check if this Pokemon's typing includes the specified type. + * @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` + * @returns Whether this Pokemon is of the specified type. */ public isOfType(type: PokemonType, includeTeraType = true, forDefend = false, ignoreOverride = false): boolean { - return this.getTypes(includeTeraType, forDefend, ignoreOverride).some(t => t === type); + return this.getTypes(includeTeraType, forDefend, ignoreOverride).includes(type); } /** - * Gets the non-passive ability of the pokemon. This accounts for fusions and ability changing effects. - * This should rarely be called, most of the time {@linkcode hasAbility} or {@linkcode hasAbilityWithAttr} are better used as - * those check both the passive and non-passive abilities and account for ability suppression. - * @see {@linkcode hasAbility} {@linkcode hasAbilityWithAttr} Intended ways to check abilities in most cases - * @param ignoreOverride - If `true`, ignore ability changing effects; Default: `false` - * @returns The non-passive {@linkcode Ability} of the pokemon + * Get this Pokemon's non-passive {@linkcode Ability}, factoring in fusions, overrides and ability-changing effects. + + * 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` + * @returns The non-passive {@linkcode Ability} of this Pokemon. */ public getAbility(ignoreOverride = false): Ability { if (!ignoreOverride && this.summonData.ability) { @@ -2103,7 +2179,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (passive && !this.hasPassive()) { return false; } - const ability = !passive ? this.getAbility() : this.getPassiveAbility(); + const ability = passive ? this.getPassiveAbility() : this.getAbility(); if (this.isFusion() && ability.hasAttr("NoFusionAbilityAbAttr")) { return false; } @@ -2116,7 +2192,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } const suppressAbilitiesTag = arena.getTag(ArenaTagType.NEUTRALIZING_GAS) as SuppressAbilitiesTag; const suppressOffField = ability.hasAttr("PreSummonAbAttr"); - if ((this.isOnField() || suppressOffField) && suppressAbilitiesTag && !suppressAbilitiesTag.isBeingRemoved()) { + if ((this.isOnField() || suppressOffField) && suppressAbilitiesTag && !suppressAbilitiesTag.beingRemoved) { const thisAbilitySuppressing = ability.hasAttr("PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr"); const hasSuppressingAbility = this.hasAbilityWithAttr("PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr", false); // Neutralizing gas is up - suppress abilities unless they are unsuppressable or this pokemon is responsible for the gas @@ -2134,13 +2210,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks whether a pokemon has the specified ability and it's in effect. Accounts for all the various - * effects which can affect whether an ability will be present or in effect, and both passive and - * non-passive. This is the primary way to check whether a pokemon has a particular ability. - * @param ability The ability to check for + * Check whether a pokemon has the specified ability in effect, either as a normal or passive ability. + * 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 ability changing effects; default `false` - * @returns `true` if the ability is present and active + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @returns Whether this {@linkcode Pokemon} has the given ability */ public hasAbility(ability: AbilityId, canApply = true, ignoreOverride = false): boolean { if (this.getAbility(ignoreOverride).id === ability && (!canApply || this.canApplyAbility())) { @@ -2150,14 +2225,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks whether a pokemon has an ability with the specified attribute and it's in effect. - * Accounts for all the various effects which can affect whether an ability will be present or - * in effect, and both passive and non-passive. This is one of the two primary ways to check - * whether a pokemon has a particular ability. - * @param attrType The {@link AbAttr | ability attribute} to check for + * Check whether this pokemon has an ability with the specified attribute in effect, either as a normal or passive ability. + * 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 ability changing effects; default `false` - * @returns `true` if an ability with the given {@linkcode AbAttr} is present and active + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.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 { if ((!canApply || this.canApplyAbility()) && this.getAbility(ignoreOverride).hasAttr(attrType)) { @@ -2179,7 +2252,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const autotomizedTag = this.getTag(AutotomizedTag); let weightRemoved = 0; if (!isNullOrUndefined(autotomizedTag)) { - weightRemoved = 100 * autotomizedTag!.autotomizeCount; + weightRemoved = 100 * autotomizedTag.autotomizeCount; } const minWeight = 0.1; const weight = new NumberHolder(this.species.weight - weightRemoved); @@ -2492,41 +2565,50 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns A score value based on how favorable this Pokemon is when fighting the given Pokemon */ getMatchupScore(opponent: Pokemon): number { - const types = this.getTypes(true); - - const enemyTypes = opponent.getTypes(true, true, false, true); + const enemyTypes = opponent.getTypes(true, false, false, true); /** Is this Pokemon faster than the opponent? */ const outspeed = (this.isActive(true) ? this.getEffectiveStat(Stat.SPD, opponent) : this.getStat(Stat.SPD, false)) >= opponent.getEffectiveStat(Stat.SPD, this); - /** - * Based on how effective this Pokemon's types are offensively against the opponent's types. - * This score is increased by 25 percent if this Pokemon is faster than the opponent. - */ - let atkScore = - opponent.getAttackTypeEffectiveness(types[0], this, false, true, undefined, true) * (outspeed ? 1.25 : 1); + /** * Based on how effectively this Pokemon defends against the opponent's types. * This score cannot be higher than 4. */ let defScore = 1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[0], opponent), 0.25); - if (types.length > 1) { - atkScore *= opponent.getAttackTypeEffectiveness(types[1], this); - } if (enemyTypes.length > 1) { defScore *= 1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[1], opponent, false, false, undefined, true), 0.25); } - atkScore *= 1.25; //give more value for the pokemon's typing + const moveset = this.moveset; let moveAtkScoreLength = 0; + let atkScore = 0; + // TODO: this calculation needs to consider more factors; it's currently very simplistic for (const move of moveset) { - if (move.getMove().category === MoveCategory.SPECIAL || move.getMove().category === MoveCategory.PHYSICAL) { - atkScore += opponent.getAttackTypeEffectiveness(move.getMove().type, this, false, true, undefined, true); - moveAtkScoreLength++; + const resolvedMove = move.getMove(); + // NOTE: Counter and Mirror Coat are considered as attack moves here + if (resolvedMove.category === MoveCategory.STATUS || move.getPpRatio() <= 0) { + continue; } + const moveType = resolvedMove.type; + let thisScore = opponent.getAttackTypeEffectiveness(moveType, this, false, true, undefined, true); + + // Add STAB multiplier for attack type effectiveness. + // For now, simply don't apply STAB to moves that may change type + if (this.getTypes(true).includes(moveType) && !move.getMove().hasAttr("VariableMoveTypeAttr")) { + thisScore *= 1.5; + } + + atkScore += thisScore; + moveAtkScoreLength++; } - atkScore = atkScore / (moveAtkScoreLength + 1); //calculate the median for the attack score + // Get average attack score of all damaging moves (|| 1 prevents division by zero)) + // TODO: Averaging the attack score is excessively simplistic, and doesn't reflect the AI's move selection logic + // e.g. if the mon has one 4x effective move and three 0.5x effective moves, this score would be ~1.375 + // which does not seem fair, given that if the AI were to switch, in all likelihood it would use the 4x move. + // We could consider a weighted average... + atkScore /= moveAtkScoreLength || 1; /** * Based on this Pokemon's HP ratio compared to that of the opponent. * This ratio is multiplied by 1.5 if this Pokemon outspeeds the opponent; @@ -2534,6 +2616,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ const hpRatio = this.getHpRatio(); const oppHpRatio = opponent.getHpRatio(); + // TODO: use better logic for predicting whether the pokemon "is dying" + // E.g., perhaps check if it would faint if the opponent were to use the same move it just used + // (twice if the user is slower) const isDying = hpRatio <= 0.2; let hpDiffRatio = hpRatio + (1 - oppHpRatio); if (isDying && this.isActive(true)) { @@ -2543,15 +2628,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { //It might not be a worthy sacrifice if it doesn't outspeed or doesn't do enough damage hpDiffRatio *= 0.85; } else { - hpDiffRatio = Math.min(1 - hpRatio + (outspeed ? 0.2 : 0.1), 1); + hpDiffRatio = 1 - hpRatio + (outspeed ? 0.2 : 0.1); } } else if (outspeed) { - hpDiffRatio = Math.min(hpDiffRatio * 1.25, 1); + hpDiffRatio = hpDiffRatio * 1.25; } else if (hpRatio > 0.2 && hpRatio <= 0.4) { - //Might be considered to be switched because it's not in low enough health - hpDiffRatio = Math.min(hpDiffRatio * 0.5, 1); + // Might be considered to be switched because it's not in low enough health + hpDiffRatio = hpDiffRatio * 0.5; } - return (atkScore + defScore) * hpDiffRatio; + return (atkScore + defScore) * Math.min(hpDiffRatio, 1); } getEvolution(): SpeciesFormEvolution | null { @@ -3336,16 +3421,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param onField - whether to also check if the pokemon is currently on the field (defaults to true) */ getOpponents(onField = true): Pokemon[] { - return ((this.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField()) as Pokemon[]).filter(p => + return (this.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField()).filter(p => p.isActive(onField), ); } getOpponentDescriptor(): string { - const opponents = this.getOpponents(); - if (opponents.length === 1) { - return opponents[0].name; - } return this.isPlayer() ? i18next.t("arenaTag:opposingTeam") : i18next.t("arenaTag:yourTeam"); } @@ -3367,10 +3448,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * * Note that this does not apply to evasion or accuracy * @see {@linkcode getAccuracyMultiplier} - * @param stat the desired {@linkcode EffectiveStat} - * @param opponent the target {@linkcode Pokemon} - * @param move the {@linkcode Move} being used - * @param ignoreOppAbility determines whether the effects of the opponent's abilities (i.e. Unaware) should be ignored (`false` by default) + * @param stat - The {@linkcode EffectiveStat} to calculate + * @param opponent - The {@linkcode Pokemon} being targeted + * @param move - The {@linkcode Move} being used + * @param ignoreOppAbility determines whether the effects of the opponent's abilities (i.e. Unaware) should be ignored (`false` by default) * @param isCritical determines whether a critical hit has occurred or not (`false` by default) * @param simulated determines whether effects are applied without altering game state (`true` by default) * @param ignoreHeldItems determines whether this Pokemon's held items should be ignored during the stat calculation, default `false` @@ -4359,6 +4440,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return null; } + /** + * Return this Pokemon's move history. + * Entries are sorted in order of OLDEST to NEWEST + * @returns An array of {@linkcode TurnMove}, as described above. + * @see {@linkcode getLastXMoves} + */ public getMoveHistory(): TurnMove[] { return this.summonData.moveHistory; } @@ -4372,19 +4459,20 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Returns a list of the most recent move entries in this Pokemon's move history. - * The retrieved move entries are sorted in order from NEWEST to OLDEST. - * @param moveCount The number of move entries to retrieve. - * If negative, retrieve the Pokemon's entire move history (equivalent to reversing the output of {@linkcode getMoveHistory()}). - * Default is `1`. - * @returns A list of {@linkcode TurnMove}, as specified above. + * Return a list of the most recent move entries in this {@linkcode Pokemon}'s move history. + * The retrieved move entries are sorted in order from **NEWEST** to **OLDEST**. + * @param moveCount - The maximum number of move entries to retrieve. + * If negative, retrieves the Pokemon's entire move history (equivalent to reversing the output of {@linkcode getMoveHistory()}). + * Default is `1`. + * @returns An array of {@linkcode TurnMove}, as specified above. */ + // TODO: Update documentation in dancer PR to mention "getLastNonVirtualMove" getLastXMoves(moveCount = 1): TurnMove[] { const moveHistory = this.getMoveHistory(); - if (moveCount >= 0) { + if (moveCount > 0) { return moveHistory.slice(Math.max(moveHistory.length - moveCount, 0)).reverse(); } - return moveHistory.slice(0).reverse(); + return moveHistory.slice().reverse(); } /** @@ -4654,16 +4742,37 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ); } - queueImmuneMessage(quiet: boolean, effect?: StatusEffect): void { - if (!effect || quiet) { + /** + * Display an immunity message for a failed status application. + * @param quiet - Whether to suppress message and return early + * @param reason - The reason for the status application failure - + * can be "overlap" (already has same status), "other" (generic fail message) + * or a {@linkcode TerrainType} for terrain-based blockages. + * Defaults to "other". + */ + queueStatusImmuneMessage( + quiet: boolean, + reason: "overlap" | "other" | Exclude = "other", + ): void { + if (quiet) { return; } - const message = - effect && this.status?.effect === effect - ? getStatusEffectOverlapText(effect ?? StatusEffect.NONE, getPokemonNameWithAffix(this)) - : i18next.t("abilityTriggers:moveImmunity", { - pokemonNameWithAffix: getPokemonNameWithAffix(this), - }); + + let message: string; + if (reason === "overlap") { + // "XYZ is already XXX!" + message = getStatusEffectOverlapText(this.status?.effect ?? StatusEffect.NONE, getPokemonNameWithAffix(this)); + } else if (typeof reason === "number") { + // "XYZ was protected by the XXX terrain!" / + // "XYZ surrounds itself with a protective mist!" + message = getTerrainBlockMessage(this, reason); + } else { + // "It doesn't affect XXX!" + message = i18next.t("abilityTriggers:moveImmunity", { + pokemonNameWithAffix: getPokemonNameWithAffix(this), + }); + } + globalScene.phaseManager.queueMessage(message); } @@ -4685,11 +4794,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ): boolean { if (effect !== StatusEffect.FAINT) { if (overrideStatus ? this.status?.effect === effect : this.status) { - this.queueImmuneMessage(quiet, effect); + this.queueStatusImmuneMessage(quiet, overrideStatus ? "overlap" : "other"); // having different status displays generic fail message return false; } if (this.isGrounded() && !ignoreField && globalScene.arena.terrain?.terrainType === TerrainType.MISTY) { - this.queueImmuneMessage(quiet, effect); + this.queueStatusImmuneMessage(quiet, TerrainType.MISTY); return false; } } @@ -4726,7 +4835,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.isOfType(PokemonType.POISON) || this.isOfType(PokemonType.STEEL)) { if (poisonImmunity.includes(true)) { - this.queueImmuneMessage(quiet, effect); + this.queueStatusImmuneMessage(quiet); return false; } } @@ -4734,13 +4843,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } case StatusEffect.PARALYSIS: if (this.isOfType(PokemonType.ELECTRIC)) { - this.queueImmuneMessage(quiet, effect); + this.queueStatusImmuneMessage(quiet); return false; } break; case StatusEffect.SLEEP: if (this.isGrounded() && globalScene.arena.terrain?.terrainType === TerrainType.ELECTRIC) { - this.queueImmuneMessage(quiet, effect); + this.queueStatusImmuneMessage(quiet, TerrainType.ELECTRIC); return false; } break; @@ -4751,13 +4860,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { globalScene?.arena?.weather?.weatherType && [WeatherType.SUNNY, WeatherType.HARSH_SUN].includes(globalScene.arena.weather.weatherType)) ) { - this.queueImmuneMessage(quiet, effect); + this.queueStatusImmuneMessage(quiet); return false; } break; case StatusEffect.BURN: if (this.isOfType(PokemonType.FIRE)) { - this.queueImmuneMessage(quiet, effect); + this.queueStatusImmuneMessage(quiet); return false; } break; @@ -5519,13 +5628,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Reduces one of this Pokemon's held item stacks by 1, and removes the item if applicable. + * Reduces one of this Pokemon's held item stacks by 1, removing it if applicable. * Does nothing if this Pokemon is somehow not the owner of the held item. - * @param heldItem The item stack to be reduced by 1. - * @param forBattle If `false`, do not trigger in-battle effects (such as Unburden) from losing the item. For example, set this to `false` if the Pokemon is giving away the held item for a Mystery Encounter. Default is `true`. - * @returns `true` if the item was removed successfully, `false` otherwise. + * @param heldItem - The item stack to be reduced. + * @param forBattle - Whether to trigger in-battle effects (such as Unburden) after losing the item. Default: `true` + * Should be `false` for all item loss occurring outside of battle (MEs, etc.). + * @returns Whether the item was removed successfully. */ public loseHeldItem(heldItem: PokemonHeldItemModifier, forBattle = true): boolean { + // TODO: What does a -1 pokemon id mean? if (heldItem.pokemonId !== -1 && heldItem.pokemonId !== this.id) { return false; } @@ -6197,22 +6308,23 @@ export class EnemyPokemon extends Pokemon { } /** - * Sets the pokemons boss status. If true initializes the boss segments either from the arguments - * or through the the Scene.getEncounterBossSegments function + * Set this {@linkcode EnemyPokemon}'s boss status. * - * @param boss if the pokemon is a boss - * @param bossSegments amount of boss segments (health-bar segments) + * @param boss - Whether this pokemon should be a boss; default `true` + * @param bossSegments - Optional amount amount of health bar segments to give; + * will be generated by {@linkcode BattleScene.getEncounterBossSegments} if omitted */ - setBoss(boss = true, bossSegments = 0): void { - if (boss) { - this.bossSegments = - bossSegments || - globalScene.getEncounterBossSegments(globalScene.currentBattle.waveIndex, this.level, this.species, true); - this.bossSegmentIndex = this.bossSegments - 1; - } else { + setBoss(boss = true, bossSegments?: number): void { + if (!boss) { this.bossSegments = 0; this.bossSegmentIndex = 0; + return; } + + this.bossSegments = + bossSegments ?? + globalScene.getEncounterBossSegments(globalScene.currentBattle.waveIndex, this.level, this.species, true); + this.bossSegmentIndex = this.bossSegments - 1; } generateAndPopulateMoveset(formIndex?: number): void { @@ -6790,241 +6902,3 @@ export class EnemyPokemon extends Pokemon { this.battleInfo.toggleFlyout(visible); } } - -/** - * Illusion property - */ -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 species of the illusion */ - species: SpeciesId; - /** The formIndex of the illusion */ - formIndex: number; - /** The gender of the illusion */ - gender: Gender; - /** The pokeball of the illusion */ - pokeball: PokeballType; - /** The fusion species of the illusion if it's a fusion */ - fusionSpecies?: PokemonSpecies; - /** The fusionFormIndex of the illusion */ - fusionFormIndex?: number; - /** The fusionGender of the illusion if it's a fusion */ - fusionGender?: Gender; - /** The level of the illusion (not used currently) */ - level?: number; -} - -export interface TurnMove { - move: MoveId; - targets: BattlerIndex[]; - useMode: MoveUseMode; - result?: MoveResult; - turn?: number; -} - -export interface AttackMoveResult { - move: MoveId; - result: DamageResult; - damage: number; - critical: boolean; - sourceId: number; - sourceBattlerIndex: BattlerIndex; -} - -/** - * Persistent in-battle data for a {@linkcode Pokemon}. - * Resets on switch or new battle. - */ -export class PokemonSummonData { - /** [Atk, Def, SpAtk, SpDef, Spd, Acc, Eva] */ - public statStages: number[] = [0, 0, 0, 0, 0, 0, 0]; - /** - * A queue of moves yet to be executed, used by charging, recharging and frenzy moves. - * So long as this array is nonempty, this Pokemon's corresponding `CommandPhase` will be skipped over entirely - * in favor of using the queued move. - * TODO: Clean up a lot of the code surrounding the move queue. - */ - public moveQueue: TurnMove[] = []; - public tags: BattlerTag[] = []; - public abilitySuppressed = false; - - // Overrides for transform. - // TODO: Move these into a separate class & add rage fist hit count - public speciesForm: PokemonSpeciesForm | null = null; - public fusionSpeciesForm: PokemonSpeciesForm | null = null; - public ability: AbilityId | undefined; - public passiveAbility: AbilityId | undefined; - public gender: Gender | undefined; - public fusionGender: Gender | undefined; - public stats: number[] = [0, 0, 0, 0, 0, 0]; - public moveset: PokemonMove[] | null; - - // If not initialized this value will not be populated from save data. - public types: PokemonType[] = []; - public addedType: PokemonType | null = null; - - /** Data pertaining to this pokemon's illusion. */ - public illusion: IllusionData | null = null; - public illusionBroken = false; - - /** Array containing all berries eaten in the last turn; used by {@linkcode AbilityId.CUD_CHEW} */ - public berriesEatenLast: BerryType[] = []; - - /** - * An array of all moves this pokemon has used since entering the battle. - * Used for most moves and abilities that check prior move usage or copy already-used moves. - */ - public moveHistory: TurnMove[] = []; - - constructor(source?: PokemonSummonData | Partial) { - if (isNullOrUndefined(source)) { - return; - } - - // TODO: Rework this into an actual generic function for use elsewhere - for (const [key, value] of Object.entries(source)) { - if (isNullOrUndefined(value) && this.hasOwnProperty(key)) { - 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)); - continue; - } - this[key] = value; - } - } -} - -// TODO: Merge this inside `summmonData` but exclude from save if/when a save data serializer is added -export class PokemonTempSummonData { - /** - * The number of turns this pokemon has spent without switching out. - * 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. - * Reset on switch and new wave, but not stored in `SummonData` to avoid being written to the save file. - - * Used to evaluate "first turn only" conditions such as - * {@linkcode MoveId.FAKE_OUT | Fake Out} and {@linkcode MoveId.FIRST_IMPRESSION | First Impression}). - */ - waveTurnCount = 1; -} - -/** - * Persistent data for a {@linkcode Pokemon}. - * Resets at the start of a new battle (but not on switch). - */ -export class PokemonBattleData { - /** Counter tracking direct hits this Pokemon has received during this battle; used for {@linkcode MoveId.RAGE_FIST} */ - public hitCount = 0; - /** Whether this Pokemon has eaten a berry this battle; used for {@linkcode MoveId.BELCH} */ - public hasEatenBerry = false; - /** Array containing all berries eaten and not yet recovered during this current battle; used by {@linkcode AbilityId.HARVEST} */ - public berriesEaten: BerryType[] = []; - - constructor(source?: PokemonBattleData | Partial) { - if (!isNullOrUndefined(source)) { - this.hitCount = source.hitCount ?? 0; - this.hasEatenBerry = source.hasEatenBerry ?? false; - this.berriesEaten = source.berriesEaten ?? []; - } - } -} - -/** - * Temporary data for a {@linkcode Pokemon}. - * Resets on new wave/battle start (but not on switch). - */ -export class PokemonWaveData { - /** Whether the pokemon has endured due to a {@linkcode BattlerTagType.ENDURE_TOKEN} */ - public endured = false; - /** - * A set of all the abilities this {@linkcode Pokemon} has used in this wave. - * Used to track once per battle conditions, as well as (hopefully) by the updated AI for move effectiveness. - */ - public abilitiesApplied: Set = new Set(); - /** Whether the pokemon's ability has been revealed or not */ - public abilityRevealed = false; -} - -/** - * Temporary data for a {@linkcode Pokemon}. - * Resets at the start of a new turn, as well as on switch. - */ -export class PokemonTurnData { - public acted = false; - /** How many times the current move should hit the target(s) */ - public hitCount = 0; - /** - * - `-1` = Calculate how many hits are left - * - `0` = Move is finished - */ - public hitsLeft = -1; - public totalDamageDealt = 0; - public singleHitDamageDealt = 0; - public damageTaken = 0; - public attacksReceived: AttackMoveResult[] = []; - public order: number; - public statStagesIncreased = false; - public statStagesDecreased = false; - public moveEffectiveness: TypeDamageMultiplier | null = null; - public combiningPledge?: MoveId; - public switchedInThisTurn = false; - public failedRunAway = false; - public joinedRound = false; - /** - * The amount of times this Pokemon has acted again and used a move in the current turn. - * Used to make sure multi-hits occur properly when the user is - * forced to act again in the same turn, and **must be incremented** by any effects that grant extra actions. - */ - public extraTurns = 0; - /** - * All berries eaten by this pokemon in this turn. - * Saved into {@linkcode PokemonSummonData | SummonData} by {@linkcode AbilityId.CUD_CHEW} on turn end. - * @see {@linkcode PokemonSummonData.berriesEatenLast} - */ - public berriesEaten: BerryType[] = []; -} - -export type DamageResult = - | HitResult.EFFECTIVE - | HitResult.SUPER_EFFECTIVE - | HitResult.NOT_VERY_EFFECTIVE - | HitResult.ONE_HIT_KO - | HitResult.CONFUSION - | HitResult.INDIRECT_KO - | HitResult.INDIRECT; - -/** Interface containing the results of a damage calculation for a given move */ -export interface DamageCalculationResult { - /** `true` if the move was cancelled (thus suppressing "No Effect" messages) */ - cancelled: boolean; - /** The effectiveness of the move */ - result: HitResult; - /** The damage dealt by the move */ - damage: number; -} diff --git a/src/field/trainer.ts b/src/field/trainer.ts index 8ac896e2717..7186cc4e928 100644 --- a/src/field/trainer.ts +++ b/src/field/trainer.ts @@ -1,29 +1,31 @@ import { globalScene } from "#app/global-scene"; -import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import type { TrainerConfig } from "#app/data/trainers/trainer-config"; -import type { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import { trainerPartyTemplates } from "#app/data/trainers/TrainerPartyTemplate"; -import { TrainerPartyCompoundTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { TrainerPoolTier } from "#enums/trainer-pool-tier"; -import { TeraAIMode } from "#enums/tera-ai-mode"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import { randSeedWeightedItem, randSeedItem, randSeedInt } from "#app/utils/common"; -import type { PersistentModifier } from "#app/modifier/modifier"; -import { ArenaTrapTag } from "#app/data/arena-tag"; +import { pokemonPrevolutions } from "#balance/pokemon-evolutions"; +import { signatureSpecies } from "#balance/signature-species"; +import { ArenaTrapTag } from "#data/arena-tag"; +import type { PokemonSpecies } from "#data/pokemon-species"; import { ArenaTagSide } from "#enums/arena-tag-side"; -import { getIsInitialized, initI18n } from "#app/plugins/i18n"; -import i18next from "i18next"; import { PartyMemberStrength } from "#enums/party-member-strength"; import { SpeciesId } from "#enums/species-id"; +import { TeraAIMode } from "#enums/tera-ai-mode"; +import { TrainerPoolTier } from "#enums/trainer-pool-tier"; +import { TrainerSlot } from "#enums/trainer-slot"; import { TrainerType } from "#enums/trainer-type"; -import { signatureSpecies } from "#app/data/balance/signature-species"; import { TrainerVariant } from "#enums/trainer-variant"; +import type { EnemyPokemon } from "#field/pokemon"; +import type { PersistentModifier } from "#modifiers/modifier"; +import { getIsInitialized, initI18n } from "#plugins/i18n"; +import type { TrainerConfig } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-config"; +import { + TrainerPartyCompoundTemplate, + type TrainerPartyTemplate, + trainerPartyTemplates, +} from "#trainers/trainer-party-template"; +import { randSeedInt, randSeedItem, randSeedWeightedItem } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import i18next from "i18next"; -export default class Trainer extends Phaser.GameObjects.Container { +export class Trainer extends Phaser.GameObjects.Container { public config: TrainerConfig; public variant: TrainerVariant; public partyTemplateIndex: number; @@ -421,7 +423,8 @@ export default class Trainer extends Phaser.GameObjects.Container { // If useNewSpeciesPool is true, we need to generate a new species from the new species pool, otherwise we generate a random species let species = useNewSpeciesPool - ? getPokemonSpecies(newSpeciesPool[Math.floor(randSeedInt(newSpeciesPool.length))]) + ? // TODO: should this use `randSeedItem`? + getPokemonSpecies(newSpeciesPool[Math.floor(randSeedInt(newSpeciesPool.length))]) : template.isSameSpecies(index) && index > offset ? getPokemonSpecies( battle.enemyParty[offset].species.getTrainerSpeciesForLevel( @@ -619,6 +622,8 @@ export default class Trainer extends Phaser.GameObjects.Container { if (maxScorePartyMemberIndexes.length > 1) { let rand: number; + // TODO: should this use `randSeedItem`? + globalScene.executeWithSeedOffset( () => (rand = randSeedInt(maxScorePartyMemberIndexes.length)), globalScene.currentBattle.turn << 2, diff --git a/src/game-mode.ts b/src/game-mode.ts index da6ef62e33c..c5ab120e218 100644 --- a/src/game-mode.ts +++ b/src/game-mode.ts @@ -1,21 +1,21 @@ -import i18next from "i18next"; -import type { FixedBattleConfigs } from "./battle"; -import { classicFixedBattles, FixedBattleConfig } from "./battle"; -import type { Challenge } from "./data/challenge"; -import { allChallenges, applyChallenges, copyChallenge } from "./data/challenge"; -import { ChallengeType } from "#enums/challenge-type"; -import type PokemonSpecies from "./data/pokemon-species"; -import { allSpecies } from "#app/data/data-lists"; -import type { Arena } from "./field/arena"; -import Overrides from "#app/overrides"; -import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils/common"; -import { BiomeId } from "#enums/biome-id"; -import { SpeciesId } from "#enums/species-id"; -import { Challenges } from "./enums/challenges"; +import { FixedBattleConfig } from "#app/battle"; +import { CHALLENGE_MODE_MYSTERY_ENCOUNTER_WAVES, CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { globalScene } from "#app/global-scene"; -import { getDailyStartingBiome } from "./data/daily-run"; -import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES, CHALLENGE_MODE_MYSTERY_ENCOUNTER_WAVES } from "./constants"; +import Overrides from "#app/overrides"; +import type { Challenge } from "#data/challenge"; +import { allChallenges, applyChallenges, copyChallenge } from "#data/challenge"; +import { getDailyStartingBiome } from "#data/daily-run"; +import { allSpecies } from "#data/data-lists"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { BiomeId } from "#enums/biome-id"; +import { ChallengeType } from "#enums/challenge-type"; +import { Challenges } from "#enums/challenges"; import { GameModes } from "#enums/game-modes"; +import { SpeciesId } from "#enums/species-id"; +import type { Arena } from "#field/arena"; +import { classicFixedBattles, type FixedBattleConfigs } from "#trainers/fixed-battle-configs"; +import { isNullOrUndefined, randSeedInt, randSeedItem } from "#utils/common"; +import i18next from "i18next"; interface GameModeConfig { isClassic?: boolean; @@ -164,14 +164,14 @@ export class GameMode implements GameModeConfig { if (waveIndex % 10 !== 1 && waveIndex % 10) { /** * Do not check X1 floors since there's a bug that stops trainer sprites from appearing - * after a X0 full party heal + * after a X0 full party heal, this also allows for a smoother biome transition for general gameplay feel */ const trainerChance = arena.getTrainerChance(); let allowTrainerBattle = true; if (trainerChance) { const waveBase = Math.floor(waveIndex / 10) * 10; - // Stop generic trainers from spawning in within 3 waves of a trainer battle - for (let w = Math.max(waveIndex - 3, waveBase + 2); w <= Math.min(waveIndex + 3, waveBase + 9); w++) { + // Stop generic trainers from spawning in within 2 waves of a fixed trainer battle + for (let w = Math.max(waveIndex - 2, waveBase + 2); w <= Math.min(waveIndex + 2, waveBase + 9); w++) { if (w === waveIndex) { continue; } diff --git a/src/global-event-manager.ts b/src/global-event-manager.ts index 3df3d17b5e9..5b67b4a6cc6 100644 --- a/src/global-event-manager.ts +++ b/src/global-event-manager.ts @@ -1,3 +1,3 @@ -import { TimedEventManager } from "./timed-event-manager"; +import { TimedEventManager } from "#app/timed-event-manager"; export const timedEventManager = new TimedEventManager(); diff --git a/src/global-scene.ts b/src/global-scene.ts index 76071bd7fac..3cc5a904db7 100644 --- a/src/global-scene.ts +++ b/src/global-scene.ts @@ -1,4 +1,4 @@ -import type BattleScene from "#app/battle-scene"; +import type { BattleScene } from "#app/battle-scene"; export let globalScene: BattleScene; diff --git a/src/init/init.ts b/src/init/init.ts new file mode 100644 index 00000000000..17b991be3a0 --- /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 { initChallenges } from "#data/challenge"; +import { initTrainerTypeDialogue } from "#data/dialogue"; +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 { 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 388802f467e..03d2278f26c 100644 --- a/src/inputs-controller.ts +++ b/src/inputs-controller.ts @@ -1,23 +1,23 @@ -import Phaser from "phaser"; -import { getEnumValues } from "#app/utils/common"; -import { deepCopy } from "#app/utils/data"; -import pad_generic from "./configs/inputs/pad_generic"; -import pad_unlicensedSNES from "./configs/inputs/pad_unlicensedSNES"; -import pad_xbox360 from "./configs/inputs/pad_xbox360"; -import pad_dualshock from "./configs/inputs/pad_dualshock"; -import pad_procon from "./configs/inputs/pad_procon"; -import { UiMode } from "#enums/ui-mode"; -import type SettingsGamepadUiHandler from "./ui/settings/settings-gamepad-ui-handler"; -import type SettingsKeyboardUiHandler from "./ui/settings/settings-keyboard-ui-handler"; -import cfg_keyboard_qwerty from "./configs/inputs/cfg_keyboard_qwerty"; -import { assign, getButtonWithKeycode, getIconForLatestInput, swap } from "#app/configs/inputs/configHandler"; import { globalScene } from "#app/global-scene"; -import type { SettingGamepad } from "#app/system/settings/settings-gamepad"; -import type { SettingKeyboard } from "#app/system/settings/settings-keyboard"; -import TouchControl from "#app/touch-controls"; +import { TouchControl } from "#app/touch-controls"; import { Button } from "#enums/buttons"; import { Device } from "#enums/devices"; -import MoveTouchControlsHandler from "./ui/settings/move-touch-controls-handler"; +import { UiMode } from "#enums/ui-mode"; +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"; +import type { SettingsGamepadUiHandler } from "#ui/settings-gamepad-ui-handler"; +import type { SettingsKeyboardUiHandler } from "#ui/settings-keyboard-ui-handler"; +import { deepCopy } from "#utils/data"; +import { getEnumValues } from "#utils/enums"; +import Phaser from "phaser"; export interface DeviceMapping { [key: string]: number; diff --git a/src/loading-scene.ts b/src/loading-scene.ts index f67d19e1027..706ea01a16a 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -1,28 +1,16 @@ -import { GachaType } from "#enums/gacha-types"; -import { getBiomeHasProps } from "#app/field/arena"; -import CacheBustedLoaderPlugin from "#app/plugins/cache-busted-loader-plugin"; +import { timedEventManager } from "#app/global-event-manager"; +import { initializeGame } from "#app/init/init"; import { SceneBase } from "#app/scene-base"; -import { WindowVariant, getWindowVariantSuffix } from "#app/ui/ui-theme"; import { isMobile } from "#app/touch-controls"; -import { localPing, getEnumValues, hasAllLocalizedSprites, getEnumKeys } from "#app/utils/common"; -import { initPokemonPrevolutions, initPokemonStarters } from "#app/data/balance/pokemon-evolutions"; -import { initBiomes } from "#app/data/balance/biomes"; -import { initEggMoves } from "#app/data/balance/egg-moves"; -import { initPokemonForms } from "#app/data/pokemon-forms"; -import { initSpecies } from "#app/data/pokemon-species"; -import { initMoves } from "#app/data/moves/move"; -import { initAbilities } from "#app/data/abilities/ability"; -import { initAchievements } from "#app/system/achv"; -import { initTrainerTypeDialogue } from "#app/data/dialogue"; -import { initChallenges } from "#app/data/challenge"; -import i18next from "i18next"; -import { initStatsKeys } from "#app/ui/game-stats-ui-handler"; -import { initVouchers } from "#app/system/voucher"; import { BiomeId } from "#enums/biome-id"; -import { initMysteryEncounters } from "#app/data/mystery-encounters/mystery-encounters"; -import { timedEventManager } from "./global-event-manager"; -import { initModifierPools } from "./modifier/init-modifier-pools"; -import { initModifierTypes } from "./modifier/modifier-type"; +import { GachaType } from "#enums/gacha-types"; +import { getBiomeHasProps } from "#field/arena"; +import { CacheBustedLoaderPlugin } from "#plugins/cache-busted-loader-plugin"; +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"; @@ -270,7 +258,7 @@ export class LoadingScene extends SceneBase { this.loadAtlas("egg_icons", "egg"); this.loadAtlas("egg_shard", "egg"); this.loadAtlas("egg_lightrays", "egg"); - for (const gt of getEnumKeys(GachaType)) { + for (const gt of Object.keys(GachaType)) { const key = gt.toLowerCase(); this.loadImage(`gacha_${key}`, "egg"); this.loadAtlas(`gacha_underlay_${key}`, "egg"); @@ -365,30 +353,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); @@ -459,6 +429,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/main.ts b/src/main.ts index 38bfcbe5636..7e4943bdca5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,11 +1,14 @@ +import "#app/polyfills"; +// All polyfills MUST be loaded first for side effects + +import { InvertPostFX } from "#app/pipelines/invert"; +import { initI18n } from "#app/plugins/i18n"; +import { version } from "#package.json"; import Phaser from "phaser"; -import InvertPostFX from "./pipelines/invert"; -import { version } from "../package.json"; -import UIPlugin from "phaser3-rex-plugins/templates/ui/ui-plugin"; import BBCodeTextPlugin from "phaser3-rex-plugins/plugins/bbcodetext-plugin"; import InputTextPlugin from "phaser3-rex-plugins/plugins/inputtext-plugin"; import TransitionImagePackPlugin from "phaser3-rex-plugins/templates/transitionimagepack/transitionimagepack-plugin"; -import { initI18n } from "./plugins/i18n"; +import UIPlugin from "phaser3-rex-plugins/templates/ui/ui-plugin"; // Catch global errors and display them in an alert so users can report the issue. window.onerror = (_message, _source, _lineno, _colno, error) => { @@ -42,11 +45,13 @@ Phaser.GameObjects.Rectangle.prototype.setPositionRelative = setPositionRelative document.fonts.load("16px emerald").then(() => document.fonts.load("10px pkmnems")); // biome-ignore lint/suspicious/noImplicitAnyLet: TODO let game; +// biome-ignore lint/suspicious/noImplicitAnyLet: TODO +let manifest; -const startGame = async (manifest?: any) => { +const startGame = async () => { await initI18n(); const LoadingScene = (await import("./loading-scene")).LoadingScene; - const BattleScene = (await import("./battle-scene")).default; + const BattleScene = (await import("./battle-scene")).BattleScene; game = new Phaser.Game({ type: Phaser.WEBGL, parent: "app", @@ -107,10 +112,13 @@ const startGame = async (manifest?: any) => { fetch("/manifest.json") .then(res => res.json()) .then(jsonResponse => { - startGame(jsonResponse.manifest); + manifest = jsonResponse.manifest; }) - .catch(() => { - // Manifest not found (likely local build) + .catch(err => { + // Manifest not found (likely local build or path error on live) + console.log(`Manifest not found. ${err}`); + }) + .finally(() => { startGame(); }); diff --git a/src/messages.ts b/src/messages.ts index 21473eb8361..177b4cc9b05 100644 --- a/src/messages.ts +++ b/src/messages.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; import { BattleSpec } from "#enums/battle-spec"; -import type Pokemon from "./field/pokemon"; +import type { Pokemon } from "#field/pokemon"; import i18next from "i18next"; /** diff --git a/src/modifier/init-modifier-pools.ts b/src/modifier/init-modifier-pools.ts index 60697333600..316d4dae741 100644 --- a/src/modifier/init-modifier-pools.ts +++ b/src/modifier/init-modifier-pools.ts @@ -1,31 +1,37 @@ -import type Pokemon from "#app/field/pokemon"; +/* biome-ignore-start lint/correctness/noUnusedImports: tsdoc imports */ +import type { initModifierTypes } from "#modifiers/modifier-type"; +/* biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */ + +import { timedEventManager } from "#app/global-event-manager"; +import { globalScene } from "#app/global-scene"; +import { pokemonEvolutions } from "#balance/pokemon-evolutions"; +import { modifierTypes } from "#data/data-lists"; +import { MAX_PER_TYPE_POKEBALLS } from "#data/pokeball"; +import { AbilityId } from "#enums/ability-id"; +import { BerryType } from "#enums/berry-type"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MoveId } from "#enums/move-id"; +import { PokeballType } from "#enums/pokeball"; +import { SpeciesId } from "#enums/species-id"; +import { StatusEffect } from "#enums/status-effect"; +import { Unlockables } from "#enums/unlockables"; +import type { Pokemon } from "#field/pokemon"; +import { + BerryModifier, + DoubleBattleChanceBoosterModifier, + SpeciesCritBoosterModifier, + TurnStatusEffectModifier, +} from "#modifiers/modifier"; import { dailyStarterModifierPool, enemyBuffModifierPool, modifierPool, trainerModifierPool, wildModifierPool, -} from "#app/modifier/modifier-pools"; -import { globalScene } from "#app/global-scene"; -import { DoubleBattleChanceBoosterModifier, SpeciesCritBoosterModifier, TurnStatusEffectModifier } from "./modifier"; -import { WeightedModifierType } from "./modifier-type"; -import { ModifierTier } from "../enums/modifier-tier"; -import type { WeightedModifierTypeWeightFunc } from "#app/@types/modifier-types"; -import { modifierTypes } from "#app/data/data-lists"; -import { PokeballType } from "#enums/pokeball"; -import { BerryModifier } from "./modifier"; -import { BerryType } from "#enums/berry-type"; -import { SpeciesId } from "#enums/species-id"; -import { timedEventManager } from "#app/global-event-manager"; -import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; -import { Unlockables } from "#enums/unlockables"; -import { isNullOrUndefined } from "#app/utils/common"; -import { MoveId } from "#enums/move-id"; -import { StatusEffect } from "#enums/status-effect"; -import { AbilityId } from "#enums/ability-id"; -import { MAX_PER_TYPE_POKEBALLS } from "#app/data/pokeball"; -// biome-ignore lint/correctness/noUnusedImports: This is used in a tsdoc comment -import type { initModifierTypes } from "./modifier-type"; +} from "#modifiers/modifier-pools"; +import { WeightedModifierType } from "#modifiers/modifier-type"; +import type { WeightedModifierTypeWeightFunc } from "#types/modifier-types"; +import { isNullOrUndefined } from "#utils/common"; /** * Initialize the wild modifier pool diff --git a/src/modifier/modifier-pools.ts b/src/modifier/modifier-pools.ts index 3396dca1f93..d66511e3239 100644 --- a/src/modifier/modifier-pools.ts +++ b/src/modifier/modifier-pools.ts @@ -1,9 +1,9 @@ -/** +/* * Contains modifier pools for different contexts in the game. * Can be safely imported without worrying about circular dependencies. */ -import type { ModifierPool } from "#app/@types/modifier-types"; +import type { ModifierPool } from "#types/modifier-types"; export const modifierPool: ModifierPool = {}; diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index fcbe6b66a4e..b359ec756e6 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1,19 +1,32 @@ +import { TYPE_BOOST_ITEM_BOOST_PERCENT } from "#app/constants"; +import { timedEventManager } from "#app/global-event-manager"; import { globalScene } from "#app/global-scene"; -import { EvolutionItem, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; -import { tmPoolTiers, tmSpecies } from "#app/data/balance/tms"; -import { getBerryEffectDescription, getBerryName } from "#app/data/berry"; -import { allMoves, modifierTypes } from "#app/data/data-lists"; -import { getNatureName, getNatureStatMultiplier } from "#app/data/nature"; -import { getPokeballCatchMultiplier, getPokeballName } from "#app/data/pokeball"; -import { pokemonFormChanges, SpeciesFormChangeCondition } from "#app/data/pokemon-forms"; -import { SpeciesFormChangeItemTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { FormChangeItem } from "#enums/form-change-item"; -import { getStatusEffectDescriptor } from "#app/data/status-effect"; -import { PokemonType } from "#enums/pokemon-type"; -import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import type { PokemonMove } from "#app/data/moves/pokemon-move"; -import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; +import Overrides from "#app/overrides"; +import { EvolutionItem, pokemonEvolutions } from "#balance/pokemon-evolutions"; +import { tmPoolTiers, tmSpecies } from "#balance/tms"; +import { getBerryEffectDescription, getBerryName } from "#data/berry"; +import { allMoves, modifierTypes } from "#data/data-lists"; +import { SpeciesFormChangeItemTrigger } from "#data/form-change-triggers"; +import { getNatureName, getNatureStatMultiplier } from "#data/nature"; +import { getPokeballCatchMultiplier, getPokeballName } from "#data/pokeball"; +import { pokemonFormChanges, SpeciesFormChangeCondition } from "#data/pokemon-forms"; +import { getStatusEffectDescriptor } from "#data/status-effect"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { BerryType } from "#enums/berry-type"; +import { FormChangeItem } from "#enums/form-change-item"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MoveId } from "#enums/move-id"; +import { Nature } from "#enums/nature"; +import { PokeballType } from "#enums/pokeball"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesFormKey } from "#enums/species-form-key"; +import { SpeciesId } from "#enums/species-id"; +import type { PermanentStat, TempBattleStat } from "#enums/stat"; +import { getStatKey, Stat, TEMP_BATTLE_STATS } from "#enums/stat"; +import { StatusEffect } from "#enums/status-effect"; +import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon"; import { AddPokeballModifier, AddVoucherModifier, @@ -24,6 +37,7 @@ import { BypassSpeedChanceModifier, ContactHeldItemTransferChanceModifier, CritBoosterModifier, + CriticalCatchChanceBoosterModifier, DamageMoneyRewardModifier, DoubleBattleChanceBoosterModifier, EnemyAttackStatusEffectChanceModifier, @@ -31,6 +45,7 @@ import { EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, + type EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, EvolutionItemModifier, @@ -40,6 +55,7 @@ import { ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, + FieldEffectModifier, FlinchChanceModifier, FusePokemonModifier, GigantamaxAccessModifier, @@ -52,10 +68,12 @@ import { LockModifierTiersModifier, MapModifier, MegaEvolutionAccessModifier, + type Modifier, MoneyInterestModifier, MoneyMultiplierModifier, MoneyRewardModifier, MultipleParticipantExpBonusModifier, + type PersistentModifier, PokemonAllMovePpRestoreModifier, PokemonBaseStatFlatModifier, PokemonBaseStatTotalModifier, @@ -83,6 +101,7 @@ import { SurviveDamageModifier, SwitchEffectTransferModifier, TempCritBoosterModifier, + TempExtraModifierModifier, TempStatStageBoosterModifier, TerastallizeAccessModifier, TerrastalizeModifier, @@ -90,44 +109,17 @@ import { TurnHealModifier, TurnHeldItemTransferModifier, TurnStatusEffectModifier, - type EnemyPersistentModifier, - type Modifier, - type PersistentModifier, - TempExtraModifierModifier, - CriticalCatchChanceBoosterModifier, - FieldEffectModifier, -} from "#app/modifier/modifier"; -import { ModifierTier } from "#enums/modifier-tier"; -import Overrides from "#app/overrides"; -import { getVoucherTypeIcon, getVoucherTypeName, VoucherType } from "#app/system/voucher"; -import type { PokemonMoveSelectFilter, PokemonSelectFilter } from "#app/ui/party-ui-handler"; -import PartyUiHandler from "#app/ui/party-ui-handler"; -import { getModifierTierTextTint } from "#app/ui/text"; -import { - formatMoney, - getEnumKeys, - getEnumValues, - isNullOrUndefined, - NumberHolder, - padInt, - randSeedInt, -} from "#app/utils/common"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { BerryType } from "#enums/berry-type"; -import { MoveId } from "#enums/move-id"; -import { Nature } from "#enums/nature"; -import { PokeballType } from "#enums/pokeball"; -import { SpeciesId } from "#enums/species-id"; -import { SpeciesFormKey } from "#enums/species-form-key"; -import type { PermanentStat, TempBattleStat } from "#enums/stat"; -import { getStatKey, Stat, TEMP_BATTLE_STATS } from "#enums/stat"; -import { StatusEffect } from "#enums/status-effect"; +} from "#modifiers/modifier"; +import type { PokemonMove } from "#moves/pokemon-move"; +import { getVoucherTypeIcon, getVoucherTypeName, VoucherType } from "#system/voucher"; +import type { ModifierTypeFunc, WeightedModifierTypeWeightFunc } from "#types/modifier-types"; +import type { PokemonMoveSelectFilter, PokemonSelectFilter } from "#ui/party-ui-handler"; +import { PartyUiHandler } from "#ui/party-ui-handler"; +import { getModifierTierTextTint } from "#ui/text"; +import { formatMoney, isNullOrUndefined, NumberHolder, padInt, randSeedInt, randSeedItem } from "#utils/common"; +import { getEnumKeys, getEnumValues } from "#utils/enums"; +import { getModifierPoolForType, getModifierType } from "#utils/modifier-utils"; import i18next from "i18next"; -import { timedEventManager } from "#app/global-event-manager"; -import { TYPE_BOOST_ITEM_BOOST_PERCENT } from "#app/constants"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import { getModifierPoolForType, getModifierType } from "#app/utils/modifier-utils"; -import type { ModifierTypeFunc, WeightedModifierTypeWeightFunc } from "#app/@types/modifier-types"; const outputModifierData = false; const useMaxWeightForOutput = false; @@ -967,31 +959,23 @@ export class PokemonBaseStatTotalModifierType extends PokemonHeldItemModifierType implements GeneratedPersistentModifierType { - private readonly statModifier: number; + private readonly statModifier: 10 | -15; - constructor(statModifier: number) { + constructor(statModifier: 10 | -15) { super( - "modifierType:ModifierType.MYSTERY_ENCOUNTER_SHUCKLE_JUICE", - "berry_juice", - (_type, args) => new PokemonBaseStatTotalModifier(this, (args[0] as Pokemon).id, this.statModifier), + statModifier > 0 + ? "modifierType:ModifierType.MYSTERY_ENCOUNTER_SHUCKLE_JUICE_GOOD" + : "modifierType:ModifierType.MYSTERY_ENCOUNTER_SHUCKLE_JUICE_BAD", + statModifier > 0 ? "berry_juice_good" : "berry_juice_bad", + (_type, args) => new PokemonBaseStatTotalModifier(this, (args[0] as Pokemon).id, statModifier), ); this.statModifier = statModifier; } override getDescription(): string { - return i18next.t("modifierType:ModifierType.PokemonBaseStatTotalModifierType.description", { - increaseDecrease: i18next.t( - this.statModifier >= 0 - ? "modifierType:ModifierType.PokemonBaseStatTotalModifierType.extra.increase" - : "modifierType:ModifierType.PokemonBaseStatTotalModifierType.extra.decrease", - ), - blessCurse: i18next.t( - this.statModifier >= 0 - ? "modifierType:ModifierType.PokemonBaseStatTotalModifierType.extra.blessed" - : "modifierType:ModifierType.PokemonBaseStatTotalModifierType.extra.cursed", - ), - statValue: this.statModifier, - }); + return this.statModifier > 0 + ? i18next.t("modifierType:ModifierType.MYSTERY_ENCOUNTER_SHUCKLE_JUICE_GOOD.description") + : i18next.t("modifierType:ModifierType.MYSTERY_ENCOUNTER_SHUCKLE_JUICE_BAD.description"); } public getPregenArgs(): any[] { @@ -999,38 +983,6 @@ export class PokemonBaseStatTotalModifierType } } -/** - * Old Gateau item - */ -export class PokemonBaseStatFlatModifierType - extends PokemonHeldItemModifierType - implements GeneratedPersistentModifierType -{ - private readonly statModifier: number; - private readonly stats: Stat[]; - - constructor(statModifier: number, stats: Stat[]) { - super( - "modifierType:ModifierType.MYSTERY_ENCOUNTER_OLD_GATEAU", - "old_gateau", - (_type, args) => new PokemonBaseStatFlatModifier(this, (args[0] as Pokemon).id, this.statModifier, this.stats), - ); - this.statModifier = statModifier; - this.stats = stats; - } - - override getDescription(): string { - return i18next.t("modifierType:ModifierType.PokemonBaseStatFlatModifierType.description", { - stats: this.stats.map(stat => i18next.t(getStatKey(stat))).join("/"), - statValue: this.statModifier, - }); - } - - public getPregenArgs(): any[] { - return [this.statModifier, this.stats]; - } -} - class AllPokemonFullHpRestoreModifierType extends ModifierType { private descriptionKey: string; @@ -1565,6 +1517,7 @@ class TmModifierTypeGenerator extends ModifierTypeGenerator { if (!tierUniqueCompatibleTms.length) { return null; } + // TODO: should this use `randSeedItem`? const randTmIndex = randSeedInt(tierUniqueCompatibleTms.length); return new TmModifierType(tierUniqueCompatibleTms[randTmIndex]); }); @@ -1618,6 +1571,7 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator { return null; } + // TODO: should this use `randSeedItem`? return new EvolutionItemModifierType(evolutionItemPool[randSeedInt(evolutionItemPool.length)]!); // TODO: is the bang correct? }); } @@ -1703,6 +1657,7 @@ export class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator { return null; } + // TODO: should this use `randSeedItem`? return new FormChangeItemModifierType(formChangeItemPool[randSeedInt(formChangeItemPool.length)]); }); } @@ -1973,7 +1928,7 @@ const modifierTypeInitObj = Object.freeze({ if (pregenArgs && pregenArgs.length === 1 && pregenArgs[0] in Nature) { return new PokemonNatureChangeModifierType(pregenArgs[0] as Nature); } - return new PokemonNatureChangeModifierType(randSeedInt(getEnumValues(Nature).length) as Nature); + return new PokemonNatureChangeModifierType(randSeedItem(getEnumValues(Nature))); }), MYSTICAL_ROCK: () => @@ -2331,17 +2286,16 @@ const modifierTypeInitObj = Object.freeze({ MYSTERY_ENCOUNTER_SHUCKLE_JUICE: () => new ModifierTypeGenerator((_party: Pokemon[], pregenArgs?: any[]) => { if (pregenArgs) { - return new PokemonBaseStatTotalModifierType(pregenArgs[0] as number); + return new PokemonBaseStatTotalModifierType(pregenArgs[0] as 10 | -15); } - return new PokemonBaseStatTotalModifierType(randSeedInt(20, 1)); + return new PokemonBaseStatTotalModifierType(10); }), MYSTERY_ENCOUNTER_OLD_GATEAU: () => - new ModifierTypeGenerator((_party: Pokemon[], pregenArgs?: any[]) => { - if (pregenArgs) { - return new PokemonBaseStatFlatModifierType(pregenArgs[0] as number, pregenArgs[1] as Stat[]); - } - return new PokemonBaseStatFlatModifierType(randSeedInt(20, 1), [Stat.HP, Stat.ATK, Stat.DEF]); - }), + new PokemonHeldItemModifierType( + "modifierType:ModifierType.MYSTERY_ENCOUNTER_OLD_GATEAU", + "old_gateau", + (type, args) => new PokemonBaseStatFlatModifier(type, (args[0] as Pokemon).id), + ), MYSTERY_ENCOUNTER_BLACK_SLUDGE: () => new ModifierTypeGenerator((_party: Pokemon[], pregenArgs?: any[]) => { if (pregenArgs) { @@ -2498,12 +2452,31 @@ export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: Mod } export interface CustomModifierSettings { + /** If specified, will override the next X items to be the specified tier. These can upgrade with luck. */ guaranteedModifierTiers?: ModifierTier[]; + /** If specified, will override the first X items to be specific modifier options (these should be pre-genned). */ guaranteedModifierTypeOptions?: ModifierTypeOption[]; + /** If specified, will override the next X items to be auto-generated from specific modifier functions (these don't have to be pre-genned). */ guaranteedModifierTypeFuncs?: ModifierTypeFunc[]; + /** + * If set to `true`, will fill the remainder of shop items that were not overridden by the 3 options above, up to the `count` param value. + * @example + * ```ts + * count = 4; + * customModifierSettings = { guaranteedModifierTiers: [ModifierTier.GREAT], fillRemaining: true }; + * ``` + * The first item in the shop will be `GREAT` tier, and the remaining `3` items will be generated normally. + * + * If `fillRemaining: false` in the same scenario, only 1 `GREAT` tier item will appear in the shop (regardless of the value of `count`). + * @defaultValue `false` + */ fillRemaining?: boolean; - /** Set to negative value to disable rerolls completely in shop */ + /** If specified, can adjust the amount of money required for a shop reroll. If set to a negative value, the shop will not allow rerolls at all. */ rerollMultiplier?: number; + /** + * If `false`, will prevent set item tiers from upgrading via luck. + * @defaultValue `true` + */ allowLuckUpgrades?: boolean; } @@ -2513,19 +2486,10 @@ export function getModifierTypeFuncById(id: string): ModifierTypeFunc { /** * Generates modifier options for a {@linkcode SelectModifierPhase} - * @param count Determines the number of items to generate - * @param party Party is required for generating proper modifier pools - * @param modifierTiers (Optional) If specified, rolls items in the specified tiers. Commonly used for tier-locking with Lock Capsule. - * @param customModifierSettings (Optional) If specified, can customize the item shop rewards further. - * - `guaranteedModifierTypeOptions?: ModifierTypeOption[]` If specified, will override the first X items to be specific modifier options (these should be pre-genned). - * - `guaranteedModifierTypeFuncs?: ModifierTypeFunc[]` If specified, will override the next X items to be auto-generated from specific modifier functions (these don't have to be pre-genned). - * - `guaranteedModifierTiers?: ModifierTier[]` If specified, will override the next X items to be the specified tier. These can upgrade with luck. - * - `fillRemaining?: boolean` Default 'false'. If set to true, will fill the remainder of shop items that were not overridden by the 3 options above, up to the 'count' param value. - * - Example: `count = 4`, `customModifierSettings = { guaranteedModifierTiers: [ModifierTier.GREAT], fillRemaining: true }`, - * - The first item in the shop will be `GREAT` tier, and the remaining 3 items will be generated normally. - * - If `fillRemaining = false` in the same scenario, only 1 `GREAT` tier item will appear in the shop (regardless of `count` value). - * - `rerollMultiplier?: number` If specified, can adjust the amount of money required for a shop reroll. If set to a negative value, the shop will not allow rerolls at all. - * - `allowLuckUpgrades?: boolean` Default `true`, if `false` will prevent set item tiers from upgrading via luck + * @param count - Determines the number of items to generate + * @param party - Party is required for generating proper modifier pools + * @param modifierTiers - (Optional) If specified, rolls items in the specified tiers. Commonly used for tier-locking with Lock Capsule. + * @param customModifierSettings - See {@linkcode CustomModifierSettings} */ export function getPlayerModifierTypeOptions( count: number, @@ -2536,16 +2500,10 @@ export function getPlayerModifierTypeOptions( const options: ModifierTypeOption[] = []; const retryCount = Math.min(count * 5, 50); if (!customModifierSettings) { - new Array(count).fill(0).map((_, i) => { - options.push( - getModifierTypeOptionWithRetry( - options, - retryCount, - party, - modifierTiers && modifierTiers.length > i ? modifierTiers[i] : undefined, - ), - ); - }); + for (let i = 0; i < count; i++) { + const tier = modifierTiers && modifierTiers.length > i ? modifierTiers[i] : undefined; + options.push(getModifierTypeOptionWithRetry(options, retryCount, party, tier)); + } } else { // Guaranteed mod options first if ( diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 247b64ca2c0..f8c35b3e8f9 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1,30 +1,29 @@ -import { FusionSpeciesFormEvolution, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; -import { getBerryEffectFunc, getBerryPredicate } from "#app/data/berry"; -import { getLevelTotalExp } from "#app/data/exp"; -import { allMoves, modifierTypes } from "#app/data/data-lists"; -import { MAX_PER_TYPE_POKEBALLS } from "#app/data/pokeball"; -import { SpeciesFormChangeItemTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import type { FormChangeItem } from "#enums/form-change-item"; -import { getStatusEffectHealText } from "#app/data/status-effect"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; +import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; import Overrides from "#app/overrides"; -import { LearnMoveType } from "#enums/learn-move-type"; -import type { VoucherType } from "#app/system/voucher"; -import { Command } from "#enums/command"; -import { addTextObject, TextStyle } from "#app/ui/text"; -import { BooleanHolder, hslToHex, isNullOrUndefined, NumberHolder, randSeedFloat, toDmgValue } from "#app/utils/common"; +import { FusionSpeciesFormEvolution, pokemonEvolutions } from "#balance/pokemon-evolutions"; +import { FRIENDSHIP_GAIN_FROM_RARE_CANDY } from "#balance/starters"; +import { getBerryEffectFunc, getBerryPredicate } from "#data/berry"; +import { allMoves, modifierTypes } from "#data/data-lists"; +import { getLevelTotalExp } from "#data/exp"; +import { SpeciesFormChangeItemTrigger } from "#data/form-change-triggers"; +import { MAX_PER_TYPE_POKEBALLS } from "#data/pokeball"; +import { getStatusEffectHealText } from "#data/status-effect"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; +import { Color, ShadowColor } from "#enums/color"; +import { Command } from "#enums/command"; +import type { FormChangeItem } from "#enums/form-change-item"; +import { LearnMoveType } from "#enums/learn-move-type"; import type { MoveId } from "#enums/move-id"; import type { Nature } from "#enums/nature"; import type { PokeballType } from "#enums/pokeball"; -import { SpeciesId } from "#enums/species-id"; -import { type PermanentStat, type TempBattleStat, BATTLE_STATS, Stat, TEMP_BATTLE_STATS } from "#enums/stat"; -import { StatusEffect } from "#enums/status-effect"; import type { PokemonType } from "#enums/pokemon-type"; -import i18next from "i18next"; +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 type { PlayerPokemon, Pokemon } from "#field/pokemon"; import type { DoubleBattleChanceBoosterModifierType, EvolutionItemModifierType, @@ -38,13 +37,13 @@ import type { PokemonMultiHitModifierType, TerastallizeModifierType, TmModifierType, -} from "./modifier-type"; -import { getModifierType } from "#app/utils/modifier-utils"; -import { Color, ShadowColor } from "#enums/color"; -import { FRIENDSHIP_GAIN_FROM_RARE_CANDY } from "#app/data/balance/starters"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { globalScene } from "#app/global-scene"; -import type { ModifierInstanceMap, ModifierString } from "#app/@types/modifier-types"; +} 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 { BooleanHolder, hslToHex, isNullOrUndefined, NumberHolder, randSeedFloat, toDmgValue } from "#utils/common"; +import { getModifierType } from "#utils/modifier-utils"; +import i18next from "i18next"; export type ModifierPredicate = (modifier: Modifier) => boolean; @@ -53,25 +52,11 @@ const iconOverflowIndex = 24; export const modifierSortFunc = (a: Modifier, b: Modifier): number => { const itemNameMatch = a.type.name.localeCompare(b.type.name); const typeNameMatch = a.constructor.name.localeCompare(b.constructor.name); - const aId = a instanceof PokemonHeldItemModifier && a.pokemonId ? a.pokemonId : 4294967295; - const bId = b instanceof PokemonHeldItemModifier && b.pokemonId ? b.pokemonId : 4294967295; + const aId = a instanceof PokemonHeldItemModifier ? a.pokemonId : -1; + const bId = b instanceof PokemonHeldItemModifier ? b.pokemonId : -1; - //First sort by pokemonID - if (aId < bId) { - return 1; - } - if (aId > bId) { - return -1; - } - if (aId === bId) { - //Then sort by item type - if (typeNameMatch === 0) { - return itemNameMatch; - //Finally sort by item name - } - return typeNameMatch; - } - return 0; + // First sort by pokemon ID, then by item type and then name + return aId - bId || typeNameMatch || itemNameMatch; }; export class ModifierBar extends Phaser.GameObjects.Container { @@ -758,7 +743,7 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier { return 1; } - getMaxStackCount(forThreshold?: boolean): number { + getMaxStackCount(forThreshold = false): number { const pokemon = this.getPokemon(); if (!pokemon) { return 0; @@ -952,10 +937,9 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier { export class PokemonBaseStatTotalModifier extends PokemonHeldItemModifier { public override type: PokemonBaseStatTotalModifierType; public isTransferable = false; + public statModifier: 10 | -15; - private statModifier: number; - - constructor(type: PokemonBaseStatTotalModifierType, pokemonId: number, statModifier: number, stackCount?: number) { + constructor(type: PokemonBaseStatTotalModifierType, pokemonId: number, statModifier: 10 | -15, stackCount?: number) { super(type, pokemonId, stackCount); this.statModifier = statModifier; } @@ -1012,31 +996,14 @@ export class PokemonBaseStatTotalModifier extends PokemonHeldItemModifier { * Currently used by Old Gateau item */ export class PokemonBaseStatFlatModifier extends PokemonHeldItemModifier { - private statModifier: number; - private stats: Stat[]; public isTransferable = false; - constructor(type: ModifierType, pokemonId: number, statModifier: number, stats: Stat[], stackCount?: number) { - super(type, pokemonId, stackCount); - - this.statModifier = statModifier; - this.stats = stats; - } - override matchType(modifier: Modifier): boolean { - return ( - modifier instanceof PokemonBaseStatFlatModifier && - modifier.statModifier === this.statModifier && - this.stats.every(s => modifier.stats.some(stat => s === stat)) - ); + return modifier instanceof PokemonBaseStatFlatModifier; } override clone(): PersistentModifier { - return new PokemonBaseStatFlatModifier(this.type, this.pokemonId, this.statModifier, this.stats, this.stackCount); - } - - override getArgs(): any[] { - return [...super.getArgs(), this.statModifier, this.stats]; + return new PokemonBaseStatFlatModifier(this.type, this.pokemonId, this.stackCount); } /** @@ -1055,11 +1022,13 @@ export class PokemonBaseStatFlatModifier extends PokemonHeldItemModifier { * @param baseStats The base stats of the {@linkcode Pokemon} * @returns always `true` */ - override apply(_pokemon: Pokemon, baseStats: number[]): boolean { + override apply(pokemon: Pokemon, baseStats: number[]): boolean { // Modifies the passed in baseStats[] array by a flat value, only if the stat is specified in this.stats + const stats = this.getStats(pokemon); + const statModifier = 20; baseStats.forEach((v, i) => { - if (this.stats.includes(i)) { - const newVal = Math.floor(v + this.statModifier); + if (stats.includes(i)) { + const newVal = Math.floor(v + statModifier); baseStats[i] = Math.min(Math.max(newVal, 1), 999999); } }); @@ -1067,6 +1036,22 @@ export class PokemonBaseStatFlatModifier extends PokemonHeldItemModifier { return true; } + /** + * Get the lowest of HP/Spd, lowest of Atk/SpAtk, and lowest of Def/SpDef + * @returns Array of 3 {@linkcode Stat}s to boost + */ + getStats(pokemon: Pokemon): Stat[] { + const stats: Stat[] = []; + const baseStats = pokemon.getSpeciesForm().baseStats.slice(0); + // HP or Speed + stats.push(baseStats[Stat.HP] < baseStats[Stat.SPD] ? Stat.HP : Stat.SPD); + // Attack or SpAtk + stats.push(baseStats[Stat.ATK] < baseStats[Stat.SPATK] ? Stat.ATK : Stat.SPATK); + // Def or SpDef + stats.push(baseStats[Stat.DEF] < baseStats[Stat.SPDEF] ? Stat.DEF : Stat.SPDEF); + return stats; + } + override getScoreMultiplier(): number { return 1.1; } @@ -2815,6 +2800,7 @@ export class PokemonMultiHitModifier extends PokemonHeldItemModifier { damageMultiplier.value *= 1 - 0.25 * this.getStackCount(); return true; } + if (pokemon.turnData.hitCount - pokemon.turnData.hitsLeft !== this.getStackCount() + 1) { // Deal 25% damage for each remaining Multi Lens hit damageMultiplier.value *= 0.25; diff --git a/src/overrides.ts b/src/overrides.ts index b390b9fa70f..de0d1d3f30a 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -1,18 +1,16 @@ import { type PokeballCounts } from "#app/battle-scene"; -import { EvolutionItem } from "#app/data/balance/pokemon-evolutions"; -import { Gender } from "#app/data/gender"; -import { FormChangeItem } from "#enums/form-change-item"; -import { type ModifierOverride } from "#app/modifier/modifier-type"; -import { Variant } from "#app/sprites/variant"; -import { Unlockables } from "#enums/unlockables"; +import { EvolutionItem } from "#balance/pokemon-evolutions"; +import { Gender } from "#data/gender"; import { AbilityId } from "#enums/ability-id"; import { BattleType } from "#enums/battle-type"; import { BerryType } from "#enums/berry-type"; import { BiomeId } from "#enums/biome-id"; import { EggTier } from "#enums/egg-type"; +import { FormChangeItem } from "#enums/form-change-item"; import { MoveId } from "#enums/move-id"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; import { PokeballType } from "#enums/pokeball"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; @@ -20,8 +18,11 @@ import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { TimeOfDay } from "#enums/time-of-day"; import { TrainerType } from "#enums/trainer-type"; +import { Unlockables } from "#enums/unlockables"; import { VariantTier } from "#enums/variant-tier"; import { WeatherType } from "#enums/weather-type"; +import { type ModifierOverride } from "#modifiers/modifier-type"; +import { Variant } from "#sprites/variant"; /** * This comment block exists to prevent IDEs from automatically removing unused imports @@ -118,7 +119,13 @@ class DefaultOverrides { * or `false` to force it to never trigger. */ readonly CONFUSION_ACTIVATION_OVERRIDE: boolean | null = null; - + /** + * If non-null, will override random flee attempts to always or never succeed by forcing {@linkcode calculateEscapeChance} to return 100% or 0%. + * Set to `null` to disable. + * + * Is overridden if either player Pokemon has {@linkcode AbilityId.RUN_AWAY | Run Away}. + */ + readonly RUN_SUCCESS_OVERRIDE: boolean | null = null; // ---------------- // PLAYER OVERRIDES // ---------------- @@ -159,10 +166,20 @@ class DefaultOverrides { readonly MOVESET_OVERRIDE: MoveId | Array = []; readonly SHINY_OVERRIDE: boolean | null = null; readonly VARIANT_OVERRIDE: Variant | null = null; + /** + * Overrides the IVs of player pokemon. Values must never be outside the range `0` to `31`! + * - If set to a number between `0` and `31`, set all IVs of all player pokemon to that number. + * - If set to an array, set the IVs of all player pokemon to that array. Array length must be exactly `6`! + * - If set to `null`, disable the override. + */ + readonly IVS_OVERRIDE: number | number[] | null = null; + /** Override the nature of all player pokemon to the specified nature. Disabled if `null`. */ + readonly NATURE_OVERRIDE: Nature | null = null; // -------------------------- // OPPONENT / ENEMY OVERRIDES // -------------------------- + // TODO: rename `OPP_` to `ENEMY_` readonly OPP_SPECIES_OVERRIDE: SpeciesId | number = 0; /** * This will make all opponents fused Pokemon @@ -181,7 +198,15 @@ class DefaultOverrides { readonly OPP_MOVESET_OVERRIDE: MoveId | Array = []; readonly OPP_SHINY_OVERRIDE: boolean | null = null; readonly OPP_VARIANT_OVERRIDE: Variant | null = null; - readonly OPP_IVS_OVERRIDE: number | number[] = []; + /** + * Overrides the IVs of enemy pokemon. Values must never be outside the range `0` to `31`! + * - If set to a number between `0` and `31`, set all IVs of all enemy pokemon to that number. + * - If set to an array, set the IVs of all enemy pokemon to that array. Array length must be exactly `6`! + * - If set to `null`, disable the override. + */ + readonly ENEMY_IVS_OVERRIDE: number | number[] | null = null; + /** Override the nature of all enemy pokemon to the specified nature. Disabled if `null`. */ + readonly ENEMY_NATURE_OVERRIDE: Nature | null = null; readonly OPP_FORM_OVERRIDES: Partial> = {}; /** * Override to give the enemy Pokemon a given amount of health segments diff --git a/src/phase-manager.ts b/src/phase-manager.ts index a4256f110ef..73ea373904f 100644 --- a/src/phase-manager.ts +++ b/src/phase-manager.ts @@ -1,104 +1,104 @@ -import type { Phase } from "#app/phase"; -import type { default as Pokemon } from "#app/field/pokemon"; -import type { PhaseMap, PhaseString } from "./@types/phase-types"; import { globalScene } from "#app/global-scene"; -import { ActivatePriorityQueuePhase } from "#app/phases/activate-priority-queue-phase"; -import { AddEnemyBuffModifierPhase } from "#app/phases/add-enemy-buff-modifier-phase"; -import { AttemptCapturePhase } from "#app/phases/attempt-capture-phase"; -import { AttemptRunPhase } from "#app/phases/attempt-run-phase"; -import { BattleEndPhase } from "#app/phases/battle-end-phase"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { CheckStatusEffectPhase } from "#app/phases/check-status-effect-phase"; -import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; -import { CommandPhase } from "#app/phases/command-phase"; -import { CommonAnimPhase } from "#app/phases/common-anim-phase"; -import { coerceArray, type Constructor } from "#app/utils/common"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; +import type { Phase } from "#app/phase"; +import { type PhasePriorityQueue, PostSummonPhasePriorityQueue } from "#data/phase-priority-queue"; import type { DynamicPhaseType } from "#enums/dynamic-phase-type"; -import { EggHatchPhase } from "#app/phases/egg-hatch-phase"; -import { EggLapsePhase } from "#app/phases/egg-lapse-phase"; -import { EggSummaryPhase } from "#app/phases/egg-summary-phase"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { EndCardPhase } from "#app/phases/end-card-phase"; -import { EndEvolutionPhase } from "#app/phases/end-evolution-phase"; -import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { EvolutionPhase } from "#app/phases/evolution-phase"; -import { ExpPhase } from "#app/phases/exp-phase"; -import { FaintPhase } from "#app/phases/faint-phase"; -import { FormChangePhase } from "#app/phases/form-change-phase"; -import { GameOverModifierRewardPhase } from "#app/phases/game-over-modifier-reward-phase"; -import { GameOverPhase } from "#app/phases/game-over-phase"; -import { HideAbilityPhase } from "#app/phases/hide-ability-phase"; -import { HidePartyExpBarPhase } from "#app/phases/hide-party-exp-bar-phase"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; -import { LevelCapPhase } from "#app/phases/level-cap-phase"; -import { LevelUpPhase } from "#app/phases/level-up-phase"; -import { LoadMoveAnimPhase } from "#app/phases/load-move-anim-phase"; -import { LoginPhase } from "#app/phases/login-phase"; -import { MessagePhase } from "#app/phases/message-phase"; -import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; -import { MoneyRewardPhase } from "#app/phases/money-reward-phase"; -import { MoveAnimPhase } from "#app/phases/move-anim-phase"; -import { MoveChargePhase } from "#app/phases/move-charge-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { MoveHeaderPhase } from "#app/phases/move-header-phase"; -import { MovePhase } from "#app/phases/move-phase"; +import type { Pokemon } from "#field/pokemon"; +import { ActivatePriorityQueuePhase } from "#phases/activate-priority-queue-phase"; +import { AddEnemyBuffModifierPhase } from "#phases/add-enemy-buff-modifier-phase"; +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 { CheckStatusEffectPhase } from "#phases/check-status-effect-phase"; +import { CheckSwitchPhase } from "#phases/check-switch-phase"; +import { CommandPhase } from "#phases/command-phase"; +import { CommonAnimPhase } from "#phases/common-anim-phase"; +import { DamageAnimPhase } from "#phases/damage-anim-phase"; +import { EggHatchPhase } from "#phases/egg-hatch-phase"; +import { EggLapsePhase } from "#phases/egg-lapse-phase"; +import { EggSummaryPhase } from "#phases/egg-summary-phase"; +import { EncounterPhase } from "#phases/encounter-phase"; +import { EndCardPhase } from "#phases/end-card-phase"; +import { EndEvolutionPhase } from "#phases/end-evolution-phase"; +import { EnemyCommandPhase } from "#phases/enemy-command-phase"; +import { EvolutionPhase } from "#phases/evolution-phase"; +import { ExpPhase } from "#phases/exp-phase"; +import { FaintPhase } from "#phases/faint-phase"; +import { FormChangePhase } from "#phases/form-change-phase"; +import { GameOverModifierRewardPhase } from "#phases/game-over-modifier-reward-phase"; +import { GameOverPhase } from "#phases/game-over-phase"; +import { HideAbilityPhase } from "#phases/hide-ability-phase"; +import { HidePartyExpBarPhase } from "#phases/hide-party-exp-bar-phase"; +import { LearnMovePhase } from "#phases/learn-move-phase"; +import { LevelCapPhase } from "#phases/level-cap-phase"; +import { LevelUpPhase } from "#phases/level-up-phase"; +import { LoadMoveAnimPhase } from "#phases/load-move-anim-phase"; +import { LoginPhase } from "#phases/login-phase"; +import { MessagePhase } from "#phases/message-phase"; +import { ModifierRewardPhase } from "#phases/modifier-reward-phase"; +import { MoneyRewardPhase } from "#phases/money-reward-phase"; +import { MoveAnimPhase } from "#phases/move-anim-phase"; +import { MoveChargePhase } from "#phases/move-charge-phase"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +import { MoveEndPhase } from "#phases/move-end-phase"; +import { MoveHeaderPhase } from "#phases/move-header-phase"; +import { MovePhase } from "#phases/move-phase"; import { - MysteryEncounterPhase, - MysteryEncounterOptionSelectedPhase, MysteryEncounterBattlePhase, + MysteryEncounterBattleStartCleanupPhase, + MysteryEncounterOptionSelectedPhase, + MysteryEncounterPhase, MysteryEncounterRewardsPhase, PostMysteryEncounterPhase, - MysteryEncounterBattleStartCleanupPhase, -} from "#app/phases/mystery-encounter-phases"; -import { NewBattlePhase } from "#app/phases/new-battle-phase"; -import { NewBiomeEncounterPhase } from "#app/phases/new-biome-encounter-phase"; -import { NextEncounterPhase } from "#app/phases/next-encounter-phase"; -import { ObtainStatusEffectPhase } from "#app/phases/obtain-status-effect-phase"; -import { PartyExpPhase } from "#app/phases/party-exp-phase"; -import { PartyHealPhase } from "#app/phases/party-heal-phase"; -import { type PhasePriorityQueue, PostSummonPhasePriorityQueue } from "#app/data/phase-priority-queue"; -import { PokemonAnimPhase } from "#app/phases/pokemon-anim-phase"; -import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; -import { PokemonTransformPhase } from "#app/phases/pokemon-transform-phase"; -import { PostGameOverPhase } from "#app/phases/post-game-over-phase"; -import { PostSummonPhase } from "#app/phases/post-summon-phase"; -import { PostTurnStatusEffectPhase } from "#app/phases/post-turn-status-effect-phase"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import { ReloadSessionPhase } from "#app/phases/reload-session-phase"; -import { ResetStatusPhase } from "#app/phases/reset-status-phase"; -import { ReturnPhase } from "#app/phases/return-phase"; -import { RevivalBlessingPhase } from "#app/phases/revival-blessing-phase"; -import { RibbonModifierRewardPhase } from "#app/phases/ribbon-modifier-reward-phase"; -import { ScanIvsPhase } from "#app/phases/scan-ivs-phase"; -import { SelectBiomePhase } from "#app/phases/select-biome-phase"; -import { SelectChallengePhase } from "#app/phases/select-challenge-phase"; -import { SelectGenderPhase } from "#app/phases/select-gender-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import { SelectTargetPhase } from "#app/phases/select-target-phase"; -import { ShinySparklePhase } from "#app/phases/shiny-sparkle-phase"; -import { ShowAbilityPhase } from "#app/phases/show-ability-phase"; -import { ShowPartyExpBarPhase } from "#app/phases/show-party-exp-bar-phase"; -import { ShowTrainerPhase } from "#app/phases/show-trainer-phase"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; -import { SummonMissingPhase } from "#app/phases/summon-missing-phase"; -import { SummonPhase } from "#app/phases/summon-phase"; -import { SwitchBiomePhase } from "#app/phases/switch-biome-phase"; -import { SwitchPhase } from "#app/phases/switch-phase"; -import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; -import { TeraPhase } from "#app/phases/tera-phase"; -import { TitlePhase } from "#app/phases/title-phase"; -import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; -import { TrainerVictoryPhase } from "#app/phases/trainer-victory-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { TurnStartPhase } from "#app/phases/turn-start-phase"; -import { UnavailablePhase } from "#app/phases/unavailable-phase"; -import { UnlockPhase } from "#app/phases/unlock-phase"; -import { VictoryPhase } from "#app/phases/victory-phase"; -import { WeatherEffectPhase } from "#app/phases/weather-effect-phase"; +} from "#phases/mystery-encounter-phases"; +import { NewBattlePhase } from "#phases/new-battle-phase"; +import { NewBiomeEncounterPhase } from "#phases/new-biome-encounter-phase"; +import { NextEncounterPhase } from "#phases/next-encounter-phase"; +import { ObtainStatusEffectPhase } from "#phases/obtain-status-effect-phase"; +import { PartyExpPhase } from "#phases/party-exp-phase"; +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 { PostGameOverPhase } from "#phases/post-game-over-phase"; +import { PostSummonPhase } from "#phases/post-summon-phase"; +import { PostTurnStatusEffectPhase } from "#phases/post-turn-status-effect-phase"; +import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; +import { ReloadSessionPhase } from "#phases/reload-session-phase"; +import { ResetStatusPhase } from "#phases/reset-status-phase"; +import { ReturnPhase } from "#phases/return-phase"; +import { RevivalBlessingPhase } from "#phases/revival-blessing-phase"; +import { RibbonModifierRewardPhase } from "#phases/ribbon-modifier-reward-phase"; +import { ScanIvsPhase } from "#phases/scan-ivs-phase"; +import { SelectBiomePhase } from "#phases/select-biome-phase"; +import { SelectChallengePhase } from "#phases/select-challenge-phase"; +import { SelectGenderPhase } from "#phases/select-gender-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; +import { SelectStarterPhase } from "#phases/select-starter-phase"; +import { SelectTargetPhase } from "#phases/select-target-phase"; +import { ShinySparklePhase } from "#phases/shiny-sparkle-phase"; +import { ShowAbilityPhase } from "#phases/show-ability-phase"; +import { ShowPartyExpBarPhase } from "#phases/show-party-exp-bar-phase"; +import { ShowTrainerPhase } from "#phases/show-trainer-phase"; +import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; +import { SummonMissingPhase } from "#phases/summon-missing-phase"; +import { SummonPhase } from "#phases/summon-phase"; +import { SwitchBiomePhase } from "#phases/switch-biome-phase"; +import { SwitchPhase } from "#phases/switch-phase"; +import { SwitchSummonPhase } from "#phases/switch-summon-phase"; +import { TeraPhase } from "#phases/tera-phase"; +import { TitlePhase } from "#phases/title-phase"; +import { ToggleDoublePositionPhase } from "#phases/toggle-double-position-phase"; +import { TrainerVictoryPhase } from "#phases/trainer-victory-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { TurnInitPhase } from "#phases/turn-init-phase"; +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 { WeatherEffectPhase } from "#phases/weather-effect-phase"; +import type { PhaseMap, PhaseString } from "#types/phase-types"; +import { type Constructor, coerceArray } from "#utils/common"; /* * Manager for phases used by battle scene. @@ -560,14 +560,13 @@ export class PhaseManager { } /** - * Queues an ability bar flyout phase - * @param pokemon The pokemon who has the ability - * @param passive Whether the ability is a passive - * @param show Whether to show or hide the bar + * Queue a phase to show or hide the ability flyout bar. + * @param pokemon - The {@linkcode Pokemon} whose ability is being activated + * @param passive - Whether the ability is a passive + * @param show - Whether to show or hide the bar */ public queueAbilityDisplay(pokemon: Pokemon, passive: boolean, show: boolean): void { this.unshiftPhase(show ? new ShowAbilityPhase(pokemon.getBattlerIndex(), passive) : new HideAbilityPhase()); - this.clearPhaseQueueSplice(); } /** diff --git a/src/phase.ts b/src/phase.ts index 5e81679d29e..46a81dddb6f 100644 --- a/src/phase.ts +++ b/src/phase.ts @@ -1,5 +1,5 @@ import { globalScene } from "#app/global-scene"; -import type { PhaseMap, PhaseString } from "./@types/phase-types"; +import type { PhaseMap, PhaseString } from "#types/phase-types"; export abstract class Phase { start() {} diff --git a/src/phases/activate-priority-queue-phase.ts b/src/phases/activate-priority-queue-phase.ts index df42c491676..a31d3291a60 100644 --- a/src/phases/activate-priority-queue-phase.ts +++ b/src/phases/activate-priority-queue-phase.ts @@ -1,6 +1,6 @@ -import type { DynamicPhaseType } from "#enums/dynamic-phase-type"; import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; +import type { DynamicPhaseType } from "#enums/dynamic-phase-type"; export class ActivatePriorityQueuePhase extends Phase { public readonly phaseName = "ActivatePriorityQueuePhase"; diff --git a/src/phases/add-enemy-buff-modifier-phase.ts b/src/phases/add-enemy-buff-modifier-phase.ts index 218a3a653ff..5c9a56796d4 100644 --- a/src/phases/add-enemy-buff-modifier-phase.ts +++ b/src/phases/add-enemy-buff-modifier-phase.ts @@ -1,9 +1,9 @@ -import { ModifierTier } from "#enums/modifier-tier"; -import { regenerateModifierPoolThresholds, getEnemyBuffModifierForWave } from "#app/modifier/modifier-type"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import { EnemyPersistentModifier } from "#app/modifier/modifier"; -import { Phase } from "#app/phase"; import { globalScene } from "#app/global-scene"; +import { Phase } from "#app/phase"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; +import { ModifierTier } from "#enums/modifier-tier"; +import { EnemyPersistentModifier } from "#modifiers/modifier"; +import { getEnemyBuffModifierForWave, regenerateModifierPoolThresholds } from "#modifiers/modifier-type"; export class AddEnemyBuffModifierPhase extends Phase { public readonly phaseName = "AddEnemyBuffModifierPhase"; diff --git a/src/phases/attempt-capture-phase.ts b/src/phases/attempt-capture-phase.ts index f4e6725935a..604d4fd8384 100644 --- a/src/phases/attempt-capture-phase.ts +++ b/src/phases/attempt-capture-phase.ts @@ -1,30 +1,31 @@ -import { BattlerIndex } from "#enums/battler-index"; import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; -import { SubstituteTag } from "#app/data/battler-tags"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { SubstituteTag } from "#data/battler-tags"; +import { Gender } from "#data/gender"; import { doPokeballBounceAnim, + getCriticalCaptureChance, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, - getCriticalCaptureChance, -} from "#app/data/pokeball"; -import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect"; -import { addPokeballCaptureStars, addPokeballOpenParticles } from "#app/field/anims"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { PokemonPhase } from "#app/phases/pokemon-phase"; -import { achvs } from "#app/system/achv"; -import type { PartyOption } from "#app/ui/party-ui-handler"; -import { PartyUiMode } from "#app/ui/party-ui-handler"; -import { SummaryUiMode } from "#app/ui/summary-ui-handler"; -import { UiMode } from "#enums/ui-mode"; +} from "#data/pokeball"; +import { getStatusEffectCatchRateMultiplier } from "#data/status-effect"; +import { BattlerIndex } from "#enums/battler-index"; import type { PokeballType } from "#enums/pokeball"; import { StatusEffect } from "#enums/status-effect"; +import { UiMode } from "#enums/ui-mode"; +import { addPokeballCaptureStars, addPokeballOpenParticles } from "#field/anims"; +import type { EnemyPokemon } from "#field/pokemon"; +import { PokemonHeldItemModifier } from "#modifiers/modifier"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import { achvs } from "#system/achv"; +import type { PartyOption } from "#ui/party-ui-handler"; +import { PartyUiMode } from "#ui/party-ui-handler"; +import { SummaryUiMode } from "#ui/summary-ui-handler"; import i18next from "i18next"; -import { globalScene } from "#app/global-scene"; -import { Gender } from "#app/data/gender"; +// TODO: Refactor and split up to allow for overriding capture chance export class AttemptCapturePhase extends PokemonPhase { public readonly phaseName = "AttemptCapturePhase"; private pokeballType: PokeballType; @@ -119,7 +120,7 @@ export class AttemptCapturePhase extends PokemonPhase { repeatDelay: 500, onUpdate: t => { if (shakeCount && shakeCount < (isCritical ? 2 : 4)) { - const value = t.getValue(); + const value = t.getValue() ?? 0; const directionMultiplier = shakeCount % 2 === 1 ? 1 : -1; this.pokeball.setX(pbX + value * 4 * directionMultiplier); this.pokeball.setAngle(value * 27.5 * directionMultiplier); diff --git a/src/phases/attempt-run-phase.ts b/src/phases/attempt-run-phase.ts index ecd64380c31..a59667bdd4e 100644 --- a/src/phases/attempt-run-phase.ts +++ b/src/phases/attempt-run-phase.ts @@ -1,34 +1,33 @@ -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; +import { globalScene } from "#app/global-scene"; +import Overrides from "#app/overrides"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import type { PlayerPokemon, EnemyPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; +import { FieldPhase } from "#phases/field-phase"; +import { NumberHolder } from "#utils/common"; import i18next from "i18next"; -import { NumberHolder } from "#app/utils/common"; -import { PokemonPhase } from "./pokemon-phase"; -import { globalScene } from "#app/global-scene"; -export class AttemptRunPhase extends PokemonPhase { +export class AttemptRunPhase extends FieldPhase { public readonly phaseName = "AttemptRunPhase"; - /** For testing purposes: this is to force the pokemon to fail and escape */ - public forceFailEscape = false; - start() { + public start() { super.start(); - const playerField = globalScene.getPlayerField(); + // Increment escape attempts count on entry + const currentAttempts = globalScene.currentBattle.escapeAttempts++; + + const activePlayerField = globalScene.getPlayerField(true); const enemyField = globalScene.getEnemyField(); - const playerPokemon = this.getPokemon(); + const escapeRoll = globalScene.randBattleSeedInt(100); + const escapeChance = new NumberHolder(this.calculateEscapeChance(currentAttempts)); - const escapeChance = new NumberHolder(0); + activePlayerField.forEach(pokemon => { + applyAbAttrs("RunSuccessAbAttr", { pokemon, chance: escapeChance }); + }); - this.attemptRunAway(playerField, enemyField, escapeChance); - - applyAbAttrs("RunSuccessAbAttr", { pokemon: playerPokemon, chance: escapeChance }); - - if (playerPokemon.randBattleSeedInt(100) < escapeChance.value && !this.forceFailEscape) { - enemyField.forEach(enemyPokemon => applyAbAttrs("PreLeaveFieldAbAttr", { pokemon: enemyPokemon })); + if (escapeRoll < escapeChance.value) { + enemyField.forEach(pokemon => applyAbAttrs("PreLeaveFieldAbAttr", { pokemon })); globalScene.playSound("se/flee"); globalScene.phaseManager.queueMessage(i18next.t("battle:runAwaySuccess"), null, true, 500); @@ -57,24 +56,35 @@ export class AttemptRunPhase extends PokemonPhase { globalScene.phaseManager.pushNew("NewBattlePhase"); } else { - playerPokemon.turnData.failedRunAway = true; + activePlayerField.forEach(p => { + p.turnData.failedRunAway = true; + }); + globalScene.phaseManager.queueMessage(i18next.t("battle:runAwayCannotEscape"), null, true, 500); } this.end(); } - attemptRunAway(playerField: PlayerPokemon[], enemyField: EnemyPokemon[], escapeChance: NumberHolder) { - /** Sum of the speed of all enemy pokemon on the field */ - const enemySpeed = enemyField.reduce( - (total: number, enemyPokemon: Pokemon) => total + enemyPokemon.getStat(Stat.SPD), - 0, - ); - /** Sum of the speed of all player pokemon on the field */ - const playerSpeed = playerField.reduce( - (total: number, playerPokemon: Pokemon) => total + playerPokemon.getStat(Stat.SPD), - 0, - ); + /** + * Calculate the chance for the player's team to successfully run away from battle. + * + * @param escapeAttempts - The number of prior failed escape attempts in the current battle + * @returns The final escape chance, as percentage out of 100. + */ + public calculateEscapeChance(escapeAttempts: number): number { + // Check for override, guaranteeing or forbidding random flee attempts as applicable. + if (Overrides.RUN_SUCCESS_OVERRIDE !== null) { + return Overrides.RUN_SUCCESS_OVERRIDE ? 100 : 0; + } + + const enemyField = globalScene.getEnemyField(); + const activePlayerField = globalScene.getPlayerField(true); + + // Cf https://bulbapedia.bulbagarden.net/wiki/Escape#Generation_V_onwards + // From gen 5 onwards, running takes the _base_ speed totals of both party sides. + const enemySpeed = enemyField.reduce((total, enemy) => total + enemy.getStat(Stat.SPD), 0); + const playerSpeed = activePlayerField.reduce((total, player) => total + player.getStat(Stat.SPD), 0); /* The way the escape chance works is by looking at the difference between your speed and the enemy field's average speed as a ratio. The higher this ratio, the higher your chance of success. * However, there is a cap for the ratio of your speed vs enemy speed which beyond that point, you won't gain any advantage. It also looks at how many times you've tried to escape. @@ -92,10 +102,8 @@ export class AttemptRunPhase extends PokemonPhase { * From the above, we can calculate the below values */ - let isBoss = false; - for (let e = 0; e < enemyField.length; e++) { - isBoss = isBoss || enemyField[e].isBoss(); // this line checks if any of the enemy pokemon on the field are bosses; if so, the calculation for escaping is different - } + /** Whether at least 1 pokemon on the enemy field is a boss. */ + const isBoss = enemyField.some(e => e.isBoss()); /** The ratio between the speed of your active pokemon and the speed of the enemy field */ const speedRatio = playerSpeed / enemySpeed; @@ -111,8 +119,8 @@ export class AttemptRunPhase extends PokemonPhase { const escapeSlope = (maxChance - minChance) / speedCap; // This will calculate the escape chance given all of the above and clamp it to the range of [`minChance`, `maxChance`] - escapeChance.value = Phaser.Math.Clamp( - Math.round(escapeSlope * speedRatio + minChance + escapeBonus * globalScene.currentBattle.escapeAttempts++), + return Phaser.Math.Clamp( + Math.round(escapeSlope * speedRatio + minChance + escapeBonus * escapeAttempts), minChance, maxChance, ); diff --git a/src/phases/battle-end-phase.ts b/src/phases/battle-end-phase.ts index 297e20cb445..8d199915385 100644 --- a/src/phases/battle-end-phase.ts +++ b/src/phases/battle-end-phase.ts @@ -1,7 +1,7 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { LapsingPersistentModifier, LapsingPokemonHeldItemModifier } from "#app/modifier/modifier"; -import { BattlePhase } from "./battle-phase"; +import { LapsingPersistentModifier, LapsingPokemonHeldItemModifier } from "#modifiers/modifier"; +import { BattlePhase } from "#phases/battle-phase"; export class BattleEndPhase extends BattlePhase { public readonly phaseName = "BattleEndPhase"; diff --git a/src/phases/battle-phase.ts b/src/phases/battle-phase.ts index 7cefd0369d9..26794ed9bc5 100644 --- a/src/phases/battle-phase.ts +++ b/src/phases/battle-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; -import { TrainerSlot } from "#enums/trainer-slot"; import { Phase } from "#app/phase"; +import { TrainerSlot } from "#enums/trainer-slot"; export abstract class BattlePhase extends Phase { showEnemyTrainer(trainerSlot: TrainerSlot = TrainerSlot.NONE): void { diff --git a/src/phases/berry-phase.ts b/src/phases/berry-phase.ts index 61124a7cda8..941406d0b96 100644 --- a/src/phases/berry-phase.ts +++ b/src/phases/berry-phase.ts @@ -1,13 +1,13 @@ -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { CommonAnim } from "#enums/move-anims-common"; -import { BerryUsedEvent } from "#app/events/battle-scene"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { BerryModifier } from "#app/modifier/modifier"; -import i18next from "i18next"; -import { BooleanHolder } from "#app/utils/common"; -import { FieldPhase } from "./field-phase"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import type Pokemon from "#app/field/pokemon"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { CommonAnim } from "#enums/move-anims-common"; +import { BerryUsedEvent } from "#events/battle-scene"; +import type { Pokemon } from "#field/pokemon"; +import { BerryModifier } from "#modifiers/modifier"; +import { FieldPhase } from "#phases/field-phase"; +import { BooleanHolder } from "#utils/common"; +import i18next from "i18next"; /** * The phase after attacks where the pokemon eat berries. diff --git a/src/phases/check-status-effect-phase.ts b/src/phases/check-status-effect-phase.ts index 43495e038e9..bdaa536986a 100644 --- a/src/phases/check-status-effect-phase.ts +++ b/src/phases/check-status-effect-phase.ts @@ -1,6 +1,6 @@ +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import type { BattlerIndex } from "#enums/battler-index"; -import { globalScene } from "#app/global-scene"; export class CheckStatusEffectPhase extends Phase { public readonly phaseName = "CheckStatusEffectPhase"; diff --git a/src/phases/check-switch-phase.ts b/src/phases/check-switch-phase.ts index 97f4092096f..f4e8ee56c55 100644 --- a/src/phases/check-switch-phase.ts +++ b/src/phases/check-switch-phase.ts @@ -1,11 +1,11 @@ import { globalScene } from "#app/global-scene"; -import { BattleStyle } from "#app/enums/battle-style"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; import { getPokemonNameWithAffix } from "#app/messages"; -import { UiMode } from "#enums/ui-mode"; -import i18next from "i18next"; -import { BattlePhase } from "./battle-phase"; +import { BattleStyle } from "#enums/battle-style"; +import { BattlerTagType } from "#enums/battler-tag-type"; import { SwitchType } from "#enums/switch-type"; +import { UiMode } from "#enums/ui-mode"; +import { BattlePhase } from "#phases/battle-phase"; +import i18next from "i18next"; export class CheckSwitchPhase extends BattlePhase { public readonly phaseName = "CheckSwitchPhase"; diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index 754d54de70a..14674037fbe 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -1,28 +1,29 @@ -import { globalScene } from "#app/global-scene"; import type { TurnCommand } from "#app/battle"; -import { BattleType } from "#enums/battle-type"; -import type { EncoreTag } from "#app/data/battler-tags"; -import { TrappedTag } from "#app/data/battler-tags"; -import type { MoveTargetSet } from "#app/data/moves/move"; -import { getMoveTargets } from "#app/data/moves/move-utils"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { BiomeId } from "#enums/biome-id"; -import { MoveId } from "#enums/move-id"; -import { PokeballType } from "#enums/pokeball"; -import type { PlayerPokemon, TurnMove } from "#app/field/pokemon"; -import { FieldPosition } from "#enums/field-position"; +import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; -import { Command } from "#enums/command"; -import { UiMode } from "#enums/ui-mode"; -import i18next from "i18next"; -import { FieldPhase } from "./field-phase"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import { isNullOrUndefined } from "#app/utils/common"; +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"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { isVirtual, isIgnorePP, MoveUseMode } from "#enums/move-use-mode"; +import { ArenaTagType } from "#enums/arena-tag-type"; +import { BattleType } from "#enums/battle-type"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { BiomeId } from "#enums/biome-id"; +import { Command } from "#enums/command"; +import { FieldPosition } from "#enums/field-position"; +import { MoveId } from "#enums/move-id"; +import { isIgnorePP, isVirtual, MoveUseMode } from "#enums/move-use-mode"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import { PokeballType } from "#enums/pokeball"; +import { UiMode } from "#enums/ui-mode"; +import type { PlayerPokemon } from "#field/pokemon"; +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"; @@ -87,7 +88,7 @@ export class CommandPhase extends FieldPhase { } // 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; + const encoreTag = this.getPokemon().getTag(BattlerTagType.ENCORE) as EncoreTag | undefined; if (encoreTag) { this.getPokemon().lapseTag(BattlerTagType.ENCORE); } diff --git a/src/phases/common-anim-phase.ts b/src/phases/common-anim-phase.ts index abfe8ed99f0..78da1dcfa2f 100644 --- a/src/phases/common-anim-phase.ts +++ b/src/phases/common-anim-phase.ts @@ -1,8 +1,8 @@ -import type { BattlerIndex } from "#enums/battler-index"; import { globalScene } from "#app/global-scene"; +import { CommonBattleAnim } from "#data/battle-anims"; +import type { BattlerIndex } from "#enums/battler-index"; import type { CommonAnim } from "#enums/move-anims-common"; -import { CommonBattleAnim } from "#app/data/battle-anims"; -import { PokemonPhase } from "./pokemon-phase"; +import { PokemonPhase } from "#phases/pokemon-phase"; export class CommonAnimPhase extends PokemonPhase { // PokemonHealPhase extends CommonAnimPhase, and to make typescript happy, diff --git a/src/phases/damage-anim-phase.ts b/src/phases/damage-anim-phase.ts index aa5a0a6c3e6..a651255baff 100644 --- a/src/phases/damage-anim-phase.ts +++ b/src/phases/damage-anim-phase.ts @@ -1,10 +1,10 @@ import { globalScene } from "#app/global-scene"; -import type { BattlerIndex } from "#enums/battler-index"; import { BattleSpec } from "#enums/battle-spec"; -import type { DamageResult } from "#app/field/pokemon"; +import type { BattlerIndex } from "#enums/battler-index"; import { HitResult } from "#enums/hit-result"; -import { fixedInt } from "#app/utils/common"; -import { PokemonPhase } from "#app/phases/pokemon-phase"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import type { DamageResult } from "#types/damage-result"; +import { fixedInt } from "#utils/common"; export class DamageAnimPhase extends PokemonPhase { public readonly phaseName = "DamageAnimPhase"; diff --git a/src/phases/egg-hatch-phase.ts b/src/phases/egg-hatch-phase.ts index d6c40a1510e..94923ae8c1f 100644 --- a/src/phases/egg-hatch-phase.ts +++ b/src/phases/egg-hatch-phase.ts @@ -1,20 +1,20 @@ import type { AnySound } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import type { Egg } from "#app/data/egg"; -import { EggCountChangedEvent } from "#app/events/egg"; -import type { PlayerPokemon } from "#app/field/pokemon"; import { Phase } from "#app/phase"; -import { achvs } from "#app/system/achv"; -import EggCounterContainer from "#app/ui/egg-counter-container"; -import type EggHatchSceneHandler from "#app/ui/egg-hatch-scene-handler"; -import PokemonInfoContainer from "#app/ui/pokemon-info-container"; +import type { Egg } from "#data/egg"; +import type { EggHatchData } from "#data/egg-hatch-data"; import { UiMode } from "#enums/ui-mode"; +import { EggCountChangedEvent } from "#events/egg"; +import { doShinySparkleAnim } from "#field/anims"; +import type { PlayerPokemon } from "#field/pokemon"; +import type { EggLapsePhase } from "#phases/egg-lapse-phase"; +import { achvs } from "#system/achv"; +import { EggCounterContainer } from "#ui/egg-counter-container"; +import type { EggHatchSceneHandler } from "#ui/egg-hatch-scene-handler"; +import { PokemonInfoContainer } from "#ui/pokemon-info-container"; +import { fixedInt, getFrameMs, randInt } from "#utils/common"; import i18next from "i18next"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { fixedInt, getFrameMs, randInt } from "#app/utils/common"; -import type { EggLapsePhase } from "./egg-lapse-phase"; -import type { EggHatchData } from "#app/data/egg-hatch-data"; -import { doShinySparkleAnim } from "#app/field/anims"; /** * Class that represents egg hatching diff --git a/src/phases/egg-lapse-phase.ts b/src/phases/egg-lapse-phase.ts index 206bef1a33c..4f393bddd36 100644 --- a/src/phases/egg-lapse-phase.ts +++ b/src/phases/egg-lapse-phase.ts @@ -1,13 +1,13 @@ import { globalScene } from "#app/global-scene"; -import type { Egg } from "#app/data/egg"; -import { EGG_SEED } from "#app/data/egg"; -import { Phase } from "#app/phase"; -import i18next from "i18next"; import Overrides from "#app/overrides"; +import { Phase } from "#app/phase"; +import type { Egg } from "#data/egg"; +import { EGG_SEED } from "#data/egg"; +import { EggHatchData } from "#data/egg-hatch-data"; import { UiMode } from "#enums/ui-mode"; -import { achvs } from "#app/system/achv"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import { EggHatchData } from "#app/data/egg-hatch-data"; +import type { PlayerPokemon } from "#field/pokemon"; +import { achvs } from "#system/achv"; +import i18next from "i18next"; /** * Phase that handles updating eggs, and hatching any ready eggs diff --git a/src/phases/egg-summary-phase.ts b/src/phases/egg-summary-phase.ts index cc7857426bc..c236c5c3abc 100644 --- a/src/phases/egg-summary-phase.ts +++ b/src/phases/egg-summary-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; +import type { EggHatchData } from "#data/egg-hatch-data"; import { UiMode } from "#enums/ui-mode"; -import type { EggHatchData } from "#app/data/egg-hatch-data"; /** * Class that represents the egg summary phase diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index 52c2b2e465d..79da7134e9a 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -1,37 +1,41 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { BattleType } from "#enums/battle-type"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; +import { PLAYER_PARTY_MAX_SIZE, WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/constants"; import { globalScene } from "#app/global-scene"; -import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { initEncounterAnims, loadEncounterAnimAssets } from "#app/data/battle-anims"; -import { getCharVariantFromDialogue } from "#app/data/dialogue"; -import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { doTrainerExclamation } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { getGoldenBugNetSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { getRandomWeatherType } from "#app/data/weather"; -import { EncounterPhaseEvent } from "#app/events/battle-scene"; -import type Pokemon from "#app/field/pokemon"; -import { FieldPosition } from "#enums/field-position"; import { getPokemonNameWithAffix } from "#app/messages"; -import { BoostBugSpawnModifier, IvScannerModifier, TurnHeldItemTransferModifier } from "#app/modifier/modifier"; -import { regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; import Overrides from "#app/overrides"; -import { BattlePhase } from "#app/phases/battle-phase"; -import { achvs } from "#app/system/achv"; import { handleTutorial, Tutorial } from "#app/tutorial"; -import { UiMode } from "#enums/ui-mode"; -import { randSeedInt, randSeedItem } from "#app/utils/common"; +import { initEncounterAnims, loadEncounterAnimAssets } from "#data/battle-anims"; +import { getCharVariantFromDialogue } from "#data/dialogue"; +import { getNatureName } from "#data/nature"; +import { getRandomWeatherType } from "#data/weather"; import { BattleSpec } from "#enums/battle-spec"; +import { BattleType } from "#enums/battle-type"; +import { BattlerIndex } from "#enums/battler-index"; import { BiomeId } from "#enums/biome-id"; +import { FieldPosition } from "#enums/field-position"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { PlayerGender } from "#enums/player-gender"; import { SpeciesId } from "#enums/species-id"; -import { overrideHeldItems, overrideModifiers } from "#app/modifier/modifier"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { UiMode } from "#enums/ui-mode"; +import { EncounterPhaseEvent } from "#events/battle-scene"; +import type { Pokemon } from "#field/pokemon"; +import { + BoostBugSpawnModifier, + IvScannerModifier, + overrideHeldItems, + overrideModifiers, + TurnHeldItemTransferModifier, +} from "#modifiers/modifier"; +import { regenerateModifierPoolThresholds } from "#modifiers/modifier-type"; +import { getEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import { doTrainerExclamation } from "#mystery-encounters/encounter-phase-utils"; +import { getGoldenBugNetSpecies } from "#mystery-encounters/encounter-pokemon-utils"; +import { BattlePhase } from "#phases/battle-phase"; +import { achvs } from "#system/achv"; +import { randSeedInt, randSeedItem } from "#utils/common"; import i18next from "i18next"; -import { WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/constants"; -import { getNatureName } from "#app/data/nature"; export class EncounterPhase extends BattlePhase { // Union type is necessary as this is subclassed, and typescript will otherwise complain diff --git a/src/phases/end-card-phase.ts b/src/phases/end-card-phase.ts index bb64969514f..5c3f6e1bf9b 100644 --- a/src/phases/end-card-phase.ts +++ b/src/phases/end-card-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; -import { PlayerGender } from "#app/enums/player-gender"; import { Phase } from "#app/phase"; -import { addTextObject, TextStyle } from "#app/ui/text"; +import { PlayerGender } from "#enums/player-gender"; +import { addTextObject, TextStyle } from "#ui/text"; import i18next from "i18next"; export class EndCardPhase extends Phase { diff --git a/src/phases/enemy-command-phase.ts b/src/phases/enemy-command-phase.ts index 0dc41a592e0..7e4dff37b0f 100644 --- a/src/phases/enemy-command-phase.ts +++ b/src/phases/enemy-command-phase.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import { BattlerIndex } from "#enums/battler-index"; -import { Command } from "#enums/command"; -import { FieldPhase } from "./field-phase"; import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; +import { Command } from "#enums/command"; +import { FieldPhase } from "#phases/field-phase"; /** * Phase for determining an enemy AI's action for the next turn. diff --git a/src/phases/enemy-party-member-pokemon-phase.ts b/src/phases/enemy-party-member-pokemon-phase.ts index 5c701f7d73a..2f0ace608ff 100644 --- a/src/phases/enemy-party-member-pokemon-phase.ts +++ b/src/phases/enemy-party-member-pokemon-phase.ts @@ -1,5 +1,5 @@ -import type { EnemyPokemon } from "#app/field/pokemon"; -import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; +import type { EnemyPokemon } from "#field/pokemon"; +import { PartyMemberPokemonPhase } from "#phases/party-member-pokemon-phase"; export abstract class EnemyPartyMemberPokemonPhase extends PartyMemberPokemonPhase { constructor(partyMemberIndex: number) { diff --git a/src/phases/evolution-phase.ts b/src/phases/evolution-phase.ts index 8e4300986b3..f8bee8371f2 100644 --- a/src/phases/evolution-phase.ts +++ b/src/phases/evolution-phase.ts @@ -1,20 +1,19 @@ -import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { Phase } from "#app/phase"; import type { AnySound } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; -import { FusionSpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; -import type EvolutionSceneHandler from "#app/ui/evolution-scene-handler"; -import { fixedInt, getFrameMs, randInt } from "#app/utils/common"; -import { UiMode } from "#enums/ui-mode"; -import { cos, sin } from "#app/field/anims"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { LearnMoveSituation } from "#enums/learn-move-situation"; -import { getTypeRgb } from "#app/data/type"; -import i18next from "i18next"; import { getPokemonNameWithAffix } from "#app/messages"; -import { EVOLVE_MOVE } from "#app/data/balance/pokemon-level-moves"; +import { Phase } from "#app/phase"; +import type { SpeciesFormEvolution } from "#balance/pokemon-evolutions"; +import { FusionSpeciesFormEvolution } from "#balance/pokemon-evolutions"; +import { EVOLVE_MOVE } from "#balance/pokemon-level-moves"; +import { getTypeRgb } from "#data/type"; +import { LearnMoveSituation } from "#enums/learn-move-situation"; +import { UiMode } from "#enums/ui-mode"; +import { cos, sin } from "#field/anims"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import type { EvolutionSceneHandler } from "#ui/evolution-scene-handler"; +import { fixedInt, getFrameMs, randInt } from "#utils/common"; +import i18next from "i18next"; +import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; export class EvolutionPhase extends Phase { // FormChangePhase inherits from this, but EvolutionPhase is not abstract. @@ -240,7 +239,7 @@ export class EvolutionPhase extends Phase { to: 1, duration: 2000, onUpdate: t => { - this.pokemonTintSprite.setAlpha(t.getValue()); + this.pokemonTintSprite.setAlpha(t.getValue() ?? 1); }, onComplete: () => { this.pokemonSprite.setVisible(false); @@ -388,7 +387,7 @@ export class EvolutionPhase extends Phase { globalScene.ui.showText( i18next.t("menu:evolutionDone", { pokemonName: this.preEvolvedPokemonName, - evolvedPokemonName: this.pokemon.species.getExpandedSpeciesName(), + evolvedPokemonName: this.pokemon.name, }), null, () => this.end(), diff --git a/src/phases/exp-phase.ts b/src/phases/exp-phase.ts index 74768e86186..7ab162c2ac6 100644 --- a/src/phases/exp-phase.ts +++ b/src/phases/exp-phase.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; -import { ExpBoosterModifier } from "#app/modifier/modifier"; +import { ExpBoosterModifier } from "#modifiers/modifier"; +import { PlayerPartyMemberPokemonPhase } from "#phases/player-party-member-pokemon-phase"; +import { NumberHolder } from "#utils/common"; import i18next from "i18next"; -import { NumberHolder } from "#app/utils/common"; -import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-phase"; export class ExpPhase extends PlayerPartyMemberPokemonPhase { public readonly phaseName = "ExpPhase"; diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts index c2658b62b23..d1bd0ed0804 100644 --- a/src/phases/faint-phase.ts +++ b/src/phases/faint-phase.ts @@ -1,26 +1,24 @@ -import type { BattlerIndex } from "#enums/battler-index"; -import { BattleType } from "#enums/battle-type"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; -import { battleSpecDialogue } from "#app/data/dialogue"; -import { allMoves } from "#app/data/data-lists"; -import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { BattleSpec } from "#app/enums/battle-spec"; -import { StatusEffect } from "#app/enums/status-effect"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { HitResult } from "#enums/hit-result"; -import type { PlayerPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; -import { PokemonInstantReviveModifier } from "#app/modifier/modifier"; -import { SwitchType } from "#enums/switch-type"; -import i18next from "i18next"; -import { PokemonPhase } from "./pokemon-phase"; -import { isNullOrUndefined } from "#app/utils/common"; -import { FRIENDSHIP_LOSS_FROM_FAINT } from "#app/data/balance/starters"; +import { FRIENDSHIP_LOSS_FROM_FAINT } from "#balance/starters"; +import { allMoves } from "#data/data-lists"; +import { battleSpecDialogue } from "#data/dialogue"; +import { SpeciesFormChangeActiveTrigger } from "#data/form-change-triggers"; +import { BattleSpec } from "#enums/battle-spec"; +import { BattleType } from "#enums/battle-type"; +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 { StatusEffect } from "#enums/status-effect"; +import { SwitchType } from "#enums/switch-type"; +import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon"; +import { PokemonInstantReviveModifier } from "#modifiers/modifier"; +import { PokemonMove } from "#moves/pokemon-move"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import { isNullOrUndefined } from "#utils/common"; +import i18next from "i18next"; export class FaintPhase extends PokemonPhase { public readonly phaseName = "FaintPhase"; diff --git a/src/phases/field-phase.ts b/src/phases/field-phase.ts index c37f0e960e7..99de3d9fcf5 100644 --- a/src/phases/field-phase.ts +++ b/src/phases/field-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; -import type Pokemon from "#app/field/pokemon"; -import { BattlePhase } from "./battle-phase"; +import type { Pokemon } from "#field/pokemon"; +import { BattlePhase } from "#phases/battle-phase"; type PokemonFunc = (pokemon: Pokemon) => void; diff --git a/src/phases/form-change-phase.ts b/src/phases/form-change-phase.ts index 6d60cacd69d..7b7f5a6dac6 100644 --- a/src/phases/form-change-phase.ts +++ b/src/phases/form-change-phase.ts @@ -1,15 +1,15 @@ import { globalScene } from "#app/global-scene"; -import { fixedInt } from "#app/utils/common"; -import { achvs } from "../system/achv"; -import type { SpeciesFormChange } from "../data/pokemon-forms"; -import { getSpeciesFormChangeMessage } from "#app/data/pokemon-forms/form-change-triggers"; -import type { default as Pokemon, PlayerPokemon } from "../field/pokemon"; -import { UiMode } from "#enums/ui-mode"; -import type PartyUiHandler from "../ui/party-ui-handler"; -import { getPokemonNameWithAffix } from "../messages"; -import { EvolutionPhase } from "./evolution-phase"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { getSpeciesFormChangeMessage } from "#data/form-change-triggers"; +import type { SpeciesFormChange } from "#data/pokemon-forms"; import { BattlerTagType } from "#enums/battler-tag-type"; import { SpeciesFormKey } from "#enums/species-form-key"; +import { UiMode } from "#enums/ui-mode"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import { EvolutionPhase } from "#phases/evolution-phase"; +import { achvs } from "#system/achv"; +import type { PartyUiHandler } from "#ui/party-ui-handler"; +import { fixedInt } from "#utils/common"; export class FormChangePhase extends EvolutionPhase { public readonly phaseName = "FormChangePhase"; diff --git a/src/phases/game-over-modifier-reward-phase.ts b/src/phases/game-over-modifier-reward-phase.ts index 13c8f48abad..f07c7d2adba 100644 --- a/src/phases/game-over-modifier-reward-phase.ts +++ b/src/phases/game-over-modifier-reward-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import { UiMode } from "#enums/ui-mode"; +import { ModifierRewardPhase } from "#phases/modifier-reward-phase"; import i18next from "i18next"; -import { ModifierRewardPhase } from "./modifier-reward-phase"; export class GameOverModifierRewardPhase extends ModifierRewardPhase { public readonly phaseName = "GameOverModifierRewardPhase"; diff --git a/src/phases/game-over-phase.ts b/src/phases/game-over-phase.ts index 3f92f26b9b9..d4562b5a237 100644 --- a/src/phases/game-over-phase.ts +++ b/src/phases/game-over-phase.ts @@ -1,29 +1,29 @@ +import { pokerogueApi } from "#api/pokerogue-api"; import { clientSessionId } from "#app/account"; -import { BattleType } from "#enums/battle-type"; import { globalScene } from "#app/global-scene"; -import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; -import { getCharVariantFromDialogue } from "#app/data/dialogue"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import type Pokemon from "#app/field/pokemon"; -import { modifierTypes } from "#app/data/data-lists"; -import { BattlePhase } from "#app/phases/battle-phase"; -import type { EndCardPhase } from "#app/phases/end-card-phase"; -import { achvs, ChallengeAchv } from "#app/system/achv"; -import { Unlockables } from "#enums/unlockables"; -import { UiMode } from "#enums/ui-mode"; -import { isLocal, isLocalServerConnected } from "#app/utils/common"; +import { pokemonEvolutions } from "#balance/pokemon-evolutions"; +import { modifierTypes } from "#data/data-lists"; +import { getCharVariantFromDialogue } from "#data/dialogue"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { BattleType } from "#enums/battle-type"; import { PlayerGender } from "#enums/player-gender"; import { TrainerType } from "#enums/trainer-type"; +import { UiMode } from "#enums/ui-mode"; +import { Unlockables } from "#enums/unlockables"; +import type { Pokemon } from "#field/pokemon"; +import { BattlePhase } from "#phases/battle-phase"; +import type { EndCardPhase } from "#phases/end-card-phase"; +import { achvs, ChallengeAchv } from "#system/achv"; +import { ArenaData } from "#system/arena-data"; +import { ChallengeData } from "#system/challenge-data"; +import type { SessionSaveData } from "#system/game-data"; +import { ModifierData as PersistentModifierData } from "#system/modifier-data"; +import { PokemonData } from "#system/pokemon-data"; +import { TrainerData } from "#system/trainer-data"; +import { trainerConfigs } from "#trainers/trainer-config"; +import { isLocal, isLocalServerConnected } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import type { SessionSaveData } from "#app/system/game-data"; -import PersistentModifierData from "#app/system/modifier-data"; -import PokemonData from "#app/system/pokemon-data"; -import ChallengeData from "#app/system/challenge-data"; -import TrainerData from "#app/system/trainer-data"; -import ArenaData from "#app/system/arena-data"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; export class GameOverPhase extends BattlePhase { public readonly phaseName = "GameOverPhase"; diff --git a/src/phases/hide-party-exp-bar-phase.ts b/src/phases/hide-party-exp-bar-phase.ts index 9ee08280cd4..e59bd02ce60 100644 --- a/src/phases/hide-party-exp-bar-phase.ts +++ b/src/phases/hide-party-exp-bar-phase.ts @@ -1,5 +1,5 @@ import { globalScene } from "#app/global-scene"; -import { BattlePhase } from "./battle-phase"; +import { BattlePhase } from "#phases/battle-phase"; export class HidePartyExpBarPhase extends BattlePhase { public readonly phaseName = "HidePartyExpBarPhase"; diff --git a/src/phases/learn-move-phase.ts b/src/phases/learn-move-phase.ts index e24efa63b5a..a714d247730 100644 --- a/src/phases/learn-move-phase.ts +++ b/src/phases/learn-move-phase.ts @@ -1,18 +1,18 @@ import { globalScene } from "#app/global-scene"; -import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; -import type Move from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; -import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { MoveId } from "#enums/move-id"; import { getPokemonNameWithAffix } from "#app/messages"; import Overrides from "#app/overrides"; -import EvolutionSceneHandler from "#app/ui/evolution-scene-handler"; -import { SummaryUiMode } from "#app/ui/summary-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import i18next from "i18next"; -import { PlayerPartyMemberPokemonPhase } from "#app/phases/player-party-member-pokemon-phase"; -import type Pokemon from "#app/field/pokemon"; +import { initMoveAnim, loadMoveAnimAssets } from "#data/battle-anims"; +import { allMoves } from "#data/data-lists"; +import { SpeciesFormChangeMoveLearnedTrigger } from "#data/form-change-triggers"; import { LearnMoveType } from "#enums/learn-move-type"; +import { MoveId } from "#enums/move-id"; +import { UiMode } from "#enums/ui-mode"; +import type { Pokemon } from "#field/pokemon"; +import type { Move } from "#moves/move"; +import { PlayerPartyMemberPokemonPhase } from "#phases/player-party-member-pokemon-phase"; +import { EvolutionSceneHandler } from "#ui/evolution-scene-handler"; +import { SummaryUiMode } from "#ui/summary-ui-handler"; +import i18next from "i18next"; export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { public readonly phaseName = "LearnMovePhase"; diff --git a/src/phases/level-cap-phase.ts b/src/phases/level-cap-phase.ts index 12d4d64e8e2..a1f1e07f58d 100644 --- a/src/phases/level-cap-phase.ts +++ b/src/phases/level-cap-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import { UiMode } from "#enums/ui-mode"; +import { FieldPhase } from "#phases/field-phase"; import i18next from "i18next"; -import { FieldPhase } from "./field-phase"; export class LevelCapPhase extends FieldPhase { public readonly phaseName = "LevelCapPhase"; diff --git a/src/phases/level-up-phase.ts b/src/phases/level-up-phase.ts index c78a1798304..07a87d73411 100644 --- a/src/phases/level-up-phase.ts +++ b/src/phases/level-up-phase.ts @@ -1,10 +1,10 @@ import { globalScene } from "#app/global-scene"; -import { ExpNotification } from "#app/enums/exp-notification"; -import type { PlayerPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; -import { PlayerPartyMemberPokemonPhase } from "#app/phases/player-party-member-pokemon-phase"; -import { LevelAchv } from "#app/system/achv"; -import { NumberHolder } from "#app/utils/common"; +import { ExpNotification } from "#enums/exp-notification"; +import type { PlayerPokemon } from "#field/pokemon"; +import { PlayerPartyMemberPokemonPhase } from "#phases/player-party-member-pokemon-phase"; +import { LevelAchv } from "#system/achv"; +import { NumberHolder } from "#utils/common"; import i18next from "i18next"; export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { diff --git a/src/phases/load-move-anim-phase.ts b/src/phases/load-move-anim-phase.ts index c9b78797407..3209e395399 100644 --- a/src/phases/load-move-anim-phase.ts +++ b/src/phases/load-move-anim-phase.ts @@ -1,6 +1,6 @@ -import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; -import type { MoveId } from "#enums/move-id"; import { Phase } from "#app/phase"; +import { initMoveAnim, loadMoveAnimAssets } from "#data/battle-anims"; +import type { MoveId } from "#enums/move-id"; /** * Phase for synchronous move animation loading. diff --git a/src/phases/login-phase.ts b/src/phases/login-phase.ts index de426866baa..f310c60b0d4 100644 --- a/src/phases/login-phase.ts +++ b/src/phases/login-phase.ts @@ -1,12 +1,12 @@ import { updateUserInfo } from "#app/account"; -import { bypassLogin } from "#app/global-vars/bypass-login"; import { globalScene } from "#app/global-scene"; +import { bypassLogin } from "#app/global-vars/bypass-login"; import { Phase } from "#app/phase"; import { handleTutorial, Tutorial } from "#app/tutorial"; import { UiMode } from "#enums/ui-mode"; +import { executeIf, sessionIdKey } from "#utils/common"; +import { getCookie, removeCookie } from "#utils/cookies"; import i18next, { t } from "i18next"; -import { sessionIdKey, executeIf } from "#app/utils/common"; -import { getCookie, removeCookie } from "#app/utils/cookies"; export class LoginPhase extends Phase { public readonly phaseName = "LoginPhase"; diff --git a/src/phases/modifier-reward-phase.ts b/src/phases/modifier-reward-phase.ts index 29bbe215fc0..b84985b7311 100644 --- a/src/phases/modifier-reward-phase.ts +++ b/src/phases/modifier-reward-phase.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import type { ModifierType } from "#app/modifier/modifier-type"; -import type { ModifierTypeFunc } from "#app/@types/modifier-types"; -import { getModifierType } from "#app/utils/modifier-utils"; +import type { ModifierType } from "#modifiers/modifier-type"; +import { BattlePhase } from "#phases/battle-phase"; +import type { ModifierTypeFunc } from "#types/modifier-types"; +import { getModifierType } from "#utils/modifier-utils"; import i18next from "i18next"; -import { BattlePhase } from "./battle-phase"; export class ModifierRewardPhase extends BattlePhase { // RibbonModifierRewardPhase extends ModifierRewardPhase and to make typescript happy diff --git a/src/phases/money-reward-phase.ts b/src/phases/money-reward-phase.ts index 52cb9ecb3ff..61153de8565 100644 --- a/src/phases/money-reward-phase.ts +++ b/src/phases/money-reward-phase.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { MoneyMultiplierModifier } from "#app/modifier/modifier"; +import { ArenaTagType } from "#enums/arena-tag-type"; +import { MoneyMultiplierModifier } from "#modifiers/modifier"; +import { BattlePhase } from "#phases/battle-phase"; +import { NumberHolder } from "#utils/common"; import i18next from "i18next"; -import { NumberHolder } from "#app/utils/common"; -import { BattlePhase } from "./battle-phase"; export class MoneyRewardPhase extends BattlePhase { public readonly phaseName = "MoneyRewardPhase"; diff --git a/src/phases/move-anim-phase.ts b/src/phases/move-anim-phase.ts index 383841a0146..b8563fbb997 100644 --- a/src/phases/move-anim-phase.ts +++ b/src/phases/move-anim-phase.ts @@ -1,5 +1,5 @@ -import type { MoveAnim } from "#app/data/battle-anims"; import { Phase } from "#app/phase"; +import type { MoveAnim } from "#data/battle-anims"; /** * Plays the given {@linkcode MoveAnim} sequentially. diff --git a/src/phases/move-charge-phase.ts b/src/phases/move-charge-phase.ts index 51b8fe96ff6..0c83db10511 100644 --- a/src/phases/move-charge-phase.ts +++ b/src/phases/move-charge-phase.ts @@ -1,15 +1,15 @@ import { globalScene } from "#app/global-scene"; +import { MoveChargeAnim } from "#data/battle-anims"; import type { BattlerIndex } from "#enums/battler-index"; -import { MoveChargeAnim } from "#app/data/battle-anims"; -import { applyMoveChargeAttrs } from "#app/data/moves/apply-attrs"; -import type { PokemonMove } from "#app/data/moves/pokemon-move"; -import type Pokemon from "#app/field/pokemon"; -import { MoveResult } from "#enums/move-result"; -import { BooleanHolder } from "#app/utils/common"; -import { PokemonPhase } from "#app/phases/pokemon-phase"; import { BattlerTagType } from "#enums/battler-tag-type"; +import { MoveResult } from "#enums/move-result"; import type { MoveUseMode } from "#enums/move-use-mode"; -import type { ChargingMove } from "#app/@types/move-types"; +import type { Pokemon } from "#field/pokemon"; +import { applyMoveChargeAttrs } from "#moves/apply-attrs"; +import type { PokemonMove } from "#moves/pokemon-move"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import type { ChargingMove } from "#types/move-types"; +import { BooleanHolder } from "#utils/common"; /** * Phase for the "charging turn" of two-turn moves (e.g. Dig). diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index 610d670dcb9..b1cb9e48d51 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -1,32 +1,27 @@ -import { BattlerIndex } from "#enums/battler-index"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { ConditionalProtectTag } from "#app/data/arena-tag"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { MoveAnim } from "#app/data/battle-anims"; -import { - DamageProtectedTag, - ProtectedTag, - SemiInvulnerableTag, - SubstituteTag, - TypeBoostTag, -} from "#app/data/battler-tags"; -import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; -import type { MoveAttr } from "#app/data/moves/move"; -import { getMoveTargets } from "#app/data/moves/move-utils"; -import { applyFilteredMoveAttrs, applyMoveAttrs } from "#app/data/moves/apply-attrs"; -import { MoveEffectTrigger } from "#enums/MoveEffectTrigger"; -import { MoveFlags } from "#enums/MoveFlags"; -import { MoveTarget } from "#enums/MoveTarget"; -import { MoveCategory } from "#enums/MoveCategory"; -import { SpeciesFormChangePostMoveTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { PokemonType } from "#enums/pokemon-type"; -import type { DamageResult, TurnMove } from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import type Pokemon from "#app/field/pokemon"; -import { MoveResult } from "#enums/move-result"; -import { HitResult } from "#enums/hit-result"; import { getPokemonNameWithAffix } from "#app/messages"; +import type { Phase } from "#app/phase"; +import { ConditionalProtectTag } from "#data/arena-tag"; +import { MoveAnim } from "#data/battle-anims"; +import { DamageProtectedTag, ProtectedTag, SemiInvulnerableTag, SubstituteTag, TypeBoostTag } from "#data/battler-tags"; +import { SpeciesFormChangePostMoveTrigger } from "#data/form-change-triggers"; +import type { TypeDamageMultiplier } from "#data/type"; +import { ArenaTagSide } from "#enums/arena-tag-side"; +import { BattlerIndex } from "#enums/battler-index"; +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/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 { MoveTarget } from "#enums/move-target"; +import { isReflected, isVirtual, MoveUseMode } from "#enums/move-use-mode"; +import { PokemonType } from "#enums/pokemon-type"; +import type { Pokemon } from "#field/pokemon"; import { ContactHeldItemTransferChanceModifier, DamageMoneyRewardModifier, @@ -35,20 +30,18 @@ import { FlinchChanceModifier, HitHealModifier, PokemonMultiHitModifier, -} from "#app/modifier/modifier"; -import { PokemonPhase } from "#app/phases/pokemon-phase"; -import { BooleanHolder, isNullOrUndefined, NumberHolder } from "#app/utils/common"; -import type { nil } from "#app/utils/common"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { MoveId } from "#enums/move-id"; +} from "#modifiers/modifier"; +import { applyFilteredMoveAttrs, applyMoveAttrs } from "#moves/apply-attrs"; +import type { Move, MoveAttr } from "#moves/move"; +import { getMoveTargets, isFieldTargeted } from "#moves/move-utils"; +import { PokemonMove } from "#moves/pokemon-move"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import { DamageAchv } from "#system/achv"; +import type { DamageResult } from "#types/damage-result"; +import type { TurnMove } from "#types/turn-move"; +import type { nil } from "#utils/common"; +import { BooleanHolder, isNullOrUndefined, NumberHolder } from "#utils/common"; import i18next from "i18next"; -import type { Phase } from "#app/phase"; -import type { TypeDamageMultiplier } from "#app/data/type"; -import { HitCheckResult } from "#enums/hit-check-result"; -import type Move from "#app/data/moves/move"; -import { isFieldTargeted } from "#app/data/moves/move-utils"; -import { DamageAchv } from "#app/system/achv"; -import { isVirtual, isReflected, MoveUseMode } from "#enums/move-use-mode"; export type HitCheckEntry = [HitCheckResult, TypeDamageMultiplier]; @@ -431,9 +424,15 @@ export class MoveEffectPhase extends PokemonPhase { * @param user - The {@linkcode Pokemon} using this phase's invoked move * @param target - {@linkcode Pokemon} the current target of this phase's invoked move * @param hitResult - The {@linkcode HitResult} of the attempted move + * @param wasCritical - `true` if the move was a critical hit */ - protected applyOnGetHitAbEffects(user: Pokemon, target: Pokemon, hitResult: HitResult): void { - applyAbAttrs("PostDefendAbAttr", { pokemon: target, opponent: user, move: this.move, hitResult }); + protected applyOnGetHitAbEffects(user: Pokemon, target: Pokemon, hitResult: HitResult, wasCritical = false): void { + const params = { pokemon: target, opponent: user, move: this.move, hitResult }; + applyAbAttrs("PostDefendAbAttr", params); + + if (wasCritical) { + applyAbAttrs("PostReceiveCritStatStageChangeAbAttr", params); + } target.lapseTags(BattlerTagLapseType.AFTER_HIT); } @@ -787,12 +786,12 @@ export class MoveEffectPhase extends PokemonPhase { this.triggerMoveEffects(MoveEffectTrigger.PRE_APPLY, user, target); - const hitResult = this.applyMove(user, target, effectiveness); + const [hitResult, wasCritical] = this.applyMove(user, target, effectiveness); // Apply effects to the user (always) and the target (if not blocked by substitute). this.triggerMoveEffects(MoveEffectTrigger.POST_APPLY, user, target, firstTarget, true); if (!this.move.hitsSubstitute(user, target)) { - this.applyOnTargetEffects(user, target, hitResult, firstTarget); + this.applyOnTargetEffects(user, target, hitResult, firstTarget, wasCritical); } if (this.lastHit) { globalScene.triggerPokemonFormChange(user, SpeciesFormChangePostMoveTrigger); @@ -812,8 +811,9 @@ export class MoveEffectPhase extends PokemonPhase { * @param user - The {@linkcode Pokemon} using this phase's invoked move * @param target - The {@linkcode Pokemon} targeted by the move * @param effectiveness - The effectiveness of the move against the target + * @returns The {@linkcode HitResult} of the move against the target and a boolean indicating whether the target was crit */ - protected applyMoveDamage(user: Pokemon, target: Pokemon, effectiveness: TypeDamageMultiplier): HitResult { + protected applyMoveDamage(user: Pokemon, target: Pokemon, effectiveness: TypeDamageMultiplier): [HitResult, boolean] { const isCritical = target.getCriticalHitResult(user, this.move); /* @@ -844,7 +844,7 @@ export class MoveEffectPhase extends PokemonPhase { const isOneHitKo = result === HitResult.ONE_HIT_KO; if (!dmg) { - return result; + return [result, false]; } target.lapseTags(BattlerTagLapseType.HIT); @@ -872,7 +872,7 @@ export class MoveEffectPhase extends PokemonPhase { } if (damage <= 0) { - return result; + return [result, isCritical]; } if (user.isPlayer()) { @@ -901,7 +901,7 @@ export class MoveEffectPhase extends PokemonPhase { globalScene.applyModifiers(DamageMoneyRewardModifier, true, user, new NumberHolder(damage)); } - return result; + return [result, isCritical]; } /** @@ -955,17 +955,17 @@ export class MoveEffectPhase extends PokemonPhase { * @param target - The {@linkcode Pokemon} struck by the move * @param effectiveness - The effectiveness of the move against the target */ - protected applyMove(user: Pokemon, target: Pokemon, effectiveness: TypeDamageMultiplier): HitResult { + protected applyMove(user: Pokemon, target: Pokemon, effectiveness: TypeDamageMultiplier): [HitResult, boolean] { const moveCategory = user.getMoveCategory(target, this.move); if (moveCategory === MoveCategory.STATUS) { - return HitResult.STATUS; + return [HitResult.STATUS, false]; } const result = this.applyMoveDamage(user, target, effectiveness); if (user.turnData.hitsLeft === 1 || target.isFainted()) { - this.queueHitResultMessage(result); + this.queueHitResultMessage(result[0]); } if (target.isFainted()) { @@ -982,8 +982,15 @@ export class MoveEffectPhase extends PokemonPhase { * @param target - The {@linkcode Pokemon} targeted by the move * @param hitResult - The {@linkcode HitResult} obtained from applying the move * @param firstTarget - `true` if the target is the first Pokemon hit by the attack + * @param wasCritical - `true` if the move was a critical hit */ - protected applyOnTargetEffects(user: Pokemon, target: Pokemon, hitResult: HitResult, firstTarget: boolean): void { + protected applyOnTargetEffects( + user: Pokemon, + target: Pokemon, + hitResult: HitResult, + firstTarget: boolean, + wasCritical = false, + ): void { /** Does {@linkcode hitResult} indicate that damage was dealt to the target? */ const dealsDamage = [ HitResult.EFFECTIVE, @@ -994,7 +1001,7 @@ export class MoveEffectPhase extends PokemonPhase { this.triggerMoveEffects(MoveEffectTrigger.POST_APPLY, user, target, firstTarget, false); this.applyHeldItemFlinchCheck(user, target, dealsDamage); - this.applyOnGetHitAbEffects(user, target, hitResult); + this.applyOnGetHitAbEffects(user, target, hitResult, wasCritical); applyAbAttrs("PostAttackAbAttr", { pokemon: user, opponent: target, move: this.move, hitResult }); // We assume only enemy Pokemon are able to have the EnemyAttackStatusEffectChanceModifier from tokens diff --git a/src/phases/move-end-phase.ts b/src/phases/move-end-phase.ts index 7e1006c74e8..fd893c445ff 100644 --- a/src/phases/move-end-phase.ts +++ b/src/phases/move-end-phase.ts @@ -1,9 +1,9 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; -import { PokemonPhase } from "./pokemon-phase"; import type { BattlerIndex } from "#enums/battler-index"; -import type Pokemon from "#app/field/pokemon"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; +import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; +import type { Pokemon } from "#field/pokemon"; +import { PokemonPhase } from "#phases/pokemon-phase"; export class MoveEndPhase extends PokemonPhase { public readonly phaseName = "MoveEndPhase"; diff --git a/src/phases/move-header-phase.ts b/src/phases/move-header-phase.ts index 8c2d184c3f5..5c69dcd1217 100644 --- a/src/phases/move-header-phase.ts +++ b/src/phases/move-header-phase.ts @@ -1,7 +1,7 @@ -import { applyMoveAttrs } from "#app/data/moves/apply-attrs"; -import type { PokemonMove } from "#app/data/moves/pokemon-move"; -import type Pokemon from "#app/field/pokemon"; -import { BattlePhase } from "./battle-phase"; +import type { Pokemon } from "#field/pokemon"; +import { applyMoveAttrs } from "#moves/apply-attrs"; +import type { PokemonMove } from "#moves/pokemon-move"; +import { BattlePhase } from "#phases/battle-phase"; export class MoveHeaderPhase extends BattlePhase { public readonly phaseName = "MoveHeaderPhase"; diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 092a8c65dd4..98566c32ed2 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -1,34 +1,34 @@ -import { BattlerIndex } from "#enums/battler-index"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import type { DelayedAttackTag } from "#app/data/arena-tag"; -import { CommonAnim } from "#enums/move-anims-common"; -import { CenterOfAttentionTag } from "#app/data/battler-tags"; -import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; -import { applyMoveAttrs } from "#app/data/moves/apply-attrs"; -import { allMoves } from "#app/data/data-lists"; -import { MoveFlags } from "#enums/MoveFlags"; -import { SpeciesFormChangePreMoveTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { getStatusEffectActivationText, getStatusEffectHealText } from "#app/data/status-effect"; -import { PokemonType } from "#enums/pokemon-type"; -import { getWeatherBlockMessage } from "#app/data/weather"; -import { MoveUsedEvent } from "#app/events/battle-scene"; -import type { PokemonMove } from "#app/data/moves/pokemon-move"; -import type Pokemon from "#app/field/pokemon"; -import { MoveResult } from "#enums/move-result"; import { getPokemonNameWithAffix } from "#app/messages"; import Overrides from "#app/overrides"; -import { BattlePhase } from "#app/phases/battle-phase"; -import { enumValueToKey, NumberHolder } from "#app/utils/common"; +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 { 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"; +import { PokemonType } from "#enums/pokemon-type"; import { StatusEffect } from "#enums/status-effect"; +import { MoveUsedEvent } from "#events/battle-scene"; +import type { Pokemon } from "#field/pokemon"; +import { applyMoveAttrs } from "#moves/apply-attrs"; +import { frenzyMissFunc } from "#moves/move-utils"; +import type { PokemonMove } from "#moves/pokemon-move"; +import { BattlePhase } from "#phases/battle-phase"; +import { NumberHolder } from "#utils/common"; +import { enumValueToKey } from "#utils/enums"; import i18next from "i18next"; -import { getTerrainBlockMessage } from "#app/data/terrain"; -import { isVirtual, isIgnorePP, isReflected, MoveUseMode, isIgnoreStatus } from "#enums/move-use-mode"; -import { frenzyMissFunc } from "#app/data/moves/move-utils"; export class MovePhase extends BattlePhase { public readonly phaseName = "MovePhase"; @@ -36,11 +36,11 @@ export class MovePhase extends BattlePhase { protected _move: PokemonMove; protected _targets: BattlerIndex[]; public readonly useMode: MoveUseMode; // Made public for quash + /** Whether the current move is forced last (used for Quash). */ protected forcedLast: boolean; - - /** Whether the current move should fail but still use PP */ + /** Whether the current move should fail but still use PP. */ protected failed = false; - /** Whether the current move should cancel and retain PP */ + /** Whether the current move should fail and retain PP. */ protected cancelled = false; public get pokemon(): Pokemon { @@ -165,6 +165,7 @@ export class MovePhase extends BattlePhase { this.resolveFinalPreMoveCancellationChecks(); } + // Cancel, charge or use the move as applicable. if (this.cancelled || this.failed) { this.handlePreMoveFailures(); } else if (this.move.getMove().isChargingMove() && !this.pokemon.getTag(BattlerTagType.CHARGING)) { @@ -282,8 +283,7 @@ export class MovePhase extends BattlePhase { protected lapsePreMoveAndMoveTags(): void { this.pokemon.lapseTags(BattlerTagLapseType.PRE_MOVE); - // TODO: does this intentionally happen before the no targets/MoveId.NONE on queue cancellation case is checked? - // (In other words, check if truant can proc on a move w/o targets) + // This intentionally happens before moves without targets are cancelled (Truant takes priority over lack of targets) if (!isIgnoreStatus(this.useMode) && this.canMove() && !this.cancelled) { this.pokemon.lapseTags(BattlerTagLapseType.MOVE); } @@ -297,44 +297,27 @@ export class MovePhase extends BattlePhase { // form changes happen even before we know that the move wll execute. globalScene.triggerPokemonFormChange(this.pokemon, SpeciesFormChangePreMoveTrigger); - const isDelayedAttack = move.hasAttr("DelayedAttackAttr"); - if (isDelayedAttack) { - // Check the player side arena if future sight is active - const futureSightTags = globalScene.arena.findTags(t => t.tagType === ArenaTagType.FUTURE_SIGHT); - const doomDesireTags = globalScene.arena.findTags(t => t.tagType === ArenaTagType.DOOM_DESIRE); - let fail = false; + // 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(); - for (const tag of futureSightTags) { - if ((tag as DelayedAttackTag).targetIndex === currentTargetIndex) { - fail = true; - break; - } - } - for (const tag of doomDesireTags) { - if ((tag as DelayedAttackTag).targetIndex === currentTargetIndex) { - fail = true; - break; - } - } - if (fail) { - this.showMoveText(); - this.showFailedText(); - this.end(); + 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; } } - let success = true; - // Check if there are any attributes that can interrupt the move, overriding the fail message. - for (const move of this.move.getMove().getAttrs("PreUseInterruptAttr")) { - if (move.apply(this.pokemon, targets[0], this.move.getMove())) { - success = false; - break; - } - } - - if (success) { - this.showMoveText(); + // 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)); + if (failed) { + this.failMove(false); + return; } // Clear out any two turn moves once they've been used. @@ -342,6 +325,7 @@ export class MovePhase extends BattlePhase { // Move queues should be handled by the calling `CommandPhase` or a manager for it // @ts-expect-error - useMode is readonly and shouldn't normally be assigned to this.useMode = moveQueue.shift()?.useMode ?? this.useMode; + if (this.pokemon.getTag(BattlerTagType.CHARGING)?.sourceMove === this.move.moveId) { this.pokemon.lapseTag(BattlerTagType.CHARGING); } @@ -349,136 +333,145 @@ export class MovePhase extends BattlePhase { if (!isIgnorePP(this.useMode)) { // "commit" to using the move, deducting PP. const ppUsed = 1 + this.getPpIncreaseFromPressure(targets); - this.move.usePp(ppUsed); - globalScene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, move, this.move.ppUsed)); + globalScene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon.id, move, this.move.ppUsed)); } /** * Determine if the move is successful (meaning that its damage/effects can be attempted) * by checking that all of the following are true: * - Conditional attributes of the move are all met - * - The target's `ForceSwitchOutImmunityAbAttr` is not triggered (see {@linkcode Move.prototype.applyConditions}) * - Weather does not block the move * - Terrain does not block the move - * - * TODO: These steps are straightforward, but the implementation below is extremely convoluted. */ /** * Move conditions assume the move has a single target * TODO: is this sustainable? */ - let failedDueToTerrain = false; - let failedDueToWeather = false; - if (success) { - const passesConditions = move.applyConditions(this.pokemon, targets[0], move); - failedDueToWeather = globalScene.arena.isMoveWeatherCancelled(this.pokemon, move); - failedDueToTerrain = globalScene.arena.isMoveTerrainCancelled(this.pokemon, this.targets, move); - success = passesConditions && !failedDueToWeather && !failedDueToTerrain; + const failsConditions = !move.applyConditions(this.pokemon, targets[0], move); + const failedDueToWeather = globalScene.arena.isMoveWeatherCancelled(this.pokemon, move); + const failedDueToTerrain = globalScene.arena.isMoveTerrainCancelled(this.pokemon, this.targets, move); + failed ||= failsConditions || failedDueToWeather || failedDueToTerrain; + + if (failed) { + this.failMove(true, failedDueToWeather, failedDueToTerrain); + return; } - // Update the battle's "last move" pointer, unless we're currently mimicking a move. - if (!allMoves[this.move.moveId].hasAttr("CopyMoveAttr")) { - // The last move used is unaffected by moves that fail - if (success) { - globalScene.currentBattle.lastMove = this.move.moveId; - } + this.executeMove(); + } + + /** Execute the current move and apply its effects. */ + private executeMove() { + const move = this.move.getMove(); + const targets = this.getActiveTargetPokemon(); + + // Update the battle's "last move" pointer unless we're currently mimicking a move or triggering Dancer. + if (!move.hasAttr("CopyMoveAttr") && !isReflected(this.useMode)) { + globalScene.currentBattle.lastMove = move.id; } - /** - * If the move has not failed, trigger ability-based user type changes and then execute it. - * - * Notably, Roar, Whirlwind, Trick-or-Treat, and Forest's Curse will trigger these type changes even - * if the move fails. - */ - if (success) { - const move = this.move.getMove(); - // TODO: Investigate whether PokemonTypeChangeAbAttr can drop the "opponent" parameter - applyAbAttrs("PokemonTypeChangeAbAttr", { pokemon: this.pokemon, move, opponent: targets[0] }); - globalScene.phaseManager.unshiftNew( - "MoveEffectPhase", - this.pokemon.getBattlerIndex(), - this.targets, - move, - this.useMode, - ); - } else { - if ([MoveId.ROAR, MoveId.WHIRLWIND, MoveId.TRICK_OR_TREAT, MoveId.FORESTS_CURSE].includes(this.move.moveId)) { - applyAbAttrs("PokemonTypeChangeAbAttr", { - pokemon: this.pokemon, - move: this.move.getMove(), - opponent: targets[0], - }); - } - - this.pokemon.pushMoveHistory({ - move: this.move.moveId, - targets: this.targets, - result: MoveResult.FAIL, - useMode: this.useMode, - }); - - const failureMessage = move.getFailedText(this.pokemon, targets[0], move); - let failedText: string | undefined; - if (failureMessage) { - failedText = failureMessage; - } else if (failedDueToTerrain) { - failedText = getTerrainBlockMessage(targets[0], globalScene.arena.getTerrainType()); - } else if (failedDueToWeather) { - failedText = getWeatherBlockMessage(globalScene.arena.getWeatherType()); - } - - this.showFailedText(failedText); - - // Remove the user from its semi-invulnerable state (if applicable) - this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); - } + // Trigger ability-based user type changes, display move text and then execute move effects. + // TODO: Investigate whether PokemonTypeChangeAbAttr can drop the "opponent" parameter + applyAbAttrs("PokemonTypeChangeAbAttr", { pokemon: this.pokemon, move, opponent: targets[0] }); + this.showMoveText(); + globalScene.phaseManager.unshiftNew( + "MoveEffectPhase", + this.pokemon.getBattlerIndex(), + this.targets, + move, + this.useMode, + ); // Handle Dancer, which triggers immediately after a move is used (rather than waiting on `this.end()`). // Note the MoveUseMode check here prevents an infinite Dancer loop. + // TODO: This needs to go at the end of `MoveEffectPhase` to check move results const dancerModes: MoveUseMode[] = [MoveUseMode.INDIRECT, MoveUseMode.REFLECTED] as const; if (this.move.getMove().hasFlag(MoveFlags.DANCE_MOVE) && !dancerModes.includes(this.useMode)) { - // TODO: Fix in dancer PR to move to MEP for hit checks globalScene.getField(true).forEach(pokemon => { applyAbAttrs("PostMoveUsedAbAttr", { pokemon, move: this.move, source: this.pokemon, targets: this.targets }); }); } } - /** Queues a {@linkcode MoveChargePhase} for this phase's invoked move. */ + /** + * Fail the move currently being used. + * Handles failure messages, pushing to move history, etc. + * @param showText - Whether to show move text when failing the move. + * @param failedDueToWeather - Whether the move failed due to weather (default `false`) + * @param failedDueToTerrain - Whether the move failed due to terrain (default `false`) + */ + protected failMove(showText: boolean, failedDueToWeather = false, failedDueToTerrain = false) { + const move = this.move.getMove(); + const targets = this.getActiveTargetPokemon(); + + // DO NOT CHANGE THE ORDER OF OPERATIONS HERE! + // Protean is supposed to trigger its effects first, _then_ move text is displayed, + // _then_ any blockage messages are shown. + + // Roar, Whirlwind, Trick-or-Treat, and Forest's Curse will trigger Protean/Libero + // even on failure, as will all moves blocked by terrain. + // TODO: Verify if this also applies to primal weather failures + if ( + failedDueToTerrain || + [MoveId.ROAR, MoveId.WHIRLWIND, MoveId.TRICK_OR_TREAT, MoveId.FORESTS_CURSE].includes(this.move.moveId) + ) { + applyAbAttrs("PokemonTypeChangeAbAttr", { + pokemon: this.pokemon, + move, + opponent: targets[0], + }); + } + + if (showText) { + this.showMoveText(); + } + + this.pokemon.pushMoveHistory({ + move: this.move.moveId, + targets: this.targets, + result: MoveResult.FAIL, + useMode: this.useMode, + }); + + // Use move-specific failure messages if present before checking terrain/weather blockage + // and falling back to the classic "But it failed!". + const failureMessage = + move.getFailedText(this.pokemon, targets[0], move) || + (failedDueToTerrain + ? getTerrainBlockMessage(targets[0], globalScene.arena.getTerrainType()) + : failedDueToWeather + ? getWeatherBlockMessage(globalScene.arena.getWeatherType()) + : i18next.t("battle:attackFailed")); + + this.showFailedText(failureMessage); + + // Remove the user from its semi-invulnerable state (if applicable) + this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); + } + + /** + * Queue a {@linkcode MoveChargePhase} for this phase's invoked move. + * Does NOT consume PP (occurs on the 2nd strike of the move) + */ protected chargeMove() { const move = this.move.getMove(); const targets = this.getActiveTargetPokemon(); - this.showMoveText(); - - // Conditions currently assume single target - // TODO: Is this sustainable? if (!move.applyConditions(this.pokemon, targets[0], move)) { - this.pokemon.pushMoveHistory({ - move: this.move.moveId, - targets: this.targets, - result: MoveResult.FAIL, - useMode: this.useMode, - }); - - const failureMessage = move.getFailedText(this.pokemon, targets[0], move); - this.showMoveText(); - this.showFailedText(failureMessage ?? undefined); - - // Remove the user from its semi-invulnerable state (if applicable) - this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); + this.failMove(true); return; } - // Protean and Libero apply on the charging turn of charge moves + // Protean and Libero apply on the charging turn of charge moves, even before showing usage text applyAbAttrs("PokemonTypeChangeAbAttr", { pokemon: this.pokemon, - move: this.move.getMove(), + move, opponent: targets[0], }); + this.showMoveText(); globalScene.phaseManager.unshiftNew( "MoveChargePhase", this.pokemon.getBattlerIndex(), @@ -489,7 +482,7 @@ export class MovePhase extends BattlePhase { } /** - * Queues a {@linkcode MoveEndPhase} and then ends the phase + * Queue a {@linkcode MoveEndPhase} and then end this phase. */ public end(): void { globalScene.phaseManager.unshiftNew( @@ -503,15 +496,15 @@ export class MovePhase extends BattlePhase { } /** - * Applies PP increasing abilities (currently only {@link AbilityId.PRESSURE Pressure}) if they exist on the target pokemon. + * Applies PP increasing abilities (currently only {@linkcode AbilityId.PRESSURE | Pressure}) if they exist on the target pokemon. * Note that targets must include only active pokemon. * * TODO: This hardcodes the PP increase at 1 per opponent, rather than deferring to the ability. */ public getPpIncreaseFromPressure(targets: Pokemon[]): number { const foesWithPressure = this.pokemon - .getOpponents() - .filter(o => targets.includes(o) && o.isActive(true) && o.hasAbilityWithAttr("IncreasePpAbAttr")); + .getOpponents(true) + .filter(o => targets.includes(o) && o.hasAbilityWithAttr("IncreasePpAbAttr")); return foesWithPressure.length; } @@ -521,105 +514,113 @@ export class MovePhase extends BattlePhase { * - Counterattacks, which pass a special value into the `targets` constructor param (`[`{@linkcode BattlerIndex.ATTACKER}`]`). */ protected resolveRedirectTarget(): void { - if (this.targets.length === 1) { - const currentTarget = this.targets[0]; - const redirectTarget = new NumberHolder(currentTarget); + if (this.targets.length !== 1) { + // Spread moves cannot be redirected + return; + } - // check move redirection abilities of every pokemon *except* the user. - globalScene - .getField(true) - .filter(p => p !== this.pokemon) - .forEach(p => - applyAbAttrs("RedirectMoveAbAttr", { - pokemon: p, - moveId: this.move.moveId, - targetIndex: redirectTarget, - sourcePokemon: this.pokemon, - }), - ); + const currentTarget = this.targets[0]; + const redirectTarget = new NumberHolder(currentTarget); - /** `true` if an Ability is responsible for redirecting the move to another target; `false` otherwise */ - let redirectedByAbility = currentTarget !== redirectTarget.value; + // check move redirection abilities of every pokemon *except* the user. + globalScene + .getField(true) + .filter(p => p !== this.pokemon) + .forEach(pokemon => { + applyAbAttrs("RedirectMoveAbAttr", { + pokemon, + moveId: this.move.moveId, + targetIndex: redirectTarget, + sourcePokemon: this.pokemon, + }); + }); - // check for center-of-attention tags (note that this will override redirect abilities) - this.pokemon.getOpponents().forEach(p => { - const redirectTag = p.getTag(CenterOfAttentionTag); + /** `true` if an Ability is responsible for redirecting the move to another target; `false` otherwise */ + let redirectedByAbility = currentTarget !== redirectTarget.value; - // TODO: don't hardcode this interaction. - // Handle interaction between the rage powder center-of-attention tag and moves used by grass types/overcoat-havers (which are immune to RP's redirect) - if ( - redirectTag && - (!redirectTag.powder || - (!this.pokemon.isOfType(PokemonType.GRASS) && !this.pokemon.hasAbility(AbilityId.OVERCOAT))) - ) { - redirectTarget.value = p.getBattlerIndex(); - redirectedByAbility = false; + // check for center-of-attention tags (note that this will override redirect abilities) + this.pokemon.getOpponents(true).forEach(p => { + const redirectTag = p.getTag(CenterOfAttentionTag); + + // TODO: don't hardcode this interaction. + // Handle interaction between the rage powder center-of-attention tag and moves used by grass types/overcoat-havers (which are immune to RP's redirect) + if ( + redirectTag && + (!redirectTag.powder || + (!this.pokemon.isOfType(PokemonType.GRASS) && !this.pokemon.hasAbility(AbilityId.OVERCOAT))) + ) { + redirectTarget.value = p.getBattlerIndex(); + redirectedByAbility = false; + } + }); + + // TODO: Don't hardcode these ability interactions + if (currentTarget !== redirectTarget.value) { + const bypassRedirectAttrs = this.move.getMove().getAttrs("BypassRedirectAttr"); + bypassRedirectAttrs.forEach(attr => { + if (!attr.abilitiesOnly || redirectedByAbility) { + redirectTarget.value = currentTarget; } }); - if (currentTarget !== redirectTarget.value) { - const bypassRedirectAttrs = this.move.getMove().getAttrs("BypassRedirectAttr"); - bypassRedirectAttrs.forEach(attr => { - if (!attr.abilitiesOnly || redirectedByAbility) { - redirectTarget.value = currentTarget; - } - }); - - if (this.pokemon.hasAbilityWithAttr("BlockRedirectAbAttr")) { - redirectTarget.value = currentTarget; - // TODO: Ability displays should be handled by the ability - globalScene.phaseManager.queueAbilityDisplay( - this.pokemon, - this.pokemon.getPassiveAbility().hasAttr("BlockRedirectAbAttr"), - true, - ); - globalScene.phaseManager.queueAbilityDisplay( - this.pokemon, - this.pokemon.getPassiveAbility().hasAttr("BlockRedirectAbAttr"), - false, - ); - } - - this.targets[0] = redirectTarget.value; + if (this.pokemon.hasAbilityWithAttr("BlockRedirectAbAttr")) { + redirectTarget.value = currentTarget; + // TODO: Ability displays should be handled by the ability + globalScene.phaseManager.queueAbilityDisplay( + this.pokemon, + this.pokemon.getPassiveAbility().hasAttr("BlockRedirectAbAttr"), + true, + ); + globalScene.phaseManager.queueAbilityDisplay( + this.pokemon, + this.pokemon.getPassiveAbility().hasAttr("BlockRedirectAbAttr"), + false, + ); } + + this.targets[0] = redirectTarget.value; } } /** - * Counter-attacking moves pass in `[`{@linkcode BattlerIndex.ATTACKER}`]` into the constructor's `targets` param. - * This function modifies `this.targets` to reflect the actual battler index of the user's last - * attacker. + * Update the targets of any counter-attacking moves with `[`{@linkcode BattlerIndex.ATTACKER}`]` set + * to reflect the actual battler index of the user's last attacker. * - * If there is no last attacker, or they are no longer on the field, a message is displayed and the + * If there is no last attacker or they are no longer on the field, a message is displayed and the * move is marked for failure. + * @todo Make this a feature of the move rather than basing logic on {@linkcode BattlerIndex.ATTACKER} */ protected resolveCounterAttackTarget(): void { - if (this.targets.length === 1 && this.targets[0] === BattlerIndex.ATTACKER) { - if (this.pokemon.turnData.attacksReceived.length) { - this.targets[0] = this.pokemon.turnData.attacksReceived[0].sourceBattlerIndex; + if (this.targets.length !== 1 || this.targets[0] !== BattlerIndex.ATTACKER) { + return; + } - // account for metal burst and comeuppance hitting remaining targets in double battles - // counterattack will redirect to remaining ally if original attacker faints - if (globalScene.currentBattle.double && this.move.getMove().hasFlag(MoveFlags.REDIRECT_COUNTER)) { - if (globalScene.getField()[this.targets[0]].hp === 0) { - const opposingField = this.pokemon.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField(); - this.targets[0] = opposingField.find(p => p.hp > 0)?.getBattlerIndex() ?? BattlerIndex.ATTACKER; - } - } - } + // TODO: This should be covered in move conditions + if (this.pokemon.turnData.attacksReceived.length === 0) { + this.fail(); + this.showMoveText(); + this.showFailedText(); + return; + } - if (this.targets[0] === BattlerIndex.ATTACKER) { - this.fail(); - this.showMoveText(); - this.showFailedText(); - } + this.targets[0] = this.pokemon.turnData.attacksReceived[0].sourceBattlerIndex; + + // account for metal burst and comeuppance hitting remaining targets in double battles + // counterattack will redirect to remaining ally if original attacker faints + if ( + globalScene.currentBattle.double && + this.move.getMove().hasFlag(MoveFlags.REDIRECT_COUNTER) && + globalScene.getField()[this.targets[0]].hp === 0 + ) { + const opposingField = this.pokemon.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField(); + this.targets[0] = opposingField.find(p => p.hp > 0)?.getBattlerIndex() ?? BattlerIndex.ATTACKER; } } /** * Handles the case where the move was cancelled or failed: - * - Uses PP if the move failed (not cancelled) and should use PP (failed moves are not affected by {@link AbilityId.PRESSURE Pressure}) - * - Records a cancelled OR failed move in move history, so abilities like {@link AbilityId.TRUANT Truant} don't trigger on the + * - Uses PP if the move failed (not cancelled) and should use PP (failed moves are not affected by {@linkcode AbilityId.PRESSURE | Pressure}) + * - Records a cancelled OR failed move in move history, so abilities like {@linkcode AbilityId.TRUANT | Truant} don't trigger on the * next turn and soft-lock. * - Lapses `MOVE_EFFECT` tags: * - Semi-invulnerable battler tags (Fly/Dive/etc.) are intended to lapse on move effects, but also need @@ -627,52 +628,55 @@ export class MovePhase extends BattlePhase { * * TODO: ...this seems weird. * - Lapses `AFTER_MOVE` tags: - * - This handles the effects of {@link MoveId.SUBSTITUTE Substitute} + * - This handles the effects of {@linkcode MoveId.SUBSTITUTE | Substitute} * - Removes the second turn of charge moves */ protected handlePreMoveFailures(): void { - if (this.cancelled || this.failed) { - if (this.failed) { - const ppUsed = isIgnorePP(this.useMode) ? 0 : 1; - - if (ppUsed) { - this.move.usePp(); - } - - globalScene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), ppUsed)); - } - - if (this.cancelled && this.pokemon.summonData.tags?.find(t => t.tagType === BattlerTagType.FRENZY)) { - frenzyMissFunc(this.pokemon, this.move.getMove()); - } - - this.pokemon.pushMoveHistory({ - move: MoveId.NONE, - result: MoveResult.FAIL, - targets: this.targets, - useMode: this.useMode, - }); - - this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); - this.pokemon.lapseTags(BattlerTagLapseType.AFTER_MOVE); - - this.pokemon.getMoveQueue().shift(); + if (!this.cancelled && !this.failed) { + return; } + + if (this.failed) { + // TODO: should this consider struggle? + const ppUsed = isIgnorePP(this.useMode) ? 0 : 1; + this.move.usePp(ppUsed); + globalScene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), ppUsed)); + } + + if (this.cancelled && this.pokemon.summonData.tags.some(t => t.tagType === BattlerTagType.FRENZY)) { + frenzyMissFunc(this.pokemon, this.move.getMove()); + } + + this.pokemon.pushMoveHistory({ + move: MoveId.NONE, + result: MoveResult.FAIL, + targets: this.targets, + useMode: this.useMode, + }); + + this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); + this.pokemon.lapseTags(BattlerTagLapseType.AFTER_MOVE); + + // This clears out 2 turn moves after they've been used + // TODO: Remove post move queue refactor + this.pokemon.getMoveQueue().shift(); } /** - * Displays the move's usage text to the player, unless it's a charge turn (ie: {@link MoveId.SOLAR_BEAM Solar Beam}), - * the pokemon is on a recharge turn (ie: {@link MoveId.HYPER_BEAM Hyper Beam}), or a 2-turn move was interrupted (ie: {@link MoveId.FLY Fly}). + * Displays the move's usage text to the player as applicable for the move being used. */ public showMoveText(): void { - if (this.move.moveId === MoveId.NONE) { - return; - } - - if (this.pokemon.getTag(BattlerTagType.RECHARGING) || this.pokemon.getTag(BattlerTagType.INTERRUPTED)) { + // No text for Moves.NONE, recharging/2-turn moves or interrupted moves + if ( + this.move.moveId === MoveId.NONE || + this.pokemon.getTag(BattlerTagType.RECHARGING) || + this.pokemon.getTag(BattlerTagType.INTERRUPTED) + ) { 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", { pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), @@ -686,7 +690,12 @@ export class MovePhase extends BattlePhase { applyMoveAttrs("PreMoveMessageAttr", this.pokemon, this.pokemon.getOpponents(false)[0], this.move.getMove()); } - public showFailedText(failedText: string = i18next.t("battle:attackFailed")): void { + /** + * Display the text for a move failing to execute. + * @param failedText - The failure text to display; defaults to `"battle:attackFailed"` locale key + * ("But it failed!" in english) + */ + public showFailedText(failedText = i18next.t("battle:attackFailed")): void { globalScene.phaseManager.queueMessage(failedText); } } \ No newline at end of file diff --git a/src/phases/mystery-encounter-phases.ts b/src/phases/mystery-encounter-phases.ts index 9aae796211f..9363efcb460 100644 --- a/src/phases/mystery-encounter-phases.ts +++ b/src/phases/mystery-encounter-phases.ts @@ -1,22 +1,21 @@ -import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; -import type { OptionPhaseCallback } from "#app/data/mystery-encounters/mystery-encounter-option"; -import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; -import { SeenEncounterData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; -import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; +import { globalScene } from "#app/global-scene"; +import { Phase } from "#app/phase"; +import { getCharVariantFromDialogue } from "#data/dialogue"; import { BattleSpec } from "#enums/battle-spec"; +import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { SwitchType } from "#enums/switch-type"; -import i18next from "i18next"; -import { globalScene } from "#app/global-scene"; -import { getCharVariantFromDialogue } from "../data/dialogue"; -import type { OptionSelectSettings } from "../data/mystery-encounters/utils/encounter-phase-utils"; -import { transitionMysteryEncounterIntroVisuals } from "../data/mystery-encounters/utils/encounter-phase-utils"; import { TrainerSlot } from "#enums/trainer-slot"; -import { IvScannerModifier } from "../modifier/modifier"; -import { Phase } from "../phase"; import { UiMode } from "#enums/ui-mode"; -import { isNullOrUndefined, randSeedItem } from "#app/utils/common"; +import { IvScannerModifier } from "#modifiers/modifier"; +import { getEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; +import type { OptionSelectSettings } from "#mystery-encounters/encounter-phase-utils"; +import { transitionMysteryEncounterIntroVisuals } from "#mystery-encounters/encounter-phase-utils"; +import type { MysteryEncounterOption, OptionPhaseCallback } from "#mystery-encounters/mystery-encounter-option"; +import { SeenEncounterData } from "#mystery-encounters/mystery-encounter-save-data"; +import { isNullOrUndefined, randSeedItem } from "#utils/common"; +import i18next from "i18next"; /** * Will handle (in order): diff --git a/src/phases/new-battle-phase.ts b/src/phases/new-battle-phase.ts index 65ecc81df2d..b9a57161bd0 100644 --- a/src/phases/new-battle-phase.ts +++ b/src/phases/new-battle-phase.ts @@ -1,5 +1,5 @@ import { globalScene } from "#app/global-scene"; -import { BattlePhase } from "./battle-phase"; +import { BattlePhase } from "#phases/battle-phase"; export class NewBattlePhase extends BattlePhase { public readonly phaseName = "NewBattlePhase"; diff --git a/src/phases/new-biome-encounter-phase.ts b/src/phases/new-biome-encounter-phase.ts index 74476412401..db57671c4e3 100644 --- a/src/phases/new-biome-encounter-phase.ts +++ b/src/phases/new-biome-encounter-phase.ts @@ -1,7 +1,7 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { getRandomWeatherType } from "#app/data/weather"; -import { NextEncounterPhase } from "./next-encounter-phase"; +import { getRandomWeatherType } from "#data/weather"; +import { NextEncounterPhase } from "#phases/next-encounter-phase"; export class NewBiomeEncounterPhase extends NextEncounterPhase { public readonly phaseName = "NewBiomeEncounterPhase"; diff --git a/src/phases/next-encounter-phase.ts b/src/phases/next-encounter-phase.ts index c31b4b5bbc3..02b9dd7ed69 100644 --- a/src/phases/next-encounter-phase.ts +++ b/src/phases/next-encounter-phase.ts @@ -1,5 +1,5 @@ import { globalScene } from "#app/global-scene"; -import { EncounterPhase } from "./encounter-phase"; +import { EncounterPhase } from "#phases/encounter-phase"; /** * The phase between defeating an encounter and starting another wild wave. diff --git a/src/phases/obtain-status-effect-phase.ts b/src/phases/obtain-status-effect-phase.ts index 78db8ae0a99..fbadbed205b 100644 --- a/src/phases/obtain-status-effect-phase.ts +++ b/src/phases/obtain-status-effect-phase.ts @@ -1,15 +1,15 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import type { BattlerIndex } from "#enums/battler-index"; -import { CommonBattleAnim } from "#app/data/battle-anims"; -import { CommonAnim } from "#enums/move-anims-common"; -import { getStatusEffectObtainText, getStatusEffectOverlapText } from "#app/data/status-effect"; -import { StatusEffect } from "#app/enums/status-effect"; -import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; -import { PokemonPhase } from "./pokemon-phase"; -import { SpeciesFormChangeStatusEffectTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { isNullOrUndefined } from "#app/utils/common"; +import { CommonBattleAnim } from "#data/battle-anims"; +import { SpeciesFormChangeStatusEffectTrigger } from "#data/form-change-triggers"; +import { getStatusEffectObtainText, getStatusEffectOverlapText } from "#data/status-effect"; +import type { BattlerIndex } from "#enums/battler-index"; +import { CommonAnim } from "#enums/move-anims-common"; +import { StatusEffect } from "#enums/status-effect"; +import type { Pokemon } from "#field/pokemon"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import { isNullOrUndefined } from "#utils/common"; export class ObtainStatusEffectPhase extends PokemonPhase { public readonly phaseName = "ObtainStatusEffectPhase"; diff --git a/src/phases/party-heal-phase.ts b/src/phases/party-heal-phase.ts index 765c7dbad8e..80d8b315102 100644 --- a/src/phases/party-heal-phase.ts +++ b/src/phases/party-heal-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; -import { fixedInt } from "#app/utils/common"; -import { BattlePhase } from "./battle-phase"; +import { BattlePhase } from "#phases/battle-phase"; +import { fixedInt } from "#utils/common"; export class PartyHealPhase extends BattlePhase { public readonly phaseName = "PartyHealPhase"; diff --git a/src/phases/party-member-pokemon-phase.ts b/src/phases/party-member-pokemon-phase.ts index a782eabda38..9536dafda60 100644 --- a/src/phases/party-member-pokemon-phase.ts +++ b/src/phases/party-member-pokemon-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; -import type Pokemon from "#app/field/pokemon"; -import { FieldPhase } from "./field-phase"; +import type { Pokemon } from "#field/pokemon"; +import { FieldPhase } from "#phases/field-phase"; export abstract class PartyMemberPokemonPhase extends FieldPhase { protected partyMemberIndex: number; diff --git a/src/phases/player-party-member-pokemon-phase.ts b/src/phases/player-party-member-pokemon-phase.ts index d97376a8614..4538bb42325 100644 --- a/src/phases/player-party-member-pokemon-phase.ts +++ b/src/phases/player-party-member-pokemon-phase.ts @@ -1,5 +1,5 @@ -import type { PlayerPokemon } from "#app/field/pokemon"; -import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; +import type { PlayerPokemon } from "#field/pokemon"; +import { PartyMemberPokemonPhase } from "#phases/party-member-pokemon-phase"; export abstract class PlayerPartyMemberPokemonPhase extends PartyMemberPokemonPhase { constructor(partyMemberIndex: number) { diff --git a/src/phases/pokemon-anim-phase.ts b/src/phases/pokemon-anim-phase.ts index 314bddb981d..39e9c609aec 100644 --- a/src/phases/pokemon-anim-phase.ts +++ b/src/phases/pokemon-anim-phase.ts @@ -1,10 +1,10 @@ import { globalScene } from "#app/global-scene"; -import { SubstituteTag } from "#app/data/battler-tags"; -import type Pokemon from "#app/field/pokemon"; -import { BattlePhase } from "#app/phases/battle-phase"; -import { isNullOrUndefined } from "#app/utils/common"; +import { SubstituteTag } from "#data/battler-tags"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; import { SpeciesId } from "#enums/species-id"; +import type { Pokemon } from "#field/pokemon"; +import { BattlePhase } from "#phases/battle-phase"; +import { isNullOrUndefined } from "#utils/common"; export class PokemonAnimPhase extends BattlePhase { public readonly phaseName = "PokemonAnimPhase"; diff --git a/src/phases/pokemon-heal-phase.ts b/src/phases/pokemon-heal-phase.ts index cf6cf40a923..fa6a3222466 100644 --- a/src/phases/pokemon-heal-phase.ts +++ b/src/phases/pokemon-heal-phase.ts @@ -1,17 +1,17 @@ import { globalScene } from "#app/global-scene"; -import type { BattlerIndex } from "#enums/battler-index"; -import { CommonAnim } from "#enums/move-anims-common"; -import { getStatusEffectHealText } from "#app/data/status-effect"; -import { StatusEffect } from "#app/enums/status-effect"; -import { HitResult } from "#enums/hit-result"; import { getPokemonNameWithAffix } from "#app/messages"; -import { HealingBoosterModifier } from "#app/modifier/modifier"; -import { HealAchv } from "#app/system/achv"; +import type { HealBlockTag } from "#data/battler-tags"; +import { getStatusEffectHealText } from "#data/status-effect"; +import type { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { HitResult } from "#enums/hit-result"; +import { CommonAnim } from "#enums/move-anims-common"; +import { StatusEffect } from "#enums/status-effect"; +import { HealingBoosterModifier } from "#modifiers/modifier"; +import { CommonAnimPhase } from "#phases/common-anim-phase"; +import { HealAchv } from "#system/achv"; +import { NumberHolder } from "#utils/common"; import i18next from "i18next"; -import { NumberHolder } from "#app/utils/common"; -import { CommonAnimPhase } from "./common-anim-phase"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import type { HealBlockTag } from "#app/data/battler-tags"; export class PokemonHealPhase extends CommonAnimPhase { public readonly phaseName = "PokemonHealPhase"; diff --git a/src/phases/pokemon-phase.ts b/src/phases/pokemon-phase.ts index cfa30f0d06e..9739c58d667 100644 --- a/src/phases/pokemon-phase.ts +++ b/src/phases/pokemon-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import { BattlerIndex } from "#enums/battler-index"; -import type Pokemon from "#app/field/pokemon"; -import { FieldPhase } from "./field-phase"; +import type { Pokemon } from "#field/pokemon"; +import { FieldPhase } from "#phases/field-phase"; export abstract class PokemonPhase extends FieldPhase { /** diff --git a/src/phases/pokemon-transform-phase.ts b/src/phases/pokemon-transform-phase.ts index 938915309d9..143c47886b6 100644 --- a/src/phases/pokemon-transform-phase.ts +++ b/src/phases/pokemon-transform-phase.ts @@ -1,11 +1,11 @@ +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; import type { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; -import { EFFECTIVE_STATS, BATTLE_STATS } from "#enums/stat"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { globalScene } from "#app/global-scene"; -import { PokemonPhase } from "./pokemon-phase"; -import { getPokemonNameWithAffix } from "#app/messages"; +import { BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; +import { PokemonMove } from "#moves/pokemon-move"; +import { PokemonPhase } from "#phases/pokemon-phase"; import i18next from "i18next"; /** @@ -26,7 +26,7 @@ export class PokemonTransformPhase extends PokemonPhase { public override start(): void { const user = this.getPokemon(); - const target = globalScene.getField(true).find(p => p.getBattlerIndex() === this.targetIndex); + const target = globalScene.getField()[this.targetIndex]; if (!target) { this.end(); @@ -58,6 +58,8 @@ export class PokemonTransformPhase extends PokemonPhase { console.warn(`Transform: somehow iterating over a ${m} value when copying moveset!`); return new PokemonMove(MoveId.NONE); }); + + // TODO: This should fallback to the target's original typing if none are left (from Burn Up, etc.) user.summonData.types = target.getTypes(); const promises = [user.updateInfo()]; diff --git a/src/phases/post-game-over-phase.ts b/src/phases/post-game-over-phase.ts index 8e19dcd5498..3ac112a8a8b 100644 --- a/src/phases/post-game-over-phase.ts +++ b/src/phases/post-game-over-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; -import type { EndCardPhase } from "./end-card-phase"; +import type { EndCardPhase } from "#phases/end-card-phase"; export class PostGameOverPhase extends Phase { public readonly phaseName = "PostGameOverPhase"; diff --git a/src/phases/post-summon-activate-ability-phase.ts b/src/phases/post-summon-activate-ability-phase.ts index b1079a9b3e5..5f790c01ad1 100644 --- a/src/phases/post-summon-activate-ability-phase.ts +++ b/src/phases/post-summon-activate-ability-phase.ts @@ -1,6 +1,6 @@ -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { PostSummonPhase } from "#app/phases/post-summon-phase"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import type { BattlerIndex } from "#enums/battler-index"; +import { PostSummonPhase } from "#phases/post-summon-phase"; /** * Helper to {@linkcode PostSummonPhase} which applies abilities diff --git a/src/phases/post-summon-phase.ts b/src/phases/post-summon-phase.ts index 7f22148fdcf..e0811d0ab93 100644 --- a/src/phases/post-summon-phase.ts +++ b/src/phases/post-summon-phase.ts @@ -1,10 +1,10 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { ArenaTrapTag } from "#app/data/arena-tag"; -import { StatusEffect } from "#app/enums/status-effect"; -import { PokemonPhase } from "./pokemon-phase"; -import { MysteryEncounterPostSummonTag } from "#app/data/battler-tags"; +import { ArenaTrapTag } from "#data/arena-tag"; +import { MysteryEncounterPostSummonTag } from "#data/battler-tags"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; +import { StatusEffect } from "#enums/status-effect"; +import { PokemonPhase } from "#phases/pokemon-phase"; export class PostSummonPhase extends PokemonPhase { public readonly phaseName = "PostSummonPhase"; diff --git a/src/phases/post-turn-status-effect-phase.ts b/src/phases/post-turn-status-effect-phase.ts index fd7dd6ed419..9d5172180b8 100644 --- a/src/phases/post-turn-status-effect-phase.ts +++ b/src/phases/post-turn-status-effect-phase.ts @@ -1,14 +1,14 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import type { BattlerIndex } from "#enums/battler-index"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { CommonBattleAnim } from "#app/data/battle-anims"; -import { CommonAnim } from "#enums/move-anims-common"; -import { getStatusEffectActivationText } from "#app/data/status-effect"; -import { BattleSpec } from "#app/enums/battle-spec"; -import { StatusEffect } from "#app/enums/status-effect"; import { getPokemonNameWithAffix } from "#app/messages"; -import { BooleanHolder, NumberHolder } from "#app/utils/common"; -import { PokemonPhase } from "./pokemon-phase"; +import { CommonBattleAnim } from "#data/battle-anims"; +import { getStatusEffectActivationText } from "#data/status-effect"; +import { BattleSpec } from "#enums/battle-spec"; +import type { BattlerIndex } from "#enums/battler-index"; +import { CommonAnim } from "#enums/move-anims-common"; +import { StatusEffect } from "#enums/status-effect"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import { BooleanHolder, NumberHolder } from "#utils/common"; export class PostTurnStatusEffectPhase extends PokemonPhase { public readonly phaseName = "PostTurnStatusEffectPhase"; diff --git a/src/phases/quiet-form-change-phase.ts b/src/phases/quiet-form-change-phase.ts index 9c4a0638b54..ef53b16cc56 100644 --- a/src/phases/quiet-form-change-phase.ts +++ b/src/phases/quiet-form-change-phase.ts @@ -1,18 +1,15 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { SemiInvulnerableTag } from "#app/data/battler-tags"; -import type { SpeciesFormChange } from "#app/data/pokemon-forms"; -import { - getSpeciesFormChangeMessage, - SpeciesFormChangeTeraTrigger, -} from "#app/data/pokemon-forms/form-change-triggers"; -import { getTypeRgb } from "#app/data/type"; -import { BattleSpec } from "#app/enums/battle-spec"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; -import { BattlePhase } from "./battle-phase"; -import type { MovePhase } from "./move-phase"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; +import { SemiInvulnerableTag } from "#data/battler-tags"; +import { getSpeciesFormChangeMessage, SpeciesFormChangeTeraTrigger } from "#data/form-change-triggers"; +import type { SpeciesFormChange } from "#data/pokemon-forms"; +import { getTypeRgb } from "#data/type"; +import { BattleSpec } from "#enums/battle-spec"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import type { Pokemon } from "#field/pokemon"; +import { BattlePhase } from "#phases/battle-phase"; +import type { MovePhase } from "#phases/move-phase"; export class QuietFormChangePhase extends BattlePhase { public readonly phaseName = "QuietFormChangePhase"; diff --git a/src/phases/reload-session-phase.ts b/src/phases/reload-session-phase.ts index ac9337753c4..ac8a6bc2799 100644 --- a/src/phases/reload-session-phase.ts +++ b/src/phases/reload-session-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import { UiMode } from "#enums/ui-mode"; -import { fixedInt } from "#app/utils/common"; +import { fixedInt } from "#utils/common"; export class ReloadSessionPhase extends Phase { public readonly phaseName = "ReloadSessionPhase"; diff --git a/src/phases/reset-status-phase.ts b/src/phases/reset-status-phase.ts index 779f375d7e2..e15fb7fee85 100644 --- a/src/phases/reset-status-phase.ts +++ b/src/phases/reset-status-phase.ts @@ -1,5 +1,5 @@ -import type Pokemon from "#app/field/pokemon"; -import { BattlePhase } from "#app/phases/battle-phase"; +import type { Pokemon } from "#field/pokemon"; +import { BattlePhase } from "#phases/battle-phase"; /** * Phase which handles resetting a Pokemon's status to none diff --git a/src/phases/return-phase.ts b/src/phases/return-phase.ts index a8233f98bd1..a8cce72810e 100644 --- a/src/phases/return-phase.ts +++ b/src/phases/return-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; -import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms/form-change-triggers"; +import { SpeciesFormChangeActiveTrigger } from "#data/form-change-triggers"; import { SwitchType } from "#enums/switch-type"; -import { SwitchSummonPhase } from "./switch-summon-phase"; +import { SwitchSummonPhase } from "#phases/switch-summon-phase"; export class ReturnPhase extends SwitchSummonPhase { public readonly phaseName = "ReturnPhase"; diff --git a/src/phases/revival-blessing-phase.ts b/src/phases/revival-blessing-phase.ts index e3e69f7ef25..0235fb51da3 100644 --- a/src/phases/revival-blessing-phase.ts +++ b/src/phases/revival-blessing-phase.ts @@ -1,12 +1,12 @@ -import { SwitchType } from "#enums/switch-type"; import { globalScene } from "#app/global-scene"; -import type { PartyOption } from "#app/ui/party-ui-handler"; -import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; +import { SwitchType } from "#enums/switch-type"; import { UiMode } from "#enums/ui-mode"; +import type { PlayerPokemon } from "#field/pokemon"; +import { BattlePhase } from "#phases/battle-phase"; +import type { PartyOption } from "#ui/party-ui-handler"; +import { PartyUiHandler, PartyUiMode } from "#ui/party-ui-handler"; +import { isNullOrUndefined, toDmgValue } from "#utils/common"; import i18next from "i18next"; -import { toDmgValue, isNullOrUndefined } from "#app/utils/common"; -import { BattlePhase } from "#app/phases/battle-phase"; -import type { PlayerPokemon } from "#app/field/pokemon"; /** * Sets the Party UI and handles the effect of Revival Blessing diff --git a/src/phases/ribbon-modifier-reward-phase.ts b/src/phases/ribbon-modifier-reward-phase.ts index 10d63ba707f..7cf3f7a8071 100644 --- a/src/phases/ribbon-modifier-reward-phase.ts +++ b/src/phases/ribbon-modifier-reward-phase.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import type { ModifierTypeFunc } from "#app/@types/modifier-types"; +import type { PokemonSpecies } from "#data/pokemon-species"; import { UiMode } from "#enums/ui-mode"; +import { ModifierRewardPhase } from "#phases/modifier-reward-phase"; +import type { ModifierTypeFunc } from "#types/modifier-types"; import i18next from "i18next"; -import { ModifierRewardPhase } from "./modifier-reward-phase"; export class RibbonModifierRewardPhase extends ModifierRewardPhase { public readonly phaseName = "RibbonModifierRewardPhase"; diff --git a/src/phases/scan-ivs-phase.ts b/src/phases/scan-ivs-phase.ts index d296d87ca88..e0865feb7ca 100644 --- a/src/phases/scan-ivs-phase.ts +++ b/src/phases/scan-ivs-phase.ts @@ -1,11 +1,11 @@ import { globalScene } from "#app/global-scene"; -import type { BattlerIndex } from "#enums/battler-index"; -import { PERMANENT_STATS, Stat } from "#app/enums/stat"; import { getPokemonNameWithAffix } from "#app/messages"; -import { getTextColor, TextStyle } from "#app/ui/text"; +import type { BattlerIndex } from "#enums/battler-index"; +import { PERMANENT_STATS, Stat } from "#enums/stat"; import { UiMode } from "#enums/ui-mode"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import { getTextColor, TextStyle } from "#ui/text"; import i18next from "i18next"; -import { PokemonPhase } from "./pokemon-phase"; export class ScanIvsPhase extends PokemonPhase { public readonly phaseName = "ScanIvsPhase"; diff --git a/src/phases/select-biome-phase.ts b/src/phases/select-biome-phase.ts index e8b4946b6d1..ab96bf5c45e 100644 --- a/src/phases/select-biome-phase.ts +++ b/src/phases/select-biome-phase.ts @@ -1,11 +1,11 @@ import { globalScene } from "#app/global-scene"; -import { biomeLinks, getBiomeName } from "#app/data/balance/biomes"; +import { biomeLinks, getBiomeName } from "#balance/biomes"; import { BiomeId } from "#enums/biome-id"; -import { MoneyInterestModifier, MapModifier } from "#app/modifier/modifier"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; -import { BattlePhase } from "./battle-phase"; -import { randSeedInt } from "#app/utils/common"; +import { MapModifier, MoneyInterestModifier } from "#modifiers/modifier"; +import { BattlePhase } from "#phases/battle-phase"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { randSeedInt } from "#utils/common"; export class SelectBiomePhase extends BattlePhase { public readonly phaseName = "SelectBiomePhase"; @@ -56,6 +56,7 @@ export class SelectBiomePhase extends BattlePhase { delay: 1000, }); } else { + // TODO: should this use `randSeedItem`? setNextBiome(biomes[randSeedInt(biomes.length)]); } } else if (biomeLinks.hasOwnProperty(currentBiome)) { diff --git a/src/phases/select-gender-phase.ts b/src/phases/select-gender-phase.ts index ad8515e312e..d44c308d08c 100644 --- a/src/phases/select-gender-phase.ts +++ b/src/phases/select-gender-phase.ts @@ -1,8 +1,8 @@ import { globalScene } from "#app/global-scene"; -import { PlayerGender } from "#app/enums/player-gender"; import { Phase } from "#app/phase"; -import { SettingKeys } from "#app/system/settings/settings"; +import { PlayerGender } from "#enums/player-gender"; import { UiMode } from "#enums/ui-mode"; +import { SettingKeys } from "#system/settings"; import i18next from "i18next"; export class SelectGenderPhase extends Phase { diff --git a/src/phases/select-modifier-phase.ts b/src/phases/select-modifier-phase.ts index 53e1f5bc282..05c890136ee 100644 --- a/src/phases/select-modifier-phase.ts +++ b/src/phases/select-modifier-phase.ts @@ -1,35 +1,34 @@ import { globalScene } from "#app/global-scene"; -import type { ModifierTier } from "#enums/modifier-tier"; -import type { ModifierTypeOption, ModifierType } from "#app/modifier/modifier-type"; -import { - regenerateModifierPoolThresholds, - getPlayerShopModifierTypeOptionsForWave, - PokemonModifierType, - FusePokemonModifierType, - PokemonMoveModifierType, - TmModifierType, - RememberMoveModifierType, - PokemonPpRestoreModifierType, - PokemonPpUpModifierType, - getPlayerModifierTypeOptions, -} from "#app/modifier/modifier-type"; +import Overrides from "#app/overrides"; import { ModifierPoolType } from "#enums/modifier-pool-type"; -import type { Modifier } from "#app/modifier/modifier"; +import type { ModifierTier } from "#enums/modifier-tier"; +import { UiMode } from "#enums/ui-mode"; +import type { Modifier } from "#modifiers/modifier"; import { ExtraModifierModifier, HealShopCostModifier, PokemonHeldItemModifier, TempExtraModifierModifier, -} from "#app/modifier/modifier"; -import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { SHOP_OPTIONS_ROW_LIMIT } from "#app/ui/modifier-select-ui-handler"; -import PartyUiHandler, { PartyUiMode, PartyOption } from "#app/ui/party-ui-handler"; -import { UiMode } from "#enums/ui-mode"; +} from "#modifiers/modifier"; +import type { CustomModifierSettings, ModifierType, ModifierTypeOption } from "#modifiers/modifier-type"; +import { + FusePokemonModifierType, + getPlayerModifierTypeOptions, + getPlayerShopModifierTypeOptionsForWave, + PokemonModifierType, + PokemonMoveModifierType, + PokemonPpRestoreModifierType, + PokemonPpUpModifierType, + RememberMoveModifierType, + regenerateModifierPoolThresholds, + TmModifierType, +} from "#modifiers/modifier-type"; +import { BattlePhase } from "#phases/battle-phase"; +import type { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; +import { SHOP_OPTIONS_ROW_LIMIT } from "#ui/modifier-select-ui-handler"; +import { PartyOption, PartyUiHandler, PartyUiMode } from "#ui/party-ui-handler"; +import { isNullOrUndefined, NumberHolder } from "#utils/common"; import i18next from "i18next"; -import { BattlePhase } from "./battle-phase"; -import Overrides from "#app/overrides"; -import type { CustomModifierSettings } from "#app/modifier/modifier-type"; -import { isNullOrUndefined, NumberHolder } from "#app/utils/common"; export type ModifierSelectCallback = (rowCursor: number, cursor: number) => boolean; @@ -180,7 +179,7 @@ export class SelectModifierPhase extends BattlePhase { } else { this.applyModifier(modifierType.newModifier()!); } - return !cost; + return cost === -1; } // Reroll rewards diff --git a/src/phases/select-starter-phase.ts b/src/phases/select-starter-phase.ts index 76247c14ce0..af056ebb4ee 100644 --- a/src/phases/select-starter-phase.ts +++ b/src/phases/select-starter-phase.ts @@ -1,18 +1,18 @@ import { globalScene } from "#app/global-scene"; -import { applyChallenges } from "#app/data/challenge"; -import { ChallengeType } from "#enums/challenge-type"; -import { Gender } from "#app/data/gender"; -import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { overrideHeldItems, overrideModifiers } from "#app/modifier/modifier"; import Overrides from "#app/overrides"; import { Phase } from "#app/phase"; -import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler"; -import type { Starter } from "#app/ui/starter-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; +import { applyChallenges } from "#data/challenge"; +import { SpeciesFormChangeMoveLearnedTrigger } from "#data/form-change-triggers"; +import { Gender } from "#data/gender"; +import { ChallengeType } from "#enums/challenge-type"; import type { SpeciesId } from "#enums/species-id"; +import { UiMode } from "#enums/ui-mode"; +import { overrideHeldItems, overrideModifiers } from "#modifiers/modifier"; +import { SaveSlotUiMode } from "#ui/save-slot-select-ui-handler"; +import type { Starter } from "#ui/starter-select-ui-handler"; +import { isNullOrUndefined } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { isNullOrUndefined } from "#app/utils/common"; export class SelectStarterPhase extends Phase { public readonly phaseName = "SelectStarterPhase"; @@ -37,7 +37,7 @@ export class SelectStarterPhase extends Phase { /** * Initialize starters before starting the first battle - * @param starters {@linkcode Pokemon} with which to start the first battle + * @param starters - Array of {@linkcode Starter}s with which to start the battle */ initBattle(starters: Starter[]) { const party = globalScene.getPlayerParty(); diff --git a/src/phases/select-target-phase.ts b/src/phases/select-target-phase.ts index 6d47ac18021..3805cb919b2 100644 --- a/src/phases/select-target-phase.ts +++ b/src/phases/select-target-phase.ts @@ -1,10 +1,10 @@ import { globalScene } from "#app/global-scene"; +import { allMoves } from "#data/data-lists"; import type { BattlerIndex } from "#enums/battler-index"; import { Command } from "#enums/command"; import { UiMode } from "#enums/ui-mode"; -import { PokemonPhase } from "./pokemon-phase"; -import i18next from "#app/plugins/i18n"; -import { allMoves } from "#app/data/data-lists"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import i18next from "#plugins/i18n"; export class SelectTargetPhase extends PokemonPhase { public readonly phaseName = "SelectTargetPhase"; diff --git a/src/phases/shiny-sparkle-phase.ts b/src/phases/shiny-sparkle-phase.ts index 53866af89e6..0930d536267 100644 --- a/src/phases/shiny-sparkle-phase.ts +++ b/src/phases/shiny-sparkle-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; import type { BattlerIndex } from "#enums/battler-index"; -import { PokemonPhase } from "./pokemon-phase"; +import { PokemonPhase } from "#phases/pokemon-phase"; export class ShinySparklePhase extends PokemonPhase { public readonly phaseName = "ShinySparklePhase"; diff --git a/src/phases/show-ability-phase.ts b/src/phases/show-ability-phase.ts index 0f568819cde..21c3e7341a7 100644 --- a/src/phases/show-ability-phase.ts +++ b/src/phases/show-ability-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; -import type { BattlerIndex } from "#enums/battler-index"; -import { PokemonPhase } from "./pokemon-phase"; import { getPokemonNameWithAffix } from "#app/messages"; +import type { BattlerIndex } from "#enums/battler-index"; +import { PokemonPhase } from "#phases/pokemon-phase"; export class ShowAbilityPhase extends PokemonPhase { public readonly phaseName = "ShowAbilityPhase"; diff --git a/src/phases/show-party-exp-bar-phase.ts b/src/phases/show-party-exp-bar-phase.ts index 4849526b639..f22be5f63e3 100644 --- a/src/phases/show-party-exp-bar-phase.ts +++ b/src/phases/show-party-exp-bar-phase.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; -import { ExpNotification } from "#app/enums/exp-notification"; -import { ExpBoosterModifier } from "#app/modifier/modifier"; -import { NumberHolder } from "#app/utils/common"; -import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-phase"; +import { ExpGainsSpeed } from "#enums/exp-gains-speed"; +import { ExpNotification } from "#enums/exp-notification"; +import { ExpBoosterModifier } from "#modifiers/modifier"; +import { PlayerPartyMemberPokemonPhase } from "#phases/player-party-member-pokemon-phase"; +import { NumberHolder } from "#utils/common"; export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { public readonly phaseName = "ShowPartyExpBarPhase"; diff --git a/src/phases/show-trainer-phase.ts b/src/phases/show-trainer-phase.ts index bae6ecd839c..e012c22116a 100644 --- a/src/phases/show-trainer-phase.ts +++ b/src/phases/show-trainer-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; -import { PlayerGender } from "#app/enums/player-gender"; -import { BattlePhase } from "./battle-phase"; +import { PlayerGender } from "#enums/player-gender"; +import { BattlePhase } from "#phases/battle-phase"; export class ShowTrainerPhase extends BattlePhase { public readonly phaseName = "ShowTrainerPhase"; diff --git a/src/phases/stat-stage-change-phase.ts b/src/phases/stat-stage-change-phase.ts index 77fb7b38600..140ef841929 100644 --- a/src/phases/stat-stage-change-phase.ts +++ b/src/phases/stat-stage-change-phase.ts @@ -1,23 +1,20 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import type { BattlerIndex } from "#enums/battler-index"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { MistTag } from "#app/data/arena-tag"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import type { ArenaTag } from "#app/data/arena-tag"; -import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; -import { ResetNegativeStatStageModifier } from "#app/modifier/modifier"; import { handleTutorial, Tutorial } from "#app/tutorial"; -import { NumberHolder, BooleanHolder, isNullOrUndefined } from "#app/utils/common"; +import type { ArenaTag } from "#data/arena-tag"; +import { MistTag } from "#data/arena-tag"; +import { OctolockTag } from "#data/battler-tags"; +import { ArenaTagSide } from "#enums/arena-tag-side"; +import { ArenaTagType } from "#enums/arena-tag-type"; +import type { BattlerIndex } from "#enums/battler-index"; +import { type BattleStat, getStatKey, getStatStageChangeDescriptionKey, Stat } from "#enums/stat"; +import type { Pokemon } from "#field/pokemon"; +import { ResetNegativeStatStageModifier } from "#modifiers/modifier"; +import { PokemonPhase } from "#phases/pokemon-phase"; +import type { ConditionalUserFieldProtectStatAbAttrParams, PreStatStageChangeAbAttrParams } from "#types/ability-types"; +import { BooleanHolder, isNullOrUndefined, NumberHolder } from "#utils/common"; import i18next from "i18next"; -import { PokemonPhase } from "./pokemon-phase"; -import { Stat, type BattleStat, getStatKey, getStatStageChangeDescriptionKey } from "#enums/stat"; -import { OctolockTag } from "#app/data/battler-tags"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import type { - ConditionalUserFieldProtectStatAbAttrParams, - PreStatStageChangeAbAttrParams, -} from "#app/@types/ability-types"; export type StatStageChangeCallback = ( target: Pokemon | null, diff --git a/src/phases/summon-missing-phase.ts b/src/phases/summon-missing-phase.ts index ce3e982055e..89d36b13597 100644 --- a/src/phases/summon-missing-phase.ts +++ b/src/phases/summon-missing-phase.ts @@ -1,7 +1,7 @@ -import { getPokemonNameWithAffix } from "#app/messages"; -import i18next from "i18next"; -import { SummonPhase } from "./summon-phase"; import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { SummonPhase } from "#phases/summon-phase"; +import i18next from "i18next"; export class SummonMissingPhase extends SummonPhase { public readonly phaseName = "SummonMissingPhase"; diff --git a/src/phases/summon-phase.ts b/src/phases/summon-phase.ts index 95e4367d8df..e4c8aa9af7a 100644 --- a/src/phases/summon-phase.ts +++ b/src/phases/summon-phase.ts @@ -1,17 +1,17 @@ -import { BattleType } from "#enums/battle-type"; -import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball"; -import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { PlayerGender } from "#app/enums/player-gender"; -import { addPokeballOpenParticles } from "#app/field/anims"; -import type Pokemon from "#app/field/pokemon"; -import { FieldPosition } from "#enums/field-position"; -import { getPokemonNameWithAffix } from "#app/messages"; -import i18next from "i18next"; -import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { SpeciesFormChangeActiveTrigger } from "#data/form-change-triggers"; +import { getPokeballAtlasKey, getPokeballTintColor } from "#data/pokeball"; +import { BattleType } from "#enums/battle-type"; +import { FieldPosition } from "#enums/field-position"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import { PlayerGender } from "#enums/player-gender"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { addPokeballOpenParticles } from "#field/anims"; +import type { Pokemon } from "#field/pokemon"; +import { PartyMemberPokemonPhase } from "#phases/party-member-pokemon-phase"; +import i18next from "i18next"; export class SummonPhase extends PartyMemberPokemonPhase { // The union type is needed to keep typescript happy as these phases extend from SummonPhase diff --git a/src/phases/switch-biome-phase.ts b/src/phases/switch-biome-phase.ts index f84f1d517b4..dc2e0fa64d4 100644 --- a/src/phases/switch-biome-phase.ts +++ b/src/phases/switch-biome-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import type { BiomeId } from "#enums/biome-id"; -import { getBiomeKey } from "#app/field/arena"; -import { BattlePhase } from "./battle-phase"; +import { getBiomeKey } from "#field/arena"; +import { BattlePhase } from "#phases/battle-phase"; export class SwitchBiomePhase extends BattlePhase { public readonly phaseName = "SwitchBiomePhase"; diff --git a/src/phases/switch-phase.ts b/src/phases/switch-phase.ts index 8d18e29e6a6..a431d973a02 100644 --- a/src/phases/switch-phase.ts +++ b/src/phases/switch-phase.ts @@ -1,8 +1,8 @@ import { globalScene } from "#app/global-scene"; -import PartyUiHandler, { PartyOption, PartyUiMode } from "#app/ui/party-ui-handler"; -import { UiMode } from "#enums/ui-mode"; import { SwitchType } from "#enums/switch-type"; -import { BattlePhase } from "./battle-phase"; +import { UiMode } from "#enums/ui-mode"; +import { BattlePhase } from "#phases/battle-phase"; +import { PartyOption, PartyUiHandler, PartyUiMode } from "#ui/party-ui-handler"; /** * Opens the party selector UI and transitions into a {@linkcode SwitchSummonPhase} diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index ccd0681c068..b7460e77569 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -1,17 +1,17 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { allMoves } from "#app/data/data-lists"; -import { getPokeballTintColor } from "#app/data/pokeball"; -import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { TrainerSlot } from "#enums/trainer-slot"; -import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; -import { SwitchEffectTransferModifier } from "#app/modifier/modifier"; +import { SubstituteTag } from "#data/battler-tags"; +import { allMoves } from "#data/data-lists"; +import { SpeciesFormChangeActiveTrigger } from "#data/form-change-triggers"; +import { getPokeballTintColor } from "#data/pokeball"; import { Command } from "#enums/command"; -import i18next from "i18next"; -import { SummonPhase } from "./summon-phase"; -import { SubstituteTag } from "#app/data/battler-tags"; import { SwitchType } from "#enums/switch-type"; +import { TrainerSlot } from "#enums/trainer-slot"; +import type { Pokemon } from "#field/pokemon"; +import { SwitchEffectTransferModifier } from "#modifiers/modifier"; +import { SummonPhase } from "#phases/summon-phase"; +import i18next from "i18next"; export class SwitchSummonPhase extends SummonPhase { public readonly phaseName: "SwitchSummonPhase" | "ReturnPhase" = "SwitchSummonPhase"; diff --git a/src/phases/tera-phase.ts b/src/phases/tera-phase.ts index a6025e20488..84b05d88abe 100644 --- a/src/phases/tera-phase.ts +++ b/src/phases/tera-phase.ts @@ -1,13 +1,13 @@ -import type Pokemon from "#app/field/pokemon"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { BattlePhase } from "./battle-phase"; -import i18next from "i18next"; import { globalScene } from "#app/global-scene"; -import { PokemonType } from "#enums/pokemon-type"; -import { achvs } from "#app/system/achv"; -import { SpeciesFormChangeTeraTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { CommonBattleAnim } from "#app/data/battle-anims"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { CommonBattleAnim } from "#data/battle-anims"; +import { SpeciesFormChangeTeraTrigger } from "#data/form-change-triggers"; import { CommonAnim } from "#enums/move-anims-common"; +import { PokemonType } from "#enums/pokemon-type"; +import type { Pokemon } from "#field/pokemon"; +import { BattlePhase } from "#phases/battle-phase"; +import { achvs } from "#system/achv"; +import i18next from "i18next"; export class TeraPhase extends BattlePhase { public readonly phaseName = "TeraPhase"; diff --git a/src/phases/title-phase.ts b/src/phases/title-phase.ts index 5e36081b899..38e3ff3a017 100644 --- a/src/phases/title-phase.ts +++ b/src/phases/title-phase.ts @@ -1,25 +1,25 @@ import { loggedInUser } from "#app/account"; -import { BattleType } from "#enums/battle-type"; -import { fetchDailyRunSeed, getDailyRunStarters } from "#app/data/daily-run"; -import { Gender } from "#app/data/gender"; -import { getBiomeKey } from "#app/field/arena"; import { GameMode, getGameMode } from "#app/game-mode"; -import { GameModes } from "#enums/game-modes"; -import type { Modifier } from "#app/modifier/modifier"; -import { getDailyRunStarterModifiers, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { ModifierPoolType } from "#enums/modifier-pool-type"; -import { Phase } from "#app/phase"; -import type { SessionSaveData } from "#app/system/game-data"; -import { Unlockables } from "#enums/unlockables"; -import { vouchers } from "#app/system/voucher"; -import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import { isLocal, isLocalServerConnected, isNullOrUndefined } from "#app/utils/common"; -import i18next from "i18next"; import { globalScene } from "#app/global-scene"; import Overrides from "#app/overrides"; +import { Phase } from "#app/phase"; +import { fetchDailyRunSeed, getDailyRunStarters } from "#data/daily-run"; +import { modifierTypes } from "#data/data-lists"; +import { Gender } from "#data/gender"; +import { BattleType } from "#enums/battle-type"; +import { GameModes } from "#enums/game-modes"; +import { ModifierPoolType } from "#enums/modifier-pool-type"; +import { UiMode } from "#enums/ui-mode"; +import { Unlockables } from "#enums/unlockables"; +import { getBiomeKey } from "#field/arena"; +import type { Modifier } from "#modifiers/modifier"; +import { getDailyRunStarterModifiers, regenerateModifierPoolThresholds } from "#modifiers/modifier-type"; +import type { SessionSaveData } from "#system/game-data"; +import { vouchers } from "#system/voucher"; +import type { OptionSelectConfig, OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { SaveSlotUiMode } from "#ui/save-slot-select-ui-handler"; +import { isLocal, isLocalServerConnected, isNullOrUndefined } from "#utils/common"; +import i18next from "i18next"; export class TitlePhase extends Phase { public readonly phaseName = "TitlePhase"; @@ -204,7 +204,7 @@ export class TitlePhase extends Phase { globalScene.eventManager.startEventChallenges(); globalScene.setSeed(seed); - globalScene.resetSeed(0); + globalScene.resetSeed(); globalScene.money = globalScene.gameMode.getStartingMoney(); @@ -283,6 +283,7 @@ export class TitlePhase extends Phase { console.error("Failed to load daily run:\n", err); }); } else { + // Grab first 10 chars of ISO date format (YYYY-MM-DD) and convert to base64 let seed: string = btoa(new Date().toISOString().substring(0, 10)); if (!isNullOrUndefined(Overrides.DAILY_RUN_SEED_OVERRIDE)) { seed = Overrides.DAILY_RUN_SEED_OVERRIDE; diff --git a/src/phases/toggle-double-position-phase.ts b/src/phases/toggle-double-position-phase.ts index 596bf87eb5b..2dcaac52d2f 100644 --- a/src/phases/toggle-double-position-phase.ts +++ b/src/phases/toggle-double-position-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; import { FieldPosition } from "#enums/field-position"; -import { BattlePhase } from "./battle-phase"; +import { BattlePhase } from "#phases/battle-phase"; export class ToggleDoublePositionPhase extends BattlePhase { public readonly phaseName = "ToggleDoublePositionPhase"; diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts index 554b8109f02..6f92dbe496d 100644 --- a/src/phases/trainer-victory-phase.ts +++ b/src/phases/trainer-victory-phase.ts @@ -1,15 +1,15 @@ -import { getCharVariantFromDialogue } from "#app/data/dialogue"; -import { TrainerType } from "#app/enums/trainer-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { vouchers } from "#app/system/voucher"; -import i18next from "i18next"; -import { randSeedItem } from "#app/utils/common"; -import { BattlePhase } from "./battle-phase"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { globalScene } from "#app/global-scene"; -import { BiomeId } from "#enums/biome-id"; -import { achvs } from "#app/system/achv"; import { timedEventManager } from "#app/global-event-manager"; +import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; +import { getCharVariantFromDialogue } from "#data/dialogue"; +import { BiomeId } from "#enums/biome-id"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { TrainerType } from "#enums/trainer-type"; +import { BattlePhase } from "#phases/battle-phase"; +import { achvs } from "#system/achv"; +import { vouchers } from "#system/voucher"; +import { randSeedItem } from "#utils/common"; +import i18next from "i18next"; export class TrainerVictoryPhase extends BattlePhase { public readonly phaseName = "TrainerVictoryPhase"; diff --git a/src/phases/turn-end-phase.ts b/src/phases/turn-end-phase.ts index b5e56f6d63f..ce3b2958c23 100644 --- a/src/phases/turn-end-phase.ts +++ b/src/phases/turn-end-phase.ts @@ -1,20 +1,20 @@ -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; -import { TerrainType } from "#app/data/terrain"; -import { WeatherType } from "#app/enums/weather-type"; -import { TurnEndEvent } from "#app/events/battle-scene"; -import type Pokemon from "#app/field/pokemon"; -import { getPokemonNameWithAffix } from "#app/messages"; -import { - TurnHealModifier, - EnemyTurnHealModifier, - EnemyStatusEffectHealChanceModifier, - TurnStatusEffectModifier, - TurnHeldItemTransferModifier, -} from "#app/modifier/modifier"; -import i18next from "i18next"; -import { FieldPhase } from "./field-phase"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { TerrainType } from "#data/terrain"; +import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; +import { WeatherType } from "#enums/weather-type"; +import { TurnEndEvent } from "#events/battle-scene"; +import type { Pokemon } from "#field/pokemon"; +import { + EnemyStatusEffectHealChanceModifier, + EnemyTurnHealModifier, + TurnHealModifier, + TurnHeldItemTransferModifier, + TurnStatusEffectModifier, +} from "#modifiers/modifier"; +import { FieldPhase } from "#phases/field-phase"; +import i18next from "i18next"; export class TurnEndPhase extends FieldPhase { public readonly phaseName = "TurnEndPhase"; diff --git a/src/phases/turn-init-phase.ts b/src/phases/turn-init-phase.ts index 8d0508c5ebb..b2ab096102c 100644 --- a/src/phases/turn-init-phase.ts +++ b/src/phases/turn-init-phase.ts @@ -1,13 +1,13 @@ +import { globalScene } from "#app/global-scene"; import { BattlerIndex } from "#enums/battler-index"; +import { TurnInitEvent } from "#events/battle-scene"; +import type { PlayerPokemon } from "#field/pokemon"; import { handleMysteryEncounterBattleStartEffects, handleMysteryEncounterTurnStartEffects, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { TurnInitEvent } from "#app/events/battle-scene"; -import type { PlayerPokemon } from "#app/field/pokemon"; +} from "#mystery-encounters/encounter-phase-utils"; +import { FieldPhase } from "#phases/field-phase"; import i18next from "i18next"; -import { FieldPhase } from "./field-phase"; -import { globalScene } from "#app/global-scene"; export class TurnInitPhase extends FieldPhase { public readonly phaseName = "TurnInitPhase"; diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts index 2c4f2ead82e..0fc126801ec 100644 --- a/src/phases/turn-start-phase.ts +++ b/src/phases/turn-start-phase.ts @@ -1,17 +1,16 @@ -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { allMoves } from "#app/data/data-lists"; -import { AbilityId } from "#enums/ability-id"; -import { Stat } from "#app/enums/stat"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { BypassSpeedChanceModifier } from "#app/modifier/modifier"; -import { Command } from "#enums/command"; -import { randSeedShuffle, BooleanHolder } from "#app/utils/common"; -import { FieldPhase } from "./field-phase"; -import { BattlerIndex } from "#enums/battler-index"; -import { TrickRoomTag } from "#app/data/arena-tag"; -import { SwitchType } from "#enums/switch-type"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; +import { TrickRoomTag } from "#data/arena-tag"; +import { allMoves } from "#data/data-lists"; +import { BattlerIndex } from "#enums/battler-index"; +import { Command } from "#enums/command"; +import { Stat } from "#enums/stat"; +import { SwitchType } from "#enums/switch-type"; +import type { Pokemon } from "#field/pokemon"; +import { BypassSpeedChanceModifier } from "#modifiers/modifier"; +import { PokemonMove } from "#moves/pokemon-move"; +import { FieldPhase } from "#phases/field-phase"; +import { BooleanHolder, randSeedShuffle } from "#utils/common"; export class TurnStartPhase extends FieldPhase { public readonly phaseName = "TurnStartPhase"; @@ -213,27 +212,8 @@ export class TurnStartPhase extends FieldPhase { break; case Command.RUN: { - let runningPokemon = pokemon; - if (globalScene.currentBattle.double) { - const playerActivePokemon = field.filter(pokemon => { - if (pokemon) { - return pokemon.isPlayer() && pokemon.isActive(); - } - return; - }); - // if only one pokemon is alive, use that one - if (playerActivePokemon.length > 1) { - // find which active pokemon has faster speed - const fasterPokemon = - playerActivePokemon[0].getStat(Stat.SPD) > playerActivePokemon[1].getStat(Stat.SPD) - ? playerActivePokemon[0] - : playerActivePokemon[1]; - // check if either active pokemon has the ability "Run Away" - const hasRunAway = playerActivePokemon.find(p => p.hasAbility(AbilityId.RUN_AWAY)); - runningPokemon = hasRunAway !== undefined ? hasRunAway : fasterPokemon; - } - } - phaseManager.unshiftNew("AttemptRunPhase", runningPokemon.getFieldIndex()); + // Running (like ball throwing) is a team action taking up both Pokemon's turns. + phaseManager.unshiftNew("AttemptRunPhase"); } break; } diff --git a/src/phases/unlock-phase.ts b/src/phases/unlock-phase.ts index 76719847f92..ec3be88d4a5 100644 --- a/src/phases/unlock-phase.ts +++ b/src/phases/unlock-phase.ts @@ -1,8 +1,8 @@ import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; -import type { Unlockables } from "#enums/unlockables"; -import { getUnlockableName } from "#app/system/unlockables"; import { UiMode } from "#enums/ui-mode"; +import type { Unlockables } from "#enums/unlockables"; +import { getUnlockableName } from "#system/unlockables"; import i18next from "i18next"; export class UnlockPhase extends Phase { diff --git a/src/phases/victory-phase.ts b/src/phases/victory-phase.ts index ae5b727c2a6..4b1a79d7443 100644 --- a/src/phases/victory-phase.ts +++ b/src/phases/victory-phase.ts @@ -1,12 +1,12 @@ +import { timedEventManager } from "#app/global-event-manager"; +import { globalScene } from "#app/global-scene"; +import { modifierTypes } from "#data/data-lists"; +import { BattleType } from "#enums/battle-type"; import type { BattlerIndex } from "#enums/battler-index"; import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves"; -import { BattleType } from "#enums/battle-type"; -import type { CustomModifierSettings } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { PokemonPhase } from "./pokemon-phase"; -import { handleMysteryEncounterVictory } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { globalScene } from "#app/global-scene"; -import { timedEventManager } from "#app/global-event-manager"; +import type { CustomModifierSettings } from "#modifiers/modifier-type"; +import { handleMysteryEncounterVictory } from "#mystery-encounters/encounter-phase-utils"; +import { PokemonPhase } from "#phases/pokemon-phase"; export class VictoryPhase extends PokemonPhase { public readonly phaseName = "VictoryPhase"; diff --git a/src/phases/weather-effect-phase.ts b/src/phases/weather-effect-phase.ts index 5476ac67672..81db543001b 100644 --- a/src/phases/weather-effect-phase.ts +++ b/src/phases/weather-effect-phase.ts @@ -1,14 +1,14 @@ +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; import { globalScene } from "#app/global-scene"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { CommonAnim } from "#enums/move-anims-common"; -import type { Weather } from "#app/data/weather"; -import { getWeatherDamageMessage, getWeatherLapseMessage } from "#app/data/weather"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { WeatherType } from "#app/enums/weather-type"; -import type Pokemon from "#app/field/pokemon"; +import type { Weather } from "#data/weather"; +import { getWeatherDamageMessage, getWeatherLapseMessage } from "#data/weather"; +import { BattlerTagType } from "#enums/battler-tag-type"; import { HitResult } from "#enums/hit-result"; -import { BooleanHolder, toDmgValue } from "#app/utils/common"; -import { CommonAnimPhase } from "./common-anim-phase"; +import { CommonAnim } from "#enums/move-anims-common"; +import { WeatherType } from "#enums/weather-type"; +import type { Pokemon } from "#field/pokemon"; +import { CommonAnimPhase } from "#phases/common-anim-phase"; +import { BooleanHolder, toDmgValue } from "#utils/common"; export class WeatherEffectPhase extends CommonAnimPhase { public readonly phaseName = "WeatherEffectPhase"; diff --git a/src/pipelines/field-sprite.ts b/src/pipelines/field-sprite.ts index a6e248c9998..b20bacf6a5e 100644 --- a/src/pipelines/field-sprite.ts +++ b/src/pipelines/field-sprite.ts @@ -1,10 +1,11 @@ import { globalScene } from "#app/global-scene"; -import { TerrainType, getTerrainColor } from "../data/terrain"; -import { getCurrentTime } from "#app/utils/common"; -import fieldSpriteFragShader from "./glsl/fieldSpriteFragShader.frag?raw"; -import spriteVertShader from "./glsl/spriteShader.vert?raw"; +import { getTerrainColor, TerrainType } from "#data/terrain"; +import { getCurrentTime } from "#utils/common"; +import Phaser from "phaser"; +import fieldSpriteFragShader from "./glsl/field-sprite-frag-shader.frag?raw"; +import spriteVertShader from "./glsl/sprite-shader.vert?raw"; -export default class FieldSpritePipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline { +export class FieldSpritePipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline { constructor(game: Phaser.Game, config?: Phaser.Types.Renderer.WebGL.WebGLPipelineConfig) { super( config || { 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/invert.ts b/src/pipelines/invert.ts index 0ebc3ad865f..2414f2cf6b3 100644 --- a/src/pipelines/invert.ts +++ b/src/pipelines/invert.ts @@ -1,7 +1,8 @@ import type { Game } from "phaser"; +import Phaser from "phaser"; import fragShader from "./glsl/invert.frag?raw"; -export default class InvertPostFX extends Phaser.Renderer.WebGL.Pipelines.PostFXPipeline { +export class InvertPostFX extends Phaser.Renderer.WebGL.Pipelines.PostFXPipeline { constructor(game: Game) { super({ game, diff --git a/src/pipelines/sprite.ts b/src/pipelines/sprite.ts index 307c2cee4cc..8d38eda562d 100644 --- a/src/pipelines/sprite.ts +++ b/src/pipelines/sprite.ts @@ -1,14 +1,14 @@ -import { variantColorCache } from "#app/sprites/variant"; -import MysteryEncounterIntroVisuals from "#app/field/mystery-encounter-intro"; -import Pokemon from "#app/field/pokemon"; -import Trainer from "#app/field/trainer"; import { globalScene } from "#app/global-scene"; -import { rgbHexToRgba } from "#app/utils/common"; -import FieldSpritePipeline from "./field-sprite"; -import spriteFragShader from "./glsl/spriteFragShader.frag?raw"; -import spriteVertShader from "./glsl/spriteShader.vert?raw"; +import { FieldSpritePipeline } from "#app/pipelines/field-sprite"; +import { MysteryEncounterIntroVisuals } from "#field/mystery-encounter-intro"; +import { Pokemon } from "#field/pokemon"; +import { Trainer } from "#field/trainer"; +import { variantColorCache } from "#sprites/variant"; +import { rgbHexToRgba } from "#utils/common"; +import spriteFragShader from "./glsl/sprite-frag-shader.frag?raw"; +import spriteVertShader from "./glsl/sprite-shader.vert?raw"; -export default class SpritePipeline extends FieldSpritePipeline { +export class SpritePipeline extends FieldSpritePipeline { private _tone: number[]; constructor(game: Phaser.Game) { diff --git a/src/plugins/api/api-base.ts b/src/plugins/api/api-base.ts index c7ff4619187..63f56c129f3 100644 --- a/src/plugins/api/api-base.ts +++ b/src/plugins/api/api-base.ts @@ -1,5 +1,5 @@ import { SESSION_ID_COOKIE_NAME } from "#app/constants"; -import { getCookie } from "#app/utils/cookies"; +import { getCookie } from "#utils/cookies"; type DataType = "json" | "form-urlencoded"; diff --git a/src/plugins/api/pokerogue-account-api.ts b/src/plugins/api/pokerogue-account-api.ts index 9cd82c24430..03f522e8dac 100644 --- a/src/plugins/api/pokerogue-account-api.ts +++ b/src/plugins/api/pokerogue-account-api.ts @@ -1,12 +1,12 @@ +import { ApiBase } from "#api/api-base"; +import { SESSION_ID_COOKIE_NAME } from "#app/constants"; import type { AccountInfoResponse, AccountLoginRequest, AccountLoginResponse, AccountRegisterRequest, -} from "#app/@types/PokerogueAccountApi"; -import { SESSION_ID_COOKIE_NAME } from "#app/constants"; -import { ApiBase } from "#app/plugins/api/api-base"; -import { removeCookie, setCookie } from "#app/utils/cookies"; +} from "#types/api/pokerogue-account-api"; +import { removeCookie, setCookie } from "#utils/cookies"; /** * A wrapper for PokéRogue account API requests. diff --git a/src/plugins/api/pokerogue-admin-api.ts b/src/plugins/api/pokerogue-admin-api.ts index 5923f286430..7ce4cf8b973 100644 --- a/src/plugins/api/pokerogue-admin-api.ts +++ b/src/plugins/api/pokerogue-admin-api.ts @@ -1,3 +1,4 @@ +import { ApiBase } from "#api/api-base"; import type { LinkAccountToDiscordIdRequest, LinkAccountToGoogledIdRequest, @@ -5,8 +6,7 @@ import type { SearchAccountResponse, UnlinkAccountFromDiscordIdRequest, UnlinkAccountFromGoogledIdRequest, -} from "#app/@types/PokerogueAdminApi"; -import { ApiBase } from "#app/plugins/api/api-base"; +} 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 c6dfae019a5..ce232685107 100644 --- a/src/plugins/api/pokerogue-api.ts +++ b/src/plugins/api/pokerogue-api.ts @@ -1,9 +1,9 @@ -import type { TitleStatsResponse } from "#app/@types/PokerogueApi"; -import { ApiBase } from "#app/plugins/api/api-base"; -import { PokerogueAccountApi } from "#app/plugins/api/pokerogue-account-api"; -import { PokerogueAdminApi } from "#app/plugins/api/pokerogue-admin-api"; -import { PokerogueDailyApi } from "#app/plugins/api/pokerogue-daily-api"; -import { PokerogueSavedataApi } from "#app/plugins/api/pokerogue-savedata-api"; +import { ApiBase } from "#api/api-base"; +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/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 c9319ae7fdc..5ea3846e60e 100644 --- a/src/plugins/api/pokerogue-daily-api.ts +++ b/src/plugins/api/pokerogue-daily-api.ts @@ -1,6 +1,6 @@ -import type { GetDailyRankingsPageCountRequest, GetDailyRankingsRequest } from "#app/@types/PokerogueDailyApi"; -import { ApiBase } from "#app/plugins/api/api-base"; -import type { RankingEntry } from "#app/ui/daily-run-scoreboard"; +import { ApiBase } from "#api/api-base"; +import type { GetDailyRankingsPageCountRequest, GetDailyRankingsRequest } from "#types/api/pokerogue-daily-api"; +import type { RankingEntry } from "#ui/daily-run-scoreboard"; /** * A wrapper for daily-run PokéRogue API requests. diff --git a/src/plugins/api/pokerogue-savedata-api.ts b/src/plugins/api/pokerogue-savedata-api.ts index b8531e82d4f..f91e7bd027f 100644 --- a/src/plugins/api/pokerogue-savedata-api.ts +++ b/src/plugins/api/pokerogue-savedata-api.ts @@ -1,8 +1,8 @@ -import type { UpdateAllSavedataRequest } from "#app/@types/PokerogueSavedataApi"; +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 { ApiBase } from "#app/plugins/api/api-base"; -import { PokerogueSessionSavedataApi } from "#app/plugins/api/pokerogue-session-savedata-api"; -import { PokerogueSystemSavedataApi } from "#app/plugins/api/pokerogue-system-savedata-api"; +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 aac8b9b93ad..4ffb0a5d8da 100644 --- a/src/plugins/api/pokerogue-session-savedata-api.ts +++ b/src/plugins/api/pokerogue-session-savedata-api.ts @@ -1,3 +1,5 @@ +import { ApiBase } from "#api/api-base"; +import type { SessionSaveData } from "#system/game-data"; import type { ClearSessionSavedataRequest, ClearSessionSavedataResponse, @@ -5,9 +7,7 @@ import type { GetSessionSavedataRequest, NewClearSessionSavedataRequest, UpdateSessionSavedataRequest, -} from "#app/@types/PokerogueSessionSavedataApi"; -import { ApiBase } from "#app/plugins/api/api-base"; -import type { SessionSaveData } from "#app/system/game-data"; +} 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 d6fbb39ae0a..137d4adb18f 100644 --- a/src/plugins/api/pokerogue-system-savedata-api.ts +++ b/src/plugins/api/pokerogue-system-savedata-api.ts @@ -1,10 +1,10 @@ +import { ApiBase } from "#api/api-base"; import type { GetSystemSavedataRequest, UpdateSystemSavedataRequest, VerifySystemSavedataRequest, VerifySystemSavedataResponse, -} from "#app/@types/PokerogueSystemSavedataApi"; -import { ApiBase } from "#app/plugins/api/api-base"; +} from "#types/api/pokerogue-system-save-data-api"; /** * A wrapper for PokéRogue system savedata API requests. diff --git a/src/plugins/cache-busted-loader-plugin.ts b/src/plugins/cache-busted-loader-plugin.ts index 4ae9b352ae3..4853265ec65 100644 --- a/src/plugins/cache-busted-loader-plugin.ts +++ b/src/plugins/cache-busted-loader-plugin.ts @@ -1,8 +1,8 @@ -import { coerceArray } from "#app/utils/common"; +import { coerceArray } from "#utils/common"; let manifest: object; -export default class CacheBustedLoaderPlugin extends Phaser.Loader.LoaderPlugin { +export class CacheBustedLoaderPlugin extends Phaser.Loader.LoaderPlugin { get manifest() { return manifest; } diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts index 7d3b30ed5b0..4ee4aa730fb 100644 --- a/src/plugins/i18n.ts +++ b/src/plugins/i18n.ts @@ -1,9 +1,9 @@ -import { camelCaseToKebabCase } from "#app/utils/common"; +import pkg from "#package.json"; +import { camelCaseToKebabCase } from "#utils/common"; import i18next from "i18next"; import LanguageDetector from "i18next-browser-languagedetector"; import HttpBackend from "i18next-http-backend"; import processor, { KoreanPostpositionProcessor } from "i18next-korean-postposition-processor"; -import pkg from "../../package.json"; //#region Interfaces/Types @@ -65,28 +65,27 @@ const fonts: Array = [ unicodeRange: rangesByLanguage.chinese, }), extraOptions: { sizeAdjust: "70%", format: "woff2" }, - only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca", "da", "tr", "ro", "ru"], + only: ["zh"], }, { face: new FontFace("pkmnems", "url(./fonts/unifont-15.1.05.subset.woff2)", { unicodeRange: rangesByLanguage.chinese, }), extraOptions: { format: "woff2" }, - only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca", "da", "tr", "ro", "ru"], + only: ["zh"], }, // japanese { - face: new FontFace("emerald", "url(./fonts/Galmuri11.subset.woff2)", { + face: new FontFace("emerald", "url(./fonts/pokemon-bw.ttf)", { unicodeRange: rangesByLanguage.japanese, }), - extraOptions: { sizeAdjust: "66%" }, - only: ["ja"], + only: ["en", "es", "fr", "it", "de", "pt", "ko", "ja", "ca", "da", "tr", "ro", "ru"], }, { - face: new FontFace("pkmnems", "url(./fonts/Galmuri9.subset.woff2)", { + face: new FontFace("pkmnems", "url(./fonts/pokemon-bw.ttf)", { unicodeRange: rangesByLanguage.japanese, }), - only: ["ja"], + only: ["en", "es", "fr", "it", "de", "pt", "ko", "ja", "ca", "da", "tr", "ro", "ru"], }, ]; diff --git a/src/plugins/vite/vite-minify-json-plugin.ts b/src/plugins/vite/vite-minify-json-plugin.ts index 38f299eea50..50f5f87fe7c 100644 --- a/src/plugins/vite/vite-minify-json-plugin.ts +++ b/src/plugins/vite/vite-minify-json-plugin.ts @@ -1,5 +1,5 @@ -import path from "path"; import fs from "fs"; +import path from "path"; import type { Plugin as VitePlugin } from "vite"; /** diff --git a/src/polyfills.ts b/src/polyfills.ts new file mode 100644 index 00000000000..8666629fceb --- /dev/null +++ b/src/polyfills.ts @@ -0,0 +1,21 @@ +/* +Manual rolling of polyfills desired by the project. + +IMPORTANT: When adding / removing polyfills, ensure that typescript becomes +aware of their existence, either by creating `src/typings/polyfills.d.ts` +and defining them there, or or by adding the appropriate field polyfill to the +`lib` property in `tsconfig.json`. +*/ + +if (typeof Promise.withResolvers === "undefined") { + Promise.withResolvers = () => { + // Bangs are OK here; they are guaranteed to be defined when the promise is invoked. + let resolve!: (value: T | PromiseLike) => void; + let reject!: (reason?: unknown) => void; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + return { promise, resolve, reject }; + }; +} diff --git a/src/scene-base.ts b/src/scene-base.ts index ccea373fca0..3f2e4409794 100644 --- a/src/scene-base.ts +++ b/src/scene-base.ts @@ -1,4 +1,4 @@ -import { coerceArray } from "#app/utils/common"; +import { coerceArray } from "#utils/common"; export const legacyCompatibleImages: string[] = []; diff --git a/src/sprites/pokemon-asset-loader.ts b/src/sprites/pokemon-asset-loader.ts index 980d242a880..9deb68b7443 100644 --- a/src/sprites/pokemon-asset-loader.ts +++ b/src/sprites/pokemon-asset-loader.ts @@ -1,5 +1,5 @@ +import { initMoveAnim, loadMoveAnimAssets } from "#data/battle-anims"; import type { MoveId } from "#enums/move-id"; -import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; /** * Asynchronously load the animations and assets for the provided moves. diff --git a/src/sprites/pokemon-sprite.ts b/src/sprites/pokemon-sprite.ts index cdf9e3acfa6..5a8d7d53f0c 100644 --- a/src/sprites/pokemon-sprite.ts +++ b/src/sprites/pokemon-sprite.ts @@ -1,10 +1,10 @@ +import type { BattleScene } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import { variantColorCache, variantData } from "#app/sprites/variant"; -import { Gender } from "#app/data/gender"; -import { hasExpSprite } from "./sprite-utils"; -import type { Variant, VariantSet } from "#app/sprites/variant"; -import type Pokemon from "#app/field/pokemon"; -import type BattleScene from "#app/battle-scene"; +import { Gender } from "#data/gender"; +import type { Pokemon } from "#field/pokemon"; +import { hasExpSprite } from "#sprites/sprite-utils"; +import type { Variant, VariantSet } from "#sprites/variant"; +import { variantColorCache, variantData } from "#sprites/variant"; // Regex patterns diff --git a/src/sprites/sprite-utils.ts b/src/sprites/sprite-utils.ts index 563bb1235b5..e5c00d4c914 100644 --- a/src/sprites/sprite-utils.ts +++ b/src/sprites/sprite-utils.ts @@ -1,4 +1,4 @@ -import { expSpriteKeys } from "#app/sprites/sprite-keys"; +import { expSpriteKeys } from "#sprites/sprite-keys"; const expKeyRegex = /^pkmn__?(back__)?(shiny__)?(female__)?(\d+)(-.*?)?(?:_[1-3])?$/; diff --git a/src/sprites/variant.ts b/src/sprites/variant.ts index 985068015c6..28d7ed13839 100644 --- a/src/sprites/variant.ts +++ b/src/sprites/variant.ts @@ -1,8 +1,8 @@ -import { VariantTier } from "#app/enums/variant-tier"; -import { hasExpSprite } from "#app/sprites/sprite-utils"; import { globalScene } from "#app/global-scene"; -import type Pokemon from "#app/field/pokemon"; -import { isNullOrUndefined } from "#app/utils/common"; +import { VariantTier } from "#enums/variant-tier"; +import type { Pokemon } from "#field/pokemon"; +import { hasExpSprite } from "#sprites/sprite-utils"; +import { isNullOrUndefined } from "#utils/common"; export type Variant = 0 | 1 | 2; diff --git a/src/starting-wave.ts b/src/starting-wave.ts index 3d36dabe652..7dbcffebbfe 100644 --- a/src/starting-wave.ts +++ b/src/starting-wave.ts @@ -1,3 +1,3 @@ -import Overrides from "./overrides"; +import Overrides from "#app/overrides"; export const startingWave = Overrides.STARTING_WAVE_OVERRIDE || 1; diff --git a/src/system/achv.ts b/src/system/achv.ts index 90816ff65c3..abe6f264d20 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -1,21 +1,21 @@ -import type { Modifier } from "typescript"; -import { TurnHeldItemTransferModifier } from "../modifier/modifier"; -import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; -import i18next from "i18next"; -import { NumberHolder } from "#app/utils/common"; -import { PlayerGender } from "#enums/player-gender"; -import type { Challenge } from "#app/data/challenge"; +import { globalScene } from "#app/global-scene"; +import { pokemonEvolutions } from "#balance/pokemon-evolutions"; +import type { Challenge } from "#data/challenge"; import { FlipStatChallenge, FreshStartChallenge, + InverseBattleChallenge, SingleGenerationChallenge, SingleTypeChallenge, - InverseBattleChallenge, -} from "#app/data/challenge"; -import type { ConditionFn } from "#app/@types/common"; -import { Stat, getShortenedStatKey } from "#app/enums/stat"; -import { Challenges } from "#app/enums/challenges"; -import { globalScene } from "#app/global-scene"; +} from "#data/challenge"; +import { Challenges } from "#enums/challenges"; +import { PlayerGender } from "#enums/player-gender"; +import { getShortenedStatKey, Stat } from "#enums/stat"; +import { TurnHeldItemTransferModifier } from "#modifiers/modifier"; +import type { ConditionFn } from "#types/common"; +import { NumberHolder } from "#utils/common"; +import i18next from "i18next"; +import type { Modifier } from "typescript"; export enum AchvTier { COMMON, diff --git a/src/system/arena-data.ts b/src/system/arena-data.ts index 29423d10207..c0ad4a25024 100644 --- a/src/system/arena-data.ts +++ b/src/system/arena-data.ts @@ -1,35 +1,47 @@ -import { Arena } from "../field/arena"; -import type { ArenaTag } from "../data/arena-tag"; -import { loadArenaTag } from "../data/arena-tag"; +import type { ArenaTag } from "#data/arena-tag"; +import { loadArenaTag, SerializableArenaTag } from "#data/arena-tag"; +import { Terrain } from "#data/terrain"; +import { Weather } from "#data/weather"; import type { BiomeId } from "#enums/biome-id"; -import { Weather } from "../data/weather"; -import { Terrain } from "#app/data/terrain"; +import { Arena } from "#field/arena"; +import type { ArenaTagTypeData } from "#types/arena-tags"; +import type { NonFunctionProperties } from "#types/type-helpers"; -export default class ArenaData { +export interface SerializedArenaData { + biome: BiomeId; + weather: NonFunctionProperties | null; + terrain: NonFunctionProperties | null; + tags?: ArenaTagTypeData[]; + playerTerasUsed?: number; +} + +export class ArenaData { public biome: BiomeId; public weather: Weather | null; public terrain: Terrain | null; public tags: ArenaTag[]; public playerTerasUsed: number; - constructor(source: Arena | any) { - const sourceArena = source instanceof Arena ? (source as Arena) : null; - this.biome = sourceArena ? sourceArena.biomeType : source.biome; - this.weather = sourceArena - ? sourceArena.weather - : source.weather - ? new Weather(source.weather.weatherType, source.weather.turnsLeft) - : null; - this.terrain = sourceArena - ? sourceArena.terrain - : source.terrain - ? new Terrain(source.terrain.terrainType, source.terrain.turnsLeft) - : null; - this.playerTerasUsed = (sourceArena ? sourceArena.playerTerasUsed : source.playerTerasUsed) ?? 0; - this.tags = []; + constructor(source: Arena | SerializedArenaData) { + // Exclude any unserializable tags from the serialized data (such as ones only lasting 1 turn). + // NOTE: The filter has to be done _after_ map, data loaded from `ArenaTagTypeData` + // is not yet an instance of `ArenaTag` + this.tags = + source.tags + ?.map((t: ArenaTag | ArenaTagTypeData) => loadArenaTag(t)) + ?.filter((tag): tag is SerializableArenaTag => tag instanceof SerializableArenaTag) ?? []; - if (source.tags) { - this.tags = source.tags.map(t => loadArenaTag(t)); + this.playerTerasUsed = source.playerTerasUsed ?? 0; + + if (source instanceof Arena) { + this.biome = source.biomeType; + this.weather = source.weather; + this.terrain = source.terrain; + 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; } } diff --git a/src/system/challenge-data.ts b/src/system/challenge-data.ts index 87299ae653a..1d4ab23f523 100644 --- a/src/system/challenge-data.ts +++ b/src/system/challenge-data.ts @@ -1,7 +1,7 @@ -import type { Challenge } from "#app/data/challenge"; -import { copyChallenge } from "#app/data/challenge"; +import type { Challenge } from "#data/challenge"; +import { copyChallenge } from "#data/challenge"; -export default class ChallengeData { +export class ChallengeData { public id: number; public value: number; public severity: number; diff --git a/src/system/egg-data.ts b/src/system/egg-data.ts index 63f9e17d7be..4910d01d5a8 100644 --- a/src/system/egg-data.ts +++ b/src/system/egg-data.ts @@ -1,10 +1,10 @@ +import { EGG_SEED, Egg } from "#data/egg"; +import type { EggSourceType } from "#enums/egg-source-types"; import type { EggTier } from "#enums/egg-type"; import type { SpeciesId } from "#enums/species-id"; import type { VariantTier } from "#enums/variant-tier"; -import { EGG_SEED, Egg } from "../data/egg"; -import type { EggSourceType } from "#app/enums/egg-source-types"; -export default class EggData { +export class EggData { public id: number; public tier: EggTier; public sourceType: EggSourceType; diff --git a/src/system/game-data.ts b/src/system/game-data.ts index d5d4256f7d0..c52a5155fb4 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -1,74 +1,73 @@ -import i18next from "i18next"; -import type { PokeballCounts } from "#app/battle-scene"; -import { bypassLogin } from "#app/global-vars/bypass-login"; -import { globalScene } from "#app/global-scene"; -import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { allSpecies } from "#app/data/data-lists"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import { randInt, getEnumKeys, isLocal, executeIf, fixedInt, randSeedItem, NumberHolder } from "#app/utils/common"; -import Overrides from "#app/overrides"; -import PokemonData from "#app/system/pokemon-data"; -import PersistentModifierData from "#app/system/modifier-data"; -import ArenaData from "#app/system/arena-data"; -import { Unlockables } from "#enums/unlockables"; -import { getGameMode } from "#app/game-mode"; -import { GameModes } from "#enums/game-modes"; -import { BattleType } from "#enums/battle-type"; -import TrainerData from "#app/system/trainer-data"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; -import { resetSettings, setSetting, SettingKeys } from "#app/system/settings/settings"; -import { achvs } from "#app/system/achv"; -import EggData from "#app/system/egg-data"; -import type { Egg } from "#app/data/egg"; -import { vouchers, VoucherType } from "#app/system/voucher"; -import { AES, enc } from "crypto-js"; -import { UiMode } from "#enums/ui-mode"; +import { pokerogueApi } from "#api/pokerogue-api"; import { clientSessionId, loggedInUser, updateUserInfo } from "#app/account"; -import { Nature } from "#enums/nature"; -import { GameStats } from "#app/system/game-stats"; +import type { PokeballCounts } from "#app/battle-scene"; +import { defaultStarterSpecies, saveKey } from "#app/constants"; +import { getGameMode } from "#app/game-mode"; +import { globalScene } from "#app/global-scene"; +import { bypassLogin } from "#app/global-vars/bypass-login"; +import Overrides from "#app/overrides"; import { Tutorial } from "#app/tutorial"; -import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { allMoves } from "#app/data/data-lists"; -import { TrainerVariant } from "#enums/trainer-variant"; -import type { Variant } from "#app/sprites/variant"; -import { setSettingGamepad, SettingGamepad, settingGamepadDefaults } from "#app/system/settings/settings-gamepad"; -import type { SettingKeyboard } from "#app/system/settings/settings-keyboard"; -import { setSettingKeyboard } from "#app/system/settings/settings-keyboard"; -import { TagAddedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#app/events/arena"; -// biome-ignore lint/performance/noNamespaceImport: Something weird is going on here and I don't want to touch it -import * as Modifier from "#app/modifier/modifier"; -import { StatusEffect } from "#enums/status-effect"; -import ChallengeData from "#app/system/challenge-data"; -import { Device } from "#enums/devices"; -import { GameDataType } from "#enums/game-data-type"; -import type { MoveId } from "#enums/move-id"; -import { PlayerGender } from "#enums/player-gender"; -import { SpeciesId } from "#enums/species-id"; -import { applyChallenges } from "#app/data/challenge"; +import { speciesEggMoves } from "#balance/egg-moves"; +import { pokemonPrevolutions } from "#balance/pokemon-evolutions"; +import { speciesStarterCosts } from "#balance/starters"; +import { ArenaTrapTag } from "#data/arena-tag"; +import { applyChallenges } from "#data/challenge"; +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 { TerrainType } from "#data/terrain"; +import { AbilityAttr } from "#enums/ability-attr"; +import { BattleType } from "#enums/battle-type"; import { ChallengeType } from "#enums/challenge-type"; +import { Device } from "#enums/devices"; +import { DexAttr } from "#enums/dex-attr"; +import { GameDataType } from "#enums/game-data-type"; +import { GameModes } from "#enums/game-modes"; +import type { MoveId } from "#enums/move-id"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; +import { PlayerGender } from "#enums/player-gender"; +import type { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { StatusEffect } from "#enums/status-effect"; +import { TrainerVariant } from "#enums/trainer-variant"; +import { UiMode } from "#enums/ui-mode"; +import { Unlockables } from "#enums/unlockables"; import { WeatherType } from "#enums/weather-type"; -import { TerrainType } from "#app/data/terrain"; -import { RUN_HISTORY_LIMIT } from "#app/ui/run-history-ui-handler"; +import { TagAddedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#events/arena"; +import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon"; +// biome-ignore lint/performance/noNamespaceImport: Something weird is going on here and I don't want to touch it +import * as Modifier from "#modifiers/modifier"; +import { MysteryEncounterSaveData } from "#mystery-encounters/mystery-encounter-save-data"; +import type { Variant } from "#sprites/variant"; +import { achvs } from "#system/achv"; +import { ArenaData, type SerializedArenaData } from "#system/arena-data"; +import { ChallengeData } from "#system/challenge-data"; +import { EggData } from "#system/egg-data"; +import { GameStats } from "#system/game-stats"; +import { ModifierData as PersistentModifierData } from "#system/modifier-data"; +import { PokemonData } from "#system/pokemon-data"; +import { resetSettings, SettingKeys, setSetting } from "#system/settings"; +import { SettingGamepad, setSettingGamepad, settingGamepadDefaults } from "#system/settings-gamepad"; +import type { SettingKeyboard } from "#system/settings-keyboard"; +import { setSettingKeyboard } from "#system/settings-keyboard"; +import { TrainerData } from "#system/trainer-data"; import { applySessionVersionMigration, - applySystemVersionMigration, applySettingsVersionMigration, -} from "./version_migration/version_converter"; -import { MysteryEncounterSaveData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; -import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import { ArenaTrapTag } from "#app/data/arena-tag"; -import { pokemonFormChanges } from "#app/data/pokemon-forms"; -import type { PokemonType } from "#enums/pokemon-type"; -import type { DexData, DexEntry } from "../@types/dex-data"; -import { DexAttr } from "#enums/dex-attr"; -import { AbilityAttr } from "#enums/ability-attr"; -import { defaultStarterSpecies, saveKey } from "#app/constants"; -import { encrypt, decrypt } from "#app/utils/data"; + applySystemVersionMigration, +} 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"; +import { RUN_HISTORY_LIMIT } from "#ui/run-history-ui-handler"; +import { executeIf, fixedInt, isLocal, NumberHolder, randInt, randSeedItem } from "#utils/common"; +import { decrypt, encrypt } from "#utils/data"; +import { getEnumKeys } from "#utils/enums"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { AES, enc } from "crypto-js"; +import i18next from "i18next"; function getDataTypeKey(dataType: GameDataType, slotId = 0): string { switch (dataType) { @@ -1248,7 +1247,8 @@ export class GameData { // (or prevent them from being null) // If the value is able to *not exist*, it should say so in the code const sessionData = JSON.parse(dataStr, (k: string, v: any) => { - // TODO: Add pre-parse migrate scripts + // TODO: Move this to occur _after_ migrate scripts (and refactor all non-assignment duties into migrate scripts) + // This should ideally be just a giant assign block switch (k) { case "party": case "enemyParty": { @@ -1286,7 +1286,7 @@ export class GameData { } case "arena": - return new ArenaData(v); + return new ArenaData(v as SerializedArenaData); case "challenges": { const ret: ChallengeData[] = []; diff --git a/src/system/game-speed.ts b/src/system/game-speed.ts index 207a4fb44a1..283e6461e55 100644 --- a/src/system/game-speed.ts +++ b/src/system/game-speed.ts @@ -1,9 +1,9 @@ -import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; +import type { BattleScene } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import { FixedInt } from "#utils/common"; import type FadeIn from "phaser3-rex-plugins/plugins/audio/fade/FadeIn"; import type FadeOut from "phaser3-rex-plugins/plugins/audio/fade/FadeOut"; -import type BattleScene from "#app/battle-scene"; -import { globalScene } from "#app/global-scene"; -import { FixedInt } from "#app/utils/common"; +import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; type TweenManager = typeof Phaser.Tweens.TweenManager.prototype; diff --git a/src/system/modifier-data.ts b/src/system/modifier-data.ts index cbda45572ac..135d1907e08 100644 --- a/src/system/modifier-data.ts +++ b/src/system/modifier-data.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import { PersistentModifier } from "#app/modifier/modifier"; -import type { GeneratedPersistentModifierType, ModifierType } from "#app/modifier/modifier-type"; -import { ModifierTypeGenerator, getModifierTypeFuncById } from "#app/modifier/modifier-type"; +import { PersistentModifier } from "#modifiers/modifier"; +import type { GeneratedPersistentModifierType, ModifierType } from "#modifiers/modifier-type"; +import { getModifierTypeFuncById, ModifierTypeGenerator } from "#modifiers/modifier-type"; -export default class ModifierData { +export class ModifierData { public player: boolean; public typeId: string; public typePregenArgs: any[]; diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 050da57e0be..9cea08bfb13 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -1,22 +1,22 @@ -import { BattleType } from "#enums/battle-type"; import { globalScene } from "#app/global-scene"; -import type { Gender } from "../data/gender"; -import { Nature } from "#enums/nature"; -import { PokeballType } from "#enums/pokeball"; -import { getPokemonSpeciesForm } from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { Status } from "../data/status-effect"; -import Pokemon, { EnemyPokemon, PokemonBattleData, PokemonSummonData } from "../field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { TrainerSlot } from "#enums/trainer-slot"; -import type { Variant } from "#app/sprites/variant"; +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"; import type { MoveId } from "#enums/move-id"; -import type { SpeciesId } from "#enums/species-id"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; +import { Nature } from "#enums/nature"; +import { PokeballType } from "#enums/pokeball"; import type { PokemonType } from "#enums/pokemon-type"; +import type { SpeciesId } from "#enums/species-id"; +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"; -export default class PokemonData { +export class PokemonData { public id: number; public player: boolean; public species: SpeciesId; @@ -105,7 +105,7 @@ export default class PokemonData { // TODO: Can't we move some of this verification stuff to an upgrade script? this.nature = source.nature ?? Nature.HARDY; - this.moveset = source.moveset.map((m: any) => PokemonMove.loadMove(m)); + this.moveset = source.moveset?.map((m: any) => PokemonMove.loadMove(m)) ?? []; this.status = source.status ? new Status(source.status.effect, source.status.toxicTurnCount, source.status.sleepTurnsRemaining) : null; diff --git a/src/system/settings/settings-gamepad.ts b/src/system/settings/settings-gamepad.ts index 8a28e9fbf14..2e25eda7300 100644 --- a/src/system/settings/settings-gamepad.ts +++ b/src/system/settings/settings-gamepad.ts @@ -1,9 +1,9 @@ -import type SettingsGamepadUiHandler from "../../ui/settings/settings-gamepad-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import { truncateString } from "../../utils/common"; -import { Button } from "#enums/buttons"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +import { UiMode } from "#enums/ui-mode"; +import { SettingKeyboard } from "#system/settings-keyboard"; +import type { SettingsGamepadUiHandler } from "#ui/settings-gamepad-ui-handler"; +import { truncateString } from "#utils/common"; import i18next from "i18next"; export enum SettingGamepad { diff --git a/src/system/settings/settings-keyboard.ts b/src/system/settings/settings-keyboard.ts index ec5c9ad6b0e..07f4f86bdb0 100644 --- a/src/system/settings/settings-keyboard.ts +++ b/src/system/settings/settings-keyboard.ts @@ -1,8 +1,8 @@ +import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; import { UiMode } from "#enums/ui-mode"; -import type SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-handler"; +import type { SettingsKeyboardUiHandler } from "#ui/settings-keyboard-ui-handler"; import i18next from "i18next"; -import { globalScene } from "#app/global-scene"; export enum SettingKeyboard { // Default_Layout = "DEFAULT_LAYOUT", diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index ca5395a5af7..19d10baedfd 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -1,35 +1,32 @@ -import { UiMode } from "#enums/ui-mode"; -import i18next from "i18next"; import { globalScene } from "#app/global-scene"; import { hasTouchscreen } from "#app/touch-controls"; -import { updateWindowType } from "#app/ui/ui-theme"; -import { CandyUpgradeNotificationChangedEvent } from "#app/events/battle-scene"; -import type SettingsUiHandler from "#app/ui/settings/settings-ui-handler"; import { EaseType } from "#enums/ease-type"; import { MoneyFormat } from "#enums/money-format"; import { PlayerGender } from "#enums/player-gender"; import { ShopCursorTarget } from "#enums/shop-cursor-target"; -import { isLocal } from "#app/utils/common"; +import { UiMode } from "#enums/ui-mode"; +import { CandyUpgradeNotificationChangedEvent } from "#events/battle-scene"; +import type { SettingsUiHandler } from "#ui/settings-ui-handler"; +import { updateWindowType } from "#ui/ui-theme"; +import { isLocal } from "#utils/common"; +import i18next from "i18next"; -const VOLUME_OPTIONS: SettingOption[] = new Array(11).fill(null).map((_, i) => - i - ? { - value: (i * 10).toString(), - label: (i * 10).toString(), - } - : { - value: "Mute", - label: i18next.t("settings:mute"), - }, -); +const VOLUME_OPTIONS: SettingOption[] = [ + { + value: "Mute", + label: i18next.t("settings:mute"), + }, +]; +for (let i = 1; i < 11; i++) { + const value = (i * 10).toString(); + VOLUME_OPTIONS.push({ value, label: value }); +} -const SHOP_OVERLAY_OPACITY_OPTIONS: SettingOption[] = new Array(9).fill(null).map((_, i) => { +const SHOP_OVERLAY_OPACITY_OPTIONS: SettingOption[] = []; +for (let i = 0; i < 9; i++) { const value = ((i + 1) * 10).toString(); - return { - value, - label: value, - }; -}); + SHOP_OVERLAY_OPACITY_OPTIONS.push({ value, label: value }); +} const OFF_ON: SettingOption[] = [ { @@ -183,6 +180,12 @@ export enum MusicPreference { ALLGENS, } +const windowTypeOptions: SettingOption[] = []; +for (let i = 0; i < 5; i++) { + const value = (i + 1).toString(); + windowTypeOptions.push({ value, label: value }); +} + /** * All Settings not related to controls */ @@ -432,13 +435,7 @@ export const Setting: Array = [ { key: SettingKeys.Window_Type, label: i18next.t("settings:windowType"), - options: new Array(5).fill(null).map((_, i) => { - const windowType = (i + 1).toString(); - return { - value: windowType, - label: windowType, - }; - }), + options: windowTypeOptions, default: 0, type: SettingType.DISPLAY, }, diff --git a/src/system/trainer-data.ts b/src/system/trainer-data.ts index 7c9bffd99ee..ce402ff23bf 100644 --- a/src/system/trainer-data.ts +++ b/src/system/trainer-data.ts @@ -1,8 +1,8 @@ import type { TrainerType } from "#enums/trainer-type"; -import Trainer from "../field/trainer"; import { TrainerVariant } from "#enums/trainer-variant"; +import { Trainer } from "#field/trainer"; -export default class TrainerData { +export class TrainerData { public trainerType: TrainerType; public variant: TrainerVariant; public partyTemplateIndex: number; diff --git a/src/system/unlockables.ts b/src/system/unlockables.ts index 72588858eae..647aad9bcdb 100644 --- a/src/system/unlockables.ts +++ b/src/system/unlockables.ts @@ -1,7 +1,7 @@ -import i18next from "i18next"; -import { GameMode } from "../game-mode"; +import { GameMode } from "#app/game-mode"; import { GameModes } from "#enums/game-modes"; import { Unlockables } from "#enums/unlockables"; +import i18next from "i18next"; export function getUnlockableName(unlockable: Unlockables) { switch (unlockable) { diff --git a/src/system/version_migration/version_converter.ts b/src/system/version-migration/version-converter.ts similarity index 82% rename from src/system/version_migration/version_converter.ts rename to src/system/version-migration/version-converter.ts index 789fa96958c..6dde611ce84 100644 --- a/src/system/version_migration/version_converter.ts +++ b/src/system/version-migration/version-converter.ts @@ -1,11 +1,11 @@ /** biome-ignore-all lint/performance/noNamespaceImport: Convenience */ -import type { SessionSaveMigrator } from "#app/@types/SessionSaveMigrator"; -import type { SettingsSaveMigrator } from "#app/@types/SettingsSaveMigrator"; -import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator"; -import type { SessionSaveData, SystemSaveData } from "#app/system/game-data"; +import { version } from "#package.json"; +import type { SessionSaveData, SystemSaveData } from "#system/game-data"; +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"; -import { version } from "../../../package.json"; /* // template for save migrator creation @@ -24,7 +24,7 @@ const systemMigratorA: SystemSaveMigrator = { }, }; -export const systemMigrators: Readonly = [systemMigratorA] as const; +export const systemMigrators: readonly SystemSaveMigrator[] = [systemMigratorA] as const; const sessionMigratorA: SessionSaveMigrator = { version: "A.B.C", @@ -33,7 +33,7 @@ const sessionMigratorA: SessionSaveMigrator = { }, }; -export const sessionMigrators: Readonly = [sessionMigratorA] as const; +export const sessionMigrators: readonly SessionSaveMigrator[] = [sessionMigratorA] as const; const settingsMigratorA: SettingsSaveMigrator = { version: "A.B.C", @@ -43,26 +43,17 @@ const settingsMigratorA: SettingsSaveMigrator = { }, }; -export const settingsMigrators: Readonly = [settingsMigratorA] as const; +export const settingsMigrators: readonly SettingsSaveMigrator[] = [settingsMigratorA] as const; */ -// --- vA.B.C PATCHES --- // -// import * as vA_B_C from "./versions/vA_B_C"; +// Add migrator imports below: +// Example: import * as vA_B_C from "#system/vA_B_C"; -// --- v1.0.4 (and below) PATCHES --- // -import * as v1_0_4 from "./versions/v1_0_4"; - -// --- v1.7.0 PATCHES --- // -import * as v1_7_0 from "./versions/v1_7_0"; - -// --- v1.8.3 PATCHES --- // -import * as v1_8_3 from "./versions/v1_8_3"; - -// --- v1.9.0 PATCHES --- // -import * as v1_9_0 from "./versions/v1_9_0"; - -// --- v1.10.0 PATCHES --- // -import * as v1_10_0 from "./versions/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 89% rename from src/system/version_migration/versions/v1_0_4.ts rename to src/system/version-migration/versions/v1_0_4.ts index a08327a3b70..2c50e05d40f 100644 --- a/src/system/version_migration/versions/v1_0_4.ts +++ b/src/system/version-migration/versions/v1_0_4.ts @@ -1,14 +1,14 @@ -import { SettingKeys } from "#app/system/settings/settings"; -import type { SystemSaveData, SessionSaveData } from "#app/system/game-data"; import { defaultStarterSpecies } from "#app/constants"; +import { allSpecies } from "#data/data-lists"; +import { CustomPokemonData } from "#data/pokemon-data"; import { AbilityAttr } from "#enums/ability-attr"; import { DexAttr } from "#enums/dex-attr"; -import { allSpecies } from "#app/data/data-lists"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import { isNullOrUndefined } from "#app/utils/common"; -import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator"; -import type { SettingsSaveMigrator } from "#app/@types/SettingsSaveMigrator"; -import type { SessionSaveMigrator } from "#app/@types/SessionSaveMigrator"; +import type { SessionSaveData, SystemSaveData } from "#system/game-data"; +import { SettingKeys } from "#system/settings"; +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"; /** * Migrate ability starter data if empty for caught species. @@ -95,7 +95,7 @@ const fixStarterData: SystemSaveMigrator = { }, }; -export const systemMigrators: Readonly = [ +export const systemMigrators: readonly SystemSaveMigrator[] = [ migrateAbilityData, fixLegendaryStats, fixStarterData, @@ -118,7 +118,7 @@ const fixRerollTarget: SettingsSaveMigrator = { }, }; -export const settingsMigrators: Readonly = [fixRerollTarget] as const; +export const settingsMigrators: readonly SettingsSaveMigrator[] = [fixRerollTarget] as const; /** * Converts old lapsing modifiers (battle items, lures, and Dire Hit) and @@ -206,4 +206,4 @@ const migrateCustomPokemonData: SessionSaveMigrator = { }, }; -export const sessionMigrators: Readonly = [migrateModifiers, migrateCustomPokemonData] as const; +export const sessionMigrators: readonly SessionSaveMigrator[] = [migrateModifiers, migrateCustomPokemonData] as const; diff --git a/src/system/version_migration/versions/v1_10_0.ts b/src/system/version-migration/versions/v1_10_0.ts similarity index 86% rename from src/system/version_migration/versions/v1_10_0.ts rename to src/system/version-migration/versions/v1_10_0.ts index 4d1dedf701e..5c13acd4508 100644 --- a/src/system/version_migration/versions/v1_10_0.ts +++ b/src/system/version-migration/versions/v1_10_0.ts @@ -1,10 +1,10 @@ -import type { SessionSaveMigrator } from "#app/@types/SessionSaveMigrator"; import type { BattlerIndex } from "#enums/battler-index"; -import type { TurnMove } from "#app/field/pokemon"; -import type { MoveResult } from "#enums/move-result"; -import type { SessionSaveData } from "#app/system/game-data"; -import { MoveUseMode } from "#enums/move-use-mode"; 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/session-save-migrator"; +import type { TurnMove } from "#types/turn-move"; /** Prior signature of `TurnMove`; used to ensure parity */ interface OldTurnMove { @@ -45,4 +45,4 @@ const fixMoveHistory: SessionSaveMigrator = { }, }; -export const sessionMigrators: Readonly = [fixMoveHistory] as const; +export const sessionMigrators: readonly SessionSaveMigrator[] = [fixMoveHistory] as const; diff --git a/src/system/version_migration/versions/v1_7_0.ts b/src/system/version-migration/versions/v1_7_0.ts similarity index 80% rename from src/system/version_migration/versions/v1_7_0.ts rename to src/system/version-migration/versions/v1_7_0.ts index e3c599bf77b..9ba25bcbaac 100644 --- a/src/system/version_migration/versions/v1_7_0.ts +++ b/src/system/version-migration/versions/v1_7_0.ts @@ -1,11 +1,11 @@ -import type { SessionSaveMigrator } from "#app/@types/SessionSaveMigrator"; -import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator"; -import { getPokemonSpeciesForm } from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; import { globalScene } from "#app/global-scene"; -import type { SessionSaveData, SystemSaveData } from "#app/system/game-data"; +import { getPokemonSpeciesForm } from "#data/pokemon-species"; import { DexAttr } from "#enums/dex-attr"; -import { isNullOrUndefined } from "#app/utils/common"; +import type { SessionSaveData, SystemSaveData } from "#system/game-data"; +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"; /** * If a starter is caught, but the only forms registered as caught are not starterSelectable, @@ -37,7 +37,7 @@ const migrateUnselectableForms: SystemSaveMigrator = { }, }; -export const systemMigrators: Readonly = [migrateUnselectableForms] as const; +export const systemMigrators: readonly SystemSaveMigrator[] = [migrateUnselectableForms] as const; const migrateTera: SessionSaveMigrator = { version: "1.7.0", @@ -82,4 +82,4 @@ const migrateTera: SessionSaveMigrator = { }, }; -export const sessionMigrators: Readonly = [migrateTera] as const; +export const sessionMigrators: readonly SessionSaveMigrator[] = [migrateTera] as const; diff --git a/src/system/version_migration/versions/v1_8_3.ts b/src/system/version-migration/versions/v1_8_3.ts similarity index 77% rename from src/system/version_migration/versions/v1_8_3.ts rename to src/system/version-migration/versions/v1_8_3.ts index 81430659e0b..4907b4e5e57 100644 --- a/src/system/version_migration/versions/v1_8_3.ts +++ b/src/system/version-migration/versions/v1_8_3.ts @@ -1,8 +1,8 @@ -import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import type { SystemSaveData } from "#app/system/game-data"; import { DexAttr } from "#enums/dex-attr"; import { SpeciesId } from "#enums/species-id"; +import type { SystemSaveData } from "#system/game-data"; +import type { SystemSaveMigrator } from "#types/system-save-migrator"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; /** * If a starter is caught, but the only forms registered as caught are not starterSelectable, @@ -28,4 +28,4 @@ const migratePichuForms: SystemSaveMigrator = { }, }; -export const systemMigrators: Readonly = [migratePichuForms] as const; +export const systemMigrators: readonly SystemSaveMigrator[] = [migratePichuForms] as const; diff --git a/src/system/version_migration/versions/v1_9_0.ts b/src/system/version-migration/versions/v1_9_0.ts similarity index 79% rename from src/system/version_migration/versions/v1_9_0.ts rename to src/system/version-migration/versions/v1_9_0.ts index 0bd5a422ffb..fb24b9af837 100644 --- a/src/system/version_migration/versions/v1_9_0.ts +++ b/src/system/version-migration/versions/v1_9_0.ts @@ -1,8 +1,8 @@ -import type { SessionSaveMigrator } from "#app/@types/SessionSaveMigrator"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import type { SessionSaveData } from "#app/system/game-data"; -import type PokemonData from "#app/system/pokemon-data"; 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/session-save-migrator"; /** * Migrate all lingering rage fist data inside `CustomPokemonData`, @@ -38,4 +38,4 @@ const migratePartyData: SessionSaveMigrator = { }, }; -export const sessionMigrators: Readonly = [migratePartyData] as const; +export const sessionMigrators: readonly SessionSaveMigrator[] = [migratePartyData] as const; diff --git a/src/system/voucher.ts b/src/system/voucher.ts index ce10560c3e2..79e95f0b07b 100644 --- a/src/system/voucher.ts +++ b/src/system/voucher.ts @@ -1,9 +1,9 @@ -import i18next from "i18next"; -import { AchvTier, achvs, getAchievementDescription } from "./achv"; import type { PlayerGender } from "#enums/player-gender"; import { TrainerType } from "#enums/trainer-type"; -import type { ConditionFn } from "#app/@types/common"; -import { trainerConfigs } from "#app/data/trainers/trainer-config"; +import { AchvTier, achvs, getAchievementDescription } from "#system/achv"; +import { trainerConfigs } from "#trainers/trainer-config"; +import type { ConditionFn } from "#types/common"; +import i18next from "i18next"; export enum VoucherType { REGULAR, diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index f73c6dab1b2..02cb7fe8e0d 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -1,15 +1,15 @@ import { globalScene } from "#app/global-scene"; -import { TextStyle, addTextObject } from "#app/ui/text"; -import type { nil } from "#app/utils/common"; -import { isNullOrUndefined } from "#app/utils/common"; -import i18next from "i18next"; -import { SpeciesId } from "#enums/species-id"; -import type { WeatherPoolEntry } from "#app/data/weather"; -import { WeatherType } from "#enums/weather-type"; -import { CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER } from "./data/balance/starters"; -import { MysteryEncounterType } from "./enums/mystery-encounter-type"; -import { MysteryEncounterTier } from "./enums/mystery-encounter-tier"; +import { CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER } from "#balance/starters"; +import type { WeatherPoolEntry } from "#data/weather"; 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 { WeatherType } from "#enums/weather-type"; +import { addTextObject, TextStyle } from "#ui/text"; +import type { nil } from "#utils/common"; +import { isNullOrUndefined } from "#utils/common"; +import i18next from "i18next"; export enum EventType { SHINY, diff --git a/src/touch-controls.ts b/src/touch-controls.ts index 5319976648f..faee9ea232e 100644 --- a/src/touch-controls.ts +++ b/src/touch-controls.ts @@ -1,11 +1,11 @@ import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; -import EventEmitter = Phaser.Events.EventEmitter; +import type Phaser from "phaser"; const repeatInputDelayMillis = 250; -export default class TouchControl { - events: EventEmitter; +export class TouchControl { + events: Phaser.Events.EventEmitter; private buttonLock: string[] = []; private inputInterval: NodeJS.Timeout[] = []; /** Whether touch controls are disabled */ diff --git a/src/tutorial.ts b/src/tutorial.ts index d9ae3a03290..018d0927da0 100644 --- a/src/tutorial.ts +++ b/src/tutorial.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import AwaitableUiHandler from "./ui/awaitable-ui-handler"; -import type UiHandler from "./ui/ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import i18next from "i18next"; import Overrides from "#app/overrides"; +import { UiMode } from "#enums/ui-mode"; +import { AwaitableUiHandler } from "#ui/awaitable-ui-handler"; +import type { UiHandler } from "#ui/ui-handler"; +import i18next from "i18next"; export enum Tutorial { Intro = "INTRO", diff --git a/src/@types/i18next.d.ts b/src/typings/i18next.d.ts similarity index 100% rename from src/@types/i18next.d.ts rename to src/typings/i18next.d.ts diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts index f7a97ec673c..71c5ac1049e 100644 --- a/src/ui-inputs.ts +++ b/src/ui-inputs.ts @@ -1,19 +1,19 @@ -import type Phaser from "phaser"; -import { UiMode } from "#enums/ui-mode"; -import type { InputsController } from "./inputs-controller"; -import type MessageUiHandler from "./ui/message-ui-handler"; -import StarterSelectUiHandler from "./ui/starter-select-ui-handler"; -import { Setting, SettingKeys, settingIndex } from "./system/settings/settings"; -import SettingsUiHandler from "./ui/settings/settings-ui-handler"; -import { Button } from "#enums/buttons"; -import SettingsGamepadUiHandler from "./ui/settings/settings-gamepad-ui-handler"; -import SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-handler"; import { globalScene } from "#app/global-scene"; -import SettingsDisplayUiHandler from "./ui/settings/settings-display-ui-handler"; -import SettingsAudioUiHandler from "./ui/settings/settings-audio-ui-handler"; -import RunInfoUiHandler from "./ui/run-info-ui-handler"; -import PokedexUiHandler from "./ui/pokedex-ui-handler"; -import PokedexPageUiHandler from "./ui/pokedex-page-ui-handler"; +import type { InputsController } from "#app/inputs-controller"; +import { Button } from "#enums/buttons"; +import { UiMode } from "#enums/ui-mode"; +import { Setting, SettingKeys, settingIndex } from "#system/settings"; +import type { MessageUiHandler } from "#ui/message-ui-handler"; +import { PokedexPageUiHandler } from "#ui/pokedex-page-ui-handler"; +import { PokedexUiHandler } from "#ui/pokedex-ui-handler"; +import { RunInfoUiHandler } from "#ui/run-info-ui-handler"; +import { SettingsAudioUiHandler } from "#ui/settings-audio-ui-handler"; +import { SettingsDisplayUiHandler } from "#ui/settings-display-ui-handler"; +import { SettingsGamepadUiHandler } from "#ui/settings-gamepad-ui-handler"; +import { SettingsKeyboardUiHandler } from "#ui/settings-keyboard-ui-handler"; +import { SettingsUiHandler } from "#ui/settings-ui-handler"; +import { StarterSelectUiHandler } from "#ui/starter-select-ui-handler"; +import type Phaser from "phaser"; type ActionKeys = Record void>; diff --git a/src/ui/ability-bar.ts b/src/ui/ability-bar.ts index 5481791de64..79a68e9dce7 100644 --- a/src/ui/ability-bar.ts +++ b/src/ui/ability-bar.ts @@ -1,12 +1,12 @@ import { globalScene } from "#app/global-scene"; -import { TextStyle, addTextObject } from "./text"; +import { addTextObject, TextStyle } from "#ui/text"; import i18next from "i18next"; const barWidth = 118; const screenLeft = 0; const baseY = -116; -export default class AbilityBar extends Phaser.GameObjects.Container { +export class AbilityBar extends Phaser.GameObjects.Container { private abilityBars: Phaser.GameObjects.Image[]; private abilityBarText: Phaser.GameObjects.Text; private player: boolean; diff --git a/src/ui/abstact-option-select-ui-handler.ts b/src/ui/abstact-option-select-ui-handler.ts index e1263bc088c..d93ad8b7665 100644 --- a/src/ui/abstact-option-select-ui-handler.ts +++ b/src/ui/abstact-option-select-ui-handler.ts @@ -1,11 +1,11 @@ import { globalScene } from "#app/global-scene"; -import { TextStyle, addBBCodeTextObject, getTextColor, getTextStyleOptions } from "./text"; -import { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; -import { addWindow } from "./ui-theme"; -import { rgbHexToRgba, fixedInt } from "#app/utils/common"; -import { argbFromRgba } from "@material/material-color-utilities"; import { Button } from "#enums/buttons"; +import { UiMode } from "#enums/ui-mode"; +import { addBBCodeTextObject, getTextColor, getTextStyleOptions, TextStyle } from "#ui/text"; +import { UiHandler } from "#ui/ui-handler"; +import { addWindow } from "#ui/ui-theme"; +import { fixedInt, rgbHexToRgba } from "#utils/common"; +import { argbFromRgba } from "@material/material-color-utilities"; import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; export interface OptionSelectConfig { @@ -33,7 +33,7 @@ export interface OptionSelectItem { const scrollUpLabel = "↑"; const scrollDownLabel = "↓"; -export default abstract class AbstractOptionSelectUiHandler extends UiHandler { +export abstract class AbstractOptionSelectUiHandler extends UiHandler { protected optionSelectContainer: Phaser.GameObjects.Container; protected optionSelectTextContainer: Phaser.GameObjects.Container; protected optionSelectBg: Phaser.GameObjects.NineSlice; diff --git a/src/ui/achv-bar.ts b/src/ui/achv-bar.ts index 1e068157afa..8e0f2a9404b 100644 --- a/src/ui/achv-bar.ts +++ b/src/ui/achv-bar.ts @@ -1,10 +1,10 @@ import { globalScene } from "#app/global-scene"; -import { Achv, getAchievementDescription } from "../system/achv"; -import { Voucher } from "../system/voucher"; -import { TextStyle, addTextObject } from "./text"; import type { PlayerGender } from "#enums/player-gender"; +import { Achv, getAchievementDescription } from "#system/achv"; +import { Voucher } from "#system/voucher"; +import { addTextObject, TextStyle } from "#ui/text"; -export default class AchvBar extends Phaser.GameObjects.Container { +export class AchvBar extends Phaser.GameObjects.Container { private defaultWidth: number; private defaultHeight: number; diff --git a/src/ui/achvs-ui-handler.ts b/src/ui/achvs-ui-handler.ts index 8588530d370..6b247f6da96 100644 --- a/src/ui/achvs-ui-handler.ts +++ b/src/ui/achvs-ui-handler.ts @@ -1,17 +1,17 @@ -import { Button } from "#enums/buttons"; -import i18next from "i18next"; -import type { Achv } from "#app/system/achv"; -import { achvs, getAchievementDescription } from "#app/system/achv"; -import type { Voucher } from "#app/system/voucher"; -import { getVoucherTypeIcon, getVoucherTypeName, vouchers } from "#app/system/voucher"; -import MessageUiHandler from "#app/ui/message-ui-handler"; -import { addTextObject, TextStyle } from "#app/ui/text"; -import type { UiMode } from "#enums/ui-mode"; -import { addWindow } from "#app/ui/ui-theme"; -import { ScrollBar } from "#app/ui/scroll-bar"; -import { PlayerGender } from "#enums/player-gender"; import { globalScene } from "#app/global-scene"; -import type { AchvUnlocks, VoucherUnlocks } from "#app/system/game-data"; +import { Button } from "#enums/buttons"; +import { PlayerGender } from "#enums/player-gender"; +import type { UiMode } from "#enums/ui-mode"; +import type { Achv } from "#system/achv"; +import { achvs, getAchievementDescription } from "#system/achv"; +import type { AchvUnlocks, VoucherUnlocks } from "#system/game-data"; +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 { addWindow } from "#ui/ui-theme"; +import i18next from "i18next"; const Page = { ACHIEVEMENTS: 0, @@ -27,7 +27,7 @@ const languageSettings: { [key: string]: LanguageSetting } = { de: { TextSize: "80px" }, }; -export default class AchvsUiHandler extends MessageUiHandler { +export class AchvsUiHandler extends MessageUiHandler { private readonly ROWS = 4; private readonly COLS = 17; @@ -81,7 +81,7 @@ export default class AchvsUiHandler extends MessageUiHandler { this.headerBg = addWindow(0, 0, WIDTH - 2, 24); - this.headerText = addTextObject(0, 0, "", TextStyle.SETTINGS_LABEL) + this.headerText = addTextObject(0, 0, "", TextStyle.HEADER_LABEL) .setOrigin(0) .setPositionRelative(this.headerBg, 8, 4); this.headerActionButton = new Phaser.GameObjects.Sprite(globalScene, 0, 0, "keyboard", "ACTION.png") diff --git a/src/ui/admin-ui-handler.ts b/src/ui/admin-ui-handler.ts index c8c8e43802b..3d0a1153127 100644 --- a/src/ui/admin-ui-handler.ts +++ b/src/ui/admin-ui-handler.ts @@ -1,17 +1,17 @@ -import { Button } from "#app/enums/buttons"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import { formatText } from "#app/utils/common"; -import type { InputFieldConfig } from "./form-modal-ui-handler"; -import { FormModalUiHandler } from "./form-modal-ui-handler"; -import type { ModalConfig } from "./modal-ui-handler"; -import { TextStyle } from "./text"; -import { UiMode } from "#enums/ui-mode"; +import { pokerogueApi } from "#api/pokerogue-api"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +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"; type AdminUiHandlerService = "discord" | "google"; type AdminUiHandlerServiceMode = "Link" | "Unlink"; -export default class AdminUiHandler extends FormModalUiHandler { +export class AdminUiHandler extends FormModalUiHandler { private adminMode: AdminMode; private adminResult: AdminSearchInfo; private config: ModalConfig; diff --git a/src/ui/arena-flyout.ts b/src/ui/arena-flyout.ts index fec02ffb660..43cc553d936 100644 --- a/src/ui/arena-flyout.ts +++ b/src/ui/arena-flyout.ts @@ -1,23 +1,23 @@ -import { addTextObject, TextStyle } from "./text"; import { globalScene } from "#app/global-scene"; -import { ArenaTrapTag } from "#app/data/arena-tag"; +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 { WeatherType } from "#enums/weather-type"; -import { TerrainType } from "#app/data/terrain"; -import { addWindow, WindowVariant } from "./ui-theme"; -import type { ArenaEvent } from "#app/events/arena"; +import type { ArenaEvent } from "#events/arena"; import { ArenaEventType, TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEvent, -} from "#app/events/arena"; -import type { TurnEndEvent } from "../events/battle-scene"; -import { BattleSceneEventType } from "../events/battle-scene"; -import { ArenaTagType } from "#enums/arena-tag-type"; -import TimeOfDayWidget from "./time-of-day-widget"; -import { toCamelCaseString, formatText, fixedInt } from "#app/utils/common"; +} from "#events/arena"; +import type { TurnEndEvent } from "#events/battle-scene"; +import { BattleSceneEventType } from "#events/battle-scene"; +import { addTextObject, TextStyle } 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 type { ParseKeys } from "i18next"; import i18next from "i18next"; diff --git a/src/ui/autocomplete-ui-handler.ts b/src/ui/autocomplete-ui-handler.ts index ba1802c8582..6016245c38d 100644 --- a/src/ui/autocomplete-ui-handler.ts +++ b/src/ui/autocomplete-ui-handler.ts @@ -1,8 +1,8 @@ import { Button } from "#enums/buttons"; -import AbstractOptionSelectUiHandler from "./abstact-option-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; +import { AbstractOptionSelectUiHandler } from "#ui/abstact-option-select-ui-handler"; -export default class AutoCompleteUiHandler extends AbstractOptionSelectUiHandler { +export class AutoCompleteUiHandler extends AbstractOptionSelectUiHandler { modalContainer: Phaser.GameObjects.Container; constructor(mode: UiMode = UiMode.OPTION_SELECT) { super(mode); diff --git a/src/ui/awaitable-ui-handler.ts b/src/ui/awaitable-ui-handler.ts index 3c577fd4411..e8513b4acc1 100644 --- a/src/ui/awaitable-ui-handler.ts +++ b/src/ui/awaitable-ui-handler.ts @@ -1,9 +1,9 @@ -import type { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; -import { Button } from "#enums/buttons"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +import type { UiMode } from "#enums/ui-mode"; +import { UiHandler } from "#ui/ui-handler"; -export default abstract class AwaitableUiHandler extends UiHandler { +export abstract class AwaitableUiHandler extends UiHandler { protected awaitingActionInput: boolean; protected onActionInput: Function | null; public tutorialActive = false; diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index 11fb485164a..bde340e3cf7 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -1,15 +1,15 @@ -import { getPokeballName } from "../data/pokeball"; -import { addTextObject, getTextStyleOptions, TextStyle } from "./text"; +import { globalScene } from "#app/global-scene"; +import { getPokeballName } from "#data/pokeball"; +import { Button } from "#enums/buttons"; import { Command } from "#enums/command"; import { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; -import { addWindow } from "./ui-theme"; -import { Button } from "#enums/buttons"; -import type { CommandPhase } from "#app/phases/command-phase"; -import { globalScene } from "#app/global-scene"; +import type { CommandPhase } from "#phases/command-phase"; +import { addTextObject, getTextStyleOptions, TextStyle } from "#ui/text"; +import { UiHandler } from "#ui/ui-handler"; +import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; -export default class BallUiHandler extends UiHandler { +export class BallUiHandler extends UiHandler { private pokeballSelectContainer: Phaser.GameObjects.Container; private pokeballSelectBg: Phaser.GameObjects.NineSlice; private countsText: Phaser.GameObjects.Text; @@ -115,7 +115,7 @@ export default class BallUiHandler extends UiHandler { updateCounts() { this.countsText.setText( Object.values(globalScene.pokeballCounts) - .map(c => `x${c}`) + .map(c => `×${c}`) .join("\n"), ); } diff --git a/src/ui/base-stats-overlay.ts b/src/ui/base-stats-overlay.ts index 0541ae766e5..888b87a8d11 100644 --- a/src/ui/base-stats-overlay.ts +++ b/src/ui/base-stats-overlay.ts @@ -1,9 +1,9 @@ -import type { InfoToggle } from "../battle-scene"; -import { TextStyle, addTextObject } from "./text"; -import { addWindow } from "./ui-theme"; -import { fixedInt } from "#app/utils/common"; -import i18next from "i18next"; +import type { InfoToggle } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; +import { addTextObject, TextStyle } from "#ui/text"; +import { addWindow } from "#ui/ui-theme"; +import { fixedInt } from "#utils/common"; +import i18next from "i18next"; interface BaseStatsOverlaySettings { scale?: number; // scale the box? A scale of 0.5 is recommended diff --git a/src/ui/battle-flyout.ts b/src/ui/battle-flyout.ts index 6f8f6a76b34..083dc7bbf19 100644 --- a/src/ui/battle-flyout.ts +++ b/src/ui/battle-flyout.ts @@ -1,14 +1,14 @@ -import type { EnemyPokemon, default as Pokemon } from "../field/pokemon"; -import { addTextObject, TextStyle } from "./text"; -import { fixedInt } from "#app/utils/common"; import { globalScene } from "#app/global-scene"; -import type Move from "#app/data/moves/move"; -import type { BerryUsedEvent, MoveUsedEvent } from "../events/battle-scene"; -import { BattleSceneEventType } from "../events/battle-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; import { BerryType } from "#enums/berry-type"; import { MoveId } from "#enums/move-id"; import { UiTheme } from "#enums/ui-theme"; -import { getPokemonNameWithAffix } from "#app/messages"; +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 { fixedInt } from "#utils/common"; /** Container for info about a {@linkcode Move} */ interface MoveInfo { @@ -22,7 +22,7 @@ interface MoveInfo { } /** A Flyout Menu attached to each {@linkcode BattleInfo} object on the field UI */ -export default class BattleFlyout extends Phaser.GameObjects.Container { +export class BattleFlyout extends Phaser.GameObjects.Container { /** Is this object linked to a player's Pokemon? */ private player: boolean; diff --git a/src/ui/battle-info/battle-info.ts b/src/ui/battle-info/battle-info.ts index e67000bb243..4a2a6d1804d 100644 --- a/src/ui/battle-info/battle-info.ts +++ b/src/ui/battle-info/battle-info.ts @@ -1,13 +1,13 @@ -import type { default as Pokemon } from "../../field/pokemon"; -import { getLocalizedSpriteKey, fixedInt, getShinyDescriptor } from "#app/utils/common"; -import { addTextObject, TextStyle } from "../text"; -import { getGenderSymbol, getGenderColor, Gender } from "../../data/gender"; -import { StatusEffect } from "#enums/status-effect"; import { globalScene } from "#app/global-scene"; -import { getTypeRgb } from "#app/data/type"; +import { Gender, getGenderColor, getGenderSymbol } from "#data/gender"; +import { getTypeRgb } from "#data/type"; import { PokemonType } from "#enums/pokemon-type"; -import { getVariantTint } from "#app/sprites/variant"; import { Stat } from "#enums/stat"; +import { StatusEffect } from "#enums/status-effect"; +import type { Pokemon } from "#field/pokemon"; +import { getVariantTint } from "#sprites/variant"; +import { addTextObject, TextStyle } from "#ui/text"; +import { fixedInt, getLocalizedSpriteKey, getShinyDescriptor } from "#utils/common"; import i18next from "i18next"; /** @@ -37,7 +37,7 @@ export type BattleInfoParamList = { }; }; -export default abstract class BattleInfo extends Phaser.GameObjects.Container { +export abstract class BattleInfo extends Phaser.GameObjects.Container { public static readonly EXP_GAINS_DURATION_BASE = 1650; protected baseY: number; diff --git a/src/ui/battle-info/enemy-battle-info.ts b/src/ui/battle-info/enemy-battle-info.ts index 7c16f01ac38..5799fb476ef 100644 --- a/src/ui/battle-info/enemy-battle-info.ts +++ b/src/ui/battle-info/enemy-battle-info.ts @@ -1,13 +1,13 @@ import { globalScene } from "#app/global-scene"; -import BattleFlyout from "../battle-flyout"; -import { addTextObject, TextStyle } from "#app/ui/text"; -import { addWindow, WindowVariant } from "#app/ui/ui-theme"; import { Stat } from "#enums/stat"; +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 { addWindow, WindowVariant } from "#ui/ui-theme"; import i18next from "i18next"; -import type { EnemyPokemon } from "#app/field/pokemon"; import type { GameObjects } from "phaser"; -import BattleInfo from "./battle-info"; -import type { BattleInfoParamList } from "./battle-info"; export class EnemyBattleInfo extends BattleInfo { protected player: false = false; diff --git a/src/ui/battle-info/player-battle-info.ts b/src/ui/battle-info/player-battle-info.ts index 634f89b7922..62a2eddecb9 100644 --- a/src/ui/battle-info/player-battle-info.ts +++ b/src/ui/battle-info/player-battle-info.ts @@ -1,10 +1,10 @@ -import { getLevelRelExp, getLevelTotalExp } from "#app/data/exp"; -import type { PlayerPokemon } from "#app/field/pokemon"; import { globalScene } from "#app/global-scene"; +import { getLevelRelExp, getLevelTotalExp } from "#data/exp"; import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { Stat } from "#enums/stat"; -import BattleInfo from "./battle-info"; -import type { BattleInfoParamList } from "./battle-info"; +import type { PlayerPokemon } from "#field/pokemon"; +import type { BattleInfoParamList } from "#ui/battle-info"; +import { BattleInfo } from "#ui/battle-info"; export class PlayerBattleInfo extends BattleInfo { protected player: true = true; diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts index d1102bbe53e..bd524f0bb43 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -1,14 +1,14 @@ import { globalScene } from "#app/global-scene"; -import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text"; -import { UiMode } from "#enums/ui-mode"; -import MessageUiHandler from "./message-ui-handler"; -import { addWindow } from "./ui-theme"; -import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { Button } from "#enums/buttons"; +import { getStatKey, PERMANENT_STATS } from "#enums/stat"; +import { UiMode } from "#enums/ui-mode"; +import { MessageUiHandler } from "#ui/message-ui-handler"; +import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#ui/text"; +import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; -import { PERMANENT_STATS, getStatKey } from "#app/enums/stat"; +import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -export default class BattleMessageUiHandler extends MessageUiHandler { +export class BattleMessageUiHandler extends MessageUiHandler { private levelUpStatsContainer: Phaser.GameObjects.Container; private levelUpStatsIncrContent: Phaser.GameObjects.Text; private levelUpStatsValuesContent: BBCodeText; @@ -96,7 +96,6 @@ export default class BattleMessageUiHandler extends MessageUiHandler { const levelUpStatsLabelsContent = addTextObject(globalScene.game.canvas.width / 6 - 73, -94, "", TextStyle.WINDOW, { maxLines: 6, }); - levelUpStatsLabelsContent.setLineSpacing(i18next.resolvedLanguage === "ja" ? 25 : 5); let levelUpStatsLabelText = ""; for (const s of PERMANENT_STATS) { @@ -123,7 +122,6 @@ export default class BattleMessageUiHandler extends MessageUiHandler { TextStyle.WINDOW, { maxLines: 6 }, ); - levelUpStatsIncrContent.setLineSpacing(i18next.resolvedLanguage === "ja" ? 25 : 5); levelUpStatsContainer.add(levelUpStatsIncrContent); this.levelUpStatsIncrContent = levelUpStatsIncrContent; @@ -135,7 +133,6 @@ export default class BattleMessageUiHandler extends MessageUiHandler { TextStyle.WINDOW, { maxLines: 6, lineSpacing: 5 }, ); - levelUpStatsValuesContent.setLineSpacing(i18next.resolvedLanguage === "ja" ? 25 : 5); levelUpStatsValuesContent.setOrigin(1, 0); levelUpStatsValuesContent.setAlign("right"); levelUpStatsContainer.add(levelUpStatsValuesContent); diff --git a/src/ui/bgm-bar.ts b/src/ui/bgm-bar.ts index e331d82f6d9..d8b6bbe8b8a 100644 --- a/src/ui/bgm-bar.ts +++ b/src/ui/bgm-bar.ts @@ -1,13 +1,13 @@ -import { addTextObject, TextStyle } from "./text"; -import i18next from "i18next"; -import { formatText } from "#app/utils/common"; import { globalScene } from "#app/global-scene"; +import { addTextObject, TextStyle } from "#ui/text"; +import { formatText } from "#utils/common"; +import i18next from "i18next"; const hiddenX = -150; const shownX = 0; const baseY = 0; -export default class BgmBar extends Phaser.GameObjects.Container { +export class BgmBar extends Phaser.GameObjects.Container { private defaultWidth: number; private defaultHeight: number; diff --git a/src/ui/candy-bar.ts b/src/ui/candy-bar.ts index 189a418eec8..ea3500d6c4c 100644 --- a/src/ui/candy-bar.ts +++ b/src/ui/candy-bar.ts @@ -1,11 +1,11 @@ -import { starterColors } from "#app/global-vars/starter-colors"; import { globalScene } from "#app/global-scene"; -import { TextStyle, addTextObject } from "./text"; -import { argbFromRgba } from "@material/material-color-utilities"; -import { rgbHexToRgba } from "#app/utils/common"; +import { starterColors } from "#app/global-vars/starter-colors"; import type { SpeciesId } from "#enums/species-id"; +import { addTextObject, TextStyle } from "#ui/text"; +import { rgbHexToRgba } from "#utils/common"; +import { argbFromRgba } from "@material/material-color-utilities"; -export default class CandyBar extends Phaser.GameObjects.Container { +export class CandyBar extends Phaser.GameObjects.Container { private bg: Phaser.GameObjects.NineSlice; private candyIcon: Phaser.GameObjects.Sprite; private candyOverlayIcon: Phaser.GameObjects.Sprite; diff --git a/src/ui/challenges-select-ui-handler.ts b/src/ui/challenges-select-ui-handler.ts index b02bf4abaef..a827cddc9a7 100644 --- a/src/ui/challenges-select-ui-handler.ts +++ b/src/ui/challenges-select-ui-handler.ts @@ -1,20 +1,20 @@ -import { TextStyle, addTextObject } from "./text"; -import type { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; -import { addWindow } from "./ui-theme"; -import { Button } from "#enums/buttons"; -import i18next from "i18next"; -import type { Challenge } from "#app/data/challenge"; -import { getLocalizedSpriteKey } from "#app/utils/common"; -import { Challenges } from "#app/enums/challenges"; -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import { Color, ShadowColor } from "#app/enums/color"; import { globalScene } from "#app/global-scene"; +import type { Challenge } from "#data/challenge"; +import { Button } from "#enums/buttons"; +import { Challenges } from "#enums/challenges"; +import { Color, ShadowColor } from "#enums/color"; +import type { UiMode } from "#enums/ui-mode"; +import { addTextObject, TextStyle } from "#ui/text"; +import { UiHandler } from "#ui/ui-handler"; +import { addWindow } from "#ui/ui-theme"; +import { getLocalizedSpriteKey } from "#utils/common"; +import i18next from "i18next"; +import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; /** * Handles all the UI for choosing optional challenges. */ -export default class GameChallengesUiHandler extends UiHandler { +export class GameChallengesUiHandler extends UiHandler { private challengesContainer: Phaser.GameObjects.Container; private valuesContainer: Phaser.GameObjects.Container; @@ -82,7 +82,7 @@ export default class GameChallengesUiHandler extends UiHandler { headerBg.setName("window-header-bg"); headerBg.setOrigin(0, 0); - const headerText = addTextObject(0, 0, i18next.t("challenges:title"), TextStyle.SETTINGS_LABEL); + const headerText = addTextObject(0, 0, i18next.t("challenges:title"), TextStyle.HEADER_LABEL); headerText.setName("text-header"); headerText.setOrigin(0, 0); headerText.setPositionRelative(headerBg, 8, 4); diff --git a/src/ui/char-sprite.ts b/src/ui/char-sprite.ts index a8451f4bb9c..381421086ff 100644 --- a/src/ui/char-sprite.ts +++ b/src/ui/char-sprite.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; -import { MissingTextureKey } from "#app/utils/common"; +import { MissingTextureKey } from "#utils/common"; -export default class CharSprite extends Phaser.GameObjects.Container { +export class CharSprite extends Phaser.GameObjects.Container { private sprite: Phaser.GameObjects.Sprite; private transitionSprite: Phaser.GameObjects.Sprite; diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index 8df399b6d9b..2e4acfb7c42 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -1,19 +1,19 @@ -import { addTextObject, TextStyle } from "./text"; -import PartyUiHandler, { PartyUiMode } from "./party-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; -import i18next from "i18next"; -import { Button } from "#enums/buttons"; -import { getPokemonNameWithAffix } from "#app/messages"; -import type { CommandPhase } from "#app/phases/command-phase"; import { globalScene } from "#app/global-scene"; -import { TerastallizeAccessModifier } from "#app/modifier/modifier"; -import { PokemonType } from "#enums/pokemon-type"; -import { getTypeRgb } from "#app/data/type"; -import { SpeciesId } from "#enums/species-id"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { getTypeRgb } from "#data/type"; +import { Button } from "#enums/buttons"; import { Command } from "#enums/command"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +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 { UiHandler } from "#ui/ui-handler"; +import i18next from "i18next"; -export default class CommandUiHandler extends UiHandler { +export class CommandUiHandler extends UiHandler { private commandsContainer: Phaser.GameObjects.Container; private cursorObj: Phaser.GameObjects.Image | null; @@ -53,7 +53,12 @@ export default class CommandUiHandler extends UiHandler { this.commandsContainer.add(this.teraButton); for (let c = 0; c < commands.length; c++) { - const commandText = addTextObject(c % 2 === 0 ? 0 : 55.8, c < 2 ? 0 : 16, commands[c], TextStyle.WINDOW); + const commandText = addTextObject( + c % 2 === 0 ? 0 : 55.8, + c < 2 ? 0 : 16, + commands[c], + TextStyle.WINDOW_BATTLE_COMMAND, + ); commandText.setName(commands[c]); this.commandsContainer.add(commandText); } diff --git a/src/ui/confirm-ui-handler.ts b/src/ui/confirm-ui-handler.ts index 7b5ca3d7e63..b2f35931278 100644 --- a/src/ui/confirm-ui-handler.ts +++ b/src/ui/confirm-ui-handler.ts @@ -1,11 +1,11 @@ -import type { OptionSelectConfig } from "./abstact-option-select-ui-handler"; -import AbstractOptionSelectUiHandler from "./abstact-option-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import i18next from "i18next"; -import { Button } from "#enums/buttons"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +import { UiMode } from "#enums/ui-mode"; +import type { OptionSelectConfig } from "#ui/abstact-option-select-ui-handler"; +import { AbstractOptionSelectUiHandler } from "#ui/abstact-option-select-ui-handler"; +import i18next from "i18next"; -export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { +export class ConfirmUiHandler extends AbstractOptionSelectUiHandler { public static readonly windowWidth: number = 48; private switchCheck: boolean; diff --git a/src/ui/daily-run-scoreboard.ts b/src/ui/daily-run-scoreboard.ts index c069c6fffd7..dcd45b40390 100644 --- a/src/ui/daily-run-scoreboard.ts +++ b/src/ui/daily-run-scoreboard.ts @@ -1,9 +1,10 @@ -import i18next from "i18next"; +import { pokerogueApi } from "#api/pokerogue-api"; import { globalScene } from "#app/global-scene"; -import { getEnumKeys, executeIf } from "#app/utils/common"; -import { TextStyle, addTextObject } from "./text"; -import { WindowVariant, addWindow } from "./ui-theme"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +import { addTextObject, TextStyle } from "#ui/text"; +import { addWindow, WindowVariant } from "#ui/ui-theme"; +import { executeIf } from "#utils/common"; +import { getEnumKeys } from "#utils/enums"; +import i18next from "i18next"; export interface RankingEntry { rank: number; diff --git a/src/ui/dropdown.ts b/src/ui/dropdown.ts index 2cbd1f0dfa9..2a100ddbe59 100644 --- a/src/ui/dropdown.ts +++ b/src/ui/dropdown.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; -import { addTextObject, TextStyle } from "./text"; -import { addWindow, WindowVariant } from "./ui-theme"; -import { ScrollBar } from "#app/ui/scroll-bar"; +import { ScrollBar } from "#ui/scroll-bar"; +import { addTextObject, TextStyle } from "#ui/text"; +import { addWindow, WindowVariant } from "#ui/ui-theme"; import i18next from "i18next"; export enum DropDownState { diff --git a/src/ui/egg-counter-container.ts b/src/ui/egg-counter-container.ts index 7bb32189681..ff536228fde 100644 --- a/src/ui/egg-counter-container.ts +++ b/src/ui/egg-counter-container.ts @@ -1,15 +1,15 @@ import { globalScene } from "#app/global-scene"; -import { addWindow } from "./ui-theme"; -import { addTextObject, TextStyle } from "./text"; -import type { EggCountChangedEvent } from "#app/events/egg"; -import { EggEventType } from "#app/events/egg"; -import type EggHatchSceneHandler from "./egg-hatch-scene-handler"; +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 { addWindow } from "#ui/ui-theme"; /** * A container that displays the count of hatching eggs. * @extends Phaser.GameObjects.Container */ -export default class EggCounterContainer extends Phaser.GameObjects.Container { +export class EggCounterContainer extends Phaser.GameObjects.Container { private readonly WINDOW_DEFAULT_WIDTH = 37; private readonly WINDOW_MEDIUM_WIDTH = 42; private readonly WINDOW_HEIGHT = 26; diff --git a/src/ui/egg-gacha-ui-handler.ts b/src/ui/egg-gacha-ui-handler.ts index 7ff3a1b65ee..19d1efa75dd 100644 --- a/src/ui/egg-gacha-ui-handler.ts +++ b/src/ui/egg-gacha-ui-handler.ts @@ -1,21 +1,22 @@ -import { UiMode } from "#enums/ui-mode"; -import { TextStyle, addTextObject, getEggTierTextTint, getTextStyleOptions } from "./text"; -import MessageUiHandler from "./message-ui-handler"; -import { getEnumValues, getEnumKeys, fixedInt, randSeedShuffle } from "#app/utils/common"; -import type { IEggOptions } from "../data/egg"; -import { Egg, getLegendaryGachaSpeciesForTimestamp } from "../data/egg"; -import { VoucherType, getVoucherTypeIcon } from "../system/voucher"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { addWindow } from "./ui-theme"; -import { Tutorial, handleTutorial } from "../tutorial"; -import { Button } from "#enums/buttons"; -import Overrides from "#app/overrides"; -import { GachaType } from "#app/enums/gacha-types"; -import i18next from "i18next"; -import { EggTier } from "#enums/egg-type"; import { globalScene } from "#app/global-scene"; +import Overrides from "#app/overrides"; +import { handleTutorial, Tutorial } from "#app/tutorial"; +import type { IEggOptions } from "#data/egg"; +import { Egg, getLegendaryGachaSpeciesForTimestamp } from "#data/egg"; +import { Button } from "#enums/buttons"; +import { EggTier } from "#enums/egg-type"; +import { GachaType } from "#enums/gacha-types"; +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 { addWindow } from "#ui/ui-theme"; +import { fixedInt, randSeedShuffle } from "#utils/common"; +import { getEnumValues } from "#utils/enums"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import i18next from "i18next"; -export default class EggGachaUiHandler extends MessageUiHandler { +export class EggGachaUiHandler extends MessageUiHandler { private eggGachaContainer: Phaser.GameObjects.Container; private eggGachaMessageBox: Phaser.GameObjects.NineSlice; private eggGachaOptionsContainer: Phaser.GameObjects.Container; @@ -38,6 +39,9 @@ export default class EggGachaUiHandler extends MessageUiHandler { private summaryFinished: boolean; private defaultText: string; + /** The tween chain playing the egg drop animation sequence */ + private eggDropTweenChain?: Phaser.Tweens.TweenChain; + private scale = 0.1666666667; private legendaryExpiration = addTextObject(0, 0, "", TextStyle.WINDOW_ALT); @@ -55,18 +59,124 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.defaultText = i18next.t("egg:selectMachine"); } + private setupGachaType(key: keyof typeof GachaType, gachaType: GachaType): void { + const gachaTypeKey = key.toLowerCase(); + const gachaContainer = globalScene.add.container(180 * gachaType, 18); + + const gacha = globalScene.add.sprite(0, 0, `gacha_${gachaTypeKey}`).setOrigin(0); + + const gachaUnderlay = globalScene.add.sprite(115, 80, `gacha_underlay_${gachaTypeKey}`).setOrigin(0); + + const gachaEggs = globalScene.add.sprite(0, 0, "gacha_eggs").setOrigin(0); + + const gachaGlass = globalScene.add.sprite(0, 0, "gacha_glass").setOrigin(0); + + const gachaInfoContainer = globalScene.add.container(160, 46); + + const currentLanguage = i18next.resolvedLanguage ?? "en"; + let gachaTextStyle = TextStyle.WINDOW_ALT; + let gachaX = 4; + let gachaY = 0; + let pokemonIconX = -20; + let pokemonIconY = 6; + + if (["de", "es-ES", "es-MX", "fr", "ko", "pt-BR", "ja", "ru"].includes(currentLanguage)) { + gachaTextStyle = TextStyle.SMALLER_WINDOW_ALT; + gachaX = 2; + gachaY = 2; + } + + let legendaryLabelX = gachaX; + let legendaryLabelY = gachaY; + if (["de", "es-ES", "es-MX"].includes(currentLanguage)) { + pokemonIconX = -25; + pokemonIconY = 10; + legendaryLabelX = -6; + legendaryLabelY = 0; + } + + const gachaUpLabel = addTextObject(gachaX, gachaY, i18next.t("egg:legendaryUPGacha"), gachaTextStyle).setOrigin(0); + gachaInfoContainer.add(gachaUpLabel); + + switch (gachaType as GachaType) { + case GachaType.LEGENDARY: + { + if (["de", "es-ES"].includes(currentLanguage)) { + gachaUpLabel.setAlign("center"); + } + let xOffset = 0; + const pokemonIcon = globalScene.add.sprite(pokemonIconX, pokemonIconY, "pokemon_icons_0"); + + // Intentionally left as "array includes" instead of an equality check to allow for future languages to reuse + if (["pt-BR"].includes(currentLanguage)) { + xOffset = 2; + pokemonIcon.setX(pokemonIconX - 2); + } + + gachaUpLabel.setX(legendaryLabelX - xOffset).setY(legendaryLabelY); + pokemonIcon.setScale(0.5).setOrigin(0, 0.5); + gachaInfoContainer.add(pokemonIcon); + } + break; + case GachaType.MOVE: + if (["de", "es-ES", "fr", "pt-BR", "ru"].includes(currentLanguage)) { + gachaUpLabel.setAlign("center").setY(0); + } + + gachaUpLabel.setText(i18next.t("egg:moveUPGacha")).setX(0).setOrigin(0.5, 0); + break; + case GachaType.SHINY: + if (["de", "fr", "ko", "ru"].includes(currentLanguage)) { + gachaUpLabel.setAlign("center").setY(0); + } + + gachaUpLabel.setText(i18next.t("egg:shinyUPGacha")).setX(0).setOrigin(0.5, 0); + break; + } + + const gachaKnob = globalScene.add.sprite(191, 89, "gacha_knob"); + + const gachaHatch = globalScene.add.sprite(115, 73, "gacha_hatch"); + gachaHatch.setOrigin(0).setAlpha(0.9); + gachaGlass.setAlpha(0.5); + gachaContainer.add([gachaEggs, gachaUnderlay, gacha, gachaGlass, gachaKnob, gachaHatch, gachaInfoContainer]); + + gachaHatch.on("animationupdate", (_anim, frame) => + gachaUnderlay.setFrame(frame.textureFrame === "4.png" ? "open_hatch" : "default"), + ); + + this.gachaContainers.push(gachaContainer); + this.gachaKnobs.push(gachaKnob); + this.gachaHatches.push(gachaHatch); + this.gachaInfoContainers.push(gachaInfoContainer); + + this.eggGachaContainer.add(gachaContainer); + + if (gachaType === GachaType.LEGENDARY) { + // Expiration timer for the legendary gacha + this.legendaryExpiration + .setText(this.getLegendaryGachaTimeLeft()) + .setFontSize("64px") + .setPositionRelative( + gacha, + gacha.width / 2 - this.legendaryExpiration.displayWidth / 2 + 0.3, + gacha.height / 2 + 12.5, + ); + gachaContainer.add(this.legendaryExpiration); + this.updateLegendaryGacha(); + } + } + setup() { this.gachaCursor = 0; this.scale = getTextStyleOptions(TextStyle.WINDOW, globalScene.uiTheme).scale; const ui = this.getUi(); - this.eggGachaContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); - this.eggGachaContainer.setVisible(false); + this.eggGachaContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6).setVisible(false); ui.add(this.eggGachaContainer); - const bg = globalScene.add.nineslice(0, 0, "default_bg", undefined, 320, 180, 0, 0, 16, 0); - bg.setOrigin(0, 0); + const bg = globalScene.add.nineslice(0, 0, "default_bg", undefined, 320, 180, 0, 0, 16, 0).setOrigin(0); this.eggGachaContainer.add(bg); @@ -86,144 +196,10 @@ export default class EggGachaUiHandler extends MessageUiHandler { }); } - getEnumValues(GachaType).forEach((gachaType, g) => { - const gachaTypeKey = GachaType[gachaType].toString().toLowerCase(); - const gachaContainer = globalScene.add.container(180 * g, 18); + for (const [gachaTypeKey, gachaType] of Object.entries(GachaType)) { + this.setupGachaType(gachaTypeKey as keyof typeof GachaType, gachaType); + } - const gacha = globalScene.add.sprite(0, 0, `gacha_${gachaTypeKey}`); - gacha.setOrigin(0, 0); - - const gachaUnderlay = globalScene.add.sprite(115, 80, `gacha_underlay_${gachaTypeKey}`); - gachaUnderlay.setOrigin(0, 0); - - const gachaEggs = globalScene.add.sprite(0, 0, "gacha_eggs"); - gachaEggs.setOrigin(0, 0); - - const gachaGlass = globalScene.add.sprite(0, 0, "gacha_glass"); - gachaGlass.setOrigin(0, 0); - - const gachaInfoContainer = globalScene.add.container(160, 46); - - const currentLanguage = i18next.resolvedLanguage ?? "en"; - let gachaTextStyle = TextStyle.WINDOW_ALT; - let gachaX = 4; - let gachaY = 0; - let pokemonIconX = -20; - let pokemonIconY = 6; - - if (["de", "es-ES", "es-MX", "fr", "ko", "pt-BR", "ru"].includes(currentLanguage)) { - gachaTextStyle = TextStyle.SMALLER_WINDOW_ALT; - gachaX = 2; - gachaY = 2; - } - - let legendaryLabelX = gachaX; - let legendaryLabelY = gachaY; - if (["de", "es-ES", "es-MX"].includes(currentLanguage)) { - pokemonIconX = -25; - pokemonIconY = 10; - legendaryLabelX = -6; - legendaryLabelY = 0; - } - - const gachaUpLabel = addTextObject(gachaX, gachaY, i18next.t("egg:legendaryUPGacha"), gachaTextStyle); - gachaUpLabel.setOrigin(0, 0); - gachaInfoContainer.add(gachaUpLabel); - - switch (gachaType as GachaType) { - case GachaType.LEGENDARY: { - if (["de", "es-ES"].includes(currentLanguage)) { - gachaUpLabel.setAlign("center"); - gachaUpLabel.setY(0); - } - if (["pt-BR"].includes(currentLanguage)) { - gachaUpLabel.setX(legendaryLabelX - 2); - } else { - gachaUpLabel.setX(legendaryLabelX); - } - gachaUpLabel.setY(legendaryLabelY); - - const pokemonIcon = globalScene.add.sprite(pokemonIconX, pokemonIconY, "pokemon_icons_0"); - if (["pt-BR"].includes(currentLanguage)) { - pokemonIcon.setX(pokemonIconX - 2); - } - pokemonIcon.setScale(0.5); - pokemonIcon.setOrigin(0, 0.5); - - gachaInfoContainer.add(pokemonIcon); - break; - } - case GachaType.MOVE: - if (["de", "es-ES", "fr", "pt-BR", "ru"].includes(currentLanguage)) { - gachaUpLabel.setAlign("center"); - gachaUpLabel.setY(0); - } - - gachaUpLabel.setText(i18next.t("egg:moveUPGacha")); - gachaUpLabel.setX(0); - gachaUpLabel.setOrigin(0.5, 0); - break; - case GachaType.SHINY: - if (["de", "fr", "ko", "ru"].includes(currentLanguage)) { - gachaUpLabel.setAlign("center"); - gachaUpLabel.setY(0); - } - - gachaUpLabel.setText(i18next.t("egg:shinyUPGacha")); - gachaUpLabel.setX(0); - gachaUpLabel.setOrigin(0.5, 0); - break; - } - - const gachaKnob = globalScene.add.sprite(191, 89, "gacha_knob"); - - const gachaHatch = globalScene.add.sprite(115, 73, "gacha_hatch"); - gachaHatch.setOrigin(0, 0); - - gachaContainer.add(gachaEggs); - gachaContainer.add(gachaUnderlay); - gachaContainer.add(gacha); - gachaContainer.add(gachaGlass); - gachaContainer.add(gachaKnob); - gachaContainer.add(gachaHatch); - gachaContainer.add(gachaInfoContainer); - - gachaGlass.setAlpha(0.5); - gachaHatch.setAlpha(0.9); - - gachaHatch.on("animationupdate", (_anim, frame) => - gachaUnderlay.setFrame(frame.textureFrame === "4.png" ? "open_hatch" : "default"), - ); - - this.gachaContainers.push(gachaContainer); - this.gachaKnobs.push(gachaKnob); - this.gachaHatches.push(gachaHatch); - this.gachaInfoContainers.push(gachaInfoContainer); - - this.eggGachaContainer.add(gachaContainer); - - // Expiration timer for the legendary gacha - if (gachaType === GachaType.LEGENDARY) { - this.legendaryExpiration - .setText(this.getLegendaryGachaTimeLeft()) - .setFontSize("64px") - .setPositionRelative( - gacha, - gacha.width / 2 - this.legendaryExpiration.displayWidth / 2 + 0.3, - gacha.height / 2 + 12.5, - ); - gachaContainer.add(this.legendaryExpiration); - } - - this.updateGachaInfo(g); - }); - - this.eggGachaOptionsContainer = globalScene.add.container(); - - this.eggGachaOptionsContainer = globalScene.add.container(globalScene.game.canvas.width / 6, 148); - this.eggGachaContainer.add(this.eggGachaOptionsContainer); - - // Increase egg box width on certain languages let eggGachaOptionSelectWidth = 0; switch (i18next.resolvedLanguage) { case "ru": @@ -233,9 +209,11 @@ export default class EggGachaUiHandler extends MessageUiHandler { eggGachaOptionSelectWidth = 96; } - this.eggGachaOptionSelectBg = addWindow(0, 0, eggGachaOptionSelectWidth, 16 + 576 * this.scale); - this.eggGachaOptionSelectBg.setOrigin(1, 1); - this.eggGachaOptionsContainer.add(this.eggGachaOptionSelectBg); + this.eggGachaOptionSelectBg = addWindow(0, 0, eggGachaOptionSelectWidth, 16 + 576 * this.scale).setOrigin(1); + this.eggGachaOptionsContainer = globalScene.add + .container(globalScene.game.canvas.width / 6, 148) + .add(this.eggGachaOptionSelectBg); + this.eggGachaContainer.add(this.eggGachaOptionsContainer); const multiplierOne = "x1"; const multiplierTen = "x10"; @@ -275,75 +253,66 @@ export default class EggGachaUiHandler extends MessageUiHandler { desc[0] += ["zh", "ko"].includes(resolvedLanguage.substring(0, 2)) ? " " : " "; } if (option.multiplier === multiplierOne) { - desc[0] = " " + desc[0]; + desc[0] += " "; } return ` ${option.multiplier.padEnd(5)}${desc.join(" ")}`; }) .join("\n"); - const optionText = addTextObject(0, 0, `${pullOptionsText}\n${i18next.t("menu:cancel")}`, TextStyle.WINDOW); - - optionText.setLineSpacing(28); - optionText.setFontSize("80px"); + const optionText = addTextObject(0, 0, `${pullOptionsText}\n${i18next.t("menu:cancel")}`, TextStyle.WINDOW) + .setLineSpacing(28) + .setFontSize("80px") + .setPositionRelative(this.eggGachaOptionSelectBg, 16, 9); this.eggGachaOptionsContainer.add(optionText); - optionText.setPositionRelative(this.eggGachaOptionSelectBg, 16, 9); - pullOptions.forEach((option, i) => { - const icon = globalScene.add.sprite(0, 0, "items", option.icon); - icon.setScale(3 * this.scale); - icon.setPositionRelative(this.eggGachaOptionSelectBg, 20, 9 + (48 + i * 96) * this.scale); + const icon = globalScene.add + .sprite(0, 0, "items", option.icon) + .setScale(3 * this.scale) + .setPositionRelative(this.eggGachaOptionSelectBg, 20, 9 + (48 + i * 96) * this.scale); this.eggGachaOptionsContainer.add(icon); }); this.eggGachaContainer.add(this.eggGachaOptionsContainer); - new Array(getEnumKeys(VoucherType).length).fill(null).map((_, i) => { - const container = globalScene.add.container(globalScene.game.canvas.width / 6 - 56 * i, 0); + for (const voucher of getEnumValues(VoucherType)) { + const container = globalScene.add.container(globalScene.game.canvas.width / 6 - 56 * voucher, 0); - const bg = addWindow(0, 0, 56, 22); - bg.setOrigin(1, 0); + const bg = addWindow(0, 0, 56, 22).setOrigin(1, 0); container.add(bg); - const countLabel = addTextObject(-48, 3, "0", TextStyle.WINDOW); - countLabel.setOrigin(0, 0); + const countLabel = addTextObject(-48, 3, "0", TextStyle.WINDOW).setOrigin(0); container.add(countLabel); this.voucherCountLabels.push(countLabel); - const iconImage = getVoucherTypeIcon(i as VoucherType); + const iconImage = getVoucherTypeIcon(voucher); - const icon = globalScene.add.sprite(-19, 2, "items", iconImage); - icon.setOrigin(0, 0); - icon.setScale(0.5); + const icon = globalScene.add.sprite(-19, 2, "items", iconImage).setOrigin(0).setScale(0.5); container.add(icon); this.eggGachaContainer.add(container); - }); + } - this.eggGachaOverlay = globalScene.add.rectangle(0, 0, bg.displayWidth, bg.displayHeight, 0x000000); - this.eggGachaOverlay.setOrigin(0, 0); - this.eggGachaOverlay.setAlpha(0); + this.eggGachaOverlay = globalScene.add + .rectangle(0, 0, bg.displayWidth, bg.displayHeight, 0x000000) + .setOrigin(0) + .setAlpha(0); this.eggGachaContainer.add(this.eggGachaOverlay); - this.eggGachaSummaryContainer = globalScene.add.container(0, 0); - this.eggGachaSummaryContainer.setVisible(false); + this.eggGachaSummaryContainer = globalScene.add.container().setVisible(false); this.eggGachaContainer.add(this.eggGachaSummaryContainer); - const gachaMessageBoxContainer = globalScene.add.container(0, 148); - - const gachaMessageBox = addWindow(0, 0, 320, 32); - gachaMessageBox.setOrigin(0, 0); - gachaMessageBoxContainer.add(gachaMessageBox); + const gachaMessageBox = addWindow(0, 0, 320, 32).setOrigin(0); + const gachaMessageBoxContainer = globalScene.add.container(0, 148).add(gachaMessageBox); this.eggGachaMessageBox = gachaMessageBox; const gachaMessageText = addTextObject(8, 8, "", TextStyle.WINDOW, { maxLines: 2, - }); - gachaMessageText.setOrigin(0, 0); + }).setOrigin(0); gachaMessageBoxContainer.add(gachaMessageText); this.message = gachaMessageText; @@ -363,18 +332,17 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.setGachaCursor(1); - for (let g = 0; g < this.gachaContainers.length; g++) { - this.updateGachaInfo(g); - } + this.updateLegendaryGacha(); this.updateVoucherCounts(); this.getUi().bringToTop(this.eggGachaContainer); - this.eggGachaContainer.setVisible(true); + this.eggGachaContainer.setActive(true).setVisible(true); handleTutorial(Tutorial.Egg_Gacha); + this.legendaryExpiration.setText(this.getLegendaryGachaTimeLeft()); this.legendaryGachaTimer(); return true; @@ -387,142 +355,188 @@ export default class EggGachaUiHandler extends MessageUiHandler { return fixedInt(delay); } - pull(pullCount = 0, count = 0, eggs?: Egg[]): void { - if (Overrides.EGG_GACHA_PULL_COUNT_OVERRIDE && !count) { + private firstDropAnims(): Phaser.Types.Tweens.TweenBuilderConfig[] { + globalScene.playSound("se/gacha_dial"); + return [ + // Tween 1 animates the gacha knob turning left + { + targets: this.gachaKnobs[this.gachaCursor], + duration: this.getDelayValue(350), + angle: 90, + ease: "Cubic.easeInOut", + }, + // Tween 2 animates the gacha knob turning back + { + targets: this.gachaKnobs[this.gachaCursor], + duration: this.getDelayValue(350), + angle: 0, + ease: "Sine.easeInOut", + }, + // Tween 3 is a dummy tween, used to force a delay, that commences the gacha running sound + { + targets: { dummy: 0 }, + dummy: 1, + duration: this.getDelayValue(350), + onStart: () => { + globalScene.playSound("se/gacha_running", { loop: true }); + }, + }, + // Tween 4 is another dummy tween that plays the gacha dispense sound + { + delay: this.getDelayValue(1250), + onStart: () => { + globalScene.playSound("se/gacha_dispense"); + }, + targets: { dummy: 0 }, + dummy: 1, + duration: this.getDelayValue(750), + onComplete: () => { + globalScene.sound.stopByKey("se/gacha_running"); + }, + }, + ]; + } + + private async doPullAnim(egg: Phaser.GameObjects.Sprite, count: number): Promise { + let resolve: (value: void | PromiseLike) => void; + const hatch = this.gachaHatches[this.gachaCursor]; + + /** The rate of animations and tweens that play for drops after the first */ + const rate = count ? 1.25 : 1.0; + if (count) { + hatch.anims.timeScale = rate; + } + const promise: Promise = new Promise(res => { + resolve = res; + }); + + const tweens: Phaser.Types.Tweens.TweenBuilderConfig[] = count ? [] : this.firstDropAnims(); + + tweens.push( + // Tween 1 is responsible for animating the egg dropping from the gacha + { + targets: egg, + duration: this.getDelayValue(350 / rate), + y: 95, + ease: "Bounce.easeOut", + }, + // Tween 2 plays the catch sound and moves the egg up a bit + { + onStart: () => { + globalScene.playSound("se/pb_catch"); + this.gachaHatches[this.gachaCursor].play("open"); + }, + targets: egg, + delay: this.getDelayValue(125 / rate), + duration: this.getDelayValue(350 / rate), + props: { + scale: { value: 0.75, ease: "Sine.easeIn" }, + y: { value: 110, ease: "Back.easeOut" }, + }, + }, + // Tween 3 "closes" the gacha hatch and moves the egg up while enlarging it + { + onStart: () => { + this.gachaHatches[this.gachaCursor].play("close"); + }, + targets: egg, + y: 200, + duration: this.getDelayValue(350 / rate), + ease: "Cubic.easeIn", + }, + ); + + this.eggDropTweenChain = globalScene.tweens.chain({ + onComplete: () => { + this.eggDropTweenChain = undefined; + hatch.anims.timeScale = 1; // Reset the hatch animation time scale + resolve(); + }, + tweens, + }); + + return promise; + } + + /** + * Pulls the specified number of eggs and returns them + * @param pullCount - The number of eggs to pull + * @returns An array of the pulled eggs + */ + private pullEggs(pullCount: number): Egg[] { + const eggs: Egg[] = []; + for (let i = 1; i <= pullCount; i++) { + const eggOptions: IEggOptions = { + pulled: true, + sourceType: this.gachaCursor, + }; + + // Before creating the last egg, check if the guaranteed egg tier was already generated + // if not, override the egg tier + if (i === pullCount) { + const guaranteedEggTier = this.getGuaranteedEggTierFromPullCount(pullCount); + if (guaranteedEggTier !== EggTier.COMMON && !eggs.some(egg => egg.tier >= guaranteedEggTier)) { + eggOptions.tier = guaranteedEggTier; + } + } + + const egg = new Egg(eggOptions); + eggs.push(egg); + } + // Shuffle the eggs in case the guaranteed one got added as last egg + return randSeedShuffle(eggs); + } + + /** + * Handle pulling eggs from the gacha machine; plays the animations, adds the eggs, and saves game data + * @param pullCount - The number of eggs to pull + */ + async pull(pullCount = 0): Promise { + if (Overrides.EGG_GACHA_PULL_COUNT_OVERRIDE) { pullCount = Overrides.EGG_GACHA_PULL_COUNT_OVERRIDE; } + // Set the eggs + const eggs = this.pullEggs(pullCount); + this.eggGachaOptionsContainer.setVisible(false); this.setTransitioning(true); - const doPull = () => { - if (this.transitionCancelled) { - return this.showSummary(eggs!); + const saveSuccess = await (globalScene.currentBattle + ? globalScene.gameData.saveAll(true, true, true) + : globalScene.gameData.saveSystem() + ).then(success => { + if (!success) { + globalScene.reset(true); + return false; } + return true; + }); - const egg = globalScene.add.sprite(127, 75, "egg", `egg_${eggs![count].getKey()}`); - egg.setScale(0.5); - - this.gachaContainers[this.gachaCursor].add(egg); - this.gachaContainers[this.gachaCursor].moveTo(egg, 2); - - const doPullAnim = () => { - globalScene.playSound("se/gacha_running", { loop: true }); - globalScene.time.delayedCall(this.getDelayValue(count ? 500 : 1250), () => { - globalScene.playSound("se/gacha_dispense"); - globalScene.time.delayedCall(this.getDelayValue(750), () => { - globalScene.sound.stopByKey("se/gacha_running"); - globalScene.tweens.add({ - targets: egg, - duration: this.getDelayValue(350), - y: 95, - ease: "Bounce.easeOut", - onComplete: () => { - globalScene.time.delayedCall(this.getDelayValue(125), () => { - globalScene.playSound("se/pb_catch"); - this.gachaHatches[this.gachaCursor].play("open"); - globalScene.tweens.add({ - targets: egg, - duration: this.getDelayValue(350), - scale: 0.75, - ease: "Sine.easeIn", - }); - globalScene.tweens.add({ - targets: egg, - y: 110, - duration: this.getDelayValue(350), - ease: "Back.easeOut", - onComplete: () => { - this.gachaHatches[this.gachaCursor].play("close"); - globalScene.tweens.add({ - targets: egg, - y: 200, - duration: this.getDelayValue(350), - ease: "Cubic.easeIn", - onComplete: () => { - if (++count < pullCount) { - this.pull(pullCount, count, eggs); - } else { - this.showSummary(eggs!); - } - }, - }); - }, - }); - }); - }, - }); - }); - }); - }; - - if (!count) { - globalScene.playSound("se/gacha_dial"); - globalScene.tweens.add({ - targets: this.gachaKnobs[this.gachaCursor], - duration: this.getDelayValue(350), - angle: 90, - ease: "Cubic.easeInOut", - onComplete: () => { - globalScene.tweens.add({ - targets: this.gachaKnobs[this.gachaCursor], - duration: this.getDelayValue(350), - angle: 0, - ease: "Sine.easeInOut", - }); - globalScene.time.delayedCall(this.getDelayValue(350), doPullAnim); - }, - }); - } else { - doPullAnim(); - } - }; - - if (!pullCount) { - pullCount = 1; - } - if (!count) { - count = 0; - } - if (!eggs) { - eggs = []; - for (let i = 1; i <= pullCount; i++) { - const eggOptions: IEggOptions = { - pulled: true, - sourceType: this.gachaCursor, - }; - - // Before creating the last egg, check if the guaranteed egg tier was already generated - // if not, override the egg tier - if (i === pullCount) { - const guaranteedEggTier = this.getGuaranteedEggTierFromPullCount(pullCount); - if (!eggs.some(egg => egg.tier >= guaranteedEggTier) && guaranteedEggTier !== EggTier.COMMON) { - eggOptions.tier = guaranteedEggTier; - } - } - - const egg = new Egg(eggOptions); - eggs.push(egg); - } - // Shuffle the eggs in case the guaranteed one got added as last egg - eggs = randSeedShuffle(eggs); - - (globalScene.currentBattle - ? globalScene.gameData.saveAll(true, true, true) - : globalScene.gameData.saveSystem() - ).then(success => { - if (!success) { - return globalScene.reset(true); - } - doPull(); - }); + if (!saveSuccess) { return; } - doPull(); + const gachaContainer = this.gachaContainers[this.gachaCursor]; + for (let i = 0; i < pullCount; ++i) { + if (this.transitionCancelled) { + break; + } + const eggSprite = globalScene.add.sprite(127, 75, "egg", `egg_${eggs[i].getKey()}`).setScale(0.5); + gachaContainer.addAt(eggSprite, 2); + // biome-ignore lint/nursery/noAwaitInLoop: The point of this loop is to play the animations, one after another + await this.doPullAnim(eggSprite, i).finally(() => gachaContainer.remove(eggSprite, true)); + } + + this.showSummary(eggs); } - getGuaranteedEggTierFromPullCount(pullCount: number): EggTier { + /** + * Get the guaranteed egg tier based on the pull count + * @param pullCount - The number of pulls made + * @returns The guaranteed egg tier for the given pull count + */ + private getGuaranteedEggTierFromPullCount(pullCount: number): EggTier { switch (pullCount) { case 10: return EggTier.RARE; @@ -611,9 +625,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { duration: this.getDelayValue(250), ease: "Cubic.easeIn", onComplete: () => { - this.eggGachaSummaryContainer.setVisible(false); - this.eggGachaSummaryContainer.setAlpha(1); - this.eggGachaSummaryContainer.removeAll(true); + this.eggGachaSummaryContainer.setVisible(false).setAlpha(1).removeAll(true); this.setTransitioning(false); this.summaryFinished = false; this.eggGachaOptionsContainer.setVisible(true); @@ -621,16 +633,14 @@ export default class EggGachaUiHandler extends MessageUiHandler { }); } - updateGachaInfo(gachaType: GachaType): void { - const infoContainer = this.gachaInfoContainers[gachaType]; - switch (gachaType as GachaType) { - case GachaType.LEGENDARY: { - const species = getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(Date.now())); - const pokemonIcon = infoContainer.getAt(1) as Phaser.GameObjects.Sprite; - pokemonIcon.setTexture(species.getIconAtlasKey(), species.getIconId(false)); - break; - } - } + /** + * Update the legendary gacha icon based on the current timestamp. + */ + private updateLegendaryGacha(): void { + const infoContainer = this.gachaInfoContainers[GachaType.LEGENDARY]; + const species = getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(Date.now())); + const pokemonIcon = infoContainer.getAt(1) as Phaser.GameObjects.Sprite; + pokemonIcon.setTexture(species.getIconAtlasKey(), species.getIconId(false)); } consumeVouchers(voucherType: VoucherType, count: number): void { @@ -684,150 +694,165 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.transitionCancelled = false; } - processInput(button: Button): boolean { + /** + * Convert a cursor index to a voucher type and count + * @param cursor - The cursor index corresponding to the voucher type + * @returns The voucher type, vouchers used, and pulls given, or an empty array if the cursor is not on a voucher + */ + private static cursorToVoucher(cursor: number): [VoucherType, number, number] | undefined { + switch (cursor) { + case 0: + return [VoucherType.REGULAR, 1, 1]; + case 1: + return [VoucherType.REGULAR, 10, 10]; + case 2: + return [VoucherType.PLUS, 1, 5]; + case 3: + return [VoucherType.PREMIUM, 1, 10]; + case 4: + return [VoucherType.GOLDEN, 1, 25]; + } + } + + /** + * Process an action input received during voucher selection. + * + * @remarks + * + * Handles playing the error sound and showing the error message, but does not handle playing the success sound. + * + * @param cursor - The index of the voucher menu option + * @returns True if the success sound should be played, false if the error sound should be played, or undefined if the cursor is out of range. + */ + private handleVoucherSelectAction(cursor: number): boolean | undefined { + // Cursors that are out of range should not be processed + if (cursor < 0 || cursor > 5) { + return; + } const ui = this.getUi(); + const voucher = EggGachaUiHandler.cursorToVoucher(cursor); + if (!voucher) { + ui.revertMode(); + return true; + } + const [voucherType, vouchersConsumed, pulls] = voucher; - let success = false; - let error = false; + let errorKey: string | undefined; + const freePulls = Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE; - if (this.transitioning) { - if (!this.transitionCancelled && (button === Button.ACTION || button === Button.CANCEL)) { - this.transitionCancelled = true; + if (!freePulls && globalScene.gameData.eggs.length + pulls > 99) { + errorKey = "egg:tooManyEggs"; + } else if (!freePulls && !globalScene.gameData.voucherCounts[voucherType]) { + errorKey = "egg:notEnoughVouchers"; + } + + if (errorKey) { + this.showError(i18next.t(errorKey)); + return false; + } + + if (!freePulls) { + this.consumeVouchers(voucherType, vouchersConsumed); + } + + // TODO: Remove this dangling proimse if necessary when the UI's input event handling supports async functions + void this.pull(pulls); + return true; + } + + /** + * Process an input received while the egg gacha UI is transitioning + * + * @param button - The button that was pressed + * @returns - `true` if the success sound should be played, otherwise `undefined` + */ + private processTransitionInput(button: Button): true | undefined { + if (!this.transitionCancelled && (button === Button.ACTION || button === Button.CANCEL)) { + this.transitionCancelled = true; + // When transition is cancelled, ensure the active chain playing the egg drop animation is sped up + // We cannot cancel it, as this would leave sprite positions at their current position in the animation + this.eggDropTweenChain?.setTimeScale(50); + return true; + } + } + + /** + * Process an input received in the normal mode of the egg gacha UI (not transitoning, not summary) + * @param button - The button that was pressed + * @returns `true` if the success sound should be played, `false` if the error sound should be played, or `undefined` no input event occurred. + */ + private processNormalInput(button: Button): boolean | undefined { + const ui = this.getUi(); + let success: boolean | undefined; + switch (button) { + case Button.ACTION: + return this.handleVoucherSelectAction(this.cursor); + case Button.CANCEL: + ui.revertMode(); success = true; - } else { - return false; - } + break; + case Button.UP: + if (this.cursor) { + success = this.setCursor(this.cursor - 1); + } + break; + case Button.DOWN: + if (this.cursor < 5) { + success = this.setCursor(this.cursor + 1); + } + break; + case Button.LEFT: + if (this.gachaCursor) { + success = this.setGachaCursor(this.gachaCursor - 1); + } + break; + case Button.RIGHT: + if (this.gachaCursor < Object.keys(GachaType).length - 1) { + success = this.setGachaCursor(this.gachaCursor + 1); + } + break; + } + + // Return undefined here because we do not play error sound in case of failed directional movements + return success || undefined; + } + + /** + * Handles an input event that occurs while the egg gacha summary is visible + * @param button - The button that was pressed + * @returns `true` if an input event occurred and the select sound should be played, otherwise `undefined` + */ + private processSummaryInput(button: Button): true | undefined { + if (this.summaryFinished && (button === Button.ACTION || button === Button.CANCEL)) { + this.hideSummary(); + return true; + } + } + + /** + * + * @param button - The button that was pressed + * @returns - Whether an input event occured. + */ + processInput(button: Button): boolean { + let success: boolean | undefined; + if (this.transitioning) { + success = this.processTransitionInput(button); + } else if (this.eggGachaSummaryContainer.visible) { + success = this.processSummaryInput(button); } else { - if (this.eggGachaSummaryContainer.visible) { - if (this.summaryFinished && (button === Button.ACTION || button === Button.CANCEL)) { - this.hideSummary(); - success = true; - } - } else { - switch (button) { - case Button.ACTION: - switch (this.cursor) { - case 0: - if ( - !globalScene.gameData.voucherCounts[VoucherType.REGULAR] && - !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE - ) { - error = true; - this.showError(i18next.t("egg:notEnoughVouchers")); - } else if (globalScene.gameData.eggs.length < 99 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { - if (!Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { - this.consumeVouchers(VoucherType.REGULAR, 1); - } - this.pull(); - success = true; - } else { - error = true; - this.showError(i18next.t("egg:tooManyEggs")); - } - break; - case 2: - if (!globalScene.gameData.voucherCounts[VoucherType.PLUS] && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { - error = true; - this.showError(i18next.t("egg:notEnoughVouchers")); - } else if (globalScene.gameData.eggs.length < 95 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { - if (!Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { - this.consumeVouchers(VoucherType.PLUS, 1); - } - this.pull(5); - success = true; - } else { - error = true; - this.showError(i18next.t("egg:tooManyEggs")); - } - break; - case 1: - case 3: - if ( - (this.cursor === 1 && - globalScene.gameData.voucherCounts[VoucherType.REGULAR] < 10 && - !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) || - (this.cursor === 3 && - !globalScene.gameData.voucherCounts[VoucherType.PREMIUM] && - !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) - ) { - error = true; - this.showError(i18next.t("egg:notEnoughVouchers")); - } else if (globalScene.gameData.eggs.length < 90 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { - if (this.cursor === 3) { - if (!Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { - this.consumeVouchers(VoucherType.PREMIUM, 1); - } - } else { - if (!Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { - this.consumeVouchers(VoucherType.REGULAR, 10); - } - } - this.pull(10); - success = true; - } else { - error = true; - this.showError(i18next.t("egg:tooManyEggs")); - } - break; - case 4: - if ( - !globalScene.gameData.voucherCounts[VoucherType.GOLDEN] && - !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE - ) { - error = true; - this.showError(i18next.t("egg:notEnoughVouchers")); - } else if (globalScene.gameData.eggs.length < 75 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { - if (!Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { - this.consumeVouchers(VoucherType.GOLDEN, 1); - } - this.pull(25); - success = true; - } else { - error = true; - this.showError(i18next.t("egg:tooManyEggs")); - } - break; - case 5: - ui.revertMode(); - success = true; - break; - } - break; - case Button.CANCEL: - this.getUi().revertMode(); - success = true; - break; - case Button.UP: - if (this.cursor) { - success = this.setCursor(this.cursor - 1); - } - break; - case Button.DOWN: - if (this.cursor < 5) { - success = this.setCursor(this.cursor + 1); - } - break; - case Button.LEFT: - if (this.gachaCursor) { - success = this.setGachaCursor(this.gachaCursor - 1); - } - break; - case Button.RIGHT: - if (this.gachaCursor < getEnumKeys(GachaType).length - 1) { - success = this.setGachaCursor(this.gachaCursor + 1); - } - break; - } - } + success = this.processNormalInput(button); } + if (success === undefined) { + return false; + } if (success) { - ui.playSelect(); - } else if (error) { - ui.playError(); + this.getUi().playSelect(); + } else { + this.getUi().playError(); } - - return success || error; + return true; } setCursor(cursor: number): boolean { @@ -898,5 +923,6 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.playTimeTimer.destroy(); this.playTimeTimer = null; } + this.eggGachaContainer.setActive(false); } } diff --git a/src/ui/egg-hatch-scene-handler.ts b/src/ui/egg-hatch-scene-handler.ts index 85c4199ff1d..5b2c9d40cfa 100644 --- a/src/ui/egg-hatch-scene-handler.ts +++ b/src/ui/egg-hatch-scene-handler.ts @@ -1,9 +1,9 @@ -import { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; -import { Button } from "#enums/buttons"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +import { UiMode } from "#enums/ui-mode"; +import { UiHandler } from "#ui/ui-handler"; -export default class EggHatchSceneHandler extends UiHandler { +export class EggHatchSceneHandler extends UiHandler { public eggHatchContainer: Phaser.GameObjects.Container; /** diff --git a/src/ui/egg-list-ui-handler.ts b/src/ui/egg-list-ui-handler.ts index 9a1b1f51e25..94d6889ed48 100644 --- a/src/ui/egg-list-ui-handler.ts +++ b/src/ui/egg-list-ui-handler.ts @@ -1,15 +1,15 @@ -import { UiMode } from "#enums/ui-mode"; -import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; -import { TextStyle, addTextObject } from "#app/ui/text"; -import MessageUiHandler from "#app/ui/message-ui-handler"; -import { addWindow } from "#app/ui/ui-theme"; -import { Button } from "#enums/buttons"; -import i18next from "i18next"; -import ScrollableGridUiHandler from "#app/ui/scrollable-grid-handler"; -import { ScrollBar } from "#app/ui/scroll-bar"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +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 { addWindow } from "#ui/ui-theme"; +import i18next from "i18next"; -export default class EggListUiHandler extends MessageUiHandler { +export class EggListUiHandler extends MessageUiHandler { private readonly ROWS = 9; private readonly COLUMNS = 11; @@ -49,11 +49,11 @@ export default class EggListUiHandler extends MessageUiHandler { this.eggNameText = addTextObject(8, 68, "", TextStyle.SUMMARY).setOrigin(0); - this.eggDateText = addTextObject(8, 91, "", TextStyle.TOOLTIP_CONTENT); + this.eggDateText = addTextObject(8, 91, "", TextStyle.EGG_LIST); - this.eggHatchWavesText = addTextObject(8, 108, "", TextStyle.TOOLTIP_CONTENT).setWordWrapWidth(540); + this.eggHatchWavesText = addTextObject(8, 108, "", TextStyle.EGG_LIST).setWordWrapWidth(540); - this.eggGachaInfoText = addTextObject(8, 152, "", TextStyle.TOOLTIP_CONTENT).setWordWrapWidth(540); + this.eggGachaInfoText = addTextObject(8, 152, "", TextStyle.EGG_LIST).setWordWrapWidth(540); this.eggListIconContainer = globalScene.add.container(113, 5); diff --git a/src/ui/egg-summary-ui-handler.ts b/src/ui/egg-summary-ui-handler.ts index 90dc60e16b7..aa4e8974318 100644 --- a/src/ui/egg-summary-ui-handler.ts +++ b/src/ui/egg-summary-ui-handler.ts @@ -1,14 +1,14 @@ -import { UiMode } from "#enums/ui-mode"; -import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; -import MessageUiHandler from "./message-ui-handler"; -import { getEggTierForSpecies } from "../data/egg"; -import { Button } from "#enums/buttons"; -import PokemonHatchInfoContainer from "./pokemon-hatch-info-container"; -import type { EggHatchData } from "#app/data/egg-hatch-data"; -import ScrollableGridUiHandler from "./scrollable-grid-handler"; -import { HatchedPokemonContainer } from "./hatched-pokemon-container"; -import { ScrollBar } from "#app/ui/scroll-bar"; import { globalScene } from "#app/global-scene"; +import { getEggTierForSpecies } from "#data/egg"; +import type { EggHatchData } from "#data/egg-hatch-data"; +import { Button } from "#enums/buttons"; +import { UiMode } from "#enums/ui-mode"; +import { HatchedPokemonContainer } from "#ui/hatched-pokemon-container"; +import { MessageUiHandler } from "#ui/message-ui-handler"; +import { PokemonHatchInfoContainer } from "#ui/pokemon-hatch-info-container"; +import { PokemonIconAnimHandler, PokemonIconAnimMode } from "#ui/pokemon-icon-anim-handler"; +import { ScrollBar } from "#ui/scroll-bar"; +import { ScrollableGridUiHandler } from "#ui/scrollable-grid-handler"; const iconContainerX = 112; const iconContainerY = 9; @@ -21,7 +21,7 @@ const iconSize = 18; * Handles navigation and display of each pokemon as a list * Also handles display of the pokemon-hatch-info-container */ -export default class EggSummaryUiHandler extends MessageUiHandler { +export class EggSummaryUiHandler extends MessageUiHandler { /** holds all elements in the scene */ private eggHatchContainer: Phaser.GameObjects.Container; /** holds the icon containers and info container */ diff --git a/src/ui/evolution-scene-handler.ts b/src/ui/evolution-scene-handler.ts index 7372fc6f2b5..5ad4fc6fdf5 100644 --- a/src/ui/evolution-scene-handler.ts +++ b/src/ui/evolution-scene-handler.ts @@ -1,10 +1,10 @@ -import MessageUiHandler from "./message-ui-handler"; -import { TextStyle, addTextObject } from "./text"; -import { UiMode } from "#enums/ui-mode"; -import { Button } from "#enums/buttons"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +import { UiMode } from "#enums/ui-mode"; +import { MessageUiHandler } from "#ui/message-ui-handler"; +import { addTextObject, TextStyle } from "#ui/text"; -export default class EvolutionSceneHandler extends MessageUiHandler { +export class EvolutionSceneHandler extends MessageUiHandler { public evolutionContainer: Phaser.GameObjects.Container; public messageBg: Phaser.GameObjects.Image; public messageContainer: Phaser.GameObjects.Container; diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 14cd10d0d6f..286199b99e2 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -1,24 +1,23 @@ import type { InfoToggle } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import { addTextObject, TextStyle } from "./text"; -import { getTypeDamageMultiplierColor } from "#app/data/type"; -import { PokemonType } from "#enums/pokemon-type"; -import { Command } from "#enums/command"; -import { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; -import { getLocalizedSpriteKey, fixedInt, padInt } from "#app/utils/common"; -import { MoveCategory } from "#enums/MoveCategory"; -import i18next from "i18next"; -import { Button } from "#enums/buttons"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import type { PokemonMove } from "#app/data/moves/pokemon-move"; -import type Pokemon from "#app/field/pokemon"; -import type { CommandPhase } from "#app/phases/command-phase"; -import MoveInfoOverlay from "./move-info-overlay"; +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/move-category"; import { MoveUseMode } from "#enums/move-use-mode"; +import { PokemonType } from "#enums/pokemon-type"; +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 { UiHandler } from "#ui/ui-handler"; +import { fixedInt, getLocalizedSpriteKey, padInt } from "#utils/common"; +import i18next from "i18next"; -export default class FightUiHandler extends UiHandler implements InfoToggle { +export class FightUiHandler extends UiHandler implements InfoToggle { public static readonly MOVES_CONTAINER_NAME = "moves"; private movesContainer: Phaser.GameObjects.Container; @@ -42,62 +41,67 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { super(UiMode.FIGHT); } + /** + * Set the visibility of the objects in the move info container. + */ + private setInfoVis(visibility: boolean): void { + this.moveInfoContainer.iterate((o: Phaser.GameObjects.Components.Visible) => o.setVisible(visibility)); + } + setup() { const ui = this.getUi(); - this.movesContainer = globalScene.add.container(18, -38.7); - this.movesContainer.setName(FightUiHandler.MOVES_CONTAINER_NAME); + this.movesContainer = globalScene.add.container(18, -38.7).setName(FightUiHandler.MOVES_CONTAINER_NAME); ui.add(this.movesContainer); - this.moveInfoContainer = globalScene.add.container(1, 0); - this.moveInfoContainer.setName("move-info"); + this.moveInfoContainer = globalScene.add.container(1, 0).setName("move-info"); ui.add(this.moveInfoContainer); - this.typeIcon = globalScene.add.sprite( - globalScene.scaledCanvas.width - 57, - -36, - getLocalizedSpriteKey("types"), - "unknown", - ); - this.typeIcon.setVisible(false); - this.moveInfoContainer.add(this.typeIcon); + this.typeIcon = globalScene.add + .sprite(globalScene.scaledCanvas.width - 57, -36, getLocalizedSpriteKey("types"), "unknown") + .setVisible(false); - this.moveCategoryIcon = globalScene.add.sprite(globalScene.scaledCanvas.width - 25, -36, "categories", "physical"); - this.moveCategoryIcon.setVisible(false); - this.moveInfoContainer.add(this.moveCategoryIcon); + this.moveCategoryIcon = globalScene.add + .sprite(globalScene.scaledCanvas.width - 25, -36, "categories", "physical") + .setVisible(false); - this.ppLabel = addTextObject(globalScene.scaledCanvas.width - 70, -26, "PP", TextStyle.MOVE_INFO_CONTENT); - this.ppLabel.setOrigin(0.0, 0.5); - this.ppLabel.setVisible(false); - this.ppLabel.setText(i18next.t("fightUiHandler:pp")); - this.moveInfoContainer.add(this.ppLabel); + this.ppLabel = addTextObject(globalScene.scaledCanvas.width - 70, -26, "PP", TextStyle.MOVE_INFO_CONTENT) + .setOrigin(0.0, 0.5) + .setVisible(false) + .setText(i18next.t("fightUiHandler:pp")); - this.ppText = addTextObject(globalScene.scaledCanvas.width - 12, -26, "--/--", TextStyle.MOVE_INFO_CONTENT); - this.ppText.setOrigin(1, 0.5); - this.ppText.setVisible(false); - this.moveInfoContainer.add(this.ppText); + this.ppText = addTextObject(globalScene.scaledCanvas.width - 12, -26, "--/--", TextStyle.MOVE_INFO_CONTENT) + .setOrigin(1, 0.5) + .setVisible(false); - this.powerLabel = addTextObject(globalScene.scaledCanvas.width - 70, -18, "POWER", TextStyle.MOVE_INFO_CONTENT); - this.powerLabel.setOrigin(0.0, 0.5); - this.powerLabel.setVisible(false); - this.powerLabel.setText(i18next.t("fightUiHandler:power")); - this.moveInfoContainer.add(this.powerLabel); + this.powerLabel = addTextObject(globalScene.scaledCanvas.width - 70, -18, "POWER", TextStyle.MOVE_INFO_CONTENT) + .setOrigin(0.0, 0.5) + .setVisible(false) + .setText(i18next.t("fightUiHandler:power")); - this.powerText = addTextObject(globalScene.scaledCanvas.width - 12, -18, "---", TextStyle.MOVE_INFO_CONTENT); - this.powerText.setOrigin(1, 0.5); - this.powerText.setVisible(false); - this.moveInfoContainer.add(this.powerText); + this.powerText = addTextObject(globalScene.scaledCanvas.width - 12, -18, "---", TextStyle.MOVE_INFO_CONTENT) + .setOrigin(1, 0.5) + .setVisible(false); - this.accuracyLabel = addTextObject(globalScene.scaledCanvas.width - 70, -10, "ACC", TextStyle.MOVE_INFO_CONTENT); - this.accuracyLabel.setOrigin(0.0, 0.5); - this.accuracyLabel.setVisible(false); - this.accuracyLabel.setText(i18next.t("fightUiHandler:accuracy")); - this.moveInfoContainer.add(this.accuracyLabel); + this.accuracyLabel = addTextObject(globalScene.scaledCanvas.width - 70, -10, "ACC", TextStyle.MOVE_INFO_CONTENT) + .setOrigin(0.0, 0.5) + .setVisible(false) + .setText(i18next.t("fightUiHandler:accuracy")); - this.accuracyText = addTextObject(globalScene.scaledCanvas.width - 12, -10, "---", TextStyle.MOVE_INFO_CONTENT); - this.accuracyText.setOrigin(1, 0.5); - this.accuracyText.setVisible(false); - this.moveInfoContainer.add(this.accuracyText); + this.accuracyText = addTextObject(globalScene.scaledCanvas.width - 12, -10, "---", TextStyle.MOVE_INFO_CONTENT) + .setOrigin(1, 0.5) + .setVisible(false); + + this.moveInfoContainer.add([ + this.typeIcon, + this.moveCategoryIcon, + this.ppLabel, + this.ppText, + this.powerLabel, + this.powerText, + this.accuracyLabel, + this.accuracyText, + ]); // prepare move overlay const overlayScale = 1; @@ -114,15 +118,14 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { }); ui.add(this.moveInfoOverlay); // register the overlay to receive toggle events - globalScene.addInfoToggle(this.moveInfoOverlay); - globalScene.addInfoToggle(this); + globalScene.addInfoToggle(this.moveInfoOverlay, this); } - show(args: any[]): boolean { + override show(args: [number?, Command?]): boolean { super.show(args); - this.fieldIndex = args.length ? (args[0] as number) : 0; - this.fromCommand = args.length > 1 ? (args[1] as Command) : Command.FIGHT; + this.fieldIndex = args[0] ?? 0; + this.fromCommand = args[1] ?? Command.FIGHT; const messageHandler = this.getUi().getMessageHandler(); messageHandler.bg.setVisible(false); @@ -132,7 +135,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { if (pokemon.tempSummonData.turnCount <= 1) { this.setCursor(0); } else { - this.setCursor(this.getCursor()); + this.setCursor(this.fieldIndex ? this.cursor2 : this.cursor); } this.displayMoves(); this.toggleInfo(false); // in case cancel was pressed while info toggle is active @@ -147,21 +150,10 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { */ processInput(button: Button): boolean { const ui = this.getUi(); - const cursor = this.getCursor(); let success = false; + const cursor = this.getCursor(); switch (button) { - case Button.CANCEL: - { - // Attempts to back out of the move selection pane are blocked in certain MEs - // TODO: Should we allow showing the summary menu at least? - const { battleType, mysteryEncounter } = globalScene.currentBattle; - if (battleType !== BattleType.MYSTERY_ENCOUNTER || !mysteryEncounter?.skipToFightInput) { - ui.setMode(UiMode.COMMAND, this.fieldIndex); - success = true; - } - } - break; case Button.ACTION: if ( (globalScene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand( @@ -175,6 +167,15 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { ui.playError(); } break; + case Button.CANCEL: { + // Cannot back out of fight menu if skipToFightInput is enabled + const { battleType, mysteryEncounter } = globalScene.currentBattle; + if (battleType !== BattleType.MYSTERY_ENCOUNTER || !mysteryEncounter?.skipToFightInput) { + ui.setMode(UiMode.COMMAND, this.fieldIndex); + success = true; + } + break; + } case Button.UP: if (cursor >= 2) { success = this.setCursor(cursor - 2); @@ -195,8 +196,6 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { success = this.setCursor(cursor + 1); } break; - default: - // other inputs do nothing while in fight menu } if (success) { @@ -206,21 +205,26 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { return success; } + /** + * Adjust the visibility of move names and the cursor icon when the info overlay is toggled + * @param visible - The visibility of the info overlay; the move names and cursor's visibility will be set to the opposite + */ toggleInfo(visible: boolean): void { + // The info overlay will already fade in, so we should hide the move name text and cursor immediately + // rather than adjusting alpha via a tween. if (visible) { - this.movesContainer.setVisible(false); - this.cursorObj?.setVisible(false); + this.movesContainer.setVisible(false).setAlpha(0); + this.cursorObj?.setVisible(false).setAlpha(0); + return; } globalScene.tweens.add({ targets: [this.movesContainer, this.cursorObj], duration: fixedInt(125), ease: "Sine.easeInOut", - alpha: visible ? 0 : 1, + alpha: 1, }); - if (!visible) { - this.movesContainer.setVisible(true); - this.cursorObj?.setVisible(true); - } + this.movesContainer.setVisible(true); + this.cursorObj?.setVisible(true); } isActive(): boolean { @@ -231,6 +235,64 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { return !this.fieldIndex ? this.cursor : this.cursor2; } + /** @returns TextStyle according to percentage of PP remaining */ + private static ppRatioToColor(ppRatio: number): TextStyle { + if (ppRatio > 0.25 && ppRatio <= 0.5) { + return TextStyle.MOVE_PP_HALF_FULL; + } + if (ppRatio > 0 && ppRatio <= 0.25) { + return TextStyle.MOVE_PP_NEAR_EMPTY; + } + if (ppRatio === 0) { + return TextStyle.MOVE_PP_EMPTY; + } + return TextStyle.MOVE_PP_FULL; // default to full if ppRatio is invalid + } + + /** + * Populate the move info overlay with the information of the move at the given cursor index + * @param cursor - The cursor position to set the move info for + */ + private setMoveInfo(cursor: number): void { + const pokemon = (globalScene.phaseManager.getCurrentPhase() as CommandPhase).getPokemon(); + const moveset = pokemon.getMoveset(); + + const hasMove = cursor < moveset.length; + this.setInfoVis(hasMove); + + if (!hasMove) { + return; + } + + const pokemonMove = moveset[cursor]; + const moveType = pokemon.getMoveType(pokemonMove.getMove()); + const textureKey = getLocalizedSpriteKey("types"); + this.typeIcon.setTexture(textureKey, PokemonType[moveType].toLowerCase()).setScale(0.8); + + const moveCategory = pokemonMove.getMove().category; + this.moveCategoryIcon.setTexture("categories", MoveCategory[moveCategory].toLowerCase()).setScale(1.0); + const power = pokemonMove.getMove().power; + const accuracy = pokemonMove.getMove().accuracy; + const maxPP = pokemonMove.getMovePp(); + const pp = maxPP - pokemonMove.ppUsed; + + const ppLeftStr = padInt(pp, 2, " "); + const ppMaxStr = padInt(maxPP, 2, " "); + this.ppText.setText(`${ppLeftStr}/${ppMaxStr}`); + this.powerText.setText(`${power >= 0 ? power : "---"}`); + this.accuracyText.setText(`${accuracy >= 0 ? accuracy : "---"}`); + + const ppColorStyle = FightUiHandler.ppRatioToColor(pp / maxPP); + + //** 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()); + + pokemon.getOpponents().forEach(opponent => { + (opponent as EnemyPokemon).updateEffectiveness(this.getEffectivenessText(pokemon, opponent, pokemonMove)); + }); + } + setCursor(cursor: number): boolean { const ui = this.getUi(); @@ -244,6 +306,8 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { } } + this.setMoveInfo(cursor); + if (!this.cursorObj) { const isTera = this.fromCommand === Command.TERA; this.cursorObj = globalScene.add.image(0, 0, isTera ? "cursor_tera" : "cursor"); @@ -251,61 +315,6 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { ui.add(this.cursorObj); } - const pokemon = (globalScene.phaseManager.getCurrentPhase() as CommandPhase).getPokemon(); - const moveset = pokemon.getMoveset(); - - const hasMove = cursor < moveset.length; - - if (hasMove) { - const pokemonMove = moveset[cursor]; - const moveType = pokemon.getMoveType(pokemonMove.getMove()); - const textureKey = getLocalizedSpriteKey("types"); - this.typeIcon.setTexture(textureKey, PokemonType[moveType].toLowerCase()).setScale(0.8); - - const moveCategory = pokemonMove.getMove().category; - this.moveCategoryIcon.setTexture("categories", MoveCategory[moveCategory].toLowerCase()).setScale(1.0); - const power = pokemonMove.getMove().power; - const accuracy = pokemonMove.getMove().accuracy; - const maxPP = pokemonMove.getMovePp(); - const pp = maxPP - pokemonMove.ppUsed; - - const ppLeftStr = padInt(pp, 2, " "); - const ppMaxStr = padInt(maxPP, 2, " "); - this.ppText.setText(`${ppLeftStr}/${ppMaxStr}`); - this.powerText.setText(`${power >= 0 ? power : "---"}`); - this.accuracyText.setText(`${accuracy >= 0 ? accuracy : "---"}`); - - const ppPercentLeft = pp / maxPP; - - //** Determines TextStyle according to percentage of PP remaining */ - let ppColorStyle = TextStyle.MOVE_PP_FULL; - if (ppPercentLeft > 0.25 && ppPercentLeft <= 0.5) { - ppColorStyle = TextStyle.MOVE_PP_HALF_FULL; - } else if (ppPercentLeft > 0 && ppPercentLeft <= 0.25) { - ppColorStyle = TextStyle.MOVE_PP_NEAR_EMPTY; - } else if (ppPercentLeft === 0) { - ppColorStyle = TextStyle.MOVE_PP_EMPTY; - } - - //** Changes the text color and shadow according to the determined TextStyle */ - this.ppText.setColor(this.getTextColor(ppColorStyle, false)); - this.ppText.setShadowColor(this.getTextColor(ppColorStyle, true)); - this.moveInfoOverlay.show(pokemonMove.getMove()); - - pokemon.getOpponents().forEach(opponent => { - (opponent as EnemyPokemon).updateEffectiveness(this.getEffectivenessText(pokemon, opponent, pokemonMove)); - }); - } - - this.typeIcon.setVisible(hasMove); - this.ppLabel.setVisible(hasMove); - this.ppText.setVisible(hasMove); - this.powerLabel.setVisible(hasMove); - this.powerText.setVisible(hasMove); - this.accuracyLabel.setVisible(hasMove); - this.accuracyText.setVisible(hasMove); - this.moveCategoryIcon.setVisible(hasMove); - this.cursorObj.setPosition(13 + (cursor % 2 === 1 ? 114 : 0), -31 + (cursor >= 2 ? 15 : 0)); return changed; @@ -313,7 +322,6 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { /** * Gets multiplier text for a pokemon's move against a specific opponent - * Returns undefined if it's a status move */ private getEffectivenessText(pokemon: Pokemon, opponent: Pokemon, pokemonMove: PokemonMove): string | undefined { const effectiveness = opponent.getMoveEffectiveness( @@ -324,8 +332,11 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { undefined, true, ); - if (effectiveness === undefined) { - return undefined; + if (pokemonMove.getMove().category === MoveCategory.STATUS) { + if (effectiveness === 0) { + return "0x"; + } + return "1x"; } return `${effectiveness}x`; @@ -336,14 +347,19 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { const moveset = pokemon.getMoveset(); for (let moveIndex = 0; moveIndex < 4; moveIndex++) { - const moveText = addTextObject(moveIndex % 2 === 0 ? 0 : 114, moveIndex < 2 ? 0 : 16, "-", TextStyle.WINDOW); - moveText.setName("text-empty-move"); + const moveText = addTextObject( + moveIndex % 2 === 0 ? 0 : 114, + moveIndex < 2 ? 0 : 16, + "-", + TextStyle.WINDOW, + ).setName("text-empty-move"); if (moveIndex < moveset.length) { const pokemonMove = moveset[moveIndex]!; // TODO is the bang correct? - moveText.setText(pokemonMove.getName()); - moveText.setName(pokemonMove.getName()); - moveText.setColor(this.getMoveColor(pokemon, pokemonMove) ?? moveText.style.color); + moveText + .setText(pokemonMove.getName()) + .setName(pokemonMove.getName()) + .setColor(this.getMoveColor(pokemon, pokemonMove) ?? moveText.style.color); } this.movesContainer.add(moveText); @@ -377,7 +393,12 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { ), ) .sort((a, b) => b - a) - .map(effectiveness => getTypeDamageMultiplierColor(effectiveness ?? 0, "offense")); + .map(effectiveness => { + if (pokemonMove.getMove().category === MoveCategory.STATUS && effectiveness !== 0) { + return undefined; + } + return getTypeDamageMultiplierColor(effectiveness ?? 0, "offense"); + }); return moveColors[0]; } @@ -386,14 +407,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { super.clear(); const messageHandler = this.getUi().getMessageHandler(); this.clearMoves(); - this.typeIcon.setVisible(false); - this.ppLabel.setVisible(false); - this.ppText.setVisible(false); - this.powerLabel.setVisible(false); - this.powerText.setVisible(false); - this.accuracyLabel.setVisible(false); - this.accuracyText.setVisible(false); - this.moveCategoryIcon.setVisible(false); + this.setInfoVis(false); this.moveInfoOverlay.clear(); messageHandler.bg.setVisible(true); this.eraseCursor(); diff --git a/src/ui/filter-bar.ts b/src/ui/filter-bar.ts index 622488c04cd..3961ae3415c 100644 --- a/src/ui/filter-bar.ts +++ b/src/ui/filter-bar.ts @@ -1,11 +1,11 @@ -import type { DropDown } from "./dropdown"; -import { DropDownType } from "./dropdown"; -import type { StarterContainer } from "./starter-container"; -import { addTextObject, getTextColor, TextStyle } from "./text"; -import type { UiTheme } from "#enums/ui-theme"; -import { addWindow, WindowVariant } from "./ui-theme"; import { globalScene } from "#app/global-scene"; import type { DropDownColumn } from "#enums/drop-down-column"; +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 { addWindow, WindowVariant } from "#ui/ui-theme"; export class FilterBar extends Phaser.GameObjects.Container { private window: Phaser.GameObjects.NineSlice; @@ -60,7 +60,7 @@ export class FilterBar extends Phaser.GameObjects.Container { this.columns.push(column); - const filterTypesLabel = addTextObject(0, 3, title, TextStyle.TOOLTIP_CONTENT); + const filterTypesLabel = addTextObject(0, 3, title, TextStyle.FILTER_BAR_MAIN); this.labels.push(filterTypesLabel); this.add(filterTypesLabel); this.dropDowns.push(dropDown); diff --git a/src/ui/filter-text.ts b/src/ui/filter-text.ts index 7e27a806478..4a9012e44fc 100644 --- a/src/ui/filter-text.ts +++ b/src/ui/filter-text.ts @@ -1,12 +1,12 @@ -import type { StarterContainer } from "./starter-container"; -import { addTextObject, getTextColor, TextStyle } from "./text"; -import type { UiTheme } from "#enums/ui-theme"; -import { addWindow, WindowVariant } from "./ui-theme"; -import i18next from "i18next"; -import type AwaitableUiHandler from "./awaitable-ui-handler"; -import type UI from "./ui"; -import { UiMode } from "#enums/ui-mode"; import { globalScene } from "#app/global-scene"; +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 type { UI } from "#ui/ui"; +import { addWindow, WindowVariant } from "#ui/ui-theme"; +import i18next from "i18next"; export enum FilterTextRow { NAME, diff --git a/src/ui/form-modal-ui-handler.ts b/src/ui/form-modal-ui-handler.ts index 8c30b4e0bc4..35965b09b80 100644 --- a/src/ui/form-modal-ui-handler.ts +++ b/src/ui/form-modal-ui-handler.ts @@ -1,12 +1,12 @@ -import type { ModalConfig } from "./modal-ui-handler"; -import { ModalUiHandler } from "./modal-ui-handler"; -import type { UiMode } from "#enums/ui-mode"; -import { TextStyle, addTextInputObject, addTextObject } from "./text"; -import { WindowVariant, addWindow } from "./ui-theme"; -import type InputText from "phaser3-rex-plugins/plugins/inputtext"; -import { fixedInt } from "#app/utils/common"; -import { Button } from "#enums/buttons"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +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 { addWindow, WindowVariant } from "#ui/ui-theme"; +import { fixedInt } from "#utils/common"; +import type InputText from "phaser3-rex-plugins/plugins/inputtext"; export interface FormModalConfig extends ModalConfig { errorMessage?: string; diff --git a/src/ui/game-stats-ui-handler.ts b/src/ui/game-stats-ui-handler.ts index 4213a244fdb..759792b122f 100644 --- a/src/ui/game-stats-ui-handler.ts +++ b/src/ui/game-stats-ui-handler.ts @@ -1,16 +1,15 @@ -import Phaser from "phaser"; -import { TextStyle, addTextObject } from "#app/ui/text"; -import type { UiMode } from "#enums/ui-mode"; -import UiHandler from "#app/ui/ui-handler"; -import { addWindow } from "#app/ui/ui-theme"; -import { getPlayTimeString, formatFancyLargeNumber, toReadableString } from "#app/utils/common"; -import type { GameData } from "#app/system/game-data"; -import { DexAttr } from "#enums/dex-attr"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import { Button } from "#enums/buttons"; -import i18next from "i18next"; -import { UiTheme } from "#enums/ui-theme"; import { globalScene } from "#app/global-scene"; +import { speciesStarterCosts } from "#balance/starters"; +import { Button } from "#enums/buttons"; +import { DexAttr } from "#enums/dex-attr"; +import { UiTheme } from "#enums/ui-theme"; +import type { GameData } from "#system/game-data"; +import { addTextObject, TextStyle } from "#ui/text"; +import { UiHandler } from "#ui/ui-handler"; +import { addWindow } from "#ui/ui-theme"; +import { formatFancyLargeNumber, getPlayTimeString, toReadableString } from "#utils/common"; +import i18next from "i18next"; +import Phaser from "phaser"; interface DisplayStat { label_key?: string; @@ -213,156 +212,211 @@ const displayStats: DisplayStats = { }, }; -export default class GameStatsUiHandler extends UiHandler { +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.SETTINGS_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; - new Array(18).fill(null).map((_, s) => { - const statLabel = addTextObject( - 8 + (s % 2 === 1 ? statsBgWidth : 0), - 28 + Math.floor(s / 2) * 16, - "", - TextStyle.STATS_LABEL, - ); - statLabel.setOrigin(0, 0); - this.statsContainer.add(statLabel); - this.statLabels.push(statLabel); + { + 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), + ); + } + } - const statValue = addTextObject(statsBgWidth * ((s % 2) + 1) - 8, statLabel.y, "", TextStyle.STATS_VALUE); - statValue.setOrigin(1, 0); - this.statsContainer.add(statValue); - this.statValues.push(statValue); - }); + 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(headerBg); - this.gameStatsContainer.add(headerText); - this.gameStatsContainer.add(statsBgLeft); - this.gameStatsContainer.add(statsBgRight); 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 +424,59 @@ export default 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); } } diff --git a/src/ui/hatched-pokemon-container.ts b/src/ui/hatched-pokemon-container.ts index 8b9a5309a9c..a5919348a94 100644 --- a/src/ui/hatched-pokemon-container.ts +++ b/src/ui/hatched-pokemon-container.ts @@ -1,11 +1,11 @@ -import type { EggHatchData } from "#app/data/egg-hatch-data"; -import { Gender } from "#app/data/gender"; -import { getVariantTint } from "#app/sprites/variant"; -import { DexAttr } from "#enums/dex-attr"; import { globalScene } from "#app/global-scene"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import type PokemonIconAnimHandler from "./pokemon-icon-anim-handler"; -import { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; +import type { EggHatchData } from "#data/egg-hatch-data"; +import { Gender } from "#data/gender"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { DexAttr } from "#enums/dex-attr"; +import { getVariantTint } from "#sprites/variant"; +import type { PokemonIconAnimHandler } from "#ui/pokemon-icon-anim-handler"; +import { PokemonIconAnimMode } from "#ui/pokemon-icon-anim-handler"; /** * A container for a Pokemon's sprite and icons to get displayed in the egg summary screen diff --git a/src/ui/loading-modal-ui-handler.ts b/src/ui/loading-modal-ui-handler.ts index 13dffe5614c..585d70d51db 100644 --- a/src/ui/loading-modal-ui-handler.ts +++ b/src/ui/loading-modal-ui-handler.ts @@ -1,9 +1,9 @@ -import i18next from "i18next"; -import { ModalUiHandler } from "./modal-ui-handler"; -import { addTextObject, TextStyle } from "./text"; import type { UiMode } from "#enums/ui-mode"; +import { ModalUiHandler } from "#ui/modal-ui-handler"; +import { addTextObject, TextStyle } from "#ui/text"; +import i18next from "i18next"; -export default class LoadingModalUiHandler extends ModalUiHandler { +export class LoadingModalUiHandler extends ModalUiHandler { constructor(mode: UiMode | null = null) { super(mode); } diff --git a/src/ui/login-form-ui-handler.ts b/src/ui/login-form-ui-handler.ts index 5c48cf55753..417a9031bf7 100644 --- a/src/ui/login-form-ui-handler.ts +++ b/src/ui/login-form-ui-handler.ts @@ -1,14 +1,14 @@ -import type { InputFieldConfig } from "./form-modal-ui-handler"; -import { FormModalUiHandler } from "./form-modal-ui-handler"; -import type { ModalConfig } from "./modal-ui-handler"; -import { fixedInt } from "#app/utils/common"; -import { UiMode } from "#enums/ui-mode"; -import i18next from "i18next"; -import { addTextObject, TextStyle } from "./text"; -import { addWindow } from "./ui-theme"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +import { pokerogueApi } from "#api/pokerogue-api"; import { globalScene } from "#app/global-scene"; +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 { addWindow } from "#ui/ui-theme"; +import { fixedInt } from "#utils/common"; +import i18next from "i18next"; import JSZip from "jszip"; interface BuildInteractableImageOpts { @@ -18,7 +18,7 @@ interface BuildInteractableImageOpts { origin?: { x: number; y: number }; } -export default class LoginFormUiHandler extends FormModalUiHandler { +export class LoginFormUiHandler extends FormModalUiHandler { private readonly ERR_USERNAME: string = "invalid username"; private readonly ERR_PASSWORD: string = "invalid password"; private readonly ERR_ACCOUNT_EXIST: string = "account doesn't exist"; diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index 5ab1d4f9e96..4e45dfedcb3 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -1,22 +1,23 @@ -import { bypassLogin } from "#app/global-vars/bypass-login"; +import { pokerogueApi } from "#api/pokerogue-api"; +import { loggedInUser, updateUserInfo } from "#app/account"; import { globalScene } from "#app/global-scene"; -import { TextStyle, addTextObject, getTextStyleOptions } from "./text"; -import { UiMode } from "#enums/ui-mode"; -import { getEnumKeys, isLocal, fixedInt, sessionIdKey } from "#app/utils/common"; -import { isBeta } from "#app/utils/utility-vars"; -import { getCookie } from "#app/utils/cookies"; -import { addWindow, WindowVariant } from "./ui-theme"; -import MessageUiHandler from "./message-ui-handler"; -import type { OptionSelectConfig, OptionSelectItem } from "./abstact-option-select-ui-handler"; -import { Tutorial, handleTutorial } from "../tutorial"; -import { loggedInUser, updateUserInfo } from "../account"; -import i18next from "i18next"; +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 BgmBar from "#app/ui/bgm-bar"; -import type AwaitableUiHandler from "./awaitable-ui-handler"; -import { AdminMode, getAdminModeName } from "./admin-ui-handler"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +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 { addWindow, WindowVariant } from "#ui/ui-theme"; +import { fixedInt, isLocal, sessionIdKey } from "#utils/common"; +import { getCookie } from "#utils/cookies"; +import { getEnumValues } from "#utils/enums"; +import { isBeta } from "#utils/utility-vars"; +import i18next from "i18next"; enum MenuOptions { GAME_SETTINGS, @@ -37,7 +38,7 @@ const githubUrl = "https://github.com/pagefaultgames/pokerogue"; const redditUrl = "https://www.reddit.com/r/pokerogue"; const donateUrl = "https://github.com/sponsors/pagefaultgames"; -export default class MenuUiHandler extends MessageUiHandler { +export class MenuUiHandler extends MessageUiHandler { private readonly textPadding = 8; private readonly defaultMessageBoxWidth = 220; private readonly defaultWordWrapWidth = 1224; @@ -76,11 +77,9 @@ export default class MenuUiHandler extends MessageUiHandler { { condition: bypassLogin, options: [MenuOptions.LOG_OUT] }, ]; - this.menuOptions = getEnumKeys(MenuOptions) - .map(m => Number.parseInt(MenuOptions[m]) as MenuOptions) - .filter(m => { - return !this.excludedMenus().some(exclusion => exclusion.condition && exclusion.options.includes(m)); - }); + this.menuOptions = getEnumValues(MenuOptions).filter(m => { + return !this.excludedMenus().some(exclusion => exclusion.condition && exclusion.options.includes(m)); + }); } setup(): void { @@ -131,11 +130,9 @@ export default class MenuUiHandler extends MessageUiHandler { { condition: bypassLogin, options: [MenuOptions.LOG_OUT] }, ]; - this.menuOptions = getEnumKeys(MenuOptions) - .map(m => Number.parseInt(MenuOptions[m]) as MenuOptions) - .filter(m => { - return !this.excludedMenus().some(exclusion => exclusion.condition && exclusion.options.includes(m)); - }); + this.menuOptions = getEnumValues(MenuOptions).filter(m => { + return !this.excludedMenus().some(exclusion => exclusion.condition && exclusion.options.includes(m)); + }); this.optionSelectText = addTextObject( 0, @@ -511,11 +508,9 @@ export default class MenuUiHandler extends MessageUiHandler { this.render(); super.show(args); - this.menuOptions = getEnumKeys(MenuOptions) - .map(m => Number.parseInt(MenuOptions[m]) as MenuOptions) - .filter(m => { - return !this.excludedMenus().some(exclusion => exclusion.condition && exclusion.options.includes(m)); - }); + this.menuOptions = getEnumValues(MenuOptions).filter(m => { + return !this.excludedMenus().some(exclusion => exclusion.condition && exclusion.options.includes(m)); + }); this.menuContainer.setVisible(true); this.setCursor(0); diff --git a/src/ui/message-ui-handler.ts b/src/ui/message-ui-handler.ts index efa53b63808..57f054c9bf9 100644 --- a/src/ui/message-ui-handler.ts +++ b/src/ui/message-ui-handler.ts @@ -1,9 +1,9 @@ -import AwaitableUiHandler from "./awaitable-ui-handler"; -import type { UiMode } from "#enums/ui-mode"; -import { getFrameMs } from "#app/utils/common"; import { globalScene } from "#app/global-scene"; +import type { UiMode } from "#enums/ui-mode"; +import { AwaitableUiHandler } from "#ui/awaitable-ui-handler"; +import { getFrameMs } from "#utils/common"; -export default abstract class MessageUiHandler extends AwaitableUiHandler { +export abstract class MessageUiHandler extends AwaitableUiHandler { protected textTimer: Phaser.Time.TimerEvent | null; protected textCallbackTimer: Phaser.Time.TimerEvent | null; public pendingPrompt: boolean; diff --git a/src/ui/modal-ui-handler.ts b/src/ui/modal-ui-handler.ts index 56c1c2c3fcf..844f7f43930 100644 --- a/src/ui/modal-ui-handler.ts +++ b/src/ui/modal-ui-handler.ts @@ -1,9 +1,9 @@ -import { TextStyle, addTextObject } from "./text"; -import type { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; -import { WindowVariant, addWindow } from "./ui-theme"; -import type { Button } from "#enums/buttons"; import { globalScene } from "#app/global-scene"; +import type { Button } from "#enums/buttons"; +import type { UiMode } from "#enums/ui-mode"; +import { addTextObject, TextStyle } from "#ui/text"; +import { UiHandler } from "#ui/ui-handler"; +import { addWindow, WindowVariant } from "#ui/ui-theme"; export interface ModalConfig { buttonActions: Function[]; diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index 7f5bf997f88..3e3487d4ffb 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -1,28 +1,28 @@ import { globalScene } from "#app/global-scene"; -import type { ModifierTypeOption } from "../modifier/modifier-type"; -import { getPlayerShopModifierTypeOptionsForWave, TmModifierType } from "../modifier/modifier-type"; -import { getPokeballAtlasKey } from "#app/data/pokeball"; -import { addTextObject, getTextStyleOptions, getModifierTierTextTint, getTextColor, TextStyle } from "./text"; -import AwaitableUiHandler from "./awaitable-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import { LockModifierTiersModifier, PokemonHeldItemModifier, HealShopCostModifier } from "../modifier/modifier"; -import { handleTutorial, Tutorial } from "../tutorial"; -import { Button } from "#enums/buttons"; -import MoveInfoOverlay from "./move-info-overlay"; -import { allMoves } from "#app/data/data-lists"; -import { formatMoney, NumberHolder } from "#app/utils/common"; import Overrides from "#app/overrides"; -import i18next from "i18next"; -import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; -import Phaser from "phaser"; +import { handleTutorial, Tutorial } from "#app/tutorial"; +import { allMoves } from "#data/data-lists"; +import { getPokeballAtlasKey } from "#data/pokeball"; +import { Button } from "#enums/buttons"; import type { PokeballType } from "#enums/pokeball"; +import { ShopCursorTarget } from "#enums/shop-cursor-target"; +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 { formatMoney, NumberHolder } from "#utils/common"; +import i18next from "i18next"; +import Phaser from "phaser"; export const SHOP_OPTIONS_ROW_LIMIT = 7; const SINGLE_SHOP_ROW_YOFFSET = 12; const DOUBLE_SHOP_ROW_YOFFSET = 24; const OPTION_BUTTON_YPOSITION = -62; -export default class ModifierSelectUiHandler extends AwaitableUiHandler { +export class ModifierSelectUiHandler extends AwaitableUiHandler { private modifierContainer: Phaser.GameObjects.Container; private rerollButtonContainer: Phaser.GameObjects.Container; private lockRarityButtonContainer: Phaser.GameObjects.Container; @@ -269,87 +269,130 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { globalScene.updateBiomeWaveText(); globalScene.updateMoneyText(); + // DO NOT REMOVE: Fixes bug which allows action input to be processed before the UI is shown, + // causing errors if reroll is selected + this.awaitingActionInput = false; + + const { promise: tweenPromise, resolve: tweenResolve } = Promise.withResolvers(); let i = 0; + // #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, onUpdate: t => { - const value = t.getValue(); + // The bang here is safe, as `getValue()` only returns null if the tween has been destroyed (which obviously isn't the case inside onUpdate) + const value = t.getValue()!; 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: () => { + Promise.allSettled(rewardAnimPromises).then(() => tweenResolve()); + }, }); + /** 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()) { - shopOption.show(0, 0); + // 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); } }); - globalScene.time.delayedCall(4000 + maxUpgradeCount * 2000, () => { - if (partyHasHeldItem) { - this.transferButtonContainer.setAlpha(0); - this.transferButtonContainer.setVisible(true); + tweenPromise.then(() => { + globalScene.time.delayedCall(500, () => { + if (partyHasHeldItem) { + this.transferButtonContainer.setAlpha(0); + this.transferButtonContainer.setVisible(true); + globalScene.tweens.add({ + targets: this.transferButtonContainer, + alpha: 1, + duration: 250, + }); + } + + this.rerollButtonContainer.setAlpha(0); + this.checkButtonContainer.setAlpha(0); + this.lockRarityButtonContainer.setAlpha(0); + this.continueButtonContainer.setAlpha(0); + this.rerollButtonContainer.setVisible(true); + this.checkButtonContainer.setVisible(true); + this.continueButtonContainer.setVisible(this.rerollCost < 0); + this.lockRarityButtonContainer.setVisible(canLockRarities); + globalScene.tweens.add({ - targets: this.transferButtonContainer, + targets: [this.checkButtonContainer, this.continueButtonContainer], alpha: 1, duration: 250, }); - } - this.rerollButtonContainer.setAlpha(0); - this.checkButtonContainer.setAlpha(0); - this.lockRarityButtonContainer.setAlpha(0); - this.continueButtonContainer.setAlpha(0); - this.rerollButtonContainer.setVisible(true); - this.checkButtonContainer.setVisible(true); - this.continueButtonContainer.setVisible(this.rerollCost < 0); - this.lockRarityButtonContainer.setVisible(canLockRarities); + globalScene.tweens.add({ + targets: [this.rerollButtonContainer, this.lockRarityButtonContainer], + alpha: this.rerollCost < 0 ? 0.5 : 1, + duration: 250, + }); - globalScene.tweens.add({ - targets: [this.checkButtonContainer, this.continueButtonContainer], - alpha: 1, - duration: 250, - }); + // 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); + } + }; - globalScene.tweens.add({ - targets: [this.rerollButtonContainer, this.lockRarityButtonContainer], - alpha: this.rerollCost < 0 ? 0.5 : 1, - 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); - } - }; - - 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; } @@ -687,7 +730,11 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { scale: 0.01, duration: 250, ease: "Cubic.easeIn", - onComplete: () => options.forEach(o => o.destroy()), + onComplete: () => { + options.forEach(o => { + o.destroy(); + }); + }, }); [ @@ -797,14 +844,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; @@ -819,7 +897,7 @@ class ModifierOption extends Phaser.GameObjects.Container { if (!globalScene) { return; } - const value = t.getValue(); + const value = t.getValue()!; if (!bounce && value > lastValue) { globalScene.playSound("se/pb_bounce_1", { volume: 1 / ++bounceCount, @@ -832,96 +910,129 @@ 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 upgradeIndex = u; - globalScene.time.delayedCall( - remainingDuration - 2000 * (this.modifierTypeOption.upgradeCount - (upgradeIndex + 1 + upgradeCountOffset)), - () => { - globalScene.playSound("se/upgrade", { - rate: 1 + 0.25 * upgradeIndex, - }); - this.pbTint.setPosition(this.pb.x, this.pb.y); - this.pbTint.setTintFill(0xffffff); - this.pbTint.setAlpha(0); - this.pbTint.setVisible(true); - globalScene.tweens.add({ + const { resolve, promise } = Promise.withResolvers(); + globalScene.tweens.chain({ + tweens: [ + { + delay: remainingDuration - 2000 * (this.modifierTypeOption.upgradeCount - (u + 1 + upgradeCountOffset)), + onStart: () => { + globalScene.playSound("se/upgrade", { + rate: 1 + 0.25 * u, + }); + this.pbTint.setPosition(this.pb.x, this.pb.y).setTintFill(0xffffff).setVisible(true).setAlpha(0); + }, targets: this.pbTint, alpha: 1, duration: 1000, ease: "Sine.easeIn", onComplete: () => { - this.pb.setTexture( - "pb", - this.getPbAtlasKey(-this.modifierTypeOption.upgradeCount + (upgradeIndex + 1)), - ); - globalScene.tweens.add({ - targets: this.pbTint, - alpha: 0, - duration: 750, - ease: "Sine.easeOut", - onComplete: () => { - this.pbTint.setVisible(false); - }, - }); + this.pb.setTexture("pb", this.getPbAtlasKey(-this.modifierTypeOption.upgradeCount + (u + 1))); }, - }); - }, - ); + }, + { + targets: this.pbTint, + alpha: 0, + duration: 750, + 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 2b230d609fd..7720354a5b3 100644 --- a/src/ui/move-info-overlay.ts +++ b/src/ui/move-info-overlay.ts @@ -1,11 +1,11 @@ import type { InfoToggle } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import { TextStyle, addTextObject } from "./text"; -import { addWindow } from "./ui-theme"; -import { getLocalizedSpriteKey, fixedInt } from "#app/utils/common"; -import type Move from "../data/moves/move"; -import { MoveCategory } from "#enums/MoveCategory"; +import { MoveCategory } from "#enums/move-category"; import { PokemonType } from "#enums/pokemon-type"; +import type { Move } from "#moves/move"; +import { addTextObject, TextStyle } from "#ui/text"; +import { addWindow } from "#ui/ui-theme"; +import { fixedInt, getLocalizedSpriteKey } from "#utils/common"; import i18next from "i18next"; export interface MoveInfoOverlaySettings { @@ -30,7 +30,7 @@ const DESC_HEIGHT = 48; const BORDER = 8; const GLOBAL_SCALE = 6; -export default class MoveInfoOverlay extends Phaser.GameObjects.Container implements InfoToggle { +export class MoveInfoOverlay extends Phaser.GameObjects.Container implements InfoToggle { public active = false; private move: Move; @@ -80,7 +80,6 @@ export default class MoveInfoOverlay extends Phaser.GameObjects.Container implem }, }, ); - this.desc.setLineSpacing(i18next.resolvedLanguage === "ja" ? 25 : 5); // limit the text rendering, required for scrolling later on const maskPointOrigin = { diff --git a/src/ui/mystery-encounter-ui-handler.ts b/src/ui/mystery-encounter-ui-handler.ts index 7d4ec845209..37f0efb50e4 100644 --- a/src/ui/mystery-encounter-ui-handler.ts +++ b/src/ui/mystery-encounter-ui-handler.ts @@ -1,22 +1,22 @@ -import { addBBCodeTextObject, getBBCodeFrag, TextStyle } from "./text"; -import { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; +import { globalScene } from "#app/global-scene"; +import { getPokeballAtlasKey } from "#data/pokeball"; import { Button } from "#enums/buttons"; -import { addWindow, WindowVariant } from "./ui-theme"; -import type { MysteryEncounterPhase } from "../phases/mystery-encounter-phases"; -import { PartyUiMode } from "./party-ui-handler"; -import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; -import { fixedInt, isNullOrUndefined } from "#app/utils/common"; -import { getPokeballAtlasKey } from "../data/pokeball"; -import type { OptionSelectSettings } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import i18next from "i18next"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +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 { UiHandler } from "#ui/ui-handler"; +import { addWindow, WindowVariant } from "#ui/ui-theme"; +import { fixedInt, isNullOrUndefined } from "#utils/common"; +import i18next from "i18next"; import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import { globalScene } from "#app/global-scene"; -export default class MysteryEncounterUiHandler extends UiHandler { +export class MysteryEncounterUiHandler extends UiHandler { private cursorContainer: Phaser.GameObjects.Container; private cursorObj?: Phaser.GameObjects.Image; @@ -517,7 +517,7 @@ export default class MysteryEncounterUiHandler extends UiHandler { descriptionTextObject.setMask(abilityDescriptionTextMask); - const descriptionLineCount = Math.floor(descriptionTextObject.displayHeight / 10); + const descriptionLineCount = Math.floor(descriptionTextObject.displayHeight / 9.2); if (this.descriptionScrollTween) { this.descriptionScrollTween.remove(); @@ -614,6 +614,8 @@ export default class MysteryEncounterUiHandler extends UiHandler { const tooltipTextObject = addBBCodeTextObject(6, 7, text, TextStyle.TOOLTIP_CONTENT, { wordWrap: { width: 600 }, fontSize: "72px", + padding: { top: 8 }, + lineSpacing: 1.25, }); this.tooltipContainer.add(tooltipTextObject); @@ -627,7 +629,7 @@ export default class MysteryEncounterUiHandler extends UiHandler { const textMask = tooltipTextMaskRect.createGeometryMask(); tooltipTextObject.setMask(textMask); - const tooltipLineCount = Math.floor(tooltipTextObject.displayHeight / 11.2); + const tooltipLineCount = Math.floor(tooltipTextObject.displayHeight / 10.2); if (this.tooltipScrollTween) { this.tooltipScrollTween.remove(); diff --git a/src/ui/party-exp-bar.ts b/src/ui/party-exp-bar.ts index 7b7f5277ca1..0d6ec936a92 100644 --- a/src/ui/party-exp-bar.ts +++ b/src/ui/party-exp-bar.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import type Pokemon from "../field/pokemon"; -import { TextStyle, addTextObject } from "./text"; +import type { Pokemon } from "#field/pokemon"; +import { addTextObject, TextStyle } from "#ui/text"; import i18next from "i18next"; -export default class PartyExpBar extends Phaser.GameObjects.Container { +export class PartyExpBar extends Phaser.GameObjects.Container { private bg: Phaser.GameObjects.NineSlice; private pokemonIcon: Phaser.GameObjects.Container; private expText: Phaser.GameObjects.Text; diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index cf6333f4580..ce5f60813c7 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -1,33 +1,33 @@ -import type { PlayerPokemon, TurnMove } from "#app/field/pokemon"; -import type { PokemonMove } from "#app/data/moves/pokemon-move"; -import type Pokemon from "#app/field/pokemon"; -import { MoveResult } from "#enums/move-result"; -import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#app/ui/text"; -import { Command } from "#enums/command"; -import MessageUiHandler from "#app/ui/message-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import { BooleanHolder, toReadableString, randInt, getLocalizedSpriteKey } from "#app/utils/common"; -import type { PokemonFormChangeItemModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { allMoves } from "#app/data/data-lists"; -import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; -import { StatusEffect } from "#enums/status-effect"; -import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; -import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; -import { addWindow } from "#app/ui/ui-theme"; -import { SpeciesFormChangeItemTrigger } from "#app/data/pokemon-forms/form-change-triggers"; -import { FormChangeItem } from "#enums/form-change-item"; -import { getVariantTint } from "#app/sprites/variant"; +import { globalScene } from "#app/global-scene"; +import { getPokemonNameWithAffix } from "#app/messages"; +import { pokemonEvolutions } from "#balance/pokemon-evolutions"; +import { applyChallenges } from "#data/challenge"; +import { allMoves } from "#data/data-lists"; +import { SpeciesFormChangeItemTrigger } from "#data/form-change-triggers"; +import { Gender, getGenderColor, getGenderSymbol } from "#data/gender"; import { Button } from "#enums/buttons"; -import { applyChallenges } from "#app/data/challenge"; import { ChallengeType } from "#enums/challenge-type"; -import MoveInfoOverlay from "#app/ui/move-info-overlay"; +import { Command } from "#enums/command"; +import { FormChangeItem } from "#enums/form-change-item"; +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 { UiMode } from "#enums/ui-mode"; +import type { PlayerPokemon, Pokemon } from "#field/pokemon"; +import type { PokemonFormChangeItemModifier, PokemonHeldItemModifier } from "#modifiers/modifier"; +import type { PokemonMove } from "#moves/pokemon-move"; +import type { CommandPhase } from "#phases/command-phase"; +import { getVariantTint } from "#sprites/variant"; +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 { addWindow } from "#ui/ui-theme"; +import { BooleanHolder, getLocalizedSpriteKey, randInt, toReadableString } from "#utils/common"; import i18next from "i18next"; import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { getPokemonNameWithAffix } from "#app/messages"; -import type { CommandPhase } from "#app/phases/command-phase"; -import { globalScene } from "#app/global-scene"; const defaultMessage = i18next.t("partyUiHandler:choosePokemon"); @@ -144,7 +144,7 @@ export type PokemonModifierTransferSelectFilter = ( ) => string | null; export type PokemonMoveSelectFilter = (pokemonMove: PokemonMove) => string | null; -export default class PartyUiHandler extends MessageUiHandler { +export class PartyUiHandler extends MessageUiHandler { private partyUiMode: PartyUiMode; private fieldIndex: number; @@ -1284,17 +1284,18 @@ export default class PartyUiHandler extends MessageUiHandler { const allowBatonModifierSwitch = this.allowBatonModifierSwitch(); const isBatonPassMove = this.isBatonPassMove(); + if (allowBatonModifierSwitch && !isBatonPassMove) { + // the BATON modifier gives an extra switch option for + // pokemon-command switches, allowing buffs to be optionally passed + this.options.push(PartyOption.PASS_BATON); + } + // isBatonPassMove and allowBatonModifierSwitch shouldn't ever be true // at the same time, because they both explicitly check for a mutually // exclusive partyUiMode. But better safe than sorry. this.options.push( isBatonPassMove && !allowBatonModifierSwitch ? PartyOption.PASS_BATON : PartyOption.SEND_OUT, ); - if (allowBatonModifierSwitch && !isBatonPassMove) { - // the BATON modifier gives an extra switch option for - // pokemon-command switches, allowing buffs to be optionally passed - this.options.push(PartyOption.PASS_BATON); - } } this.addCommonOptions(pokemon); if (this.partyUiMode === PartyUiMode.SWITCH) { @@ -1334,13 +1335,13 @@ export default class PartyUiHandler extends MessageUiHandler { this.addCommonOptions(pokemon); break; case PartyUiMode.CHECK: + this.addCommonOptions(pokemon); if (globalScene.phaseManager.getCurrentPhase()?.is("SelectModifierPhase")) { const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); for (let i = 0; i < formChangeItemModifiers.length; i++) { this.options.push(PartyOption.FORM_CHANGE_ITEM + i); } } - this.addCommonOptions(pokemon); break; case PartyUiMode.SELECT: this.options.push(PartyOption.SELECT); @@ -1937,7 +1938,7 @@ class PartyCancelButton extends Phaser.GameObjects.Container { this.partyCancelPb = partyCancelPb; - const partyCancelText = addTextObject(-8, -7, i18next.t("partyUiHandler:cancel"), TextStyle.PARTY); + const partyCancelText = addTextObject(-10, -7, i18next.t("partyUiHandler:cancel"), TextStyle.PARTY_CANCEL_BUTTON); this.add(partyCancelText); } diff --git a/src/ui/pokeball-tray.ts b/src/ui/pokeball-tray.ts index 0bf47699cdb..9720aa42090 100644 --- a/src/ui/pokeball-tray.ts +++ b/src/ui/pokeball-tray.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; -import type Pokemon from "../field/pokemon"; +import type { Pokemon } from "#field/pokemon"; -export default class PokeballTray extends Phaser.GameObjects.Container { +export class PokeballTray extends Phaser.GameObjects.Container { private player: boolean; private bg: Phaser.GameObjects.NineSlice; diff --git a/src/ui/pokedex-info-overlay.ts b/src/ui/pokedex-info-overlay.ts index 2e889f6d2a9..6d3b8f1009f 100644 --- a/src/ui/pokedex-info-overlay.ts +++ b/src/ui/pokedex-info-overlay.ts @@ -1,9 +1,8 @@ -import type { InfoToggle } from "../battle-scene"; -import { TextStyle, addTextObject } from "./text"; -import { addWindow } from "./ui-theme"; -import { fixedInt } from "#app/utils/common"; -import i18next from "i18next"; +import type { InfoToggle } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; +import { addTextObject, TextStyle } from "#ui/text"; +import { addWindow } from "#ui/ui-theme"; +import { fixedInt } from "#utils/common"; export interface PokedexInfoOverlaySettings { delayVisibility?: boolean; // if true, showing the overlay will only set it to active and populate the fields and the handler using this field has to manually call setVisible later. @@ -22,7 +21,7 @@ const DESC_HEIGHT = 48; const BORDER = 8; const GLOBAL_SCALE = 6; -export default class PokedexInfoOverlay extends Phaser.GameObjects.Container implements InfoToggle { +export class PokedexInfoOverlay extends Phaser.GameObjects.Container implements InfoToggle { public active = false; private desc: Phaser.GameObjects.Text; @@ -55,7 +54,6 @@ export default class PokedexInfoOverlay extends Phaser.GameObjects.Container imp this.desc = addTextObject(BORDER, BORDER - 2, "", TextStyle.BATTLE_INFO, { wordWrap: { width: (this.width - (BORDER - 2) * 2) * GLOBAL_SCALE }, }); - this.desc.setLineSpacing(i18next.resolvedLanguage === "ja" ? 25 : 5); // limit the text rendering, required for scrolling later on this.maskPointOriginX = options?.x || 0; diff --git a/src/ui/pokedex-mon-container.ts b/src/ui/pokedex-mon-container.ts index da79320850d..73799870e6b 100644 --- a/src/ui/pokedex-mon-container.ts +++ b/src/ui/pokedex-mon-container.ts @@ -1,8 +1,8 @@ -import type { Variant } from "#app/sprites/variant"; import { globalScene } from "#app/global-scene"; -import { isNullOrUndefined } from "#app/utils/common"; -import type PokemonSpecies from "../data/pokemon-species"; -import { addTextObject, TextStyle } from "./text"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import type { Variant } from "#sprites/variant"; +import { addTextObject, TextStyle } from "#ui/text"; +import { isNullOrUndefined } from "#utils/common"; interface SpeciesDetails { shiny?: boolean; diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index 9ec74e70b23..ff96aa55772 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -1,54 +1,58 @@ -import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; -import { pokemonEvolutions, pokemonPrevolutions, pokemonStarters } from "#app/data/balance/pokemon-evolutions"; -import type { Variant } from "#app/sprites/variant"; -import { getVariantTint, getVariantIcon } from "#app/sprites/variant"; -import { argbFromRgba } from "@material/material-color-utilities"; -import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; import { starterColors } from "#app/global-vars/starter-colors"; -import { allAbilities } from "#app/data/data-lists"; -import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { GrowthRate, getGrowthRateColor } from "#app/data/exp"; -import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; -import { allMoves } from "#app/data/data-lists"; -import { getNatureName } from "#app/data/nature"; -import type { SpeciesFormChange } from "#app/data/pokemon-forms"; -import { pokemonFormChanges } from "#app/data/pokemon-forms"; -import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; -import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpeciesForm, normalForm } from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { allSpecies } from "#app/data/data-lists"; -import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; -import { starterPassiveAbilities } from "#app/data/balance/passives"; -import { PokemonType } from "#enums/pokemon-type"; -import type { StarterAttributes } from "#app/system/game-data"; -import type { DexEntry } from "#app/@types/dex-data"; -import { AbilityAttr } from "#enums/ability-attr"; -import { DexAttr } from "#enums/dex-attr"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import MessageUiHandler from "#app/ui/message-ui-handler"; -import { StatsContainer } from "#app/ui/stats-container"; -import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor, getTextStyleOptions } from "#app/ui/text"; -import { UiMode } from "#enums/ui-mode"; -import { addWindow } from "#app/ui/ui-theme"; -import { Egg } from "#app/data/egg"; import Overrides from "#app/overrides"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; -import { Passive as PassiveAttr } from "#enums/passive"; -import MoveInfoOverlay from "#app/ui/move-info-overlay"; -import PokedexInfoOverlay from "#app/ui/pokedex-info-overlay"; -import { getEggTierForSpecies } from "#app/data/egg"; -import { Device } from "#enums/devices"; -import type { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { Button } from "#enums/buttons"; -import { EggSourceType } from "#enums/egg-source-types"; +import type { BiomeTierTod } from "#balance/biomes"; +import { BiomePoolTier, catchableSpecies } from "#balance/biomes"; +import { speciesEggMoves } from "#balance/egg-moves"; +import { starterPassiveAbilities } from "#balance/passives"; +import type { SpeciesFormEvolution } from "#balance/pokemon-evolutions"; +import { pokemonEvolutions, pokemonPrevolutions, pokemonStarters } from "#balance/pokemon-evolutions"; +import type { LevelMoves } from "#balance/pokemon-level-moves"; +import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#balance/pokemon-level-moves"; import { getPassiveCandyCount, - getValueReductionCandyCounts, getSameSpeciesEggCandyCounts, -} from "#app/data/balance/starters"; + getStarterValueFriendshipCap, + getValueReductionCandyCounts, + speciesStarterCosts, +} from "#balance/starters"; +import { speciesTmMoves } from "#balance/tms"; +import { allAbilities, allMoves, allSpecies } from "#data/data-lists"; +import { Egg, getEggTierForSpecies } from "#data/egg"; +import { GrowthRate, getGrowthRateColor } from "#data/exp"; +import { Gender, getGenderColor, getGenderSymbol } from "#data/gender"; +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 { AbilityAttr } from "#enums/ability-attr"; +import type { AbilityId } from "#enums/ability-id"; +import { BiomeId } from "#enums/biome-id"; +import { Button } from "#enums/buttons"; +import { Device } from "#enums/devices"; +import { DexAttr } from "#enums/dex-attr"; +import { EggSourceType } from "#enums/egg-source-types"; +import type { MoveId } from "#enums/move-id"; +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 { TimeOfDay } from "#enums/time-of-day"; +import { UiMode } from "#enums/ui-mode"; +import type { Variant } from "#sprites/variant"; +import { getVariantIcon, getVariantTint } from "#sprites/variant"; +import type { StarterAttributes } from "#system/game-data"; +import { SettingKeyboard } from "#system/settings-keyboard"; +import type { DexEntry } from "#types/dex-data"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { BaseStatsOverlay } from "#ui/base-stats-overlay"; +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 { addWindow } from "#ui/ui-theme"; import { BooleanHolder, getLocalizedSpriteKey, @@ -56,17 +60,11 @@ import { padInt, rgbHexToRgba, toReadableString, -} from "#app/utils/common"; -import type { Nature } from "#enums/nature"; -import { getEnumKeys } from "#app/utils/common"; -import { speciesTmMoves } from "#app/data/balance/tms"; -import type { BiomeTierTod } from "#app/data/balance/biomes"; -import { BiomePoolTier, catchableSpecies } from "#app/data/balance/biomes"; -import { BiomeId } from "#enums/biome-id"; -import { TimeOfDay } from "#app/enums/time-of-day"; -import type { AbilityId } from "#enums/ability-id"; -import { BaseStatsOverlay } from "#app/ui/base-stats-overlay"; -import { globalScene } from "#app/global-scene"; +} from "#utils/common"; +import { getEnumValues } from "#utils/enums"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import { argbFromRgba } from "@material/material-color-utilities"; +import i18next from "i18next"; import type BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; interface LanguageSetting { @@ -82,13 +80,21 @@ const languageSettings: { [key: string]: LanguageSetting } = { instructionTextSize: "38px", }, de: { - starterInfoTextSize: "48px", + starterInfoTextSize: "54px", instructionTextSize: "35px", - starterInfoXPos: 33, + starterInfoXPos: 35, }, "es-ES": { - starterInfoTextSize: "56px", - instructionTextSize: "35px", + starterInfoTextSize: "50px", + instructionTextSize: "38px", + starterInfoYOffset: 0.5, + starterInfoXPos: 38, + }, + "es-MX": { + starterInfoTextSize: "50px", + instructionTextSize: "38px", + starterInfoYOffset: 0.5, + starterInfoXPos: 38, }, fr: { starterInfoTextSize: "54px", @@ -98,34 +104,53 @@ const languageSettings: { [key: string]: LanguageSetting } = { starterInfoTextSize: "56px", instructionTextSize: "38px", }, - pt_BR: { - starterInfoTextSize: "47px", - instructionTextSize: "38px", + "pt-BR": { + starterInfoTextSize: "48px", + instructionTextSize: "42px", + starterInfoYOffset: 0.5, starterInfoXPos: 33, }, zh: { - starterInfoTextSize: "47px", - instructionTextSize: "38px", - starterInfoYOffset: 1, - starterInfoXPos: 24, - }, - pt: { - starterInfoTextSize: "48px", - instructionTextSize: "42px", - starterInfoXPos: 33, + starterInfoTextSize: "56px", + instructionTextSize: "36px", + starterInfoXPos: 26, }, ko: { - starterInfoTextSize: "52px", + starterInfoTextSize: "60px", instructionTextSize: "38px", + starterInfoYOffset: -0.5, + starterInfoXPos: 30, }, ja: { - starterInfoTextSize: "51px", - instructionTextSize: "38px", + starterInfoTextSize: "48px", + instructionTextSize: "40px", + starterInfoYOffset: 1, + starterInfoXPos: 32, }, - "ca-ES": { + ca: { + starterInfoTextSize: "48px", + instructionTextSize: "38px", + starterInfoYOffset: 0.5, + starterInfoXPos: 29, + }, + da: { starterInfoTextSize: "56px", instructionTextSize: "38px", }, + tr: { + starterInfoTextSize: "56px", + instructionTextSize: "38px", + }, + ro: { + starterInfoTextSize: "56px", + instructionTextSize: "38px", + }, + ru: { + starterInfoTextSize: "46px", + instructionTextSize: "38px", + starterInfoYOffset: 0.5, + starterInfoXPos: 26, + }, }; const valueReductionMax = 2; @@ -152,7 +177,7 @@ enum MenuOptions { EVOLUTIONS, } -export default class PokedexPageUiHandler extends MessageUiHandler { +export class PokedexPageUiHandler extends MessageUiHandler { private starterSelectContainer: Phaser.GameObjects.Container; private shinyOverlay: Phaser.GameObjects.Image; private pokemonNumberText: Phaser.GameObjects.Text; @@ -309,7 +334,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.shinyOverlay.setVisible(false); this.starterSelectContainer.add(this.shinyOverlay); - this.pokemonNumberText = addTextObject(17, 1, "0000", TextStyle.SUMMARY); + this.pokemonNumberText = addTextObject(17, 1, "0000", TextStyle.SUMMARY_DEX_NUM); this.pokemonNumberText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonNumberText); @@ -328,7 +353,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.pokemonGrowthRateLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonGrowthRateLabelText); - this.pokemonGrowthRateText = addTextObject(34, 106, "", TextStyle.SUMMARY_PINK, { fontSize: "36px" }); + this.pokemonGrowthRateText = addTextObject(34, 106, "", TextStyle.GROWTH_RATE_TYPE, { fontSize: "36px" }); this.pokemonGrowthRateText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonGrowthRateText); @@ -371,9 +396,15 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.pokemonLuckLabelText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonLuckLabelText); - this.pokemonLuckText = addTextObject(8 + this.pokemonLuckLabelText.displayWidth + 2, 89, "0", TextStyle.WINDOW, { - fontSize: "56px", - }); + this.pokemonLuckText = addTextObject( + 8 + this.pokemonLuckLabelText.displayWidth + 2, + 89, + "0", + TextStyle.LUCK_VALUE, + { + fontSize: "56px", + }, + ); this.pokemonLuckText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonLuckText); @@ -470,7 +501,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("pokedexUiHandler:candyUpgrade"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.candyUpgradeLabel.setName("text-candyUpgrade-label"); @@ -491,7 +522,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("pokedexUiHandler:cycleShiny"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.shinyLabel.setName("text-shiny-label"); @@ -510,7 +541,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("pokedexUiHandler:cycleForm"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.formLabel.setName("text-form-label"); @@ -529,7 +560,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("pokedexUiHandler:cycleGender"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.genderLabel.setName("text-gender-label"); @@ -548,7 +579,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("pokedexUiHandler:cycleVariant"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.variantLabel.setName("text-variant-label"); @@ -557,9 +588,15 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.showBackSpriteIconElement.setName("show-backSprite-icon-element"); this.showBackSpriteIconElement.setScale(0.675); this.showBackSpriteIconElement.setOrigin(0.0, 0.0); - this.showBackSpriteLabel = addTextObject(60, 7, i18next.t("pokedexUiHandler:showBackSprite"), TextStyle.PARTY, { - fontSize: instructionTextSize, - }); + this.showBackSpriteLabel = addTextObject( + 60, + 7, + i18next.t("pokedexUiHandler:showBackSprite"), + TextStyle.INSTRUCTIONS_TEXT, + { + fontSize: instructionTextSize, + }, + ); this.showBackSpriteLabel.setName("show-backSprite-label"); this.starterSelectContainer.add(this.showBackSpriteIconElement); this.starterSelectContainer.add(this.showBackSpriteLabel); @@ -603,7 +640,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.menuContainer.setVisible(false); - this.menuOptions = getEnumKeys(MenuOptions).map(m => Number.parseInt(MenuOptions[m]) as MenuOptions); + this.menuOptions = getEnumValues(MenuOptions); this.optionSelectText = addBBCodeTextObject( 0, @@ -707,7 +744,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.starterAttributes = this.initStarterPrefs(); - this.menuOptions = getEnumKeys(MenuOptions).map(m => Number.parseInt(MenuOptions[m]) as MenuOptions); + this.menuOptions = getEnumValues(MenuOptions); this.menuContainer.setVisible(true); @@ -1899,14 +1936,14 @@ export default class PokedexPageUiHandler extends MessageUiHandler { if (!(passiveAttr & PassiveAttr.UNLOCKED)) { const passiveCost = getPassiveCandyCount(speciesStarterCosts[this.starterId]); options.push({ - label: `x${passiveCost} ${i18next.t("pokedexUiHandler:unlockPassive")}`, + label: `×${passiveCost} ${i18next.t("pokedexUiHandler:unlockPassive")}`, handler: () => { if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= passiveCost) { starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED; if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { starterData.candyCount -= passiveCost; } - this.pokemonCandyCountText.setText(`x${starterData.candyCount}`); + this.pokemonCandyCountText.setText(`×${starterData.candyCount}`); globalScene.gameData.saveSystem().then(success => { if (!success) { return globalScene.reset(true); @@ -1931,14 +1968,14 @@ export default class PokedexPageUiHandler extends MessageUiHandler { if (valueReduction < valueReductionMax) { const reductionCost = getValueReductionCandyCounts(speciesStarterCosts[this.starterId])[valueReduction]; options.push({ - label: `x${reductionCost} ${i18next.t("pokedexUiHandler:reduceCost")}`, + label: `×${reductionCost} ${i18next.t("pokedexUiHandler:reduceCost")}`, handler: () => { if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= reductionCost) { starterData.valueReduction++; if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { starterData.candyCount -= reductionCost; } - this.pokemonCandyCountText.setText(`x${starterData.candyCount}`); + this.pokemonCandyCountText.setText(`×${starterData.candyCount}`); globalScene.gameData.saveSystem().then(success => { if (!success) { return globalScene.reset(true); @@ -1960,7 +1997,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { // Same species egg menu option. const sameSpeciesEggCost = getSameSpeciesEggCandyCounts(speciesStarterCosts[this.starterId]); options.push({ - label: `x${sameSpeciesEggCost} ${i18next.t("pokedexUiHandler:sameSpeciesEgg")}`, + label: `×${sameSpeciesEggCost} ${i18next.t("pokedexUiHandler:sameSpeciesEgg")}`, handler: () => { if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= sameSpeciesEggCost) { if (globalScene.gameData.eggs.length >= 99 && !Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { @@ -1979,7 +2016,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { starterData.candyCount -= sameSpeciesEggCost; } - this.pokemonCandyCountText.setText(`x${starterData.candyCount}`); + this.pokemonCandyCountText.setText(`×${starterData.candyCount}`); const egg = new Egg({ scene: globalScene, @@ -2480,9 +2517,11 @@ export default class PokedexPageUiHandler extends MessageUiHandler { const isFormSeen = this.isSeen(); this.shinyOverlay.setVisible(shiny ?? false); // TODO: is false the correct default? - this.pokemonNumberText.setColor(this.getTextColor(shiny ? TextStyle.SUMMARY_GOLD : TextStyle.SUMMARY, false)); + this.pokemonNumberText.setColor( + this.getTextColor(shiny ? TextStyle.SUMMARY_DEX_NUM_GOLD : TextStyle.SUMMARY_DEX_NUM, false), + ); this.pokemonNumberText.setShadowColor( - this.getTextColor(shiny ? TextStyle.SUMMARY_GOLD : TextStyle.SUMMARY, true), + this.getTextColor(shiny ? TextStyle.SUMMARY_DEX_NUM_GOLD : TextStyle.SUMMARY_DEX_NUM, true), ); const assetLoadCancelled = new BooleanHolder(false); @@ -2634,7 +2673,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.pokemonCandyIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[0]))); this.pokemonCandyOverlayIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[1]))); this.pokemonCandyCountText.setText( - `x${species.speciesId === SpeciesId.PIKACHU ? 0 : globalScene.gameData.starterData[this.starterId].candyCount}`, + `×${species.speciesId === SpeciesId.PIKACHU ? 0 : globalScene.gameData.starterData[this.starterId].candyCount}`, ); this.pokemonCandyContainer.setVisible(true); diff --git a/src/ui/pokedex-scan-ui-handler.ts b/src/ui/pokedex-scan-ui-handler.ts index 2bffc464793..bcf869f6f39 100644 --- a/src/ui/pokedex-scan-ui-handler.ts +++ b/src/ui/pokedex-scan-ui-handler.ts @@ -1,17 +1,15 @@ -import type { InputFieldConfig } from "./form-modal-ui-handler"; -import { FormModalUiHandler } from "./form-modal-ui-handler"; -import type { ModalConfig } from "./modal-ui-handler"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type { OptionSelectItem } from "./abstact-option-select-ui-handler"; -import { isNullOrUndefined } from "#app/utils/common"; +import { allAbilities, allMoves, allSpecies } from "#data/data-lists"; import { UiMode } from "#enums/ui-mode"; -import { FilterTextRow } from "./filter-text"; -import { allAbilities } from "#app/data/data-lists"; -import { allMoves } from "#app/data/data-lists"; -import { allSpecies } from "#app/data/data-lists"; +import type { PlayerPokemon } from "#field/pokemon"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { FilterTextRow } from "#ui/filter-text"; +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 { isNullOrUndefined } from "#utils/common"; import i18next from "i18next"; -export default class PokedexScanUiHandler extends FormModalUiHandler { +export class PokedexScanUiHandler extends FormModalUiHandler { keys: string[]; reducedKeys: string[]; parallelKeys: string[]; diff --git a/src/ui/pokedex-ui-handler.ts b/src/ui/pokedex-ui-handler.ts index 9169ca77999..c2f595cb190 100644 --- a/src/ui/pokedex-ui-handler.ts +++ b/src/ui/pokedex-ui-handler.ts @@ -1,53 +1,52 @@ -import type { Variant } from "#app/sprites/variant"; -import { getVariantTint, getVariantIcon } from "#app/sprites/variant"; -import { argbFromRgba } from "@material/material-color-utilities"; -import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; import { starterColors } from "#app/global-vars/starter-colors"; -import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves"; -import type { PokemonForm } from "#app/data/pokemon-species"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpeciesForm, getPokerusStarters, normalForm } from "#app/data/pokemon-species"; -import { allSpecies } from "#app/data/data-lists"; -import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; -import { catchableSpecies } from "#app/data/balance/biomes"; -import { PokemonType } from "#enums/pokemon-type"; -import type { DexAttrProps, StarterAttributes } from "#app/system/game-data"; -import type { StarterPreferences } from "#app/utils/data"; -import type { DexEntry } from "#app/@types/dex-data"; -import { loadStarterPreferences } from "#app/utils/data"; -import { AbilityAttr } from "#enums/ability-attr"; -import { DexAttr } from "#enums/dex-attr"; -import MessageUiHandler from "#app/ui/message-ui-handler"; -import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; -import { TextStyle, addTextObject } from "#app/ui/text"; -import { UiMode } from "#enums/ui-mode"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; -import { Passive as PassiveAttr } from "#enums/passive"; -import type { SpeciesId } from "#enums/species-id"; -import { Button } from "#enums/buttons"; -import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#app/ui/dropdown"; -import { PokedexMonContainer } from "#app/ui/pokedex-mon-container"; -import { FilterBar } from "#app/ui/filter-bar"; -import { DropDownColumn } from "#enums/drop-down-column"; -import { ScrollBar } from "#app/ui/scroll-bar"; -import { AbilityId } from "#enums/ability-id"; +import { catchableSpecies } from "#balance/biomes"; +import { speciesEggMoves } from "#balance/egg-moves"; +import { pokemonStarters } from "#balance/pokemon-evolutions"; +import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#balance/pokemon-level-moves"; import { getPassiveCandyCount, - getValueReductionCandyCounts, getSameSpeciesEggCandyCounts, -} from "#app/data/balance/starters"; -import { BooleanHolder, fixedInt, getLocalizedSpriteKey, padInt, randIntRange, rgbHexToRgba } from "#app/utils/common"; -import type { Nature } from "#enums/nature"; -import { addWindow } from "./ui-theme"; -import type { OptionSelectConfig } from "./abstact-option-select-ui-handler"; -import { FilterText, FilterTextRow } from "./filter-text"; -import { allAbilities } from "#app/data/data-lists"; -import { allMoves } from "#app/data/data-lists"; -import { speciesTmMoves } from "#app/data/balance/tms"; -import { pokemonStarters } from "#app/data/balance/pokemon-evolutions"; + getStarterValueFriendshipCap, + getValueReductionCandyCounts, + POKERUS_STARTER_COUNT, + speciesStarterCosts, +} from "#balance/starters"; +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 { AbilityAttr } from "#enums/ability-attr"; +import { AbilityId } from "#enums/ability-id"; import { BiomeId } from "#enums/biome-id"; -import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +import { DexAttr } from "#enums/dex-attr"; +import { DropDownColumn } from "#enums/drop-down-column"; +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 { UiMode } from "#enums/ui-mode"; +import type { Variant } from "#sprites/variant"; +import { getVariantIcon, getVariantTint } from "#sprites/variant"; +import type { DexAttrProps, StarterAttributes } from "#system/game-data"; +import { SettingKeyboard } from "#system/settings-keyboard"; +import type { DexEntry } from "#types/dex-data"; +import type { OptionSelectConfig } from "#ui/abstact-option-select-ui-handler"; +import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#ui/dropdown"; +import { FilterBar } from "#ui/filter-bar"; +import { FilterText, FilterTextRow } from "#ui/filter-text"; +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 { 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 { argbFromRgba } from "@material/material-color-utilities"; +import i18next from "i18next"; interface LanguageSetting { starterInfoTextSize: string; @@ -157,7 +156,7 @@ interface SpeciesDetails { natureIndex?: number; } -export default class PokedexUiHandler extends MessageUiHandler { +export class PokedexUiHandler extends MessageUiHandler { private starterSelectContainer: Phaser.GameObjects.Container; private starterSelectScrollBar: ScrollBar; private filterBarContainer: Phaser.GameObjects.Container; @@ -471,7 +470,7 @@ export default class PokedexUiHandler extends MessageUiHandler { this.pokemonNameText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonNameText); - this.pokemonFormText = addTextObject(6, 121, "", TextStyle.PARTY, { + this.pokemonFormText = addTextObject(6, 121, "", TextStyle.INSTRUCTIONS_TEXT, { fontSize: textSettings.instructionTextSize, }); this.pokemonFormText.setOrigin(0, 0); @@ -483,13 +482,14 @@ export default class PokedexUiHandler extends MessageUiHandler { starterBoxContainer.add(this.starterSelectScrollBar); - this.pokerusCursorObjs = new Array(POKERUS_STARTER_COUNT).fill(null).map(() => { + this.pokerusCursorObjs = []; + for (let i = 0; i < POKERUS_STARTER_COUNT; i++) { const cursorObj = globalScene.add.image(0, 0, "select_cursor_pokerus"); cursorObj.setVisible(false); cursorObj.setOrigin(0, 0); starterBoxContainer.add(cursorObj); - return cursorObj; - }); + this.pokerusCursorObjs.push(cursorObj); + } this.cursorObj = globalScene.add.image(0, 0, "select_cursor"); this.cursorObj.setOrigin(0, 0); @@ -561,7 +561,7 @@ export default class PokedexUiHandler extends MessageUiHandler { this.goFilterIconElement2.setName("sprite-goFilter2-icon-element"); this.goFilterIconElement2.setScale(0.675); this.goFilterIconElement2.setOrigin(0.0, 0.0); - this.goFilterLabel = addTextObject(30, 2, i18next.t("pokedexUiHandler:goFilters"), TextStyle.PARTY, { + this.goFilterLabel = addTextObject(30, 2, i18next.t("pokedexUiHandler:goFilters"), TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize, }); this.goFilterLabel.setName("text-goFilter-label"); @@ -577,7 +577,7 @@ export default class PokedexUiHandler extends MessageUiHandler { 20, 10, i18next.t("pokedexUiHandler:toggleDecorations"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.toggleDecorationsLabel.setName("text-toggleDecorations-label"); @@ -588,9 +588,15 @@ export default class PokedexUiHandler extends MessageUiHandler { this.showFormTrayIconElement.setName("sprite-showFormTray-icon-element"); this.showFormTrayIconElement.setScale(0.675); this.showFormTrayIconElement.setOrigin(0.0, 0.0); - this.showFormTrayLabel = addTextObject(16, 168, i18next.t("pokedexUiHandler:showForms"), TextStyle.PARTY, { - fontSize: instructionTextSize, - }); + this.showFormTrayLabel = addTextObject( + 16, + 168, + i18next.t("pokedexUiHandler:showForms"), + TextStyle.INSTRUCTIONS_TEXT, + { + fontSize: instructionTextSize, + }, + ); this.showFormTrayLabel.setName("text-showFormTray-label"); this.showFormTrayIconElement.setVisible(false); this.showFormTrayLabel.setVisible(false); diff --git a/src/ui/pokemon-hatch-info-container.ts b/src/ui/pokemon-hatch-info-container.ts index afc58c63953..8bcd62316cd 100644 --- a/src/ui/pokemon-hatch-info-container.ts +++ b/src/ui/pokemon-hatch-info-container.ts @@ -1,24 +1,24 @@ -import PokemonInfoContainer from "#app/ui/pokemon-info-container"; -import { Gender } from "#app/data/gender"; -import { PokemonType } from "#enums/pokemon-type"; -import { rgbHexToRgba, padInt } from "#app/utils/common"; -import { TextStyle, addTextObject } from "#app/ui/text"; -import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { allMoves } from "#app/data/data-lists"; -import { SpeciesId } from "#enums/species-id"; -import { getEggTierForSpecies } from "#app/data/egg"; -import { starterColors } from "#app/global-vars/starter-colors"; import { globalScene } from "#app/global-scene"; +import { starterColors } from "#app/global-vars/starter-colors"; +import { speciesEggMoves } from "#balance/egg-moves"; +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 type { PlayerPokemon } from "#field/pokemon"; +import { PokemonInfoContainer } from "#ui/pokemon-info-container"; +import { addTextObject, TextStyle } from "#ui/text"; +import { padInt, rgbHexToRgba } from "#utils/common"; import { argbFromRgba } from "@material/material-color-utilities"; -import type { EggHatchData } from "#app/data/egg-hatch-data"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import { getPokemonSpeciesForm } from "#app/data/pokemon-species"; /** * Class for the hatch info summary of each pokemon * Holds an info container as well as an additional egg sprite, name, egg moves and main sprite */ -export default class PokemonHatchInfoContainer extends PokemonInfoContainer { +export class PokemonHatchInfoContainer extends PokemonInfoContainer { private currentPokemonSprite: Phaser.GameObjects.Sprite; private pokemonNumberText: Phaser.GameObjects.Text; private pokemonNameText: Phaser.GameObjects.Text; @@ -49,13 +49,11 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { this.pokemonListContainer.add(this.currentPokemonSprite); // setup name and number - this.pokemonNumberText = addTextObject(80, 107.5, "0000", TextStyle.SUMMARY, { fontSize: 74 }); + this.pokemonNumberText = addTextObject(84, 107, "0000", TextStyle.EGG_SUMMARY_DEX, { fontSize: 78 }); this.pokemonNumberText.setOrigin(0, 0); this.pokemonListContainer.add(this.pokemonNumberText); - this.pokemonNameText = addTextObject(7, 107.5, "", TextStyle.SUMMARY, { - fontSize: 74, - }); + this.pokemonNameText = addTextObject(7, 109, "", TextStyle.EGG_SUMMARY_NAME, { fontSize: 64 }); this.pokemonNameText.setOrigin(0, 0); this.pokemonListContainer.add(this.pokemonNameText); @@ -93,7 +91,7 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { const eggMoveBg = globalScene.add.nineslice(70, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); eggMoveBg.setOrigin(1, 0); - const eggMoveLabel = addTextObject(70 - eggMoveBg.width / 2, 0, "???", TextStyle.PARTY); + const eggMoveLabel = addTextObject(70 - eggMoveBg.width / 2, 0, "???", TextStyle.MOVE_LABEL); eggMoveLabel.setOrigin(0.5, 0); this.pokemonEggMoveBgs.push(eggMoveBg); @@ -158,7 +156,7 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { this.pokemonCandyIcon.setVisible(true); this.pokemonCandyOverlayIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[1]))); this.pokemonCandyOverlayIcon.setVisible(true); - this.pokemonCandyCountText.setText(`x${globalScene.gameData.starterData[species.speciesId].candyCount}`); + this.pokemonCandyCountText.setText(`×${globalScene.gameData.starterData[species.speciesId].candyCount}`); this.pokemonCandyCountText.setVisible(true); this.pokemonNumberText.setText(padInt(species.speciesId, 4)); diff --git a/src/ui/pokemon-icon-anim-handler.ts b/src/ui/pokemon-icon-anim-handler.ts index 8a206167a94..408e0ebc9d3 100644 --- a/src/ui/pokemon-icon-anim-handler.ts +++ b/src/ui/pokemon-icon-anim-handler.ts @@ -1,5 +1,5 @@ import { globalScene } from "#app/global-scene"; -import { fixedInt, coerceArray } from "#app/utils/common"; +import { coerceArray, fixedInt } from "#utils/common"; export enum PokemonIconAnimMode { NONE, @@ -9,7 +9,7 @@ export enum PokemonIconAnimMode { type PokemonIcon = Phaser.GameObjects.Container | Phaser.GameObjects.Sprite; -export default class PokemonIconAnimHandler { +export class PokemonIconAnimHandler { private icons: Map; private toggled: boolean; diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index 0056c3e2f11..c95f412c834 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -1,19 +1,19 @@ -import { getVariantTint } from "#app/sprites/variant"; -import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { globalScene } from "#app/global-scene"; -import { Gender, getGenderColor, getGenderSymbol } from "../data/gender"; -import { getNatureName } from "../data/nature"; -import { PokemonType } from "#enums/pokemon-type"; -import type Pokemon from "../field/pokemon"; -import i18next from "i18next"; -import type { StarterDataEntry } from "../system/game-data"; -import type { DexEntry } from "#app/@types/dex-data"; +import { Gender, getGenderColor, getGenderSymbol } from "#data/gender"; +import { getNatureName } from "#data/nature"; import { DexAttr } from "#enums/dex-attr"; -import { fixedInt, getShinyDescriptor } from "#app/utils/common"; -import ConfirmUiHandler from "./confirm-ui-handler"; -import { StatsContainer } from "./stats-container"; -import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from "./text"; -import { addWindow } from "./ui-theme"; +import { PokemonType } from "#enums/pokemon-type"; +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 { addWindow } from "#ui/ui-theme"; +import { fixedInt, getShinyDescriptor } from "#utils/common"; +import i18next from "i18next"; +import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; interface LanguageSetting { infoContainerTextSize: string; @@ -22,14 +22,24 @@ interface LanguageSetting { } const languageSettings: { [key: string]: LanguageSetting } = { + en: { + infoContainerTextSize: "64px", + infoContainerLabelXPos: -20, + infoContainerTextXPos: -17, + }, pt: { infoContainerTextSize: "60px", infoContainerLabelXPos: -15, infoContainerTextXPos: -12, }, + ja: { + infoContainerTextSize: "64px", + infoContainerLabelXPos: -27, + infoContainerTextXPos: -25, + }, }; -export default class PokemonInfoContainer extends Phaser.GameObjects.Container { +export class PokemonInfoContainer extends Phaser.GameObjects.Container { private readonly infoWindowWidth = 104; private pokemonFormLabelText: Phaser.GameObjects.Text; @@ -106,7 +116,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { moveBg.setOrigin(1, 0); moveBg.setName("nineslice-move-bg"); - const moveLabel = addTextObject(-moveBg.width / 2, 0, "-", TextStyle.PARTY); + const moveLabel = addTextObject(-moveBg.width / 2, 0, "-", TextStyle.MOVE_LABEL); moveLabel.setOrigin(0.5, 0); moveLabel.setName("text-move-label"); @@ -445,12 +455,12 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { this.pokemonShinyIcon.setPosition(82, 87); this.pokemonShinyNewIcon.setPosition(72, 87); - this.pokemonFormLabelText.setPosition(infoContainerLabelXPos, 152); - this.pokemonFormText.setPosition(infoContainerTextXPos, 152); - this.pokemonAbilityLabelText.setPosition(infoContainerLabelXPos, 110); - this.pokemonAbilityText.setPosition(infoContainerTextXPos, 110); - this.pokemonNatureLabelText.setPosition(infoContainerLabelXPos, 125); - this.pokemonNatureText.setPosition(infoContainerTextXPos, 125); + this.pokemonFormLabelText.setPosition(infoContainerLabelXPos, 153); + this.pokemonFormText.setPosition(infoContainerTextXPos, 153); + this.pokemonAbilityLabelText.setPosition(infoContainerLabelXPos, 111); + this.pokemonAbilityText.setPosition(infoContainerTextXPos, 111); + this.pokemonNatureLabelText.setPosition(infoContainerLabelXPos, 126); + this.pokemonNatureText.setPosition(infoContainerTextXPos, 126); this.statsContainer.setScale(0.7); this.statsContainer.setPosition(30, -3); diff --git a/src/ui/registration-form-ui-handler.ts b/src/ui/registration-form-ui-handler.ts index a60a53a8e7a..2466603af71 100644 --- a/src/ui/registration-form-ui-handler.ts +++ b/src/ui/registration-form-ui-handler.ts @@ -1,11 +1,11 @@ -import type { InputFieldConfig } from "./form-modal-ui-handler"; -import { FormModalUiHandler } from "./form-modal-ui-handler"; -import type { ModalConfig } from "./modal-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import { TextStyle, addTextObject } from "./text"; -import i18next from "i18next"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +import { pokerogueApi } from "#api/pokerogue-api"; import { globalScene } from "#app/global-scene"; +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 i18next from "i18next"; interface LanguageSetting { inputFieldFontSize?: string; @@ -20,7 +20,7 @@ const languageSettings: { [key: string]: LanguageSetting } = { }, }; -export default class RegistrationFormUiHandler extends FormModalUiHandler { +export class RegistrationFormUiHandler extends FormModalUiHandler { getModalTitle(_config?: ModalConfig): string { return i18next.t("menu:register"); } diff --git a/src/ui/rename-form-ui-handler.ts b/src/ui/rename-form-ui-handler.ts index 7083f83865b..9da5b0e8554 100644 --- a/src/ui/rename-form-ui-handler.ts +++ b/src/ui/rename-form-ui-handler.ts @@ -1,10 +1,10 @@ -import type { InputFieldConfig } from "./form-modal-ui-handler"; -import { FormModalUiHandler } from "./form-modal-ui-handler"; -import type { ModalConfig } from "./modal-ui-handler"; +import type { PlayerPokemon } from "#field/pokemon"; +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 i18next from "i18next"; -import type { PlayerPokemon } from "#app/field/pokemon"; -export default class RenameFormUiHandler extends FormModalUiHandler { +export class RenameFormUiHandler extends FormModalUiHandler { getModalTitle(_config?: ModalConfig): string { return i18next.t("menu:renamePokemon"); } diff --git a/src/ui/run-history-ui-handler.ts b/src/ui/run-history-ui-handler.ts index 06ef590c1e8..f810468aea1 100644 --- a/src/ui/run-history-ui-handler.ts +++ b/src/ui/run-history-ui-handler.ts @@ -1,18 +1,18 @@ import { globalScene } from "#app/global-scene"; -import { GameModes } from "#enums/game-modes"; -import { TextStyle, addTextObject } from "./text"; -import { UiMode } from "#enums/ui-mode"; -import { addWindow } from "./ui-theme"; -import { fixedInt, formatLargeNumber } from "#app/utils/common"; -import type PokemonData from "../system/pokemon-data"; -import MessageUiHandler from "./message-ui-handler"; -import i18next from "i18next"; -import { Button } from "../enums/buttons"; import { BattleType } from "#enums/battle-type"; -import type { RunEntry } from "../system/game-data"; +import { Button } from "#enums/buttons"; +import { GameModes } from "#enums/game-modes"; import { PlayerGender } from "#enums/player-gender"; import { TrainerVariant } from "#enums/trainer-variant"; -import { RunDisplayMode } from "#app/ui/run-info-ui-handler"; +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 { addWindow } from "#ui/ui-theme"; +import { fixedInt, formatLargeNumber } from "#utils/common"; +import i18next from "i18next"; export type RunSelectCallback = (cursor: number) => void; @@ -24,7 +24,7 @@ export const RUN_HISTORY_LIMIT: number = 25; * It navigates similarly to the UI of the save slot select menu. * The only valid input buttons are Button.ACTION and Button.CANCEL. */ -export default class RunHistoryUiHandler extends MessageUiHandler { +export class RunHistoryUiHandler extends MessageUiHandler { private readonly maxRows = 3; private runSelectContainer: Phaser.GameObjects.Container; diff --git a/src/ui/run-info-ui-handler.ts b/src/ui/run-info-ui-handler.ts index 76e343d018a..29f95c4e4c8 100644 --- a/src/ui/run-info-ui-handler.ts +++ b/src/ui/run-info-ui-handler.ts @@ -1,32 +1,32 @@ -import { GameModes } from "#enums/game-modes"; -import UiHandler from "./ui-handler"; -import type { SessionSaveData } from "../system/game-data"; -import { TextStyle, addTextObject, addBBCodeTextObject, getTextColor } from "./text"; -import { UiMode } from "#enums/ui-mode"; -import { addWindow } from "./ui-theme"; -import { getPokeballAtlasKey } from "#app/data/pokeball"; -import { formatLargeNumber, getPlayTimeString, formatMoney, formatFancyLargeNumber } from "#app/utils/common"; -import type PokemonData from "../system/pokemon-data"; -import i18next from "i18next"; -import { Button } from "../enums/buttons"; -import { BattleType } from "#enums/battle-type"; -import { TrainerVariant } from "#enums/trainer-variant"; -import { Challenges } from "#enums/challenges"; -import { getLuckString, getLuckTextTint } from "../modifier/modifier-type"; -import RoundRectangle from "phaser3-rex-plugins/plugins/roundrectangle"; -import { getTypeRgb } from "#app/data/type"; -import { PokemonType } from "#enums/pokemon-type"; -import { TypeColor, TypeShadow } from "#app/enums/color"; -import { getNatureStatMultiplier, getNatureName } from "../data/nature"; -import { getVariantTint } from "#app/sprites/variant"; -// biome-ignore lint/performance/noNamespaceImport: See `src/system/game-data.ts` -import * as Modifier from "#app/modifier/modifier"; -import type { SpeciesId } from "#enums/species-id"; -import { PlayerGender } from "#enums/player-gender"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; -import { getBiomeName } from "#app/data/balance/biomes"; -import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { globalScene } from "#app/global-scene"; +import { getBiomeName } from "#balance/biomes"; +import { getNatureName, getNatureStatMultiplier } from "#data/nature"; +import { getPokeballAtlasKey } from "#data/pokeball"; +import { getTypeRgb } from "#data/type"; +import { BattleType } from "#enums/battle-type"; +import { Button } from "#enums/buttons"; +import { Challenges } from "#enums/challenges"; +import { TypeColor, TypeShadow } from "#enums/color"; +import { GameModes } from "#enums/game-modes"; +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 { TrainerVariant } from "#enums/trainer-variant"; +import { UiMode } from "#enums/ui-mode"; +// biome-ignore lint/performance/noNamespaceImport: See `src/system/game-data.ts` +import * as Modifier from "#modifiers/modifier"; +import { getLuckString, getLuckTextTint } from "#modifiers/modifier-type"; +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 { UiHandler } from "#ui/ui-handler"; +import { addWindow } from "#ui/ui-theme"; +import { formatFancyLargeNumber, formatLargeNumber, formatMoney, getPlayTimeString } from "#utils/common"; +import i18next from "i18next"; +import RoundRectangle from "phaser3-rex-plugins/plugins/roundrectangle"; /** * RunInfoUiMode indicates possible overlays of RunInfoUiHandler. @@ -50,7 +50,7 @@ export enum RunDisplayMode { * I believe that it is possible that the contents/methods of the first page will be placed in their own class that is an extension of RunInfoUiHandler as more pages are added. * For now, I leave as is. */ -export default class RunInfoUiHandler extends UiHandler { +export class RunInfoUiHandler extends UiHandler { protected runDisplayMode: RunDisplayMode; protected runInfo: SessionSaveData; protected isVictory: boolean; @@ -202,7 +202,7 @@ export default class RunInfoUiHandler extends UiHandler { ); this.runContainer.add(abilityButtonContainer); } - const headerText = addTextObject(0, 0, i18next.t("runHistory:runInfo"), TextStyle.SETTINGS_LABEL); + const headerText = addTextObject(0, 0, i18next.t("runHistory:runInfo"), TextStyle.HEADER_LABEL); headerText.setOrigin(0, 0); headerText.setPositionRelative(headerBg, 8, 4); this.runContainer.add(headerText); @@ -603,7 +603,7 @@ export default class RunInfoUiHandler extends UiHandler { // Duration + Money const runInfoTextContainer = globalScene.add.container(0, 0); // Japanese is set to a greater line spacing of 35px in addBBCodeTextObject() if lineSpacing < 12. - const lineSpacing = i18next.resolvedLanguage === "ja" ? 12 : 3; + const lineSpacing = i18next.resolvedLanguage === "ja" ? 3 : 3; const runInfoText = addBBCodeTextObject(7, 0, "", TextStyle.WINDOW, { fontSize: "50px", lineSpacing: lineSpacing, @@ -768,7 +768,7 @@ export default class RunInfoUiHandler extends UiHandler { const pPassiveInfo = pokemon.passive ? passiveLabel + ": " + pokemon.getPassiveAbility().name : ""; const pAbilityInfo = abilityLabel + ": " + pokemon.getAbility().name; // Japanese is set to a greater line spacing of 35px in addBBCodeTextObject() if lineSpacing < 12. - const lineSpacing = i18next.resolvedLanguage === "ja" ? 12 : 3; + const lineSpacing = i18next.resolvedLanguage === "ja" ? 3 : 3; const pokeInfoText = addBBCodeTextObject(0, 0, pName, TextStyle.SUMMARY, { fontSize: textContainerFontSize, lineSpacing: lineSpacing, @@ -866,7 +866,7 @@ export default class RunInfoUiHandler extends UiHandler { moveContainer.setScale(0.5); const moveBg = globalScene.add.nineslice(0, 0, "type_bgs", "unknown", 85, 15, 2, 2, 2, 2); moveBg.setOrigin(1, 0); - const moveLabel = addTextObject(-moveBg.width / 2, 2, "-", TextStyle.PARTY); + const moveLabel = addTextObject(-moveBg.width / 2, 1, "-", TextStyle.MOVE_LABEL); moveLabel.setOrigin(0.5, 0); moveLabel.setName("text-move-label"); pokemonMoveBgs.push(moveBg); diff --git a/src/ui/save-slot-select-ui-handler.ts b/src/ui/save-slot-select-ui-handler.ts index 7dee041fa63..bcbe60265cd 100644 --- a/src/ui/save-slot-select-ui-handler.ts +++ b/src/ui/save-slot-select-ui-handler.ts @@ -1,17 +1,17 @@ -import i18next from "i18next"; +import { GameMode } from "#app/game-mode"; import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; -import { GameMode } from "../game-mode"; -// biome-ignore lint/performance/noNamespaceImport: See `src/system/game-data.ts` -import * as Modifier from "#app/modifier/modifier"; -import type { SessionSaveData } from "../system/game-data"; -import type PokemonData from "../system/pokemon-data"; -import { isNullOrUndefined, fixedInt, getPlayTimeString, formatLargeNumber } from "#app/utils/common"; -import MessageUiHandler from "./message-ui-handler"; -import { TextStyle, addTextObject } from "./text"; import { UiMode } from "#enums/ui-mode"; -import { addWindow } from "./ui-theme"; -import { RunDisplayMode } from "#app/ui/run-info-ui-handler"; +// biome-ignore lint/performance/noNamespaceImport: See `src/system/game-data.ts` +import * as Modifier from "#modifiers/modifier"; +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 { addWindow } from "#ui/ui-theme"; +import { fixedInt, formatLargeNumber, getPlayTimeString, isNullOrUndefined } from "#utils/common"; +import i18next from "i18next"; const SESSION_SLOTS_COUNT = 5; const SLOTS_ON_SCREEN = 3; @@ -23,7 +23,7 @@ export enum SaveSlotUiMode { export type SaveSlotSelectCallback = (cursor: number) => void; -export default class SaveSlotSelectUiHandler extends MessageUiHandler { +export class SaveSlotSelectUiHandler extends MessageUiHandler { private saveSlotSelectContainer: Phaser.GameObjects.Container; private sessionSlotsContainer: Phaser.GameObjects.Container; private saveSlotSelectMessageBox: Phaser.GameObjects.NineSlice; diff --git a/src/ui/saving-icon-handler.ts b/src/ui/saving-icon-handler.ts index 3b7db549a4a..6923017218f 100644 --- a/src/ui/saving-icon-handler.ts +++ b/src/ui/saving-icon-handler.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; -import { fixedInt } from "#app/utils/common"; +import { fixedInt } from "#utils/common"; -export default class SavingIconHandler extends Phaser.GameObjects.Container { +export class SavingIconHandler extends Phaser.GameObjects.Container { private icon: Phaser.GameObjects.Sprite; private animActive: boolean; diff --git a/src/ui/scrollable-grid-handler.ts b/src/ui/scrollable-grid-handler.ts index 54f07d69fb7..3c6458f5083 100644 --- a/src/ui/scrollable-grid-handler.ts +++ b/src/ui/scrollable-grid-handler.ts @@ -1,6 +1,6 @@ import { Button } from "#enums/buttons"; -import type UiHandler from "#app/ui/ui-handler"; -import type { ScrollBar } from "#app/ui/scroll-bar"; +import type { ScrollBar } from "#ui/scroll-bar"; +import type { UiHandler } from "#ui/ui-handler"; type UpdateGridCallbackFunction = () => void; type UpdateDetailsCallbackFunction = (index: number) => void; @@ -16,7 +16,7 @@ type UpdateDetailsCallbackFunction = (index: number) => void; * - in `UiHandler.processInput`: call `processNavigationInput` to have it handle the cursor updates while calling the defined callbacks * - in `UiHandler.clear`: call `reset` */ -export default class ScrollableGridUiHandler { +export class ScrollableGridUiHandler { private readonly ROWS: number; private readonly COLUMNS: number; private handler: UiHandler; diff --git a/src/ui/session-reload-modal-ui-handler.ts b/src/ui/session-reload-modal-ui-handler.ts index f866783afe8..ab1197324a6 100644 --- a/src/ui/session-reload-modal-ui-handler.ts +++ b/src/ui/session-reload-modal-ui-handler.ts @@ -1,9 +1,9 @@ -import type { ModalConfig } from "./modal-ui-handler"; -import { ModalUiHandler } from "./modal-ui-handler"; -import { addTextObject, TextStyle } from "./text"; 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"; -export default class SessionReloadModalUiHandler extends ModalUiHandler { +export class SessionReloadModalUiHandler extends ModalUiHandler { constructor(mode: UiMode | null = null) { super(mode); } diff --git a/src/ui/settings/abstract-binding-ui-handler.ts b/src/ui/settings/abstract-binding-ui-handler.ts index a4707418b7c..7004af8c4ed 100644 --- a/src/ui/settings/abstract-binding-ui-handler.ts +++ b/src/ui/settings/abstract-binding-ui-handler.ts @@ -1,18 +1,18 @@ -import UiHandler from "../ui-handler"; -import type { UiMode } from "#enums/ui-mode"; -import { addWindow } from "../ui-theme"; -import { addTextObject, TextStyle } from "../text"; -import { Button } from "#enums/buttons"; -import { NavigationManager } from "#app/ui/settings/navigationMenu"; -import i18next from "i18next"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +import type { UiMode } from "#enums/ui-mode"; +import { NavigationManager } from "#ui/navigation-menu"; +import { addTextObject, TextStyle } from "#ui/text"; +import { UiHandler } from "#ui/ui-handler"; +import { addWindow } from "#ui/ui-theme"; +import i18next from "i18next"; type CancelFn = (succes?: boolean) => boolean; /** * Abstract class for handling UI elements related to button bindings. */ -export default abstract class AbstractBindingUiHandler extends UiHandler { +export abstract class AbstractBindingUiHandler extends UiHandler { // Containers for different segments of the UI. protected optionSelectContainer: Phaser.GameObjects.Container; protected actionsContainer: Phaser.GameObjects.Container; diff --git a/src/ui/settings/abstract-control-settings-ui-handler.ts b/src/ui/settings/abstract-control-settings-ui-handler.ts index 769de7993ce..64786849abc 100644 --- a/src/ui/settings/abstract-control-settings-ui-handler.ts +++ b/src/ui/settings/abstract-control-settings-ui-handler.ts @@ -1,15 +1,15 @@ -import UiHandler from "#app/ui/ui-handler"; -import type { UiMode } from "#enums/ui-mode"; -import type { InterfaceConfig } from "#app/inputs-controller"; -import { addWindow } from "#app/ui/ui-theme"; -import { addTextObject, TextStyle } from "#app/ui/text"; -import { ScrollBar } from "#app/ui/scroll-bar"; -import { getIconWithSettingName } from "#app/configs/inputs/configHandler"; -import NavigationMenu, { NavigationManager } from "#app/ui/settings/navigationMenu"; -import type { Device } from "#enums/devices"; -import { Button } from "#enums/buttons"; -import i18next from "i18next"; 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 type { UiMode } from "#enums/ui-mode"; +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 { UiHandler } from "#ui/ui-handler"; +import { addWindow } from "#ui/ui-theme"; +import i18next from "i18next"; export interface InputsIcons { [key: string]: Phaser.GameObjects.Sprite; @@ -27,7 +27,7 @@ export interface LayoutConfig { /** * Abstract class for handling UI elements related to control settings. */ -export default abstract class AbstractControlSettingsUiHandler extends UiHandler { +export abstract class AbstractControlSettingsUiHandler extends UiHandler { protected settingsContainer: Phaser.GameObjects.Container; protected optionsContainer: Phaser.GameObjects.Container; protected navigationContainer: NavigationMenu; diff --git a/src/ui/settings/abstract-settings-ui-handler.ts b/src/ui/settings/abstract-settings-ui-handler.ts index 6db9840a818..9e56ae80b14 100644 --- a/src/ui/settings/abstract-settings-ui-handler.ts +++ b/src/ui/settings/abstract-settings-ui-handler.ts @@ -1,20 +1,20 @@ -import { TextStyle, addTextObject } from "#app/ui/text"; -import { UiMode } from "#enums/ui-mode"; -import MessageUiHandler from "#app/ui/message-ui-handler"; -import { addWindow } from "#app/ui/ui-theme"; -import { ScrollBar } from "#app/ui/scroll-bar"; -import { Button } from "#enums/buttons"; -import type { InputsIcons } from "#app/ui/settings/abstract-control-settings-ui-handler"; -import NavigationMenu, { NavigationManager } from "#app/ui/settings/navigationMenu"; -import type { SettingType } from "#app/system/settings/settings"; -import { Setting, SettingKeys } from "#app/system/settings/settings"; -import i18next from "i18next"; import { globalScene } from "#app/global-scene"; +import { Button } from "#enums/buttons"; +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/navigation-menu"; +import { ScrollBar } from "#ui/scroll-bar"; +import { addTextObject, TextStyle } from "#ui/text"; +import { addWindow } from "#ui/ui-theme"; +import i18next from "i18next"; /** * Abstract class for handling UI elements related to settings. */ -export default class AbstractSettingsUiHandler extends MessageUiHandler { +export class AbstractSettingsUiHandler extends MessageUiHandler { private settingsContainer: Phaser.GameObjects.Container; private optionsContainer: Phaser.GameObjects.Container; private messageBoxContainer: Phaser.GameObjects.Container; diff --git a/src/ui/settings/gamepad-binding-ui-handler.ts b/src/ui/settings/gamepad-binding-ui-handler.ts index 9ddb54131d5..e97fc56d7c0 100644 --- a/src/ui/settings/gamepad-binding-ui-handler.ts +++ b/src/ui/settings/gamepad-binding-ui-handler.ts @@ -1,12 +1,12 @@ -import AbstractBindingUiHandler from "./abstract-binding-ui-handler"; -import type { UiMode } from "#enums/ui-mode"; -import { Device } from "#enums/devices"; -import { getIconWithSettingName, getKeyWithKeycode } from "#app/configs/inputs/configHandler"; -import { addTextObject, TextStyle } from "#app/ui/text"; import { globalScene } from "#app/global-scene"; +import { Device } from "#enums/devices"; +import type { UiMode } from "#enums/ui-mode"; +import { getIconWithSettingName, getKeyWithKeycode } from "#inputs/config-handler"; +import { AbstractBindingUiHandler } from "#ui/abstract-binding-ui-handler"; +import { addTextObject, TextStyle } from "#ui/text"; import i18next from "i18next"; -export default class GamepadBindingUiHandler extends AbstractBindingUiHandler { +export class GamepadBindingUiHandler extends AbstractBindingUiHandler { constructor(mode: UiMode | null = null) { super(mode); globalScene.input.gamepad?.on("down", this.gamepadButtonDown, this); diff --git a/src/ui/settings/keyboard-binding-ui-handler.ts b/src/ui/settings/keyboard-binding-ui-handler.ts index 183b8269e78..e43184795d1 100644 --- a/src/ui/settings/keyboard-binding-ui-handler.ts +++ b/src/ui/settings/keyboard-binding-ui-handler.ts @@ -1,12 +1,12 @@ -import AbstractBindingUiHandler from "./abstract-binding-ui-handler"; -import type { UiMode } from "#enums/ui-mode"; -import { getKeyWithKeycode } from "#app/configs/inputs/configHandler"; -import { Device } from "#enums/devices"; -import { addTextObject, TextStyle } from "#app/ui/text"; import { globalScene } from "#app/global-scene"; +import { Device } from "#enums/devices"; +import type { UiMode } from "#enums/ui-mode"; +import { getKeyWithKeycode } from "#inputs/config-handler"; +import { AbstractBindingUiHandler } from "#ui/abstract-binding-ui-handler"; +import { addTextObject, TextStyle } from "#ui/text"; import i18next from "i18next"; -export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler { +export class KeyboardBindingUiHandler extends AbstractBindingUiHandler { constructor(mode: UiMode | null = null) { super(mode); // Listen to gamepad button down events to initiate binding. diff --git a/src/ui/settings/move-touch-controls-handler.ts b/src/ui/settings/move-touch-controls-handler.ts index f684d27f748..60572529c89 100644 --- a/src/ui/settings/move-touch-controls-handler.ts +++ b/src/ui/settings/move-touch-controls-handler.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; -import type TouchControl from "#app/touch-controls"; -import type UI from "#app/ui/ui"; +import type { TouchControl } from "#app/touch-controls"; +import type { UI } from "#ui/ui"; import i18next from "i18next"; export const TOUCH_CONTROL_POSITIONS_LANDSCAPE = "touchControlPositionsLandscape"; @@ -24,7 +24,7 @@ type ToolbarRefs = { /** * Handles the dragging of touch controls around the screen. */ -export default class MoveTouchControlsHandler { +export class MoveTouchControlsHandler { /** The element that is currently being dragged */ private draggingElement: HTMLElement | null = null; diff --git a/src/ui/settings/navigationMenu.ts b/src/ui/settings/navigation-menu.ts similarity index 95% rename from src/ui/settings/navigationMenu.ts rename to src/ui/settings/navigation-menu.ts index be3726bd47d..1303c32d3a5 100644 --- a/src/ui/settings/navigationMenu.ts +++ b/src/ui/settings/navigation-menu.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import { UiMode } from "#enums/ui-mode"; -import type { InputsIcons } from "#app/ui/settings/abstract-control-settings-ui-handler"; -import { addTextObject, setTextStyle, TextStyle } from "#app/ui/text"; -import { addWindow } from "#app/ui/ui-theme"; import { Button } from "#enums/buttons"; +import { UiMode } from "#enums/ui-mode"; +import type { InputsIcons } from "#ui/abstract-control-settings-ui-handler"; +import { addTextObject, setTextStyle, TextStyle } from "#ui/text"; +import { addWindow } from "#ui/ui-theme"; import i18next from "i18next"; const LEFT = "LEFT"; @@ -103,7 +103,7 @@ export class NavigationManager { } } -export default class NavigationMenu extends Phaser.GameObjects.Container { +export class NavigationMenu extends Phaser.GameObjects.Container { private navigationIcons: InputsIcons; protected headerTitles: Phaser.GameObjects.Text[] = []; @@ -144,7 +144,7 @@ export default class NavigationMenu extends Phaser.GameObjects.Container { let relative: Phaser.GameObjects.Sprite | Phaser.GameObjects.Text = iconPreviousTab; let relativeWidth: number = iconPreviousTab.width * 6; for (const label of navigationManager.labels) { - const labelText = addTextObject(0, 0, label, TextStyle.SETTINGS_LABEL); + const labelText = addTextObject(0, 0, label, TextStyle.SETTINGS_LABEL_NAVBAR); labelText.setOrigin(0, 0); labelText.setPositionRelative(relative, 6 + relativeWidth / 6, 0); this.add(labelText); diff --git a/src/ui/settings/option-select-ui-handler.ts b/src/ui/settings/option-select-ui-handler.ts index af9760814ac..d7b699e6e50 100644 --- a/src/ui/settings/option-select-ui-handler.ts +++ b/src/ui/settings/option-select-ui-handler.ts @@ -1,7 +1,7 @@ -import AbstractOptionSelectUiHandler from "../abstact-option-select-ui-handler"; import { UiMode } from "#enums/ui-mode"; +import { AbstractOptionSelectUiHandler } from "#ui/abstact-option-select-ui-handler"; -export default class OptionSelectUiHandler extends AbstractOptionSelectUiHandler { +export class OptionSelectUiHandler extends AbstractOptionSelectUiHandler { constructor(mode: UiMode = UiMode.OPTION_SELECT) { super(mode); } diff --git a/src/ui/settings/settings-audio-ui-handler.ts b/src/ui/settings/settings-audio-ui-handler.ts index 019d66d7428..aa55f5489cc 100644 --- a/src/ui/settings/settings-audio-ui-handler.ts +++ b/src/ui/settings/settings-audio-ui-handler.ts @@ -1,9 +1,8 @@ import type { UiMode } from "#enums/ui-mode"; -import AbstractSettingsUiHandler from "./abstract-settings-ui-handler"; -import { SettingType } from "#app/system/settings/settings"; -("#app/inputs-controller"); +import { SettingType } from "#system/settings"; +import { AbstractSettingsUiHandler } from "#ui/abstract-settings-ui-handler"; -export default class SettingsAudioUiHandler extends AbstractSettingsUiHandler { +export class SettingsAudioUiHandler extends AbstractSettingsUiHandler { /** * Creates an instance of SettingsAudioUiHandler. * diff --git a/src/ui/settings/settings-display-ui-handler.ts b/src/ui/settings/settings-display-ui-handler.ts index 0636bd25567..3c261d6ddab 100644 --- a/src/ui/settings/settings-display-ui-handler.ts +++ b/src/ui/settings/settings-display-ui-handler.ts @@ -1,9 +1,8 @@ import type { UiMode } from "#enums/ui-mode"; -import AbstractSettingsUiHandler from "./abstract-settings-ui-handler"; -import { SettingKeys, SettingType } from "#app/system/settings/settings"; -("#app/inputs-controller"); +import { SettingKeys, SettingType } from "#system/settings"; +import { AbstractSettingsUiHandler } from "#ui/abstract-settings-ui-handler"; -export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler { +export class SettingsDisplayUiHandler extends AbstractSettingsUiHandler { /** * Creates an instance of SettingsGamepadUiHandler. * diff --git a/src/ui/settings/settings-gamepad-ui-handler.ts b/src/ui/settings/settings-gamepad-ui-handler.ts index 7d269deab14..ea2e18a2ce6 100644 --- a/src/ui/settings/settings-gamepad-ui-handler.ts +++ b/src/ui/settings/settings-gamepad-ui-handler.ts @@ -1,21 +1,21 @@ -import { addTextObject, TextStyle } from "../text"; +import { globalScene } from "#app/global-scene"; +import type { InterfaceConfig } from "#app/inputs-controller"; +import { Device } from "#enums/devices"; import type { UiMode } from "#enums/ui-mode"; +import pad_dualshock from "#inputs/pad-dualshock"; +import pad_unlicensedSNES from "#inputs/pad-unlicensed-snes"; +import pad_xbox360 from "#inputs/pad-xbox360"; import { - setSettingGamepad, SettingGamepad, + setSettingGamepad, settingGamepadBlackList, settingGamepadDefaults, settingGamepadOptions, -} from "../../system/settings/settings-gamepad"; -import pad_xbox360 from "#app/configs/inputs/pad_xbox360"; -import pad_dualshock from "#app/configs/inputs/pad_dualshock"; -import pad_unlicensedSNES from "#app/configs/inputs/pad_unlicensedSNES"; -import type { InterfaceConfig } from "#app/inputs-controller"; -import AbstractControlSettingsUiHandler from "#app/ui/settings/abstract-control-settings-ui-handler"; -import { Device } from "#enums/devices"; -import { truncateString } from "#app/utils/common"; +} from "#system/settings-gamepad"; +import { AbstractControlSettingsUiHandler } from "#ui/abstract-control-settings-ui-handler"; +import { addTextObject, TextStyle } from "#ui/text"; +import { truncateString } from "#utils/common"; import i18next from "i18next"; -import { globalScene } from "#app/global-scene"; /** * Class representing the settings UI handler for gamepads. @@ -23,7 +23,7 @@ import { globalScene } from "#app/global-scene"; * @extends AbstractControlSettingsUiHandler */ -export default class SettingsGamepadUiHandler extends AbstractControlSettingsUiHandler { +export class SettingsGamepadUiHandler extends AbstractControlSettingsUiHandler { /** * Creates an instance of SettingsGamepadUiHandler. * diff --git a/src/ui/settings/settings-keyboard-ui-handler.ts b/src/ui/settings/settings-keyboard-ui-handler.ts index c334ee8f1fc..2c2e0dbd7cd 100644 --- a/src/ui/settings/settings-keyboard-ui-handler.ts +++ b/src/ui/settings/settings-keyboard-ui-handler.ts @@ -1,28 +1,28 @@ +import { globalScene } from "#app/global-scene"; +import type { InterfaceConfig } from "#app/inputs-controller"; +import { Device } from "#enums/devices"; import { UiMode } from "#enums/ui-mode"; -import cfg_keyboard_qwerty from "#app/configs/inputs/cfg_keyboard_qwerty"; +import cfg_keyboard_qwerty from "#inputs/cfg-keyboard-qwerty"; +import { deleteBind } from "#inputs/config-handler"; import { - setSettingKeyboard, SettingKeyboard, + setSettingKeyboard, settingKeyboardBlackList, settingKeyboardDefaults, settingKeyboardOptions, -} from "#app/system/settings/settings-keyboard"; -import { reverseValueToKeySetting, truncateString } from "#app/utils/common"; -import AbstractControlSettingsUiHandler from "#app/ui/settings/abstract-control-settings-ui-handler"; -import type { InterfaceConfig } from "#app/inputs-controller"; -import { addTextObject, TextStyle } from "#app/ui/text"; -import { deleteBind } from "#app/configs/inputs/configHandler"; -import { Device } from "#enums/devices"; -import { NavigationManager } from "#app/ui/settings/navigationMenu"; +} from "#system/settings-keyboard"; +import { AbstractControlSettingsUiHandler } from "#ui/abstract-control-settings-ui-handler"; +import { NavigationManager } from "#ui/navigation-menu"; +import { addTextObject, TextStyle } from "#ui/text"; +import { reverseValueToKeySetting, truncateString } from "#utils/common"; import i18next from "i18next"; -import { globalScene } from "#app/global-scene"; /** * Class representing the settings UI handler for keyboards. * * @extends AbstractControlSettingsUiHandler */ -export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUiHandler { +export class SettingsKeyboardUiHandler extends AbstractControlSettingsUiHandler { /** * Creates an instance of SettingsKeyboardUiHandler. * diff --git a/src/ui/settings/settings-ui-handler.ts b/src/ui/settings/settings-ui-handler.ts index 8d61044ff91..9461e987864 100644 --- a/src/ui/settings/settings-ui-handler.ts +++ b/src/ui/settings/settings-ui-handler.ts @@ -1,8 +1,8 @@ -import { SettingType } from "../../system/settings/settings"; import type { UiMode } from "#enums/ui-mode"; -import AbstractSettingsUiHandler from "./abstract-settings-ui-handler"; +import { SettingType } from "#system/settings"; +import { AbstractSettingsUiHandler } from "#ui/abstract-settings-ui-handler"; -export default class SettingsUiHandler extends AbstractSettingsUiHandler { +export class SettingsUiHandler extends AbstractSettingsUiHandler { /** * Creates an instance of SettingsGamepadUiHandler. * 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 71e40844f38..4c174dc5955 100644 --- a/src/ui/starter-container.ts +++ b/src/ui/starter-container.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; -import type PokemonSpecies from "../data/pokemon-species"; -import { addTextObject, TextStyle } from "./text"; +import type { PokemonSpecies } from "#data/pokemon-species"; +import { addTextObject, TextStyle } 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 3cb6222cafa..18a3fbc30a3 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -1,67 +1,64 @@ -import type { CandyUpgradeNotificationChangedEvent } from "#app/events/battle-scene"; -import { BattleSceneEventType } from "#app/events/battle-scene"; -import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import type { Variant } from "#app/sprites/variant"; -import { getVariantTint, getVariantIcon } from "#app/sprites/variant"; -import { argbFromRgba } from "@material/material-color-utilities"; -import i18next from "i18next"; -import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import { starterColors } from "#app/global-vars/starter-colors"; +import type { Ability } from "#abilities/ability"; +import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; import { globalScene } from "#app/global-scene"; -import type { Ability } from "#app/data/abilities/ability"; -import { allAbilities } from "#app/data/data-lists"; -import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { GrowthRate, getGrowthRateColor } from "#app/data/exp"; -import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; -import { allMoves } from "#app/data/data-lists"; -import { getNatureName } from "#app/data/nature"; -import { pokemonFormChanges } from "#app/data/pokemon-forms"; -import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; -import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves"; -import type PokemonSpecies from "#app/data/pokemon-species"; -import { getPokemonSpeciesForm, getPokerusStarters } from "#app/data/pokemon-species"; -import { allSpecies } from "#app/data/data-lists"; -import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; -import { PokemonType } from "#enums/pokemon-type"; -import { GameModes } from "#enums/game-modes"; -import type { DexAttrProps, StarterMoveset, StarterAttributes } from "#app/system/game-data"; -import type { StarterPreferences } from "#app/utils/data"; -import type { DexEntry } from "#app/@types/dex-data"; -import { loadStarterPreferences, saveStarterPreferences } from "#app/utils/data"; -import { AbilityAttr } from "#enums/ability-attr"; -import { DexAttr } from "#enums/dex-attr"; -import { Tutorial, handleTutorial } from "#app/tutorial"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import MessageUiHandler from "#app/ui/message-ui-handler"; -import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; -import { StatsContainer } from "#app/ui/stats-container"; -import { TextStyle, addBBCodeTextObject, addTextObject } from "#app/ui/text"; -import { UiMode } from "#enums/ui-mode"; -import { addWindow } from "#app/ui/ui-theme"; -import { Egg } from "#app/data/egg"; +import { starterColors } from "#app/global-vars/starter-colors"; import Overrides from "#app/overrides"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; -import { Passive as PassiveAttr } from "#enums/passive"; -import { applyChallenges } from "#app/data/challenge"; -import { ChallengeType } from "#enums/challenge-type"; -import MoveInfoOverlay from "#app/ui/move-info-overlay"; -import { getEggTierForSpecies } from "#app/data/egg"; -import { Device } from "#enums/devices"; -import type { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { Button } from "#enums/buttons"; -import { EggSourceType } from "#enums/egg-source-types"; -import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#app/ui/dropdown"; -import { StarterContainer } from "#app/ui/starter-container"; -import { FilterBar } from "#app/ui/filter-bar"; -import { DropDownColumn } from "#enums/drop-down-column"; -import { ScrollBar } from "#app/ui/scroll-bar"; -import { AbilityId } from "#enums/ability-id"; +import { handleTutorial, Tutorial } from "#app/tutorial"; +import { speciesEggMoves } from "#balance/egg-moves"; +import { pokemonPrevolutions } from "#balance/pokemon-evolutions"; +import type { LevelMoves } from "#balance/pokemon-level-moves"; +import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#balance/pokemon-level-moves"; import { getPassiveCandyCount, - getValueReductionCandyCounts, getSameSpeciesEggCandyCounts, -} from "#app/data/balance/starters"; + getStarterValueFriendshipCap, + getValueReductionCandyCounts, + POKERUS_STARTER_COUNT, + speciesStarterCosts, +} from "#balance/starters"; +import { applyChallenges, checkStarterValidForChallenge } from "#data/challenge"; +import { allAbilities, allMoves, allSpecies } from "#data/data-lists"; +import { Egg, getEggTierForSpecies } from "#data/egg"; +import { GrowthRate, getGrowthRateColor } from "#data/exp"; +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"; +import { ChallengeType } from "#enums/challenge-type"; +import { Device } from "#enums/devices"; +import { DexAttr } from "#enums/dex-attr"; +import { DropDownColumn } from "#enums/drop-down-column"; +import { EggSourceType } from "#enums/egg-source-types"; +import { GameModes } from "#enums/game-modes"; +import type { MoveId } from "#enums/move-id"; +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 { UiMode } from "#enums/ui-mode"; +import type { CandyUpgradeNotificationChangedEvent } from "#events/battle-scene"; +import { BattleSceneEventType } from "#events/battle-scene"; +import type { Variant } from "#sprites/variant"; +import { getVariantIcon, getVariantTint } from "#sprites/variant"; +import { achvs } from "#system/achv"; +import type { DexAttrProps, StarterAttributes, StarterMoveset } from "#system/game-data"; +import { SettingKeyboard } from "#system/settings-keyboard"; +import type { DexEntry } from "#types/dex-data"; +import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler"; +import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#ui/dropdown"; +import { FilterBar } from "#ui/filter-bar"; +import { MessageUiHandler } from "#ui/message-ui-handler"; +import { MoveInfoOverlay } from "#ui/move-info-overlay"; +import { PokemonIconAnimHandler, PokemonIconAnimMode } from "#ui/pokemon-icon-anim-handler"; +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 { addWindow } from "#ui/ui-theme"; import { BooleanHolder, fixedInt, @@ -72,12 +69,13 @@ import { randIntRange, rgbHexToRgba, toReadableString, -} from "#app/utils/common"; -import type { Nature } from "#enums/nature"; -import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; -import { achvs } from "#app/system/achv"; +} from "#utils/common"; +import type { StarterPreferences } from "#utils/data"; +import { loadStarterPreferences, saveStarterPreferences } from "#utils/data"; +import { argbFromRgba } from "@material/material-color-utilities"; +import i18next from "i18next"; import type { GameObjects } from "phaser"; -import { checkStarterValidForChallenge } from "#app/data/challenge"; +import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; export type StarterSelectCallback = (starters: Starter[]) => void; @@ -148,10 +146,10 @@ const languageSettings: { [key: string]: LanguageSetting } = { starterInfoXPos: 30, }, ja: { - starterInfoTextSize: "62px", - instructionTextSize: "38px", - starterInfoYOffset: 0.5, - starterInfoXPos: 33, + starterInfoTextSize: "48px", + instructionTextSize: "40px", + starterInfoYOffset: 1, + starterInfoXPos: 32, }, ca: { starterInfoTextSize: "48px", @@ -265,7 +263,7 @@ interface SpeciesDetails { teraType?: PokemonType; } -export default class StarterSelectUiHandler extends MessageUiHandler { +export class StarterSelectUiHandler extends MessageUiHandler { private starterSelectContainer: Phaser.GameObjects.Container; private starterSelectScrollBar: ScrollBar; private filterBarContainer: Phaser.GameObjects.Container; @@ -624,7 +622,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); this.starterSelectContainer.add(this.pokemonSprite); - this.pokemonNumberText = addTextObject(17, 1, "0000", TextStyle.SUMMARY); + this.pokemonNumberText = addTextObject(17, 1, "0000", TextStyle.SUMMARY_DEX_NUM); this.pokemonNumberText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonNumberText); @@ -643,7 +641,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonGrowthRateLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonGrowthRateLabelText); - this.pokemonGrowthRateText = addTextObject(34, 106, "", TextStyle.SUMMARY_PINK, { fontSize: "36px" }); + this.pokemonGrowthRateText = addTextObject(34, 106, "", TextStyle.GROWTH_RATE_TYPE, { fontSize: "36px" }); this.pokemonGrowthRateText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonGrowthRateText); @@ -743,7 +741,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonEggMoveBgs = []; this.pokemonEggMoveLabels = []; - this.valueLimitLabel = addTextObject(teamWindowX + 17, 150, "0/10", TextStyle.TOOLTIP_CONTENT); + this.valueLimitLabel = addTextObject(teamWindowX + 17, 150, "0/10", TextStyle.STARTER_VALUE_LIMIT); this.valueLimitLabel.setOrigin(0.5, 0); this.starterSelectContainer.add(this.valueLimitLabel); @@ -800,21 +798,23 @@ export default class StarterSelectUiHandler extends MessageUiHandler { starterBoxContainer.add(this.starterSelectScrollBar); - this.pokerusCursorObjs = new Array(POKERUS_STARTER_COUNT).fill(null).map(() => { + this.pokerusCursorObjs = []; + for (let i = 0; i < POKERUS_STARTER_COUNT; i++) { const cursorObj = globalScene.add.image(0, 0, "select_cursor_pokerus"); cursorObj.setVisible(false); cursorObj.setOrigin(0, 0); starterBoxContainer.add(cursorObj); - return cursorObj; - }); + this.pokerusCursorObjs.push(cursorObj); + } - this.starterCursorObjs = new Array(6).fill(null).map(() => { + this.starterCursorObjs = []; + for (let i = 0; i < 6; i++) { const cursorObj = globalScene.add.image(0, 0, "select_cursor_highlight"); cursorObj.setVisible(false); cursorObj.setOrigin(0, 0); starterBoxContainer.add(cursorObj); - return cursorObj; - }); + this.starterCursorObjs.push(cursorObj); + } this.cursorObj = globalScene.add.image(0, 0, "select_cursor"); this.cursorObj.setOrigin(0, 0); @@ -843,15 +843,16 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterSelectContainer.add(starterBoxContainer); - this.starterIcons = new Array(6).fill(null).map((_, i) => { + this.starterIcons = []; + for (let i = 0; i < 6; i++) { const icon = globalScene.add.sprite(teamWindowX + 7, calcStarterIconY(i), "pokemon_icons_0"); icon.setScale(0.5); icon.setOrigin(0, 0); icon.setFrame("unknown"); this.starterSelectContainer.add(icon); this.iconAnimHandler.addOrUpdate(icon, PokemonIconAnimMode.PASSIVE); - return icon; - }); + this.starterIcons.push(icon); + } this.type1Icon = globalScene.add.sprite(8, 98, getLocalizedSpriteKey("types")); this.type1Icon.setScale(0.5); @@ -869,9 +870,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonLuckLabelText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonLuckLabelText); - this.pokemonLuckText = addTextObject(8 + this.pokemonLuckLabelText.displayWidth + 2, 89, "0", TextStyle.WINDOW, { - fontSize: "56px", - }); + this.pokemonLuckText = addTextObject( + 8 + this.pokemonLuckLabelText.displayWidth + 2, + 89, + "0", + TextStyle.LUCK_VALUE, + { + fontSize: "56px", + }, + ); this.pokemonLuckText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonLuckText); @@ -944,7 +951,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const moveBg = globalScene.add.nineslice(0, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); moveBg.setOrigin(1, 0); - const moveLabel = addTextObject(-moveBg.width / 2, 0, "-", TextStyle.PARTY); + const moveLabel = addTextObject(-moveBg.width / 2, 0, "-", TextStyle.MOVE_LABEL); moveLabel.setOrigin(0.5, 0); this.pokemonMoveBgs.push(moveBg); @@ -961,7 +968,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { -this.pokemonMoveBgs[0].width / 2, 56, "(+0)", - TextStyle.PARTY, + TextStyle.MOVE_LABEL, ); this.pokemonAdditionalMoveCountLabel.setOrigin(0.5, 0); @@ -983,7 +990,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const eggMoveBg = globalScene.add.nineslice(0, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); eggMoveBg.setOrigin(1, 0); - const eggMoveLabel = addTextObject(-eggMoveBg.width / 2, 0, "???", TextStyle.PARTY); + const eggMoveLabel = addTextObject(-eggMoveBg.width / 2, 0, "???", TextStyle.MOVE_LABEL); eggMoveLabel.setOrigin(0.5, 0); this.pokemonEggMoveBgs.push(eggMoveBg); @@ -1027,7 +1034,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleShiny"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.shinyLabel.setName("text-shiny-label"); @@ -1046,7 +1053,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleForm"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.formLabel.setName("text-form-label"); @@ -1065,7 +1072,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleGender"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.genderLabel.setName("text-gender-label"); @@ -1084,7 +1091,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleAbility"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.abilityLabel.setName("text-ability-label"); @@ -1103,7 +1110,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleNature"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.natureLabel.setName("text-nature-label"); @@ -1122,7 +1129,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleTera"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.teraLabel.setName("text-tera-label"); @@ -1141,7 +1148,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.filterInstructionRowX + this.instructionRowTextOffset, this.filterInstructionRowY, i18next.t("starterSelectUiHandler:goFilter"), - TextStyle.PARTY, + TextStyle.INSTRUCTIONS_TEXT, { fontSize: instructionTextSize }, ); this.goFilterLabel.setName("text-goFilter-label"); @@ -2202,14 +2209,14 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (!(passiveAttr & PassiveAttr.UNLOCKED)) { const passiveCost = getPassiveCandyCount(speciesStarterCosts[this.lastSpecies.speciesId]); options.push({ - label: `x${passiveCost} ${i18next.t("starterSelectUiHandler:unlockPassive")}`, + label: `×${passiveCost} ${i18next.t("starterSelectUiHandler:unlockPassive")}`, handler: () => { if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= passiveCost) { starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED; if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { starterData.candyCount -= passiveCost; } - this.pokemonCandyCountText.setText(`x${starterData.candyCount}`); + this.pokemonCandyCountText.setText(`×${starterData.candyCount}`); globalScene.gameData.saveSystem().then(success => { if (!success) { return globalScene.reset(true); @@ -2242,14 +2249,14 @@ export default class StarterSelectUiHandler extends MessageUiHandler { valueReduction ]; options.push({ - label: `x${reductionCost} ${i18next.t("starterSelectUiHandler:reduceCost")}`, + label: `×${reductionCost} ${i18next.t("starterSelectUiHandler:reduceCost")}`, handler: () => { if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= reductionCost) { starterData.valueReduction++; if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { starterData.candyCount -= reductionCost; } - this.pokemonCandyCountText.setText(`x${starterData.candyCount}`); + this.pokemonCandyCountText.setText(`×${starterData.candyCount}`); globalScene.gameData.saveSystem().then(success => { if (!success) { return globalScene.reset(true); @@ -2276,7 +2283,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { // Same species egg menu option. const sameSpeciesEggCost = getSameSpeciesEggCandyCounts(speciesStarterCosts[this.lastSpecies.speciesId]); options.push({ - label: `x${sameSpeciesEggCost} ${i18next.t("starterSelectUiHandler:sameSpeciesEgg")}`, + label: `×${sameSpeciesEggCost} ${i18next.t("starterSelectUiHandler:sameSpeciesEgg")}`, handler: () => { if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= sameSpeciesEggCost) { if (globalScene.gameData.eggs.length >= 99 && !Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { @@ -2295,7 +2302,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { starterData.candyCount -= sameSpeciesEggCost; } - this.pokemonCandyCountText.setText(`x${starterData.candyCount}`); + this.pokemonCandyCountText.setText(`×${starterData.candyCount}`); const egg = new Egg({ species: this.lastSpecies.speciesId, @@ -3564,7 +3571,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonShinyIcon.setY(117); this.pokemonCandyIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[0]))); this.pokemonCandyOverlayIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[1]))); - this.pokemonCandyCountText.setText(`x${globalScene.gameData.starterData[species.speciesId].candyCount}`); + this.pokemonCandyCountText.setText(`×${globalScene.gameData.starterData[species.speciesId].candyCount}`); this.pokemonCandyContainer.setVisible(true); this.pokemonFormText.setY(42); this.pokemonHatchedIcon.setVisible(true); @@ -3818,9 +3825,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } this.shinyOverlay.setVisible(shiny ?? false); // TODO: is false the correct default? - this.pokemonNumberText.setColor(this.getTextColor(shiny ? TextStyle.SUMMARY_GOLD : TextStyle.SUMMARY, false)); + this.pokemonNumberText.setColor( + this.getTextColor(shiny ? TextStyle.SUMMARY_DEX_NUM_GOLD : TextStyle.SUMMARY_DEX_NUM, false), + ); this.pokemonNumberText.setShadowColor( - this.getTextColor(shiny ? TextStyle.SUMMARY_GOLD : TextStyle.SUMMARY, true), + this.getTextColor(shiny ? TextStyle.SUMMARY_DEX_NUM_GOLD : TextStyle.SUMMARY_DEX_NUM, true), ); if (forSeen ? this.speciesStarterDexEntry?.seenAttr : this.speciesStarterDexEntry?.caughtAttr) { diff --git a/src/ui/stats-container.ts b/src/ui/stats-container.ts index 8cc74e64e96..6b89e80b80a 100644 --- a/src/ui/stats-container.ts +++ b/src/ui/stats-container.ts @@ -1,8 +1,8 @@ -import type BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; -import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from "./text"; -import { PERMANENT_STATS, getStatKey } from "#app/enums/stat"; -import i18next from "i18next"; import { globalScene } from "#app/global-scene"; +import { getStatKey, PERMANENT_STATS } from "#enums/stat"; +import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#ui/text"; +import i18next from "i18next"; +import type BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; const ivChartSize = 24; const ivChartStatCoordMultipliers = [ @@ -19,7 +19,7 @@ const ivLabelOffset = [0, sideLabelOffset, -sideLabelOffset, sideLabelOffset, -s const ivChartLabelyOffset = [0, 5, 0, 5, 0, 0]; // doing this so attack does not overlap with (+N) const ivChartStatIndexes = [0, 1, 2, 5, 4, 3]; // swap special attack and speed -const defaultIvChartData = new Array(12).fill(null).map(() => 0); +const defaultIvChartData: number[] = new Array(12).fill(0); export class StatsContainer extends Phaser.GameObjects.Container { private showDiff: boolean; @@ -86,7 +86,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { 4 + (this.showDiff ? 0 : ivChartLabelyOffset[s]), i18next.t(getStatKey(s)), - TextStyle.TOOLTIP_CONTENT, + TextStyle.STATS_HEXAGON, ); statLabel.setOrigin(0.5); @@ -94,7 +94,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { statLabel.x - (this.showDiff ? 0 : ivLabelOffset[s]), statLabel.y + 8, "0", - TextStyle.TOOLTIP_CONTENT, + TextStyle.STATS_HEXAGON, ); this.ivStatValueTexts[s].setOrigin(0.5); @@ -147,7 +147,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { duration: 1000, ease: "Cubic.easeOut", onUpdate: (tween: Phaser.Tweens.Tween) => { - const progress = tween.getValue(); + const progress = tween.getValue() ?? 1; const interpolatedData = ivChartData.map( (v: number, i: number) => v * progress + lastIvChartData[i] * (1 - progress), ); diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index f108faf1646..b4df4612546 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -1,45 +1,44 @@ -import { starterColors } from "#app/global-vars/starter-colors"; -import { globalScene } from "#app/global-scene"; -import { UiMode } from "#enums/ui-mode"; -import UiHandler from "#app/ui/ui-handler"; -import { - getLocalizedSpriteKey, - rgbHexToRgba, - padInt, - getEnumValues, - fixedInt, - isNullOrUndefined, - toReadableString, - formatStat, - getShinyDescriptor, -} from "#app/utils/common"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type { PokemonMove } from "#app/data/moves/pokemon-move"; -import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; -import { argbFromRgba } from "@material/material-color-utilities"; -import { getTypeRgb } from "#app/data/type"; -import { PokemonType } from "#enums/pokemon-type"; -import { TextStyle, addBBCodeTextObject, addTextObject, getBBCodeFrag } from "#app/ui/text"; -import type Move from "#app/data/moves/move"; -import { MoveCategory } from "#enums/MoveCategory"; -import { getPokeballAtlasKey } from "#app/data/pokeball"; -import { getGenderColor, getGenderSymbol } from "#app/data/gender"; -import { getLevelRelExp, getLevelTotalExp } from "#app/data/exp"; -import { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { StatusEffect } from "#enums/status-effect"; -import { getBiomeName } from "#app/data/balance/biomes"; -import { getNatureName, getNatureStatMultiplier } from "#app/data/nature"; +import type { Ability } from "#abilities/ability"; import { loggedInUser } from "#app/account"; -import type { Variant } from "#app/sprites/variant"; -import { getVariantTint } from "#app/sprites/variant"; +import { globalScene } from "#app/global-scene"; +import { starterColors } from "#app/global-vars/starter-colors"; +import { getBiomeName } from "#balance/biomes"; +import { getStarterValueFriendshipCap, speciesStarterCosts } from "#balance/starters"; +import { getLevelRelExp, getLevelTotalExp } from "#data/exp"; +import { getGenderColor, getGenderSymbol } from "#data/gender"; +import { getNatureName, getNatureStatMultiplier } from "#data/nature"; +import { getPokeballAtlasKey } from "#data/pokeball"; +import { getTypeRgb } from "#data/type"; import { Button } from "#enums/buttons"; -import type { Ability } from "#app/data/abilities/ability"; -import i18next from "i18next"; -import { modifierSortFunc } from "#app/modifier/modifier"; -import { PlayerGender } from "#enums/player-gender"; -import { Stat, PERMANENT_STATS, getStatKey } from "#enums/stat"; +import { MoveCategory } from "#enums/move-category"; import { Nature } from "#enums/nature"; -import { achvs } from "#app/system/achv"; +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 { UiMode } from "#enums/ui-mode"; +import type { PlayerPokemon } from "#field/pokemon"; +import { modifierSortFunc, PokemonHeldItemModifier } from "#modifiers/modifier"; +import type { Move } from "#moves/move"; +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 { UiHandler } from "#ui/ui-handler"; +import { + fixedInt, + formatStat, + getLocalizedSpriteKey, + getShinyDescriptor, + isNullOrUndefined, + padInt, + rgbHexToRgba, + toReadableString, +} from "#utils/common"; +import { getEnumValues } from "#utils/enums"; +import { argbFromRgba } from "@material/material-color-utilities"; +import i18next from "i18next"; enum Page { PROFILE, @@ -64,7 +63,7 @@ interface abilityContainer { descriptionText: Phaser.GameObjects.Text | null; } -export default class SummaryUiHandler extends UiHandler { +export class SummaryUiHandler extends UiHandler { private summaryUiMode: SummaryUiMode; private summaryContainer: Phaser.GameObjects.Container; @@ -148,7 +147,7 @@ export default class SummaryUiHandler extends UiHandler { this.tabSprite.setOrigin(1, 1); this.summaryContainer.add(this.tabSprite); - const summaryLabel = addTextObject(4, -165, i18next.t("pokemonSummary:pokemonInfo"), TextStyle.SUMMARY); + const summaryLabel = addTextObject(4, -165, i18next.t("pokemonSummary:pokemonInfo"), TextStyle.SUMMARY_HEADER); summaryLabel.setOrigin(0, 1); this.summaryContainer.add(summaryLabel); @@ -418,7 +417,7 @@ export default class SummaryUiHandler extends UiHandler { } this.candyCountText.setText( - `x${globalScene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].candyCount}`, + `×${globalScene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].candyCount}`, ); this.candyShadow.setCrop(0, 0, 16, candyCropY); @@ -430,7 +429,7 @@ export default class SummaryUiHandler extends UiHandler { this.friendshipShadow.on("pointerout", () => globalScene.ui.hideTooltip()); } - this.friendshipText.setText(`${this.pokemon?.friendship || "0"} / 255`); + this.friendshipText.setText(` ${this.pokemon?.friendship || "0"}/255`); this.friendshipShadow.setCrop(0, 0, 16, 16 - 16 * ((this.pokemon?.friendship || 0) / 255)); @@ -864,7 +863,7 @@ export default class SummaryUiHandler extends UiHandler { 141 + luckLabelText.displayWidth + 2, 28, this.pokemon.getLuck().toString(), - TextStyle.SUMMARY, + TextStyle.LUCK_VALUE, ); luckText.setOrigin(0, 0); luckText.setTint(getVariantTint(Math.min(this.pokemon.getLuck() - 1, 2) as Variant)); @@ -917,11 +916,11 @@ export default class SummaryUiHandler extends UiHandler { abilityInfo.labelImage.setOrigin(0, 0); profileContainer.add(abilityInfo.labelImage); - abilityInfo.nameText = addTextObject(7, 66, abilityInfo.ability?.name!, TextStyle.SUMMARY_ALT); // TODO: is this bang correct? + abilityInfo.nameText = addTextObject(7, 68, abilityInfo.ability?.name!, TextStyle.SUMMARY_ALT); // TODO: is this bang correct? abilityInfo.nameText.setOrigin(0, 1); profileContainer.add(abilityInfo.nameText); - abilityInfo.descriptionText = addTextObject(7, 69, abilityInfo.ability?.description!, TextStyle.WINDOW_ALT, { + abilityInfo.descriptionText = addTextObject(7, 71, abilityInfo.ability?.description!, TextStyle.WINDOW_ALT, { wordWrap: { width: 1224 }, }); // TODO: is this bang correct? abilityInfo.descriptionText.setOrigin(0, 0); @@ -1000,16 +999,16 @@ export default class SummaryUiHandler extends UiHandler { 16 * rowIndex, statName, natureStatMultiplier === 1 - ? TextStyle.SUMMARY + ? TextStyle.SUMMARY_STATS : natureStatMultiplier > 1 - ? TextStyle.SUMMARY_PINK - : TextStyle.SUMMARY_BLUE, + ? TextStyle.SUMMARY_STATS_PINK + : TextStyle.SUMMARY_STATS_BLUE, ); const ivLabel = addTextObject( 115 * colIndex + (colIndex === 1 ? 5 : 0), 16 * rowIndex, statName, - this.pokemon?.ivs[stat] === 31 ? TextStyle.SUMMARY_GOLD : TextStyle.SUMMARY, + this.pokemon?.ivs[stat] === 31 ? TextStyle.SUMMARY_STATS_GOLD : TextStyle.SUMMARY_STATS, ); statLabel.setOrigin(0.5, 0); diff --git a/src/ui/target-select-ui-handler.ts b/src/ui/target-select-ui-handler.ts index 8106e4de2da..5ea89929cda 100644 --- a/src/ui/target-select-ui-handler.ts +++ b/src/ui/target-select-ui-handler.ts @@ -1,18 +1,18 @@ +import { globalScene } from "#app/global-scene"; +import { SubstituteTag } from "#data/battler-tags"; import { BattlerIndex } from "#enums/battler-index"; -import { UiMode } from "#enums/ui-mode"; -import UiHandler from "./ui-handler"; -import { isNullOrUndefined, fixedInt } from "#app/utils/common"; -import { getMoveTargets } from "#app/data/moves/move-utils"; import { Button } from "#enums/buttons"; import type { MoveId } from "#enums/move-id"; -import type Pokemon from "#app/field/pokemon"; -import type { ModifierBar } from "#app/modifier/modifier"; -import { SubstituteTag } from "#app/data/battler-tags"; -import { globalScene } from "#app/global-scene"; +import { UiMode } from "#enums/ui-mode"; +import type { Pokemon } from "#field/pokemon"; +import type { ModifierBar } from "#modifiers/modifier"; +import { getMoveTargets } from "#moves/move-utils"; +import { UiHandler } from "#ui/ui-handler"; +import { fixedInt, isNullOrUndefined } from "#utils/common"; export type TargetSelectCallback = (targets: BattlerIndex[]) => void; -export default class TargetSelectUiHandler extends UiHandler { +export class TargetSelectUiHandler extends UiHandler { private fieldIndex: number; private move: MoveId; private targetSelectCallback: TargetSelectCallback; @@ -157,8 +157,8 @@ export default class TargetSelectUiHandler extends UiHandler { yoyo: true, onUpdate: t => { for (const target of this.targetsHighlighted) { - target.setAlpha(t.getValue()); - this.highlightItems(target.id, t.getValue()); + target.setAlpha(t.getValue() ?? 1); + this.highlightItems(target.id, t.getValue() ?? 1); } }, }); diff --git a/src/ui/test-dialogue-ui-handler.ts b/src/ui/test-dialogue-ui-handler.ts index b1e5047955a..c57c73ca777 100644 --- a/src/ui/test-dialogue-ui-handler.ts +++ b/src/ui/test-dialogue-ui-handler.ts @@ -1,13 +1,13 @@ -import type { InputFieldConfig } from "./form-modal-ui-handler"; -import { FormModalUiHandler } from "./form-modal-ui-handler"; -import type { ModalConfig } from "./modal-ui-handler"; -import i18next from "i18next"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import type { OptionSelectItem } from "./abstact-option-select-ui-handler"; -import { isNullOrUndefined } from "#app/utils/common"; import { UiMode } from "#enums/ui-mode"; +import type { PlayerPokemon } from "#field/pokemon"; +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 { isNullOrUndefined } from "#utils/common"; +import i18next from "i18next"; -export default class TestDialogueUiHandler extends FormModalUiHandler { +export class TestDialogueUiHandler extends FormModalUiHandler { keys: string[]; setup() { diff --git a/src/ui/text.ts b/src/ui/text.ts index 76c85bac5cf..b2a1894c85c 100644 --- a/src/ui/text.ts +++ b/src/ui/text.ts @@ -1,37 +1,58 @@ +import { globalScene } from "#app/global-scene"; import { EggTier } from "#enums/egg-type"; +import { ModifierTier } from "#enums/modifier-tier"; import { UiTheme } from "#enums/ui-theme"; +import i18next from "#plugins/i18n"; import type Phaser from "phaser"; import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; -import InputText from "phaser3-rex-plugins/plugins/inputtext"; -import { globalScene } from "#app/global-scene"; -import { ModifierTier } from "../enums/modifier-tier"; -import i18next from "#app/plugins/i18n"; +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, @@ -73,10 +94,6 @@ export function addTextObject( ret.setLineSpacing(scale * 30); } - if (ret.lineSpacing < 12 && i18next.resolvedLanguage === "ja") { - ret.setLineSpacing(ret.lineSpacing + 35); - } - return ret; } @@ -122,10 +139,6 @@ export function addBBCodeTextObject( ret.setLineSpacing(scale * 60); } - if (ret.lineSpacing < 12 && i18next.resolvedLanguage === "ja") { - ret.setLineSpacing(ret.lineSpacing + 35); - } - return ret; } @@ -139,8 +152,7 @@ export function addTextInputObject( ): InputText { const { scale, styleOptions } = getTextStyleOptions(style, globalScene.uiTheme, extraStyleOptions); - const ret = new InputText(globalScene, x, y, width, height, styleOptions as InputText.IConfig); - globalScene.add.existing(ret); + const ret = globalScene.add.rexInputText(x, y, width, height, styleOptions as InputText.IConfig); ret.setScale(scale); return ret; @@ -154,7 +166,7 @@ export function getTextStyleOptions( const lang = i18next.resolvedLanguage; let shadowXpos = 4; let shadowYpos = 5; - let scale = 0.1666666667; + const scale = 0.1666666667; const defaultFontSize = 96; let styleOptions: Phaser.Types.GameObjects.Text.TextStyle = { @@ -166,13 +178,58 @@ export function getTextStyleOptions( }, }; - if (i18next.resolvedLanguage === "ja") { - scale = 0.1388888889; - styleOptions.padding = { top: 2, bottom: 4 }; - } - switch (style) { - case TextStyle.SUMMARY: + case TextStyle.SUMMARY: { + const fontSizeLabel = "96px"; + switch (lang) { + case "ja": + styleOptions.padding = { top: 6, bottom: 4 }; + break; + } + styleOptions.fontSize = fontSizeLabel; + break; + } + // shadowXpos = 5; + // shadowYpos = 5; + // break; + case TextStyle.SUMMARY_HEADER: { + let fontSizeLabel = "96px"; + switch (lang) { + case "ja": + styleOptions.padding = { bottom: 7 }; + fontSizeLabel = "80px"; + break; + } + styleOptions.fontSize = fontSizeLabel; + break; + } + // shadowXpos = 5; + // shadowYpos = 5; + // break; + case TextStyle.SUMMARY_DEX_NUM: { + const fontSizeLabel = "96px"; + switch (lang) { + case "ja": + styleOptions.padding = { top: 2, bottom: 10 }; + break; + } + styleOptions.fontSize = fontSizeLabel; + shadowXpos = 5; + shadowYpos = 5; + break; + } + case TextStyle.SUMMARY_DEX_NUM_GOLD: { + const fontSizeLabel = "96px"; + switch (lang) { + case "ja": + styleOptions.padding = { top: 2, bottom: 10 }; + break; + } + styleOptions.fontSize = fontSizeLabel; + shadowXpos = 5; + shadowYpos = 5; + break; + } case TextStyle.SUMMARY_ALT: case TextStyle.SUMMARY_BLUE: case TextStyle.SUMMARY_RED: @@ -180,6 +237,10 @@ export function getTextStyleOptions( case TextStyle.SUMMARY_GOLD: case TextStyle.SUMMARY_GRAY: case TextStyle.SUMMARY_GREEN: + case TextStyle.SUMMARY_STATS: + case TextStyle.SUMMARY_STATS_BLUE: + case TextStyle.SUMMARY_STATS_PINK: + case TextStyle.SUMMARY_STATS_GOLD: case TextStyle.WINDOW: case TextStyle.WINDOW_ALT: case TextStyle.ME_OPTION_DEFAULT: @@ -187,6 +248,43 @@ export function getTextStyleOptions( shadowXpos = 3; shadowYpos = 3; break; + case TextStyle.LUCK_VALUE: { + const fontSizeLabel = "96px"; + switch (lang) { + case "ja": + styleOptions.padding = { top: -6, bottom: 2 }; + break; + } + styleOptions.fontSize = fontSizeLabel; + shadowXpos = 3; + shadowYpos = 4; + break; + } + case TextStyle.GROWTH_RATE_TYPE: { + switch (lang) { + case "ja": + styleOptions.padding = { left: 24 }; + break; + } + styleOptions.fontSize = defaultFontSize - 30; + shadowXpos = 3; + shadowYpos = 3; + break; + } + case TextStyle.WINDOW_BATTLE_COMMAND: { + let fontSizeLabel = "96px"; + switch (lang) { + case "ja": + styleOptions.padding = { top: 2 }; + fontSizeLabel = "92px"; + break; + } + styleOptions.fontSize = fontSizeLabel; + break; + } + // shadowXpos = 5; + // shadowYpos = 5; + // break; case TextStyle.STATS_LABEL: { let fontSizeLabel = "96px"; switch (lang) { @@ -218,10 +316,80 @@ export function getTextStyleOptions( break; } case TextStyle.MESSAGE: - case TextStyle.SETTINGS_LABEL: - case TextStyle.SETTINGS_LOCKED: - case TextStyle.SETTINGS_SELECTED: + styleOptions.fontSize = defaultFontSize; break; + case TextStyle.HEADER_LABEL: { + switch (lang) { + case "ja": + styleOptions.padding = { top: 6 }; + break; + } + break; + } + case TextStyle.SETTINGS_VALUE: + case TextStyle.SETTINGS_LABEL: { + shadowXpos = 3; + shadowYpos = 3; + let fontSizeValue = "96px"; + switch (lang) { + case "ja": + fontSizeValue = "80px"; + styleOptions.padding = { top: 10 }; + break; + default: + fontSizeValue = "96px"; + break; + } + styleOptions.fontSize = fontSizeValue; + break; + } + case TextStyle.SETTINGS_LABEL_NAVBAR: { + shadowXpos = 3; + shadowYpos = 3; + let fontSizeValue = "96px"; + switch (lang) { + case "ja": + fontSizeValue = "92px"; + break; + default: + fontSizeValue = "96px"; + break; + } + styleOptions.fontSize = fontSizeValue; + break; + } + case TextStyle.SETTINGS_LOCKED: { + shadowXpos = 3; + shadowYpos = 3; + let fontSizeValue = "96px"; + switch (lang) { + case "ja": + fontSizeValue = "80px"; + styleOptions.padding = { top: 10 }; + break; + default: + fontSizeValue = "96px"; + break; + } + styleOptions.fontSize = fontSizeValue; + break; + } + case TextStyle.SETTINGS_SELECTED: { + shadowXpos = 3; + shadowYpos = 3; + let fontSizeValue = "96px"; + switch (lang) { + case "ja": + fontSizeValue = "80px"; + styleOptions.padding = { top: 10 }; + break; + default: + fontSizeValue = "96px"; + break; + } + styleOptions.fontSize = fontSizeValue; + break; + } case TextStyle.BATTLE_INFO: case TextStyle.MONEY: case TextStyle.MONEY_WINDOW: @@ -231,11 +399,108 @@ export function getTextStyleOptions( shadowYpos = 3.5; break; case TextStyle.PARTY: - case TextStyle.PARTY_RED: + case TextStyle.PARTY_RED: { + switch (lang) { + case "ja": + styleOptions.padding = { top: -12, bottom: 4 }; + break; + } styleOptions.fontSize = defaultFontSize - 30; styleOptions.fontFamily = "pkmnems"; break; - case TextStyle.TOOLTIP_CONTENT: + } + case TextStyle.PARTY_CANCEL_BUTTON: { + switch (lang) { + case "ja": + styleOptions.fontSize = defaultFontSize - 42; + styleOptions.padding = { top: 4 }; + break; + default: + styleOptions.fontSize = defaultFontSize - 30; + styleOptions.padding = { left: 12 }; + break; + } + styleOptions.fontFamily = "pkmnems"; + break; + } + case TextStyle.INSTRUCTIONS_TEXT: { + switch (lang) { + case "ja": + styleOptions.padding = { top: -3, bottom: 4 }; + break; + } + styleOptions.fontSize = defaultFontSize - 30; + styleOptions.fontFamily = "pkmnems"; + shadowXpos = 3; + shadowYpos = 3; + break; + } + case TextStyle.MOVE_LABEL: { + switch (lang) { + case "ja": + styleOptions.fontSize = defaultFontSize - 16; + styleOptions.padding = { top: -14, bottom: 8 }; + break; + default: + styleOptions.fontSize = defaultFontSize - 30; + break; + } + styleOptions.fontFamily = "pkmnems"; + break; + } + case TextStyle.EGG_LIST: + styleOptions.fontSize = defaultFontSize - 34; + break; + case TextStyle.EGG_SUMMARY_NAME: { + switch (lang) { + case "ja": + styleOptions.padding = { top: -1 }; + break; + } + break; + } + case TextStyle.EGG_SUMMARY_DEX: { + switch (lang) { + case "ja": + styleOptions.padding = { top: 2 }; + break; + } + break; + } + case TextStyle.STARTER_VALUE_LIMIT: + styleOptions.fontSize = defaultFontSize - 36; + shadowXpos = 3; + shadowYpos = 3; + break; + case TextStyle.TOOLTIP_CONTENT: { + switch (lang) { + case "ja": + styleOptions.fontSize = defaultFontSize - 44; + styleOptions.padding = { top: 10, right: 10 }; + break; + default: + styleOptions.fontSize = defaultFontSize - 32; + break; + } + shadowXpos = 3; + shadowYpos = 3; + break; + } + case TextStyle.FILTER_BAR_MAIN: { + switch (lang) { + case "ja": + styleOptions.fontSize = defaultFontSize - 48; + styleOptions.padding = { top: 10, right: 10 }; + break; + default: + styleOptions.fontSize = defaultFontSize - 32; + break; + } + shadowXpos = 3; + shadowYpos = 3; + break; + } + case TextStyle.STATS_HEXAGON: styleOptions.fontSize = defaultFontSize - 32; shadowXpos = 3; shadowYpos = 3; @@ -330,9 +595,14 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean, uiTheme: Ui case TextStyle.MESSAGE: return !shadow ? "#f8f8f8" : "#6b5a73"; case TextStyle.WINDOW: + case TextStyle.WINDOW_BATTLE_COMMAND: case TextStyle.MOVE_INFO_CONTENT: + case TextStyle.STATS_HEXAGON: case TextStyle.MOVE_PP_FULL: + case TextStyle.EGG_LIST: case TextStyle.TOOLTIP_CONTENT: + case TextStyle.FILTER_BAR_MAIN: + case TextStyle.STARTER_VALUE_LIMIT: case TextStyle.SETTINGS_VALUE: if (isLegacyTheme) { return !shadow ? "#484848" : "#d0d0c8"; @@ -361,12 +631,22 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean, uiTheme: Ui } return !shadow ? "#f8f8f8" : "#6b5a73"; case TextStyle.PARTY: + case TextStyle.PARTY_CANCEL_BUTTON: + case TextStyle.INSTRUCTIONS_TEXT: + case TextStyle.MOVE_LABEL: return !shadow ? "#f8f8f8" : "#707070"; case TextStyle.PARTY_RED: return !shadow ? "#f89890" : "#984038"; case TextStyle.SUMMARY: + case TextStyle.SUMMARY_DEX_NUM: + case TextStyle.SUMMARY_HEADER: + case TextStyle.SUMMARY_STATS: + case TextStyle.EGG_SUMMARY_NAME: + case TextStyle.EGG_SUMMARY_DEX: + case TextStyle.LUCK_VALUE: return !shadow ? "#f8f8f8" : "#636363"; case TextStyle.SUMMARY_ALT: + case TextStyle.GROWTH_RATE_TYPE: if (isLegacyTheme) { return !shadow ? "#f8f8f8" : "#636363"; } @@ -375,10 +655,14 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean, uiTheme: Ui case TextStyle.TOOLTIP_TITLE: return !shadow ? "#e70808" : "#ffbd73"; case TextStyle.SUMMARY_BLUE: + case TextStyle.SUMMARY_STATS_BLUE: return !shadow ? "#40c8f8" : "#006090"; case TextStyle.SUMMARY_PINK: + case TextStyle.SUMMARY_STATS_PINK: return !shadow ? "#f89890" : "#984038"; case TextStyle.SUMMARY_GOLD: + case TextStyle.SUMMARY_DEX_NUM_GOLD: + case TextStyle.SUMMARY_STATS_GOLD: case TextStyle.MONEY: return !shadow ? "#e8e8a8" : "#a0a060"; // Pale Yellow/Gold case TextStyle.MONEY_WINDOW: @@ -399,6 +683,8 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean, uiTheme: Ui case TextStyle.SUMMARY_GREEN: return !shadow ? "#78c850" : "#306850"; case TextStyle.SETTINGS_LABEL: + case TextStyle.SETTINGS_LABEL_NAVBAR: + case TextStyle.HEADER_LABEL: case TextStyle.PERFECT_IV: return !shadow ? "#f8b050" : "#c07800"; case TextStyle.SETTINGS_SELECTED: diff --git a/src/ui/time-of-day-widget.ts b/src/ui/time-of-day-widget.ts index 5f5116a2da0..6deaf1405d7 100644 --- a/src/ui/time-of-day-widget.ts +++ b/src/ui/time-of-day-widget.ts @@ -1,11 +1,11 @@ -import { fixedInt } from "#app/utils/common"; import { globalScene } from "#app/global-scene"; -import { BattleSceneEventType } from "../events/battle-scene"; import { EaseType } from "#enums/ease-type"; import { TimeOfDay } from "#enums/time-of-day"; +import { BattleSceneEventType } from "#events/battle-scene"; +import { fixedInt } from "#utils/common"; /** A small self contained UI element that displays the time of day as an icon */ -export default class TimeOfDayWidget extends Phaser.GameObjects.Container { +export class TimeOfDayWidget extends Phaser.GameObjects.Container { /** The {@linkcode Phaser.GameObjects.Sprite} that represents the foreground of the current time of day */ private readonly timeOfDayIconFgs: Phaser.GameObjects.Sprite[] = new Array(2); /** The {@linkcode Phaser.GameObjects.Sprite} that represents the middle-ground of the current time of day */ diff --git a/src/ui/title-ui-handler.ts b/src/ui/title-ui-handler.ts index 50e77bbdd14..b7c37538a3e 100644 --- a/src/ui/title-ui-handler.ts +++ b/src/ui/title-ui-handler.ts @@ -1,19 +1,19 @@ -import OptionSelectUiHandler from "./settings/option-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import { fixedInt, randInt, randItem } from "#app/utils/common"; -import { TextStyle, addTextObject } from "./text"; -import { getSplashMessages } from "../data/splash-messages"; -import i18next from "i18next"; -import { TimedEventDisplay } from "#app/timed-event-manager"; -import { version } from "../../package.json"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import { globalScene } from "#app/global-scene"; -import type { SpeciesId } from "#enums/species-id"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { PlayerGender } from "#enums/player-gender"; +import { pokerogueApi } from "#api/pokerogue-api"; import { timedEventManager } from "#app/global-event-manager"; +import { globalScene } from "#app/global-scene"; +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 { 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 { fixedInt, randInt, randItem } from "#utils/common"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import i18next from "i18next"; -export default class TitleUiHandler extends OptionSelectUiHandler { +export class TitleUiHandler extends OptionSelectUiHandler { /** If the stats can not be retrieved, use this fallback value */ private static readonly BATTLES_WON_FALLBACK: number = -1; diff --git a/src/ui/ui-handler.ts b/src/ui/ui-handler.ts index d3784c1225c..c7b25c90205 100644 --- a/src/ui/ui-handler.ts +++ b/src/ui/ui-handler.ts @@ -1,13 +1,13 @@ import { globalScene } from "#app/global-scene"; -import type { TextStyle } from "./text"; -import { getTextColor } from "./text"; -import type { UiMode } from "#enums/ui-mode"; import type { Button } from "#enums/buttons"; +import type { UiMode } from "#enums/ui-mode"; +import type { TextStyle } from "#ui/text"; +import { getTextColor } from "#ui/text"; /** * A basic abstract class to act as a holder and processor for UI elements. */ -export default abstract class UiHandler { +export abstract class UiHandler { protected mode: number | null; protected cursor = 0; public active = false; diff --git a/src/ui/ui-theme.ts b/src/ui/ui-theme.ts index c3931aea23b..f2d434c024a 100644 --- a/src/ui/ui-theme.ts +++ b/src/ui/ui-theme.ts @@ -1,6 +1,6 @@ -import { UiTheme } from "#enums/ui-theme"; -import { legacyCompatibleImages } from "#app/scene-base"; import { globalScene } from "#app/global-scene"; +import { legacyCompatibleImages } from "#app/scene-base"; +import { UiTheme } from "#enums/ui-theme"; export enum WindowVariant { NORMAL, diff --git a/src/ui/ui.ts b/src/ui/ui.ts index ad496df6382..e9798e6350d 100644 --- a/src/ui/ui.ts +++ b/src/ui/ui.ts @@ -1,63 +1,63 @@ import { globalScene } from "#app/global-scene"; -import type UiHandler from "./ui-handler"; -import BattleMessageUiHandler from "./battle-message-ui-handler"; -import CommandUiHandler from "./command-ui-handler"; -import PartyUiHandler from "./party-ui-handler"; -import FightUiHandler from "./fight-ui-handler"; -import MessageUiHandler from "./message-ui-handler"; -import ConfirmUiHandler from "./confirm-ui-handler"; -import ModifierSelectUiHandler from "./modifier-select-ui-handler"; -import BallUiHandler from "./ball-ui-handler"; -import SummaryUiHandler from "./summary-ui-handler"; -import StarterSelectUiHandler from "./starter-select-ui-handler"; -import EvolutionSceneHandler from "./evolution-scene-handler"; -import TargetSelectUiHandler from "./target-select-ui-handler"; -import SettingsUiHandler from "./settings/settings-ui-handler"; -import SettingsGamepadUiHandler from "./settings/settings-gamepad-ui-handler"; -import GameChallengesUiHandler from "./challenges-select-ui-handler"; -import { TextStyle, addTextObject } from "./text"; -import AchvBar from "./achv-bar"; -import MenuUiHandler from "./menu-ui-handler"; -import AchvsUiHandler from "./achvs-ui-handler"; -import OptionSelectUiHandler from "./settings/option-select-ui-handler"; -import EggHatchSceneHandler from "./egg-hatch-scene-handler"; -import EggListUiHandler from "./egg-list-ui-handler"; -import EggGachaUiHandler from "./egg-gacha-ui-handler"; -import PokedexUiHandler from "./pokedex-ui-handler"; -import { addWindow } from "./ui-theme"; -import LoginFormUiHandler from "./login-form-ui-handler"; -import RegistrationFormUiHandler from "./registration-form-ui-handler"; -import LoadingModalUiHandler from "./loading-modal-ui-handler"; -import { executeIf } from "#app/utils/common"; -import GameStatsUiHandler from "./game-stats-ui-handler"; -import AwaitableUiHandler from "./awaitable-ui-handler"; -import SaveSlotSelectUiHandler from "./save-slot-select-ui-handler"; -import TitleUiHandler from "./title-ui-handler"; -import SavingIconHandler from "./saving-icon-handler"; -import UnavailableModalUiHandler from "./unavailable-modal-ui-handler"; -import SessionReloadModalUiHandler from "./session-reload-modal-ui-handler"; import type { Button } from "#enums/buttons"; -import i18next from "i18next"; -import GamepadBindingUiHandler from "./settings/gamepad-binding-ui-handler"; -import SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-handler"; -import KeyboardBindingUiHandler from "#app/ui/settings/keyboard-binding-ui-handler"; -import SettingsDisplayUiHandler from "./settings/settings-display-ui-handler"; -import SettingsAudioUiHandler from "./settings/settings-audio-ui-handler"; -import { PlayerGender } from "#enums/player-gender"; -import type BgmBar from "#app/ui/bgm-bar"; -import RenameFormUiHandler from "./rename-form-ui-handler"; -import AdminUiHandler from "./admin-ui-handler"; -import RunHistoryUiHandler from "./run-history-ui-handler"; -import RunInfoUiHandler from "./run-info-ui-handler"; -import EggSummaryUiHandler from "./egg-summary-ui-handler"; -import TestDialogueUiHandler from "#app/ui/test-dialogue-ui-handler"; -import AutoCompleteUiHandler from "./autocomplete-ui-handler"; import { Device } from "#enums/devices"; -import MysteryEncounterUiHandler from "./mystery-encounter-ui-handler"; -import PokedexScanUiHandler from "./pokedex-scan-ui-handler"; -import PokedexPageUiHandler from "./pokedex-page-ui-handler"; -import { NavigationManager } from "./settings/navigationMenu"; +import { PlayerGender } from "#enums/player-gender"; import { UiMode } from "#enums/ui-mode"; +import { AchvBar } from "#ui/achv-bar"; +import { AchvsUiHandler } from "#ui/achvs-ui-handler"; +import { AdminUiHandler } from "#ui/admin-ui-handler"; +import { AutoCompleteUiHandler } from "#ui/autocomplete-ui-handler"; +import { AwaitableUiHandler } from "#ui/awaitable-ui-handler"; +import { BallUiHandler } from "#ui/ball-ui-handler"; +import { BattleMessageUiHandler } from "#ui/battle-message-ui-handler"; +import type { BgmBar } from "#ui/bgm-bar"; +import { GameChallengesUiHandler } from "#ui/challenges-select-ui-handler"; +import { CommandUiHandler } from "#ui/command-ui-handler"; +import { ConfirmUiHandler } from "#ui/confirm-ui-handler"; +import { EggGachaUiHandler } from "#ui/egg-gacha-ui-handler"; +import { EggHatchSceneHandler } from "#ui/egg-hatch-scene-handler"; +import { EggListUiHandler } from "#ui/egg-list-ui-handler"; +import { EggSummaryUiHandler } from "#ui/egg-summary-ui-handler"; +import { EvolutionSceneHandler } from "#ui/evolution-scene-handler"; +import { FightUiHandler } from "#ui/fight-ui-handler"; +import { GameStatsUiHandler } from "#ui/game-stats-ui-handler"; +import { GamepadBindingUiHandler } from "#ui/gamepad-binding-ui-handler"; +import { KeyboardBindingUiHandler } from "#ui/keyboard-binding-ui-handler"; +import { LoadingModalUiHandler } from "#ui/loading-modal-ui-handler"; +import { LoginFormUiHandler } from "#ui/login-form-ui-handler"; +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/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"; +import { PokedexScanUiHandler } from "#ui/pokedex-scan-ui-handler"; +import { PokedexUiHandler } from "#ui/pokedex-ui-handler"; +import { RegistrationFormUiHandler } from "#ui/registration-form-ui-handler"; +import { RenameFormUiHandler } from "#ui/rename-form-ui-handler"; +import { RunHistoryUiHandler } from "#ui/run-history-ui-handler"; +import { RunInfoUiHandler } from "#ui/run-info-ui-handler"; +import { SaveSlotSelectUiHandler } from "#ui/save-slot-select-ui-handler"; +import { SavingIconHandler } from "#ui/saving-icon-handler"; +import { SessionReloadModalUiHandler } from "#ui/session-reload-modal-ui-handler"; +import { SettingsAudioUiHandler } from "#ui/settings-audio-ui-handler"; +import { SettingsDisplayUiHandler } from "#ui/settings-display-ui-handler"; +import { SettingsGamepadUiHandler } from "#ui/settings-gamepad-ui-handler"; +import { SettingsKeyboardUiHandler } from "#ui/settings-keyboard-ui-handler"; +import { SettingsUiHandler } from "#ui/settings-ui-handler"; +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 { TitleUiHandler } from "#ui/title-ui-handler"; +import type { UiHandler } from "#ui/ui-handler"; +import { addWindow } from "#ui/ui-theme"; +import { UnavailableModalUiHandler } from "#ui/unavailable-modal-ui-handler"; +import { executeIf } from "#utils/common"; +import i18next from "i18next"; const transitionModes = [ UiMode.SAVE_SLOT, @@ -103,7 +103,7 @@ const noTransitionModes = [ UiMode.RUN_INFO, ]; -export default class UI extends Phaser.GameObjects.Container { +export class UI extends Phaser.GameObjects.Container { private mode: UiMode; private modeChain: UiMode[]; public handlers: UiHandler[]; diff --git a/src/ui/unavailable-modal-ui-handler.ts b/src/ui/unavailable-modal-ui-handler.ts index 5bed55ec24a..420a47664a7 100644 --- a/src/ui/unavailable-modal-ui-handler.ts +++ b/src/ui/unavailable-modal-ui-handler.ts @@ -1,14 +1,14 @@ -import type { ModalConfig } from "./modal-ui-handler"; -import { ModalUiHandler } from "./modal-ui-handler"; -import { addTextObject, TextStyle } from "./text"; -import type { UiMode } from "#enums/ui-mode"; import { updateUserInfo } from "#app/account"; -import { sessionIdKey } from "#app/utils/common"; -import { removeCookie } from "#app/utils/cookies"; -import i18next from "i18next"; import { globalScene } from "#app/global-scene"; +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 { sessionIdKey } from "#utils/common"; +import { removeCookie } from "#utils/cookies"; +import i18next from "i18next"; -export default class UnavailableModalUiHandler extends ModalUiHandler { +export class UnavailableModalUiHandler extends ModalUiHandler { private reconnectTimer: NodeJS.Timeout | null; private reconnectDuration: number; private reconnectCallback: () => void; diff --git a/src/utils/common.ts b/src/utils/common.ts index 753d6ebb865..e9ba3acb5e5 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -1,18 +1,26 @@ +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"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import type { Variant } from "#app/sprites/variant"; export type nil = null | undefined; 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 => `${s.slice(0, 1)}${s.slice(1).toLowerCase()}`) + .map(s => capitalizeFirstLetter(s.toLowerCase())) .join(" "); } @@ -273,18 +281,6 @@ export function formatStat(stat: number, forHp = false): string { return formatLargeNumber(stat, forHp ? 100000 : 1000000); } -export function getEnumKeys(enumType: any): string[] { - return Object.values(enumType) - .filter(v => Number.isNaN(Number.parseInt(v!.toString()))) - .map(v => v!.toString()); -} - -export function getEnumValues(enumType: any): number[] { - return Object.values(enumType) - .filter(v => !Number.isNaN(Number.parseInt(v!.toString()))) - .map(v => Number.parseInt(v!.toString())); -} - export function executeIf(condition: boolean, promiseFunc: () => Promise): Promise { return condition ? promiseFunc() : new Promise(resolve => resolve(null)); } @@ -341,6 +337,10 @@ export class NumberHolder { constructor(value: number) { this.value = value; } + + valueOf(): number { + return this.value; + } } export class FixedInt { @@ -349,6 +349,10 @@ export class FixedInt { constructor(value: number) { this.value = value; } + + [Symbol.toPrimitive](_hint: string): number { + return this.value; + } } export function fixedInt(value: number): number { @@ -636,25 +640,3 @@ export function coerceArray(input: T): T extends any[] ? T : [T]; export function coerceArray(input: T): T | [T] { return Array.isArray(input) ? input : [input]; } - -/** - * Returns the name of the key that matches the enum [object] value. - * @param input - The enum [object] to check - * @param val - The value to get the key of - * @returns The name of the key with the specified value - * @example - * const thing = { - * one: 1, - * two: 2, - * } as const; - * console.log(enumValueToKey(thing, thing.two)); // output: "two" - * @throws An `Error` if an invalid enum value is passed to the function - */ -export function enumValueToKey>(input: T, val: T[keyof T]): keyof T { - for (const [key, value] of Object.entries(input)) { - if (val === value) { - return key as keyof T; - } - } - throw new Error(`Invalid value passed to \`enumValueToKey\`! Value: ${val}`); -} diff --git a/src/utils/cookies.ts b/src/utils/cookies.ts index b38e941b59a..06391e6f4c7 100644 --- a/src/utils/cookies.ts +++ b/src/utils/cookies.ts @@ -1,4 +1,4 @@ -import { isBeta } from "./utility-vars"; +import { isBeta } from "#utils/utility-vars"; export function setCookie(cName: string, cValue: string): void { const expiration = new Date(); diff --git a/src/utils/data.ts b/src/utils/data.ts index 5a28657d034..932ea38d504 100644 --- a/src/utils/data.ts +++ b/src/utils/data.ts @@ -1,7 +1,7 @@ import { loggedInUser } from "#app/account"; -import type { StarterAttributes } from "#app/system/game-data"; -import { AES, enc } from "crypto-js"; import { saveKey } from "#app/constants"; +import type { StarterAttributes } from "#system/game-data"; +import { AES, enc } from "crypto-js"; /** * Perform a deep copy of an object. diff --git a/src/utils/enums.ts b/src/utils/enums.ts new file mode 100644 index 00000000000..98cb4272ee9 --- /dev/null +++ b/src/utils/enums.ts @@ -0,0 +1,74 @@ +import type { EnumOrObject, EnumValues, NormalEnum, TSNumericEnum } from "#app/@types/enum-types"; +import type { InferKeys } from "#app/@types/type-helpers"; + +/** + * Return the string keys of an Enum object, excluding reverse-mapped numbers. + * @param enumType - The numeric enum to retrieve keys for + * @returns An ordered array of all of `enumType`'s string keys + * @example + * enum fruit { + * apple = 1, + * banana = 2, + * cherry = 3, + * orange = 12, + * }; + * + * console.log(getEnumKeys(fruit)); // output: ["apple", "banana", "cherry", "orange"] + * @remarks + * To retrieve the keys of a {@linkcode NormalEnum}, use {@linkcode Object.keys} instead. + */ +export function getEnumKeys(enumType: TSNumericEnum): (keyof E)[] { + // All enum values are either normal numbers or reverse mapped strings, so we can retrieve the keys by filtering out numbers. + return Object.values(enumType).filter(v => typeof v === "string"); +} + +/** + * Return the numeric values of a numeric Enum object, excluding reverse-mapped strings. + * @param enumType - The enum object to retrieve keys for + * @returns An ordered array of all of `enumType`'s number values + * @example + * enum fruit { + * apple = 1, + * banana = 2, + * cherry = 3, + * orange = 12, + * }; + * + * console.log(getEnumValues(fruit)); // output: [1, 2, 3, 12] + * + * @remarks + * To retrieve the keys of a {@linkcode NormalEnum}, use {@linkcode Object.values} instead. + */ +// NB: This intentionally does not use `EnumValues` as using `E[keyof E]` leads to improved variable highlighting in IDEs. +export function getEnumValues(enumType: TSNumericEnum): E[keyof E][] { + return Object.values(enumType).filter(v => typeof v !== "string") as E[keyof E][]; +} + +/** + * Return the name of the key that matches the given Enum value. + * Can be used to emulate Typescript reverse mapping for `const object`s or string enums. + * @param object - The {@linkcode NormalEnum} to check + * @param val - The value to get the key of + * @returns The name of the key with the specified value + * @example + * const thing = { + * one: 1, + * two: 2, + * } as const; + * console.log(enumValueToKey(thing, 2)); // output: "two" + * @throws Error if an invalid enum value is passed to the function + * @remarks + * 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>( + object: NormalEnum, + val: V, +): InferKeys { + for (const [key, value] of Object.entries(object)) { + if (val === value) { + return key as InferKeys; + } + } + throw new Error(`Invalid value passed to \`enumValueToKey\`! Value: ${val}`); +} diff --git a/src/utils/modifier-utils.ts b/src/utils/modifier-utils.ts index 3be4af3730c..58108e7a599 100644 --- a/src/utils/modifier-utils.ts +++ b/src/utils/modifier-utils.ts @@ -1,3 +1,4 @@ +import { modifierTypes } from "#data/data-lists"; import { ModifierPoolType } from "#enums/modifier-pool-type"; import { dailyStarterModifierPool, @@ -5,10 +6,9 @@ import { modifierPool, trainerModifierPool, wildModifierPool, -} from "#app/modifier/modifier-pools"; -import type { ModifierPool, ModifierTypeFunc } from "#app/@types/modifier-types"; -import { modifierTypes } from "#app/data/data-lists"; -import type { ModifierType } from "#app/modifier/modifier-type"; +} from "#modifiers/modifier-pools"; +import type { ModifierType } from "#modifiers/modifier-type"; +import type { ModifierPool, ModifierTypeFunc } from "#types/modifier-types"; export function getModifierPoolForType(poolType: ModifierPoolType): ModifierPool { switch (poolType) { diff --git a/src/utils/pokemon-utils.ts b/src/utils/pokemon-utils.ts index 9f87c36b050..da39cfe11ad 100644 --- a/src/utils/pokemon-utils.ts +++ b/src/utils/pokemon-utils.ts @@ -1,5 +1,5 @@ -import { allSpecies } from "#app/data/data-lists"; -import type PokemonSpecies from "#app/data/pokemon-species"; +import { allSpecies } from "#data/data-lists"; +import type { PokemonSpecies } from "#data/pokemon-species"; import type { SpeciesId } from "#enums/species-id"; /** 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 0b8e354cc7d..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 90% rename from test/abilities/ability_duplication.test.ts rename to test/abilities/ability-duplication.test.ts index d392b7043e4..da572d94466 100644 --- a/test/abilities/ability_duplication.test.ts +++ b/test/abilities/ability-duplication.test.ts @@ -1,10 +1,10 @@ -import { Stat } from "#app/enums/stat"; 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 { Stat } from "#enums/stat"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Ability Duplication", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/ability_timing.test.ts b/test/abilities/ability-timing.test.ts similarity index 83% rename from test/abilities/ability_timing.test.ts rename to test/abilities/ability-timing.test.ts index 124591597be..f5315d2b80e 100644 --- a/test/abilities/ability_timing.test.ts +++ b/test/abilities/ability-timing.test.ts @@ -1,11 +1,11 @@ -import { BattleStyle } from "#app/enums/battle-style"; -import { CommandPhase } from "#app/phases/command-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import i18next from "#app/plugins/i18n"; -import { UiMode } from "#enums/ui-mode"; import { AbilityId } from "#enums/ability-id"; +import { BattleStyle } from "#enums/battle-style"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +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/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 5dbf4365186..d1b9ba4cbbb 100644 --- a/test/abilities/analytic.test.ts +++ b/test/abilities/analytic.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { isBetween, toDmgValue } from "#app/utils/common"; 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"; diff --git a/test/abilities/anger-point.test.ts b/test/abilities/anger-point.test.ts new file mode 100644 index 00000000000..84a22449dae --- /dev/null +++ b/test/abilities/anger-point.test.ts @@ -0,0 +1,78 @@ +import { PostReceiveCritStatStageChangeAbAttr } from "#abilities/ability"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Ability - Anger Point", () => { + 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) + .enemyLevel(100); + }); + + 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()!; + + // minimize the enemy's attack stage to ensure it is always set to +6 + enemy.setStatStage(Stat.ATK, -6); + vi.spyOn(enemy, "getCriticalHitResult").mockReturnValueOnce(true); + game.move.select(MoveId.FALSE_SWIPE); + await game.phaseInterceptor.to("BerryPhase"); + expect(enemy.getStatStage(Stat.ATK)).toBe(6); + }); + + it("should only proc once when a multi-hit move crits on the first hit", async () => { + game.override + .moveset(MoveId.BULLET_SEED) + .enemyLevel(50) + .enemyAbility(AbilityId.ANGER_POINT) + .ability(AbilityId.SKILL_LINK); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + const enemy = game.scene.getEnemyPokemon()!; + vi.spyOn(enemy, "getCriticalHitResult").mockReturnValueOnce(true); + const angerPointSpy = vi.spyOn(PostReceiveCritStatStageChangeAbAttr.prototype, "apply"); + game.move.select(MoveId.BULLET_SEED); + await game.phaseInterceptor.to("BerryPhase"); + expect(angerPointSpy).toHaveBeenCalledTimes(1); + }); + + it("should set a contrary user's attack stage to -6 when hit by a critical hit", async () => { + game.override + .enemyAbility(AbilityId.ANGER_POINT) + .enemyPassiveAbility(AbilityId.CONTRARY) + .enemyHasPassiveAbility(true) + .moveset(MoveId.FALSE_SWIPE); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + const enemy = game.scene.getEnemyPokemon()!; + vi.spyOn(enemy, "getCriticalHitResult").mockReturnValueOnce(true); + enemy.setStatStage(Stat.ATK, 6); + game.move.select(MoveId.FALSE_SWIPE); + await game.phaseInterceptor.to("BerryPhase"); + expect(enemy.getStatStage(Stat.ATK)).toBe(-6); + }); +}); diff --git a/test/abilities/arena_trap.test.ts b/test/abilities/arena-trap.test.ts similarity index 94% rename from test/abilities/arena_trap.test.ts rename to test/abilities/arena-trap.test.ts index cc6888be102..f85fae5b259 100644 --- a/test/abilities/arena_trap.test.ts +++ b/test/abilities/arena-trap.test.ts @@ -1,10 +1,10 @@ -import { allAbilities } from "#app/data/data-lists"; +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, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - Arena Trap", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/aroma_veil.test.ts b/test/abilities/aroma-veil.test.ts similarity index 94% rename from test/abilities/aroma_veil.test.ts rename to test/abilities/aroma-veil.test.ts index 56cce749b9f..3bdb83203c5 100644 --- a/test/abilities/aroma_veil.test.ts +++ b/test/abilities/aroma-veil.test.ts @@ -1,13 +1,13 @@ -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; import { AbilityId } from "#enums/ability-id"; -import GameManager from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { BattlerTagType } from "#enums/battler-tag-type"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerIndex } from "#enums/battler-index"; -import type { PlayerPokemon } from "#app/field/pokemon"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Aroma Veil", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/aura_break.test.ts b/test/abilities/aura-break.test.ts similarity index 95% rename from test/abilities/aura_break.test.ts rename to test/abilities/aura-break.test.ts index 657d363bd97..0fe3a253561 100644 --- a/test/abilities/aura_break.test.ts +++ b/test/abilities/aura-break.test.ts @@ -1,8 +1,8 @@ -import { allMoves } from "#app/data/data-lists"; +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 db129e72b0b..cdb3935c33e 100644 --- a/test/abilities/battery.test.ts +++ b/test/abilities/battery.test.ts @@ -1,10 +1,10 @@ -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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 93% rename from test/abilities/battle_bond.test.ts rename to test/abilities/battle-bond.test.ts index adb4a9c6e7a..c4ffe1e784b 100644 --- a/test/abilities/battle_bond.test.ts +++ b/test/abilities/battle-bond.test.ts @@ -1,11 +1,11 @@ -import { allMoves } from "#app/data/data-lists"; -import { MultiHitType } from "#enums/MultiHitType"; -import { Status } from "#app/data/status-effect"; +import { allMoves } from "#data/data-lists"; +import { Status } from "#data/status-effect"; import { AbilityId } from "#enums/ability-id"; 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 98% rename from test/abilities/beast_boost.test.ts rename to test/abilities/beast-boost.test.ts index 8be9156ce07..193de9b7669 100644 --- a/test/abilities/beast_boost.test.ts +++ b/test/abilities/beast-boost.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; 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 { 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/commander.test.ts b/test/abilities/commander.test.ts index 99512d7a733..d485cab83a2 100644 --- a/test/abilities/commander.test.ts +++ b/test/abilities/commander.test.ts @@ -1,15 +1,15 @@ +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 { MoveResult } from "#enums/move-result"; 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 { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; -import { MoveResult } from "#enums/move-result"; -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"; @@ -200,8 +200,6 @@ describe("Abilities - Commander", () => { game.move.select(MoveId.DIVE, 0, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to("CommandPhase"); await game.toNextTurn(); expect(tatsugiri.getTag(BattlerTagType.UNDERWATER)).toBeDefined(); diff --git a/test/abilities/competitive.test.ts b/test/abilities/competitive.test.ts index f12b06837dc..1a083705e5c 100644 --- a/test/abilities/competitive.test.ts +++ b/test/abilities/competitive.test.ts @@ -1,9 +1,9 @@ -import { Stat } from "#enums/stat"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; 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 { Stat } from "#enums/stat"; +import { TurnInitPhase } from "#phases/turn-init-phase"; +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/contrary.test.ts b/test/abilities/contrary.test.ts index 6962abb0fec..df72c25054a 100644 --- a/test/abilities/contrary.test.ts +++ b/test/abilities/contrary.test.ts @@ -1,8 +1,8 @@ -import { MoveId } from "#enums/move-id"; 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/corrosion.test.ts b/test/abilities/corrosion.test.ts index 2a0464d1146..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 a40d84e72f5..1ca1d06d76f 100644 --- a/test/abilities/costar.test.ts +++ b/test/abilities/costar.test.ts @@ -1,10 +1,9 @@ -import { Stat } from "#enums/stat"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MessagePhase } from "#app/phases/message-phase"; -import GameManager from "#test/testUtils/gameManager"; +import { Stat } from "#enums/stat"; +import { MessagePhase } from "#phases/message-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -39,7 +38,6 @@ describe("Abilities - COSTAR", () => { let [leftPokemon, rightPokemon] = game.scene.getPlayerField(); game.move.select(MoveId.NASTY_PLOT); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -47,7 +45,6 @@ describe("Abilities - COSTAR", () => { expect(rightPokemon.getStatStage(Stat.SPATK)).toBe(0); game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(CommandPhase); game.doSwitchPokemon(2); await game.phaseInterceptor.to(MessagePhase); @@ -67,7 +64,6 @@ describe("Abilities - COSTAR", () => { expect(leftPokemon.getStatStage(Stat.ATK)).toBe(-2); game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(CommandPhase); game.doSwitchPokemon(2); await game.phaseInterceptor.to(MessagePhase); diff --git a/test/abilities/cud_chew.test.ts b/test/abilities/cud-chew.test.ts similarity index 98% rename from test/abilities/cud_chew.test.ts rename to test/abilities/cud-chew.test.ts index e563e7537dd..5f15de04cae 100644 --- a/test/abilities/cud_chew.test.ts +++ b/test/abilities/cud-chew.test.ts @@ -1,5 +1,4 @@ -import { CudChewConsumeBerryAbAttr } from "#app/data/abilities/ability"; -import Pokemon from "#app/field/pokemon"; +import { CudChewConsumeBerryAbAttr } from "#abilities/ability"; import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; import { AbilityId } from "#enums/ability-id"; @@ -7,7 +6,8 @@ import { BerryType } from "#enums/berry-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 { Pokemon } from "#field/pokemon"; +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"; diff --git a/test/abilities/dancer.test.ts b/test/abilities/dancer.test.ts index 2a4a3c36bcc..bbf1a368573 100644 --- a/test/abilities/dancer.test.ts +++ b/test/abilities/dancer.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { MoveResult } from "#enums/move-result"; -import type { MovePhase } from "#app/phases/move-phase"; 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 type { MovePhase } from "#phases/move-phase"; +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/defiant.test.ts b/test/abilities/defiant.test.ts index ef26b5bfca3..29c386ff093 100644 --- a/test/abilities/defiant.test.ts +++ b/test/abilities/defiant.test.ts @@ -1,9 +1,9 @@ -import { Stat } from "#enums/stat"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; 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 { Stat } from "#enums/stat"; +import { TurnInitPhase } from "#phases/turn-init-phase"; +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/desolate-land.test.ts b/test/abilities/desolate-land.test.ts index 90565d9caf8..c88f7415bb1 100644 --- a/test/abilities/desolate-land.test.ts +++ b/test/abilities/desolate-land.test.ts @@ -1,13 +1,14 @@ -import { PokeballType } from "#app/enums/pokeball"; -import { WeatherType } from "#app/enums/weather-type"; -import type { CommandPhase } from "#app/phases/command-phase"; -import { Command } from "#enums/command"; +import { globalScene } from "#app/global-scene"; import { AbilityId } from "#enums/ability-id"; +import { Command } from "#enums/command"; import { MoveId } from "#enums/move-id"; +import { PokeballType } from "#enums/pokeball"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { WeatherType } from "#enums/weather-type"; +import type { CommandPhase } from "#phases/command-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - Desolate Land", () => { let phaserGame: Phaser.Game; @@ -145,6 +146,7 @@ describe("Abilities - Desolate Land", () => { expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN); vi.spyOn(game.scene.getPlayerPokemon()!, "randBattleSeedInt").mockReturnValue(0); + vi.spyOn(globalScene, "randBattleSeedInt").mockReturnValue(0); const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); diff --git a/test/abilities/disguise.test.ts b/test/abilities/disguise.test.ts index 4ccd825e574..bf271c81e4d 100644 --- a/test/abilities/disguise.test.ts +++ b/test/abilities/disguise.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { toDmgValue } from "#app/utils/common"; 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 { 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"; describe("Abilities - Disguise", () => { @@ -165,7 +165,7 @@ describe("Abilities - Disguise", () => { expect(mimikyu.formIndex).toBe(disguisedForm); }); - it("reverts to Disguised form on biome change when fainted", async () => { + it("reverts to Disguised form when fainted", async () => { game.override .startingWave(10) .starterSpecies(0) @@ -181,10 +181,6 @@ describe("Abilities - Disguise", () => { game.move.select(MoveId.SPLASH); await game.killPokemon(mimikyu1); - game.doSelectPartyPokemon(1); - await game.toNextTurn(); - game.move.select(MoveId.SPLASH); - await game.doKillOpponents(); await game.phaseInterceptor.to("QuietFormChangePhase"); expect(mimikyu1.formIndex).toBe(disguisedForm); diff --git a/test/abilities/dry_skin.test.ts b/test/abilities/dry-skin.test.ts similarity index 98% rename from test/abilities/dry_skin.test.ts rename to test/abilities/dry-skin.test.ts index 31620beb9bd..01602150710 100644 --- a/test/abilities/dry_skin.test.ts +++ b/test/abilities/dry-skin.test.ts @@ -1,7 +1,7 @@ -import { SpeciesId } from "#enums/species-id"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import GameManager from "#test/testUtils/gameManager"; +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"; diff --git a/test/abilities/early_bird.test.ts b/test/abilities/early-bird.test.ts similarity index 96% rename from test/abilities/early_bird.test.ts rename to test/abilities/early-bird.test.ts index dcdfd8e4956..97ce02e5e62 100644 --- a/test/abilities/early_bird.test.ts +++ b/test/abilities/early-bird.test.ts @@ -1,10 +1,10 @@ -import { Status } from "#app/data/status-effect"; -import { MoveResult } from "#enums/move-result"; +import { Status } from "#data/status-effect"; 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 { 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/flash_fire.test.ts b/test/abilities/flash-fire.test.ts similarity index 95% rename from test/abilities/flash_fire.test.ts rename to test/abilities/flash-fire.test.ts index 3be156a1578..d9f0e194d9c 100644 --- a/test/abilities/flash_fire.test.ts +++ b/test/abilities/flash-fire.test.ts @@ -1,12 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { SpeciesId } from "#enums/species-id"; -import { MovePhase } from "#app/phases/move-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; 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 { StatusEffect } from "#enums/status-effect"; -import GameManager from "#test/testUtils/gameManager"; +import { MovePhase } from "#phases/move-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/flower_gift.test.ts b/test/abilities/flower-gift.test.ts similarity index 97% rename from test/abilities/flower_gift.test.ts rename to test/abilities/flower-gift.test.ts index f072afe7f34..2fc67b098b7 100644 --- a/test/abilities/flower_gift.test.ts +++ b/test/abilities/flower-gift.test.ts @@ -1,12 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allAbilities } from "#app/data/data-lists"; +import { allAbilities } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { Stat } from "#app/enums/stat"; -import { WeatherType } from "#app/enums/weather-type"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +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 { Stat } from "#enums/stat"; +import { WeatherType } from "#enums/weather-type"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/flower_veil.test.ts b/test/abilities/flower-veil.test.ts similarity index 97% rename from test/abilities/flower_veil.test.ts rename to test/abilities/flower-veil.test.ts index 7cabfa23e96..46478a3dd9c 100644 --- a/test/abilities/flower_veil.test.ts +++ b/test/abilities/flower-veil.test.ts @@ -1,15 +1,14 @@ -import { BattlerIndex } from "#enums/battler-index"; +import { allAbilities, allMoves } from "#data/data-lists"; 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 { 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"; -import { allMoves } from "#app/data/data-lists"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { allAbilities } from "#app/data/data-lists"; describe("Abilities - Flower Veil", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/forecast.test.ts b/test/abilities/forecast.test.ts index 9111766ebdf..644927186f4 100644 --- a/test/abilities/forecast.test.ts +++ b/test/abilities/forecast.test.ts @@ -1,15 +1,15 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allAbilities } from "#app/data/data-lists"; +import { allAbilities } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { WeatherType } from "#app/enums/weather-type"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { PostSummonPhase } from "#app/phases/post-summon-phase"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +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 { WeatherType } from "#enums/weather-type"; +import { DamageAnimPhase } from "#phases/damage-anim-phase"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/abilities/friend_guard.test.ts b/test/abilities/friend-guard.test.ts similarity index 95% rename from test/abilities/friend_guard.test.ts rename to test/abilities/friend-guard.test.ts index c5809e18e96..32f4fe06df4 100644 --- a/test/abilities/friend_guard.test.ts +++ b/test/abilities/friend-guard.test.ts @@ -1,13 +1,12 @@ +import { allAbilities, allMoves } from "#data/data-lists"; +import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { MoveCategory } from "#enums/move-category"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { AbilityId } from "#enums/ability-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"; -import { BattlerIndex } from "#enums/battler-index"; -import { allAbilities } from "#app/data/data-lists"; -import { allMoves } from "#app/data/data-lists"; -import { MoveCategory } from "#enums/MoveCategory"; describe("Moves - Friend Guard", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/good_as_gold.test.ts b/test/abilities/good-as-gold.test.ts similarity index 88% rename from test/abilities/good_as_gold.test.ts rename to test/abilities/good-as-gold.test.ts index 89e354b1f34..7fc1ad85b53 100644 --- a/test/abilities/good_as_gold.test.ts +++ b/test/abilities/good-as-gold.test.ts @@ -1,15 +1,15 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { allAbilities } from "#app/data/data-lists"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { Stat } from "#app/enums/stat"; -import { StatusEffect } from "#app/enums/status-effect"; -import { WeatherType } from "#app/enums/weather-type"; +import { allAbilities } 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 { 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 { Stat } from "#enums/stat"; +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, vi } from "vitest"; @@ -45,7 +45,7 @@ describe("Abilities - Good As Gold", () => { const player = game.scene.getPlayerPokemon()!; - game.move.select(MoveId.SPLASH, 0); + game.move.select(MoveId.SPLASH); await game.phaseInterceptor.to("BerryPhase"); @@ -54,12 +54,13 @@ describe("Abilities - Good As Gold", () => { }); it("should block memento and prevent the user from fainting", async () => { - game.override.enemyMoveset([MoveId.MEMENTO]); + game.override.enemyAbility(AbilityId.GOOD_AS_GOLD); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(MoveId.MEMENTO); + + game.move.use(MoveId.MEMENTO); await game.phaseInterceptor.to("BerryPhase"); - expect(game.scene.getPlayerPokemon()!.isFainted()).toBe(false); - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(0); + expect(game.field.getPlayerPokemon().isFainted()).toBe(false); + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(0); }); it("should not block any status moves that target the field, one side, or all pokemon", async () => { diff --git a/test/abilities/gorilla_tactics.test.ts b/test/abilities/gorilla-tactics.test.ts similarity index 87% rename from test/abilities/gorilla_tactics.test.ts rename to test/abilities/gorilla-tactics.test.ts index 9bc33794242..a96639133f9 100644 --- a/test/abilities/gorilla_tactics.test.ts +++ b/test/abilities/gorilla-tactics.test.ts @@ -1,14 +1,13 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { RandomMoveAttr } from "#app/data/moves/move"; -import { MoveId } from "#enums/move-id"; import { AbilityId } from "#enums/ability-id"; -import { SpeciesId } from "#enums/species-id"; -import { Stat } from "#app/enums/stat"; -import GameManager from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Abilities - Gorilla Tactics", () => { let phaserGame: Phaser.Game; @@ -28,8 +27,10 @@ describe("Abilities - Gorilla Tactics", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") + .criticalHits(false) .enemyAbility(AbilityId.BALL_FETCH) .enemySpecies(SpeciesId.MAGIKARP) + .enemyMoveset(MoveId.SPLASH) .enemyLevel(30) .moveset([MoveId.SPLASH, MoveId.TACKLE, MoveId.GROWL, MoveId.METRONOME]) .ability(AbilityId.GORILLA_TACTICS); @@ -42,7 +43,6 @@ describe("Abilities - Gorilla Tactics", () => { const initialAtkStat = darmanitan.getStat(Stat.ATK); game.move.select(MoveId.SPLASH); - await game.move.forceEnemyMove(MoveId.SPLASH); await game.toEndOfTurn(); expect(darmanitan.getStat(Stat.ATK, false)).toBeCloseTo(initialAtkStat * 1.5); @@ -59,7 +59,6 @@ describe("Abilities - Gorilla Tactics", () => { // First turn, lock move to Growl game.move.select(MoveId.GROWL); - await game.move.forceEnemyMove(MoveId.SPLASH); await game.toNextTurn(); // Second turn, Growl is interrupted by Disable @@ -72,7 +71,7 @@ describe("Abilities - Gorilla Tactics", () => { // Third turn, Struggle is used game.move.select(MoveId.TACKLE); - await game.move.forceEnemyMove(MoveId.SPLASH); //prevent protect from being used by the enemy + await game.move.forceEnemyMove(MoveId.SPLASH); // prevent disable from being used by the enemy await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("MoveEndPhase"); @@ -83,7 +82,7 @@ describe("Abilities - Gorilla Tactics", () => { }); it("should lock into calling moves, even if also in moveset", async () => { - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.TACKLE); + game.move.forceMetronomeMove(MoveId.TACKLE); await game.classicMode.startBattle([SpeciesId.GALAR_DARMANITAN]); const darmanitan = game.scene.getPlayerPokemon()!; @@ -106,11 +105,13 @@ describe("Abilities - Gorilla Tactics", () => { const darmanitan = game.field.getPlayerPokemon(); game.move.select(MoveId.TACKLE); - await game.move.selectEnemyMove(MoveId.PROTECT); + await game.move.forceEnemyMove(MoveId.PROTECT); await game.toEndOfTurn(); expect(darmanitan.isMoveRestricted(MoveId.SPLASH)).toBe(true); expect(darmanitan.isMoveRestricted(MoveId.TACKLE)).toBe(false); + const enemy = game.field.getEnemyPokemon(); + expect(enemy.hp).toBe(enemy.getMaxHp()); }); it("should activate when a move is succesfully executed but misses", async () => { @@ -119,7 +120,6 @@ describe("Abilities - Gorilla Tactics", () => { const darmanitan = game.field.getPlayerPokemon(); game.move.select(MoveId.TACKLE); - await game.move.selectEnemyMove(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.move.forceMiss(); await game.toEndOfTurn(); diff --git a/test/abilities/guard-dog.test.ts b/test/abilities/guard-dog.test.ts new file mode 100644 index 00000000000..fb06c4c76c3 --- /dev/null +++ b/test/abilities/guard-dog.test.ts @@ -0,0 +1,39 @@ +import { AbilityId } from "#enums/ability-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("Ability - Guard Dog", () => { + 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.GUARD_DOG) + .battleStyle("single") + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.INTIMIDATE); + }); + + it("should raise attack by 1 stage when Intimidated instead of being lowered", async () => { + await game.classicMode.startBattle([SpeciesId.MABOSSTIFF]); + + const mabostiff = game.field.getPlayerPokemon(); + expect(mabostiff.getStatStage(Stat.ATK)).toBe(1); + expect(mabostiff.waveData.abilitiesApplied.has(AbilityId.GUARD_DOG)).toBe(true); + expect(game.phaseInterceptor.log.filter(l => l === "StatStageChangePhase")).toHaveLength(1); + }); +}); diff --git a/test/abilities/gulp_missile.test.ts b/test/abilities/gulp-missile.test.ts similarity index 99% rename from test/abilities/gulp_missile.test.ts rename to test/abilities/gulp-missile.test.ts index e47b22f0c06..faf30adae33 100644 --- a/test/abilities/gulp_missile.test.ts +++ b/test/abilities/gulp-missile.test.ts @@ -1,12 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import type Pokemon from "#app/field/pokemon"; 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 { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import GameManager from "#test/testUtils/gameManager"; +import type { Pokemon } from "#field/pokemon"; +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/harvest.test.ts b/test/abilities/harvest.test.ts index 42c9772bd10..d27ee491fed 100644 --- a/test/abilities/harvest.test.ts +++ b/test/abilities/harvest.test.ts @@ -1,16 +1,16 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { PostTurnRestoreBerryAbAttr } from "#app/data/abilities/ability"; -import type Pokemon from "#app/field/pokemon"; -import { BerryModifier, PreserveBerryModifier } from "#app/modifier/modifier"; -import type { ModifierOverride } from "#app/modifier/modifier-type"; -import type { BooleanHolder } from "#app/utils/common"; +import { PostTurnRestoreBerryAbAttr } from "#abilities/ability"; import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; import { BerryType } from "#enums/berry-type"; 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 type { Pokemon } from "#field/pokemon"; +import { BerryModifier, PreserveBerryModifier } from "#modifiers/modifier"; +import type { ModifierOverride } from "#modifiers/modifier-type"; +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"; diff --git a/test/abilities/healer.test.ts b/test/abilities/healer.test.ts index b21b04531ec..c151836d76d 100644 --- a/test/abilities/healer.test.ts +++ b/test/abilities/healer.test.ts @@ -1,14 +1,14 @@ +import { PostTurnResetStatusAbAttr } from "#abilities/ability"; +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 { StatusEffect } from "#enums/status-effect"; -import GameManager from "#test/testUtils/gameManager"; +import type { Pokemon } from "#field/pokemon"; +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"; -import { isNullOrUndefined } from "#app/utils/common"; -import { allAbilities } from "#app/data/data-lists"; -import type Pokemon from "#app/field/pokemon"; -import { PostTurnResetStatusAbAttr } from "#app/data/abilities/ability"; describe("Abilities - Healer", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/heatproof.test.ts b/test/abilities/heatproof.test.ts index 39c9dff8289..63f877a3567 100644 --- a/test/abilities/heatproof.test.ts +++ b/test/abilities/heatproof.test.ts @@ -1,10 +1,10 @@ -import { SpeciesId } from "#enums/species-id"; -import { StatusEffect } from "#app/enums/status-effect"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { toDmgValue } from "#app/utils/common"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import GameManager from "#test/testUtils/gameManager"; +import { SpeciesId } from "#enums/species-id"; +import { StatusEffect } from "#enums/status-effect"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/honey_gather.test.ts b/test/abilities/honey-gather.test.ts similarity index 88% rename from test/abilities/honey_gather.test.ts rename to test/abilities/honey-gather.test.ts index f8700f3e6f7..8dfd2c189f8 100644 --- a/test/abilities/honey_gather.test.ts +++ b/test/abilities/honey-gather.test.ts @@ -1,9 +1,10 @@ -import type { CommandPhase } from "#app/phases/command-phase"; -import { Command } from "#enums/command"; +import Overrides from "#app/overrides"; import { AbilityId } from "#enums/ability-id"; +import { Command } from "#enums/command"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import type { CommandPhase } from "#phases/command-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -63,6 +64,8 @@ describe("Abilities - Honey Gather", () => { // something weird is going on with the test framework, so this is required to prevent a crash const enemy = game.scene.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); const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); diff --git a/test/abilities/hustle.test.ts b/test/abilities/hustle.test.ts index 57a1a2e1d86..74ee01f02ef 100644 --- a/test/abilities/hustle.test.ts +++ b/test/abilities/hustle.test.ts @@ -1,9 +1,9 @@ -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { Stat } from "#app/enums/stat"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +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"; diff --git a/test/abilities/hyper_cutter.test.ts b/test/abilities/hyper-cutter.test.ts similarity index 96% rename from test/abilities/hyper_cutter.test.ts rename to test/abilities/hyper-cutter.test.ts index 211be9a0533..8a509d026b6 100644 --- a/test/abilities/hyper_cutter.test.ts +++ b/test/abilities/hyper-cutter.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#enums/stat"; 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 { 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"; diff --git a/test/abilities/ice_face.test.ts b/test/abilities/ice-face.test.ts similarity index 93% rename from test/abilities/ice_face.test.ts rename to test/abilities/ice-face.test.ts index c42713d7e6c..9b3020b67a7 100644 --- a/test/abilities/ice_face.test.ts +++ b/test/abilities/ice-face.test.ts @@ -1,14 +1,14 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; 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 { MoveEffectPhase } from "#phases/move-effect-phase"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -259,7 +259,7 @@ describe("Abilities - Ice Face", () => { const eiscue = game.scene.getEnemyPokemon()!; - expect(eiscue.getTag(BattlerTagType.ICE_FACE)).not.toBe(undefined); + expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeDefined(); expect(eiscue.formIndex).toBe(icefaceForm); expect(eiscue.hasAbility(AbilityId.ICE_FACE)).toBe(true); }); @@ -269,13 +269,9 @@ describe("Abilities - Ice Face", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(MoveId.SIMPLE_BEAM); - - await game.phaseInterceptor.to(TurnInitPhase); - const eiscue = game.scene.getEnemyPokemon()!; - expect(eiscue.getTag(BattlerTagType.ICE_FACE)).not.toBe(undefined); + expect(eiscue.getTag(BattlerTagType.ICE_FACE)).toBeDefined(); expect(eiscue.formIndex).toBe(icefaceForm); expect(game.scene.getPlayerPokemon()!.hasAbility(AbilityId.TRACE)).toBe(true); }); diff --git a/test/abilities/illuminate.test.ts b/test/abilities/illuminate.test.ts index ec4f6436041..814b7dc64b7 100644 --- a/test/abilities/illuminate.test.ts +++ b/test/abilities/illuminate.test.ts @@ -1,9 +1,9 @@ -import { Stat } from "#app/enums/stat"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import GameManager from "#test/testUtils/gameManager"; +import { Stat } from "#enums/stat"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Abilities - Illuminate", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/illusion.test.ts b/test/abilities/illusion.test.ts index 1c2809ad813..17a1fa8dd3d 100644 --- a/test/abilities/illusion.test.ts +++ b/test/abilities/illusion.test.ts @@ -1,9 +1,9 @@ -import { Gender } from "#app/data/gender"; -import { PokeballType } from "#app/enums/pokeball"; +import { Gender } from "#data/gender"; 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"; diff --git a/test/abilities/immunity.test.ts b/test/abilities/immunity.test.ts index 063ab57f11a..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/imposter.test.ts b/test/abilities/imposter.test.ts deleted file mode 100644 index 30491139877..00000000000 --- a/test/abilities/imposter.test.ts +++ /dev/null @@ -1,188 +0,0 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { MoveId } from "#enums/move-id"; -import { Stat, BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; -import { AbilityId } from "#enums/ability-id"; - -// TODO: Add more tests once Imposter is fully implemented -describe("Abilities - Imposter", () => { - 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") - .enemySpecies(SpeciesId.MEW) - .enemyLevel(200) - .enemyAbility(AbilityId.BEAST_BOOST) - .enemyPassiveAbility(AbilityId.BALL_FETCH) - .enemyMoveset(MoveId.SPLASH) - .ability(AbilityId.IMPOSTER) - .moveset(MoveId.SPLASH); - }); - - it("should copy species, ability, gender, all stats except HP, all stat stages, moveset, and types of target", async () => { - await game.classicMode.startBattle([SpeciesId.DITTO]); - - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; - - expect(player.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); - expect(player.getAbility()).toBe(enemy.getAbility()); - expect(player.getGender()).toBe(enemy.getGender()); - - expect(player.getStat(Stat.HP, false)).not.toBe(enemy.getStat(Stat.HP)); - for (const s of EFFECTIVE_STATS) { - expect(player.getStat(s, false)).toBe(enemy.getStat(s, false)); - } - - for (const s of BATTLE_STATS) { - expect(player.getStatStage(s)).toBe(enemy.getStatStage(s)); - } - - const playerMoveset = player.getMoveset(); - const enemyMoveset = player.getMoveset(); - - expect(playerMoveset.length).toBe(enemyMoveset.length); - for (let i = 0; i < playerMoveset.length && i < enemyMoveset.length; i++) { - expect(playerMoveset[i]?.moveId).toBe(enemyMoveset[i]?.moveId); - } - - const playerTypes = player.getTypes(); - const enemyTypes = enemy.getTypes(); - - expect(playerTypes.length).toBe(enemyTypes.length); - for (let i = 0; i < playerTypes.length && i < enemyTypes.length; i++) { - expect(playerTypes[i]).toBe(enemyTypes[i]); - } - }); - - it("should copy in-battle overridden stats", async () => { - game.override.enemyMoveset([MoveId.POWER_SPLIT]); - - await game.classicMode.startBattle([SpeciesId.DITTO]); - - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.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); - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(player.getStat(Stat.ATK, false)).toBe(avgAtk); - expect(enemy.getStat(Stat.ATK, false)).toBe(avgAtk); - - expect(player.getStat(Stat.SPATK, false)).toBe(avgSpAtk); - expect(enemy.getStat(Stat.SPATK, false)).toBe(avgSpAtk); - }); - - it("should set each move's pp to a maximum of 5", async () => { - game.override.enemyMoveset([MoveId.SWORDS_DANCE, MoveId.GROWL, MoveId.SKETCH, MoveId.RECOVER]); - - await game.classicMode.startBattle([SpeciesId.DITTO]); - const player = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - player.getMoveset().forEach(move => { - // Should set correct maximum PP without touching `ppUp` - if (move) { - if (move.moveId === MoveId.SKETCH) { - expect(move.getMovePp()).toBe(1); - } else { - expect(move.getMovePp()).toBe(5); - } - expect(move.ppUp).toBe(0); - } - }); - }); - - it("should activate its ability if it copies one that activates on summon", async () => { - game.override.enemyAbility(AbilityId.INTIMIDATE); - - await game.classicMode.startBattle([SpeciesId.DITTO]); - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to("MoveEndPhase"); - - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); - }); - - it("should persist transformed attributes across reloads", async () => { - game.override.moveset([MoveId.ABSORB]); - - await game.classicMode.startBattle([SpeciesId.DITTO]); - - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.SPLASH); - await game.doKillOpponents(); - await game.toNextWave(); - - expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); - expect(game.scene.currentBattle.waveIndex).toBe(2); - - await game.reload.reloadSession(); - - const playerReloaded = game.scene.getPlayerPokemon()!; - const playerMoveset = player.getMoveset(); - - expect(playerReloaded.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); - expect(playerReloaded.getAbility()).toBe(enemy.getAbility()); - expect(playerReloaded.getGender()).toBe(enemy.getGender()); - - expect(playerReloaded.getStat(Stat.HP, false)).not.toBe(enemy.getStat(Stat.HP)); - for (const s of EFFECTIVE_STATS) { - expect(playerReloaded.getStat(s, false)).toBe(enemy.getStat(s, false)); - } - - expect(playerMoveset.length).toEqual(1); - expect(playerMoveset[0]?.moveId).toEqual(MoveId.SPLASH); - }); - - it("should stay transformed with the correct form after reload", async () => { - game.override.moveset([MoveId.ABSORB]).enemySpecies(SpeciesId.UNOWN); - await game.classicMode.startBattle([SpeciesId.DITTO]); - - const enemy = game.scene.getEnemyPokemon()!; - - // change form - enemy.species.forms[5]; - enemy.species.formIndex = 5; - - game.move.select(MoveId.SPLASH); - await game.doKillOpponents(); - await game.toNextWave(); - - expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); - expect(game.scene.currentBattle.waveIndex).toBe(2); - - await game.reload.reloadSession(); - - const playerReloaded = game.scene.getPlayerPokemon()!; - - expect(playerReloaded.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); - expect(playerReloaded.getSpeciesForm().formIndex).toBe(enemy.getSpeciesForm().formIndex); - }); -}); diff --git a/test/abilities/infiltrator.test.ts b/test/abilities/infiltrator.test.ts index a5de035a136..9f3678850a1 100644 --- a/test/abilities/infiltrator.test.ts +++ b/test/abilities/infiltrator.test.ts @@ -1,13 +1,13 @@ +import { allMoves } from "#data/data-lists"; +import { AbilityId } from "#enums/ability-id"; import { ArenaTagSide } from "#enums/arena-tag-side"; -import { allMoves } from "#app/data/data-lists"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Stat } from "#enums/stat"; -import { StatusEffect } from "#enums/status-effect"; -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 { Stat } from "#enums/stat"; +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"; diff --git a/test/abilities/innards-out.test.ts b/test/abilities/innards-out.test.ts new file mode 100644 index 00000000000..96c07344b11 --- /dev/null +++ b/test/abilities/innards-out.test.ts @@ -0,0 +1,62 @@ +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, expect, it } from "vitest"; + +describe("Abilities - Innards Out", () => { + 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.INNARDS_OUT) + .enemyMoveset(MoveId.SPLASH) + .startingLevel(100); + }); + + it("should damage opppnents that faint the ability holder for equal damage", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const magikarp = game.field.getEnemyPokemon(); + magikarp.hp = 20; + game.move.use(MoveId.X_SCISSOR); + await game.toEndOfTurn(); + + expect(magikarp.isFainted()).toBe(true); + const feebas = game.field.getPlayerPokemon(); + expect(feebas.getInverseHp()).toBe(20); + }); + + it("should not damage an ally in Double Battles", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const [magikarp1, magikarp2] = game.scene.getEnemyField(); + magikarp1.hp = 1; + + game.move.use(MoveId.PROTECT); + await game.move.forceEnemyMove(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.SURF); + await game.toEndOfTurn(); + + expect(magikarp1.isFainted()).toBe(true); + expect(magikarp2.getInverseHp()).toBe(0); + }); +}); diff --git a/test/abilities/insomnia.test.ts b/test/abilities/insomnia.test.ts index 800663823c3..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 3dcd9bcd129..3c283e0392b 100644 --- a/test/abilities/intimidate.test.ts +++ b/test/abilities/intimidate.test.ts @@ -1,12 +1,10 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { UiMode } from "#enums/ui-mode"; -import { Stat } from "#enums/stat"; -import { getMovePosition } from "#test/testUtils/gameManagerUtils"; 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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Abilities - Intimidate", () => { let phaserGame: Phaser.Game; @@ -25,109 +23,68 @@ describe("Abilities - Intimidate", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override + .criticalHits(false) .battleStyle("single") .enemySpecies(SpeciesId.RATTATA) .enemyAbility(AbilityId.INTIMIDATE) - .enemyPassiveAbility(AbilityId.HYDRATION) .ability(AbilityId.INTIMIDATE) - .startingWave(3) + .passiveAbility(AbilityId.NO_GUARD) .enemyMoveset(MoveId.SPLASH); }); - it("should lower ATK stat stage by 1 of enemy Pokemon on entry and player switch", async () => { - await game.classicMode.runToSummon([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); - game.onNextPrompt( - "CheckSwitchPhase", - UiMode.CONFIRM, - () => { - game.setMode(UiMode.MESSAGE); - game.endPhase(); - }, - () => game.isCurrentPhase("CommandPhase") || game.isCurrentPhase("TurnInitPhase"), - ); - await game.phaseInterceptor.to("CommandPhase", false); + it("should lower all opponents' ATK by 1 stage on entry and switch", async () => { + await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); - let playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; - - expect(playerPokemon.species.speciesId).toBe(SpeciesId.MIGHTYENA); - expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); - expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-1); + const enemy = game.field.getEnemyPokemon(); + expect(enemy.getStatStage(Stat.ATK)).toBe(-1); game.doSwitchPokemon(1); - await game.phaseInterceptor.run("CommandPhase"); - await game.phaseInterceptor.to("CommandPhase"); - - playerPokemon = game.scene.getPlayerPokemon()!; - expect(playerPokemon.species.speciesId).toBe(SpeciesId.POOCHYENA); - expect(playerPokemon.getStatStage(Stat.ATK)).toBe(0); - expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-2); - }); - - it("should lower ATK stat stage by 1 for every enemy Pokemon in a double battle on entry", async () => { - game.override.battleStyle("double").startingWave(3); - await game.classicMode.runToSummon([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); - game.onNextPrompt( - "CheckSwitchPhase", - UiMode.CONFIRM, - () => { - game.setMode(UiMode.MESSAGE); - game.endPhase(); - }, - () => game.isCurrentPhase("CommandPhase") || game.isCurrentPhase("TurnInitPhase"), - ); - await game.phaseInterceptor.to("CommandPhase", false); - - const playerField = game.scene.getPlayerField()!; - const enemyField = game.scene.getEnemyField()!; - - expect(enemyField[0].getStatStage(Stat.ATK)).toBe(-2); - expect(enemyField[1].getStatStage(Stat.ATK)).toBe(-2); - expect(playerField[0].getStatStage(Stat.ATK)).toBe(-2); - expect(playerField[1].getStatStage(Stat.ATK)).toBe(-2); - }); - - it("should not activate again if there is no switch or new entry", async () => { - game.override.startingWave(2).moveset([MoveId.SPLASH]); - await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); - - const playerPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; - - expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); - expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-1); - - game.move.select(MoveId.SPLASH); await game.toNextTurn(); - expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); - expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-1); + expect(enemy.getStatStage(Stat.ATK)).toBe(-2); }); - it("should lower ATK stat stage by 1 for every switch", async () => { - game.override.moveset([MoveId.SPLASH]).enemyMoveset([MoveId.VOLT_SWITCH]).startingWave(5); - await game.classicMode.startBattle([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]); + it("should lower ATK of all opponents in a double battle", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.MIGHTYENA]); - const playerPokemon = game.scene.getPlayerPokemon()!; - let enemyPokemon = game.scene.getEnemyPokemon()!; + const [enemy1, enemy2] = game.scene.getEnemyField(); - expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); - expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-1); + expect(enemy1.getStatStage(Stat.ATK)).toBe(-1); + expect(enemy2.getStatStage(Stat.ATK)).toBe(-1); + }); - game.move.select(getMovePosition(game.scene, 0, MoveId.SPLASH)); + it("should not trigger on switching moves used by wild Pokemon", async () => { + game.override.enemyMoveset(MoveId.VOLT_SWITCH); + await game.classicMode.startBattle([SpeciesId.VENUSAUR]); + + const player = game.field.getPlayerPokemon(); + expect(player.getStatStage(Stat.ATK)).toBe(-1); + + game.move.use(MoveId.SPLASH); await game.toNextTurn(); - enemyPokemon = game.scene.getEnemyPokemon()!; + // doesn't lower attack due to not actually switching out + expect(player.getStatStage(Stat.ATK)).toBe(-1); + }); - expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-2); - expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); + it("should trigger on moves that switch user/target out during trainer battles", async () => { + game.override.startingWave(5).enemyLevel(100); + await game.classicMode.startBattle([SpeciesId.MIGHTYENA]); - game.move.select(MoveId.SPLASH); + const player = game.field.getPlayerPokemon(); + expect(player.getStatStage(Stat.ATK)).toBe(-1); + + game.move.use(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.TELEPORT); await game.toNextTurn(); - enemyPokemon = game.scene.getEnemyPokemon()!; + expect(player.getStatStage(Stat.ATK)).toBe(-2); - expect(playerPokemon.getStatStage(Stat.ATK)).toBe(-3); - expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(0); + game.move.use(MoveId.DRAGON_TAIL); + await game.move.forceEnemyMove(MoveId.SPLASH); + await game.toNextTurn(); + + expect(player.getStatStage(Stat.ATK)).toBe(-3); }); }); diff --git a/test/abilities/intrepid_sword.test.ts b/test/abilities/intrepid-sword.test.ts similarity index 91% rename from test/abilities/intrepid_sword.test.ts rename to test/abilities/intrepid-sword.test.ts index d9b81e9552e..75a1ab14e82 100644 --- a/test/abilities/intrepid_sword.test.ts +++ b/test/abilities/intrepid-sword.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; -import { CommandPhase } from "#app/phases/command-phase"; 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/libero.test.ts b/test/abilities/libero.test.ts deleted file mode 100644 index eaa2630e90d..00000000000 --- a/test/abilities/libero.test.ts +++ /dev/null @@ -1,297 +0,0 @@ -import { allMoves } from "#app/data/data-lists"; -import { PokemonType } from "#enums/pokemon-type"; -import { Weather } from "#app/data/weather"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { BiomeId } from "#enums/biome-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 Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; - -describe("Abilities - Libero", () => { - 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") - .ability(AbilityId.LIBERO) - .startingLevel(100) - .enemySpecies(SpeciesId.RATTATA) - .enemyMoveset(MoveId.ENDURE); - }); - - test("ability applies and changes a pokemon's type", async () => { - game.override.moveset([MoveId.SPLASH]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); - }); - - // Test for Gen9+ functionality, we are using previous funcionality - test.skip("ability applies only once per switch in", async () => { - game.override.moveset([MoveId.SPLASH, MoveId.AGILITY]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.BULBASAUR]); - - let leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); - - game.move.select(MoveId.AGILITY); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.LIBERO); - const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]]; - const moveType = PokemonType[allMoves[MoveId.AGILITY].type]; - expect(leadPokemonType).not.toBe(moveType); - - await game.toNextTurn(); - game.doSwitchPokemon(1); - await game.toNextTurn(); - game.doSwitchPokemon(1); - await game.toNextTurn(); - - leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); - }); - - test("ability applies correctly even if the pokemon's move has a variable type", async () => { - game.override.moveset([MoveId.WEATHER_BALL]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.scene.arena.weather = new Weather(WeatherType.SUNNY); - game.move.select(MoveId.WEATHER_BALL); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.LIBERO); - expect(leadPokemon.getTypes()).toHaveLength(1); - const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], - moveType = PokemonType[PokemonType.FIRE]; - expect(leadPokemonType).toBe(moveType); - }); - - test("ability applies correctly even if the type has changed by another ability", async () => { - game.override.moveset([MoveId.TACKLE]).passiveAbility(AbilityId.REFRIGERATE); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.LIBERO); - expect(leadPokemon.getTypes()).toHaveLength(1); - const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], - moveType = PokemonType[PokemonType.ICE]; - expect(leadPokemonType).toBe(moveType); - }); - - test("ability applies correctly even if the pokemon's move calls another move", async () => { - game.override.moveset([MoveId.NATURE_POWER]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.scene.arena.biomeType = BiomeId.MOUNTAIN; - game.move.select(MoveId.NATURE_POWER); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.AIR_SLASH); - }); - - test("ability applies correctly even if the pokemon's move is delayed / charging", async () => { - game.override.moveset([MoveId.DIG]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.DIG); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.DIG); - }); - - test("ability applies correctly even if the pokemon's move misses", async () => { - game.override.moveset([MoveId.TACKLE]).enemyMoveset(MoveId.SPLASH); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TACKLE); - await game.move.forceMiss(); - await game.phaseInterceptor.to(TurnEndPhase); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - expect(enemyPokemon.isFullHp()).toBe(true); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); - }); - - test("ability applies correctly even if the pokemon's move is protected against", async () => { - game.override.moveset([MoveId.TACKLE]).enemyMoveset(MoveId.PROTECT); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); - }); - - test("ability applies correctly even if the pokemon's move fails because of type immunity", async () => { - game.override.moveset([MoveId.TACKLE]).enemySpecies(SpeciesId.GASTLY); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); - }); - - test("ability is not applied if pokemon's type is the same as the move's type", async () => { - game.override.moveset([MoveId.SPLASH]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - leadPokemon.summonData.types = [allMoves[MoveId.SPLASH].type]; - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.LIBERO); - }); - - test("ability is not applied if pokemon is terastallized", async () => { - game.override.moveset([MoveId.SPLASH]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - leadPokemon.isTerastallized = true; - - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.LIBERO); - }); - - test("ability is not applied if pokemon uses struggle", async () => { - game.override.moveset([MoveId.STRUGGLE]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.STRUGGLE); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.LIBERO); - }); - - test("ability is not applied if the pokemon's move fails", async () => { - game.override.moveset([MoveId.BURN_UP]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.BURN_UP); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.LIBERO); - }); - - test("ability applies correctly even if the pokemon's Trick-or-Treat fails", async () => { - game.override.moveset([MoveId.TRICK_OR_TREAT]).enemySpecies(SpeciesId.GASTLY); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TRICK_OR_TREAT); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TRICK_OR_TREAT); - }); - - test("ability applies correctly and the pokemon curses itself", async () => { - game.override.moveset([MoveId.CURSE]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.CURSE); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.CURSE); - expect(leadPokemon.getTag(BattlerTagType.CURSED)).not.toBe(undefined); - }); -}); - -function testPokemonTypeMatchesDefaultMoveType(pokemon: PlayerPokemon, move: MoveId) { - expect(pokemon.waveData.abilitiesApplied).toContain(AbilityId.LIBERO); - expect(pokemon.getTypes()).toHaveLength(1); - const pokemonType = PokemonType[pokemon.getTypes()[0]], - moveType = PokemonType[allMoves[move].type]; - expect(pokemonType).toBe(moveType); -} diff --git a/test/abilities/lightningrod.test.ts b/test/abilities/lightningrod.test.ts index 2dc29500454..20fcb176055 100644 --- a/test/abilities/lightningrod.test.ts +++ b/test/abilities/lightningrod.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; 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 { 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,10 +36,8 @@ describe("Abilities - Lightningrod", () => { it("should redirect electric type moves", async () => { await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); - const enemy1 = game.scene.getEnemyField()[0]; - const enemy2 = game.scene.getEnemyField()[1]; - - enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; + const [enemy1, enemy2] = game.scene.getEnemyField(); + game.field.mockAbility(enemy2, AbilityId.LIGHTNING_ROD); game.move.select(MoveId.SHOCK_WAVE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); @@ -52,10 +50,8 @@ describe("Abilities - Lightningrod", () => { game.override.moveset([MoveId.SPLASH, MoveId.AERIAL_ACE]); await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); - const enemy1 = game.scene.getEnemyField()[0]; - const enemy2 = game.scene.getEnemyField()[1]; - - enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; + const [enemy1, enemy2] = game.scene.getEnemyField(); + game.field.mockAbility(enemy2, AbilityId.LIGHTNING_ROD); game.move.select(MoveId.AERIAL_ACE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); @@ -68,8 +64,7 @@ describe("Abilities - Lightningrod", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy2 = game.scene.getEnemyField()[1]; - - enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; + game.field.mockAbility(enemy2, AbilityId.LIGHTNING_ROD); game.move.select(MoveId.SHOCK_WAVE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); @@ -81,31 +76,25 @@ describe("Abilities - Lightningrod", () => { it("should not redirect moves changed from electric type via ability", async () => { game.override.ability(AbilityId.NORMALIZE); - await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemy1 = game.scene.getEnemyField()[0]; - const enemy2 = game.scene.getEnemyField()[1]; - - enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; + const [enemy1, enemy2] = game.scene.getEnemyField(); + game.field.mockAbility(enemy2, AbilityId.LIGHTNING_ROD); game.move.select(MoveId.SHOCK_WAVE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(false); }); it("should redirect moves changed to electric type via ability", async () => { - game.override.ability(AbilityId.GALVANIZE).moveset(MoveId.TACKLE); - await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); + game.override.ability(AbilityId.GALVANIZE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const enemy1 = game.scene.getEnemyField()[0]; - const enemy2 = game.scene.getEnemyField()[1]; + const [enemy1, enemy2] = game.scene.getEnemyField(); + game.field.mockAbility(enemy2, AbilityId.LIGHTNING_ROD); - enemy2.summonData.ability = AbilityId.LIGHTNING_ROD; - - game.move.select(MoveId.TACKLE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); + game.move.use(MoveId.TACKLE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(true); diff --git a/test/abilities/limber.test.ts b/test/abilities/limber.test.ts index 77acd8b3dab..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 95% rename from test/abilities/magic_bounce.test.ts rename to test/abilities/magic-bounce.test.ts index 04bfcbbfe8f..3b4185e848f 100644 --- a/test/abilities/magic_bounce.test.ts +++ b/test/abilities/magic-bounce.test.ts @@ -1,15 +1,14 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allAbilities } from "#app/data/data-lists"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { allMoves } from "#app/data/data-lists"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { Stat } from "#app/enums/stat"; -import { StatusEffect } from "#app/enums/status-effect"; +import { allAbilities, 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 { 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 { Stat } from "#enums/stat"; +import { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - Magic Bounce", () => { @@ -160,7 +159,8 @@ describe("Abilities - Magic Bounce", () => { expect(game.scene.getEnemyPokemon()!.getTag(BattlerTagType.CURSED)).toBeDefined(); }); - it("should not cause encore to be interrupted after bouncing", async () => { + // TODO: enable when Magic Bounce is fixed to properly reset the hit count + it.todo("should not cause encore to be interrupted after bouncing", async () => { 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]); @@ -168,7 +168,7 @@ describe("Abilities - Magic Bounce", () => { const enemyPokemon = game.scene.getEnemyPokemon()!; // Give the player MOLD_BREAKER for this turn to bypass Magic Bounce. - vi.spyOn(playerPokemon, "getAbility").mockReturnValue(allAbilities[AbilityId.MOLD_BREAKER]); + const playerAbilitySpy = game.field.mockAbility(playerPokemon, AbilityId.MOLD_BREAKER); // turn 1 game.move.select(MoveId.ENCORE); @@ -178,7 +178,7 @@ describe("Abilities - Magic Bounce", () => { expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(MoveId.TACKLE); // turn 2 - vi.spyOn(playerPokemon, "getAbility").mockRestore(); + playerAbilitySpy.mockRestore(); game.move.select(MoveId.GROWL); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.phaseInterceptor.to("BerryPhase"); diff --git a/test/abilities/magic-guard.test.ts b/test/abilities/magic-guard.test.ts new file mode 100644 index 00000000000..e2977420edf --- /dev/null +++ b/test/abilities/magic-guard.test.ts @@ -0,0 +1,168 @@ +import { getStatusEffectCatchRateMultiplier } from "#data/status-effect"; +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 { 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 { toDmgValue } from "#utils/common"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("AbilityId - Magic 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 + .ability(AbilityId.MAGIC_GUARD) + .enemySpecies(SpeciesId.BLISSEY) + .enemyAbility(AbilityId.NO_GUARD) + .startingLevel(100) + .enemyLevel(100); + }); + + //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Magic_Guard_(Ability) + + it.each<{ name: string; move?: MoveId; enemyMove?: MoveId }>([ + { name: "Non-Volatile Status Conditions", enemyMove: MoveId.TOXIC }, + { name: "Volatile Status Conditions", enemyMove: MoveId.LEECH_SEED }, + { name: "Crash Damage", move: MoveId.HIGH_JUMP_KICK, enemyMove: MoveId.PROTECT }, // Protect triggers crash damage + { name: "Variable Recoil Moves", move: MoveId.DOUBLE_EDGE }, + { name: "HP% Recoil Moves", move: MoveId.CHLOROBLAST }, + ])("should prevent damage from $name", async ({ move = MoveId.SPLASH, enemyMove = MoveId.SPLASH }) => { + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + game.move.use(move); + await game.move.forceEnemyMove(enemyMove); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toEndOfTurn(); + + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBe(magikarp.getMaxHp()); + }); + + it.each<{ abName: string; move?: MoveId; enemyMove?: MoveId; passive?: AbilityId; enemyAbility?: AbilityId }>([ + { abName: "Bad Dreams", enemyMove: MoveId.SPORE, enemyAbility: AbilityId.BAD_DREAMS }, + { abName: "Aftermath", move: MoveId.PSYCHIC_FANGS, enemyAbility: AbilityId.AFTERMATH }, + { abName: "Innards Out", move: MoveId.PSYCHIC_FANGS, enemyAbility: AbilityId.INNARDS_OUT }, + { abName: "Rough Skin", move: MoveId.PSYCHIC_FANGS, enemyAbility: AbilityId.ROUGH_SKIN }, + { abName: "Dry Skin", move: MoveId.SUNNY_DAY, passive: AbilityId.DRY_SKIN }, + { abName: "Liquid Ooze", move: MoveId.DRAIN_PUNCH, enemyAbility: AbilityId.LIQUID_OOZE }, + ])( + "should prevent damage from $abName", + async ({ + move = MoveId.SPLASH, + enemyMove = MoveId.SPLASH, + passive = AbilityId.BALL_FETCH, + enemyAbility = AbilityId.BALL_FETCH, + }) => { + game.override.enemyLevel(1).passiveAbility(passive).enemyAbility(enemyAbility); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + game.move.use(move); + await game.move.forceEnemyMove(enemyMove); + await game.toEndOfTurn(); + + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBe(magikarp.getMaxHp()); + }, + ); + + it.each<{ name: string; move?: MoveId; enemyMove?: MoveId }>([ + { name: "Struggle recoil", move: MoveId.STRUGGLE }, + { name: "Self-induced HP cutting", move: MoveId.BELLY_DRUM }, + { name: "Confusion self-damage", enemyMove: MoveId.CONFUSE_RAY }, + ])("should not prevent damage from $name", async ({ move = MoveId.SPLASH, enemyMove = MoveId.SPLASH }) => { + game.override.confusionActivation(true); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + game.move.use(move); + await game.move.forceEnemyMove(enemyMove); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); // Ensure confuse ray goes first + await game.toEndOfTurn(); + + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBeLessThan(magikarp.getMaxHp()); + }); + + it("should preserve toxic turn count and deal appropriate damage when disabled", async () => { + game.override.statusEffect(StatusEffect.TOXIC); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + game.move.use(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.SPLASH); + await game.toNextTurn(); + + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBe(magikarp.getMaxHp()); + expect(magikarp.status?.toxicTurnCount).toBe(1); + + // have a few turns pass + game.move.use(MoveId.SPLASH); + await game.toNextTurn(); + game.move.use(MoveId.SPLASH); + await game.toNextTurn(); + game.move.use(MoveId.SPLASH); + await game.toNextTurn(); + + expect(magikarp.status?.toxicTurnCount).toBe(4); + + game.move.use(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.GASTRO_ACID); + await game.toNextTurn(); + + expect(magikarp.status?.toxicTurnCount).toBe(5); + expect(magikarp.getHpRatio(true)).toBeCloseTo(11 / 16, 1); + }); + + it("should preserve burn physical damage halving & status catch boost", async () => { + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + // NB: Burn applies directly to the physical dmg formula, so we can't just check attack here + game.move.use(MoveId.TACKLE); + await game.move.forceEnemyMove(MoveId.WILL_O_WISP); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toNextTurn(); + + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBe(magikarp.getMaxHp()); + expect(magikarp.status?.effect).toBe(StatusEffect.BURN); + expect(getStatusEffectCatchRateMultiplier(magikarp.status!.effect)).toBe(1.5); + + // Heal blissey to full & use tackle again + const blissey = game.field.getEnemyPokemon(); + const prevDmg = blissey.getInverseHp(); + blissey.hp = blissey.getMaxHp(); + + game.move.use(MoveId.TACKLE); + await game.toNextTurn(); + + const burntDmg = blissey.getInverseHp(); + expect(burntDmg).toBeCloseTo(toDmgValue(prevDmg / 2), 0); + }); + + it("should prevent damage from entry hazards, but not Toxic Spikes poison", async () => { + game.scene.arena.addTag(ArenaTagType.SPIKES, -1, MoveId.SPIKES, 0, ArenaTagSide.PLAYER); + game.scene.arena.addTag(ArenaTagType.TOXIC_SPIKES, -1, MoveId.TOXIC_SPIKES, 0, ArenaTagSide.PLAYER); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + // Magic guard prevented damage but not poison + const player = game.field.getPlayerPokemon(); + expect(player.hp).toBe(player.getMaxHp()); + expect(player.status?.effect).toBe(StatusEffect.POISON); + }); +}); diff --git a/test/abilities/magic_guard.test.ts b/test/abilities/magic_guard.test.ts deleted file mode 100644 index f135a761bba..00000000000 --- a/test/abilities/magic_guard.test.ts +++ /dev/null @@ -1,432 +0,0 @@ -import { getArenaTag } from "#app/data/arena-tag"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { AbilityId } from "#enums/ability-id"; -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 { StatusEffect } from "#enums/status-effect"; -import { WeatherType } from "#enums/weather-type"; -import GameManager from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; - -describe("Abilities - Magic 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 - /** Player Pokemon overrides */ - .ability(AbilityId.MAGIC_GUARD) - .moveset([MoveId.SPLASH]) - .startingLevel(100) - /** Enemy Pokemon overrides */ - .enemySpecies(SpeciesId.SNORLAX) - .enemyAbility(AbilityId.INSOMNIA) - .enemyMoveset(MoveId.SPLASH) - .enemyLevel(100); - }); - - //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Magic_Guard_(Ability) - - it("ability should prevent damage caused by weather", async () => { - game.override.weather(WeatherType.SANDSTORM); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - const enemyPokemon = game.scene.getEnemyPokemon()!; - expect(enemyPokemon).toBeDefined(); - - game.move.select(MoveId.SPLASH); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) has not taken damage from weather - * - The enemy Pokemon (without Magic Guard) has taken damage from weather - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - }); - - it("ability should prevent damage caused by status effects but other non-damage effects still apply", async () => { - //Toxic keeps track of the turn counters -> important that Magic Guard keeps track of post-Toxic turns - game.override.statusEffect(StatusEffect.POISON); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.SPLASH); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) has not taken damage from poison - * - The Pokemon's CatchRateMultiplier should be 1.5 - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(getStatusEffectCatchRateMultiplier(leadPokemon.status!.effect)).toBe(1.5); - }); - - it("ability effect should not persist when the ability is replaced", async () => { - game.override.enemyMoveset(MoveId.WORRY_SEED).statusEffect(StatusEffect.POISON); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.SPLASH); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (that just lost its Magic Guard ability) has taken damage from poison - */ - expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents damage caused by burn but other non-damaging effects are still applied", async () => { - game.override.enemyStatusEffect(StatusEffect.BURN).enemyAbility(AbilityId.MAGIC_GUARD); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - game.move.select(MoveId.SPLASH); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The enemy Pokemon (with Magic Guard) has not taken damage from burn - * - The enemy Pokemon's physical attack damage is halved (TBD) - * - The enemy Pokemon's hypothetical CatchRateMultiplier should be 1.5 - */ - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(getStatusEffectCatchRateMultiplier(enemyPokemon.status!.effect)).toBe(1.5); - }); - - it("Magic Guard prevents damage caused by toxic but other non-damaging effects are still applied", async () => { - game.override.enemyStatusEffect(StatusEffect.TOXIC).enemyAbility(AbilityId.MAGIC_GUARD); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - game.move.select(MoveId.SPLASH); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - const toxicStartCounter = enemyPokemon.status!.toxicTurnCount; - //should be 0 - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The enemy Pokemon (with Magic Guard) has not taken damage from toxic - * - The enemy Pokemon's status effect duration should be incremented - * - The enemy Pokemon's hypothetical CatchRateMultiplier should be 1.5 - */ - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(enemyPokemon.status!.toxicTurnCount).toBeGreaterThan(toxicStartCounter); - expect(getStatusEffectCatchRateMultiplier(enemyPokemon.status!.effect)).toBe(1.5); - }); - - it("Magic Guard prevents damage caused by entry hazards", async () => { - //Adds and applies Spikes to both sides of the arena - const newTag = getArenaTag(ArenaTagType.SPIKES, 5, MoveId.SPIKES, 0, 0, ArenaTagSide.BOTH)!; - game.scene.arena.tags.push(newTag); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.SPLASH); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) has not taken damage from spikes - * - The enemy Pokemon (without Magic Guard) has taken damage from spikes - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - }); - - it("Magic Guard does not prevent poison from Toxic Spikes", async () => { - //Adds and applies Spikes to both sides of the arena - const playerTag = getArenaTag(ArenaTagType.TOXIC_SPIKES, 5, MoveId.TOXIC_SPIKES, 0, 0, ArenaTagSide.PLAYER)!; - const enemyTag = getArenaTag(ArenaTagType.TOXIC_SPIKES, 5, MoveId.TOXIC_SPIKES, 0, 0, ArenaTagSide.ENEMY)!; - game.scene.arena.tags.push(playerTag); - game.scene.arena.tags.push(enemyTag); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.SPLASH); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - Both Pokemon gain the poison status effect - * - The player Pokemon (with Magic Guard) has not taken damage from poison - * - The enemy Pokemon (without Magic Guard) has taken damage from poison - */ - expect(leadPokemon.status!.effect).toBe(StatusEffect.POISON); - expect(enemyPokemon.status!.effect).toBe(StatusEffect.POISON); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - }); - - it("Magic Guard prevents against damage from volatile status effects", async () => { - await game.classicMode.startBattle([SpeciesId.DUSKULL]); - game.override.moveset([MoveId.CURSE]).enemyAbility(AbilityId.MAGIC_GUARD); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.CURSE); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) has cut its HP to inflict curse - * - The enemy Pokemon (with Magic Guard) is cursed - * - The enemy Pokemon (with Magic Guard) does not lose HP from being cursed - */ - expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); - expect(enemyPokemon.getTag(BattlerTagType.CURSED)).not.toBe(undefined); - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - }); - - it("Magic Guard prevents crash damage", async () => { - game.override.moveset([MoveId.HIGH_JUMP_KICK]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.HIGH_JUMP_KICK); - await game.move.forceMiss(); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) misses High Jump Kick but does not lose HP as a result - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents damage from recoil", async () => { - game.override.moveset([MoveId.TAKE_DOWN]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.TAKE_DOWN); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) uses a recoil move but does not lose HP from recoil - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard does not prevent damage from Struggle's recoil", async () => { - game.override.moveset([MoveId.STRUGGLE]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.STRUGGLE); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) uses Struggle but does lose HP from Struggle's recoil - */ - expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); - }); - - //This tests different move attributes than the recoil tests above - it("Magic Guard prevents self-damage from attacking moves", async () => { - game.override.moveset([MoveId.STEEL_BEAM]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.STEEL_BEAM); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) uses a move with an HP cost but does not lose HP from using it - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - /* - it("Magic Guard does not prevent self-damage from confusion", async () => { - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - game.move.select(MoveId.CHARM); - - await game.phaseInterceptor.to(TurnEndPhase); - }); -*/ - - it("Magic Guard does not prevent self-damage from non-attacking moves", async () => { - game.override.moveset([MoveId.BELLY_DRUM]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.BELLY_DRUM); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) uses a non-attacking move with an HP cost and thus loses HP from using it - */ - expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents damage from abilities with PostTurnHurtIfSleepingAbAttr", async () => { - //Tests the ability Bad Dreams - game.override.statusEffect(StatusEffect.SLEEP); - //enemy pokemon is given Spore just in case player pokemon somehow awakens during test - game.override - .enemyMoveset([MoveId.SPORE, MoveId.SPORE, MoveId.SPORE, MoveId.SPORE]) - .enemyAbility(AbilityId.BAD_DREAMS); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.SPLASH); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - * - The player Pokemon is asleep - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(leadPokemon.status!.effect).toBe(StatusEffect.SLEEP); - }); - - it("Magic Guard prevents damage from abilities with PostFaintContactDamageAbAttr", async () => { - //Tests the abilities Innards Out/Aftermath - game.override.moveset([MoveId.TACKLE]).enemyAbility(AbilityId.AFTERMATH); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - const enemyPokemon = game.scene.getEnemyPokemon()!; - enemyPokemon.hp = 1; - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - * - The enemy Pokemon has fainted - */ - expect(enemyPokemon.hp).toBe(0); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents damage from abilities with PostDefendContactDamageAbAttr", async () => { - //Tests the abilities Iron Barbs/Rough Skin - game.override.moveset([MoveId.TACKLE]).enemyAbility(AbilityId.IRON_BARBS); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - * - The player Pokemon's move should have connected - */ - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents damage from abilities with ReverseDrainAbAttr", async () => { - //Tests the ability Liquid Ooze - game.override.moveset([MoveId.ABSORB]).enemyAbility(AbilityId.LIQUID_OOZE); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.ABSORB); - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - * - The player Pokemon's move should have connected - */ - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents HP loss from abilities with PostWeatherLapseDamageAbAttr", async () => { - game.override.passiveAbility(AbilityId.SOLAR_POWER).weather(WeatherType.SUNNY); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); -}); 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 0a8f3024291..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 7ac7aeb599f..c04860d1fcd 100644 --- a/test/abilities/mimicry.test.ts +++ b/test/abilities/mimicry.test.ts @@ -1,8 +1,8 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; import { PokemonType } from "#enums/pokemon-type"; -import GameManager from "#test/testUtils/gameManager"; +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"; diff --git a/test/abilities/mirror_armor.test.ts b/test/abilities/mirror-armor.test.ts similarity index 99% rename from test/abilities/mirror_armor.test.ts rename to test/abilities/mirror-armor.test.ts index 71b072c7d06..b2f9c9dc8fa 100644 --- a/test/abilities/mirror_armor.test.ts +++ b/test/abilities/mirror-armor.test.ts @@ -1,11 +1,11 @@ -import { Stat } from "#enums/stat"; 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 { 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"; -import { BattlerIndex } from "#enums/battler-index"; // TODO: When Magic Bounce is implemented, make a test for its interaction with mirror guard, use screech diff --git a/test/abilities/mold_breaker.test.ts b/test/abilities/mold-breaker.test.ts similarity index 53% rename from test/abilities/mold_breaker.test.ts rename to test/abilities/mold-breaker.test.ts index 28a077e8908..2af17b625b0 100644 --- a/test/abilities/mold_breaker.test.ts +++ b/test/abilities/mold-breaker.test.ts @@ -1,9 +1,7 @@ -import { BattlerIndex } from "#enums/battler-index"; -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"; @@ -24,29 +22,28 @@ describe("Abilities - Mold Breaker", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([MoveId.SPLASH]) .ability(AbilityId.MOLD_BREAKER) .battleStyle("single") .criticalHits(false) .enemySpecies(SpeciesId.MAGIKARP) - .enemyAbility(AbilityId.BALL_FETCH) + .enemyAbility(AbilityId.STURDY) .enemyMoveset(MoveId.SPLASH); }); it("should turn off the ignore abilities arena variable after the user's move", async () => { - game.override - .enemyMoveset(MoveId.SPLASH) - .ability(AbilityId.MOLD_BREAKER) - .moveset([MoveId.ERUPTION]) - .startingLevel(100) - .enemyLevel(2); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const enemy = game.scene.getEnemyPokemon()!; + await game.classicMode.startBattle([SpeciesId.PINSIR]); - expect(enemy.isFainted()).toBe(false); - game.move.select(MoveId.SPLASH); - await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); - await game.phaseInterceptor.to("MoveEndPhase", true); - expect(globalScene.arena.ignoreAbilities).toBe(false); + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); + + game.move.use(MoveId.X_SCISSOR); + await game.phaseInterceptor.to("MoveEffectPhase"); + + expect(game.scene.arena.ignoreAbilities).toBe(true); + expect(game.scene.arena.ignoringEffectSource).toBe(player.getBattlerIndex()); + + await game.toEndOfTurn(); + expect(game.scene.arena.ignoreAbilities).toBe(false); + expect(enemy.isFainted()).toBe(true); }); }); diff --git a/test/abilities/moody.test.ts b/test/abilities/moody.test.ts index bca3d57a70a..80879837bce 100644 --- a/test/abilities/moody.test.ts +++ b/test/abilities/moody.test.ts @@ -1,8 +1,8 @@ -import { BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; 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 { BATTLE_STATS, EFFECTIVE_STATS } 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"; diff --git a/test/abilities/moxie.test.ts b/test/abilities/moxie.test.ts index a85ed081448..28b90042969 100644 --- a/test/abilities/moxie.test.ts +++ b/test/abilities/moxie.test.ts @@ -1,14 +1,14 @@ -import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; 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 { 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { BattlerIndex } from "#enums/battler-index"; -import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { VictoryPhase } from "#app/phases/victory-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; describe("Abilities - Moxie", () => { let phaserGame: Phaser.Game; @@ -65,8 +65,7 @@ describe("Abilities - Moxie", () => { secondPokemon.hp = 1; - game.move.select(moveToUse); - game.selectTarget(BattlerIndex.PLAYER_2); + game.move.select(moveToUse, BattlerIndex.PLAYER_2); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/abilities/mummy.test.ts b/test/abilities/mummy.test.ts index d6c40541d25..e3843f9c112 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"; diff --git a/test/abilities/mycelium_might.test.ts b/test/abilities/mycelium-might.test.ts similarity index 96% rename from test/abilities/mycelium_might.test.ts rename to test/abilities/mycelium-might.test.ts index 56af51c00f7..41da6b5c693 100644 --- a/test/abilities/mycelium_might.test.ts +++ b/test/abilities/mycelium-might.test.ts @@ -1,10 +1,10 @@ -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { TurnStartPhase } from "#app/phases/turn-start-phase"; -import GameManager from "#test/testUtils/gameManager"; import { AbilityId } from "#enums/ability-id"; -import { Stat } from "#enums/stat"; 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 { TurnStartPhase } from "#phases/turn-start-phase"; +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/neutralizing_gas.test.ts b/test/abilities/neutralizing-gas.test.ts similarity index 97% rename from test/abilities/neutralizing_gas.test.ts rename to test/abilities/neutralizing-gas.test.ts index f153e71587e..560b7af72e7 100644 --- a/test/abilities/neutralizing_gas.test.ts +++ b/test/abilities/neutralizing-gas.test.ts @@ -1,13 +1,14 @@ -import { BattlerIndex } from "#enums/battler-index"; -import type { CommandPhase } from "#app/phases/command-phase"; -import { Command } from "#enums/command"; +import { globalScene } from "#app/global-scene"; import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; +import { BattlerIndex } from "#enums/battler-index"; +import { Command } from "#enums/command"; import { MoveId } from "#enums/move-id"; import { PokeballType } from "#enums/pokeball"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; +import type { CommandPhase } from "#phases/command-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -164,6 +165,7 @@ describe("Abilities - Neutralizing Gas", () => { expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); vi.spyOn(game.scene.getPlayerPokemon()!, "randBattleSeedInt").mockReturnValue(0); + vi.spyOn(globalScene, "randBattleSeedInt").mockReturnValue(0); const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); diff --git a/test/abilities/no_guard.test.ts b/test/abilities/no-guard.test.ts similarity index 87% rename from test/abilities/no_guard.test.ts rename to test/abilities/no-guard.test.ts index dc35e0e1b9a..9ce12e710e5 100644 --- a/test/abilities/no_guard.test.ts +++ b/test/abilities/no-guard.test.ts @@ -1,13 +1,13 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { HitCheckResult } from "#enums/hit-check-result"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { HitCheckResult } from "#enums/hit-check-result"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +import { MoveEndPhase } from "#phases/move-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - No Guard", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/normal-move-type-change.test.ts b/test/abilities/normal-move-type-change.test.ts index d9e39b32a7c..fdf9ef0f9f2 100644 --- a/test/abilities/normal-move-type-change.test.ts +++ b/test/abilities/normal-move-type-change.test.ts @@ -1,15 +1,14 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; -import { PokemonType } from "#enums/pokemon-type"; +import { TYPE_BOOST_ITEM_BOOST_PERCENT } from "#app/constants"; +import { allAbilities, allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; +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"; -import { TYPE_BOOST_ITEM_BOOST_PERCENT } from "#app/constants"; -import { allAbilities } from "#app/data/data-lists"; -import { toDmgValue } from "#app/utils/common"; /** * Tests for abilities that change the type of normal moves to @@ -49,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) @@ -76,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 () => { diff --git a/test/abilities/normalize.test.ts b/test/abilities/normalize.test.ts index 1a4b93f3f32..a19a08fdaf0 100644 --- a/test/abilities/normalize.test.ts +++ b/test/abilities/normalize.test.ts @@ -1,11 +1,11 @@ import { TYPE_BOOST_ITEM_BOOST_PERCENT } from "#app/constants"; -import { allMoves } from "#app/data/data-lists"; -import { toDmgValue } from "#app/utils/common"; +import { allMoves } from "#data/data-lists"; 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 dab8394edd0..6b9598903c5 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"; 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 869953b4e93..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 90% rename from test/abilities/parental_bond.test.ts rename to test/abilities/parental-bond.test.ts index fd914b86100..51c15ea32b1 100644 --- a/test/abilities/parental_bond.test.ts +++ b/test/abilities/parental-bond.test.ts @@ -1,12 +1,12 @@ -import { PokemonType } from "#enums/pokemon-type"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { toDmgValue } from "#app/utils/common"; import { AbilityId } from "#enums/ability-id"; +import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; +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"; @@ -193,6 +193,7 @@ describe("Abilities - Parental Bond", () => { expect(leadPokemon.turnData.hitCount).toBe(2); }); + // TODO: consolidate all these tests into 1 block it("should only trigger post-target move effects once", async () => { game.override.moveset([MoveId.MIND_BLOWN]); @@ -233,42 +234,6 @@ describe("Abilities - Parental Bond", () => { expect(leadPokemon.isOfType(PokemonType.FIRE)).toBe(false); }); - it("Moves boosted by this ability and Multi-Lens should strike 3 times", async () => { - game.override.moveset([MoveId.TACKLE]).startingHeldItems([{ name: "MULTI_LENS", count: 1 }]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.TACKLE); - - await game.phaseInterceptor.to("DamageAnimPhase"); - - expect(leadPokemon.turnData.hitCount).toBe(3); - }); - - it("Seismic Toss boosted by this ability and Multi-Lens should strike 3 times", async () => { - game.override.moveset([MoveId.SEISMIC_TOSS]).startingHeldItems([{ name: "MULTI_LENS", count: 1 }]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - const enemyPokemon = game.scene.getEnemyPokemon()!; - - const enemyStartingHp = enemyPokemon.hp; - - game.move.select(MoveId.SEISMIC_TOSS); - await game.move.forceHit(); - - await game.phaseInterceptor.to("DamageAnimPhase"); - - expect(leadPokemon.turnData.hitCount).toBe(3); - - await game.phaseInterceptor.to("MoveEndPhase", false); - - expect(enemyPokemon.hp).toBe(enemyStartingHp - 200); - }); - it("Hyper Beam boosted by this ability should strike twice, then recharge", async () => { game.override.moveset([MoveId.HYPER_BEAM]); diff --git a/test/abilities/pastel_veil.test.ts b/test/abilities/pastel-veil.test.ts similarity index 91% rename from test/abilities/pastel_veil.test.ts rename to test/abilities/pastel-veil.test.ts index b8e8873ed36..c4b368c94d0 100644 --- a/test/abilities/pastel_veil.test.ts +++ b/test/abilities/pastel-veil.test.ts @@ -1,11 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; -import { CommandPhase } from "#app/phases/command-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +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 { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -63,7 +62,6 @@ describe("Abilities - Pastel Veil", () => { await game.phaseInterceptor.to(TurnEndPhase); expect(magikarp.status?.effect).toBe(StatusEffect.POISON); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/abilities/perish_body.test.ts b/test/abilities/perish-body.test.ts similarity index 98% rename from test/abilities/perish_body.test.ts rename to test/abilities/perish-body.test.ts index 4852533816b..251d29abe36 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"; diff --git a/test/abilities/power_construct.test.ts b/test/abilities/power-construct.test.ts similarity index 91% rename from test/abilities/power_construct.test.ts rename to test/abilities/power-construct.test.ts index 2ea14597ef9..34e02851daf 100644 --- a/test/abilities/power_construct.test.ts +++ b/test/abilities/power-construct.test.ts @@ -1,11 +1,11 @@ -import { Status } from "#app/data/status-effect"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { Status } from "#data/status-effect"; 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 { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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 91% rename from test/abilities/power_spot.test.ts rename to test/abilities/power-spot.test.ts index 11f75588386..75d5cd78ae0 100644 --- a/test/abilities/power_spot.test.ts +++ b/test/abilities/power-spot.test.ts @@ -1,10 +1,10 @@ -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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 new file mode 100644 index 00000000000..305955f5221 --- /dev/null +++ b/test/abilities/protean-libero.test.ts @@ -0,0 +1,272 @@ +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 { BattlerTagType } from "#enums/battler-tag-type"; +import { MoveId } from "#enums/move-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Abilities - Protean/Libero", () => { + 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") + .ability(AbilityId.PROTEAN) + .startingLevel(100) + .moveset([MoveId.CURSE, MoveId.DIG, MoveId.SPLASH]) + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset(MoveId.SPLASH); + }); + + /** + * Assert that the protean/libero ability triggered to change the user's type to + * the type of its most recently used move. + * Takes into account type overrides from effects. + * @param pokemon - The {@linkcode PlayerPokemon} being checked. + * @remarks + * This will clear the given Pokemon's `abilitiesApplied` set after being called to allow for easier multi-turn testing. + */ + function expectTypeChange(pokemon: PlayerPokemon) { + expect(pokemon.waveData.abilitiesApplied).toContainEqual(expect.toBeOneOf([AbilityId.PROTEAN, AbilityId.LIBERO])); + const lastMove = allMoves[pokemon.getLastXMoves()[0].move]!; + + const pokemonTypes = pokemon.getTypes().map(pt => PokemonType[pt]); + const moveType = PokemonType[pokemon.getMoveType(lastMove)]; + expect(pokemonTypes).toEqual([moveType]); + pokemon.waveData.abilitiesApplied.clear(); + } + + /** + * Assert that the protean/libero ability did NOT trigger to change the user's type to + * the type of its most recently used move. + * Takes into account type overrides from effects. + * @param pokemon - The {@linkcode PlayerPokemon} being checked. + * @remarks + * This will clear the given Pokemon's `abilitiesApplied` set after being called to allow for easier multi-turn testing. + */ + function expectNoTypeChange(pokemon: PlayerPokemon) { + expect(pokemon.waveData.abilitiesApplied).not.toContainEqual( + expect.toBeOneOf([AbilityId.PROTEAN, AbilityId.LIBERO]), + ); + const lastMove = allMoves[pokemon.getLastXMoves()[0].move]!; + + const pokemonTypes = pokemon.getTypes().map(pt => PokemonType[pt]); + const moveType = PokemonType[pokemon.getMoveType(lastMove, true)]; + expect(pokemonTypes).not.toEqual([moveType]); + pokemon.waveData.abilitiesApplied.clear(); + } + + it.each([ + { name: "Protean", ability: AbilityId.PROTEAN }, + { name: "Libero", ability: AbilityId.PROTEAN }, + ])("$name should change the user's type to the type of the move being used", async ({ ability }) => { + game.override.ability(ability); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const leadPokemon = game.field.getPlayerPokemon(); + + game.move.use(MoveId.SPLASH); + await game.toEndOfTurn(); + + expectTypeChange(leadPokemon); + }); + + // Test for Gen9+ functionality, we are using previous funcionality + it.skip("should apply only once per switch in", async () => { + game.override.moveset([MoveId.SPLASH, MoveId.AGILITY]); + await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.BULBASAUR]); + + const bulbasaur = game.field.getPlayerPokemon(); + + game.move.select(MoveId.SPLASH); + await game.toEndOfTurn(); + + expectTypeChange(bulbasaur); + + game.move.select(MoveId.AGILITY); + await game.toEndOfTurn(); + + expectNoTypeChange(bulbasaur); + + // switch out and back in + game.doSwitchPokemon(1); + await game.toNextTurn(); + game.doSwitchPokemon(1); + await game.toNextTurn(); + + expect(bulbasaur.isOnField()).toBe(true); + + game.move.select(MoveId.SPLASH); + await game.toEndOfTurn(); + + expectTypeChange(bulbasaur); + }); + + it.each<{ category: string; move?: MoveId; passive?: AbilityId; enemyMove?: MoveId }>([ + { category: "Variable type Moves'", move: MoveId.WEATHER_BALL, passive: AbilityId.DROUGHT }, + { category: "Type Change Abilities'", passive: AbilityId.REFRIGERATE }, + { category: "Move-calling Moves'", move: MoveId.NATURE_POWER, passive: AbilityId.PSYCHIC_SURGE }, + { category: "Ion Deluge's", enemyMove: MoveId.ION_DELUGE }, + { category: "Electrify's", enemyMove: MoveId.ELECTRIFY }, + ])( + "should respect $category final type", + async ({ move = MoveId.TACKLE, passive = AbilityId.NONE, enemyMove = MoveId.SPLASH }) => { + game.override.passiveAbility(passive); + await game.classicMode.startBattle([SpeciesId.LINOONE]); // Pure normal type for move overrides + + const linoone = game.field.getPlayerPokemon(); + + game.move.use(move); + await game.move.forceEnemyMove(enemyMove); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + // We stop before running `TurnEndPhase` so that the effects of `BattlerTag`s (such as from Electrify) + // are still active when checking the move's type + await game.phaseInterceptor.to("TurnEndPhase", false); + + expectTypeChange(linoone); + }, + ); + + it.each<{ cause: string; move?: MoveId; passive?: AbilityId; enemyMove?: MoveId }>([ + { cause: "misses", move: MoveId.FOCUS_BLAST }, + { cause: "is protected against", enemyMove: MoveId.PROTECT }, + { cause: "is ineffective", move: MoveId.EARTHQUAKE }, + { cause: "matches only one of its types", move: MoveId.NIGHT_SLASH }, + { cause: "is blocked by terrain", move: MoveId.SHADOW_SNEAK, passive: AbilityId.PSYCHIC_SURGE }, + ])( + "should still trigger if the user's move $cause", + async ({ move = MoveId.TACKLE, passive = AbilityId.NONE, enemyMove = MoveId.SPLASH }) => { + game.override.passiveAbility(passive).enemySpecies(SpeciesId.SKARMORY); + await game.classicMode.startBattle([SpeciesId.MEOWSCARADA]); + + vi.spyOn(allMoves[MoveId.FOCUS_BLAST], "accuracy", "get").mockReturnValue(0); + + const meow = game.field.getPlayerPokemon(); + + game.move.use(move); + await game.move.forceEnemyMove(enemyMove); + await game.toEndOfTurn(); + + expectTypeChange(meow); + }, + ); + + it.each<{ cause: string; move?: MoveId; tera?: boolean; passive?: AbilityId }>([ + { cause: "user is terastallized to any type", tera: true }, + { cause: "user uses Struggle", move: MoveId.STRUGGLE }, + { cause: "the user's move is blocked by weather", move: MoveId.FIRE_BLAST, passive: AbilityId.PRIMORDIAL_SEA }, + { cause: "the user's move fails", move: MoveId.BURN_UP }, + ])("should not apply if $cause", async ({ move = MoveId.TACKLE, tera = false, passive = AbilityId.NONE }) => { + game.override.enemyPassiveAbility(passive); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const karp = game.field.getPlayerPokemon(); + + karp.teraType = PokemonType.STEEL; + + game.move.use(move, BattlerIndex.PLAYER, undefined, tera); + await game.toEndOfTurn(); + + expectNoTypeChange(karp); + }); + + it("should not apply if user is already the move's type", async () => { + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const karp = game.field.getPlayerPokemon(); + + game.move.use(MoveId.WATERFALL); + await game.toEndOfTurn(); + + expect(karp.waveData.abilitiesApplied.size).toBe(0); + expect(karp.getTypes()).toEqual([allMoves[MoveId.WATERFALL].type]); + }); + + it.each<{ moveName: string; move: MoveId }>([ + { moveName: "Roar", move: MoveId.ROAR }, + { moveName: "Whirlwind", move: MoveId.WHIRLWIND }, + { moveName: "Forest's Curse", move: MoveId.FORESTS_CURSE }, + { moveName: "Trick-or-Treat", move: MoveId.TRICK_OR_TREAT }, + ])("should still apply if the user's $moveName fails", async ({ move }) => { + game.override.battleType(BattleType.TRAINER).enemySpecies(SpeciesId.TREVENANT); // ghost/grass makes both moves fail + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const leadPokemon = game.field.getPlayerPokemon(); + + game.move.use(move); + // KO all off-field opponents for Whirlwind and co. + for (const enemyMon of game.scene.getEnemyParty()) { + if (!enemyMon.isActive()) { + enemyMon.hp = 0; + } + } + await game.toEndOfTurn(); + + expectTypeChange(leadPokemon); + }); + + it("should trigger on the first turn of charging moves", async () => { + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const karp = game.field.getPlayerPokemon(); + + game.move.select(MoveId.DIG); + await game.toEndOfTurn(); + + expectTypeChange(karp); + + await game.toEndOfTurn(); + expect(karp.waveData.abilitiesApplied).not.toContain(AbilityId.PROTEAN); + }); + + it("should cause the user to cast Ghost-type Curse on itself", async () => { + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const karp = game.field.getPlayerPokemon(); + expect(karp.isOfType(PokemonType.GHOST)).toBe(false); + + game.move.select(MoveId.CURSE); + await game.toEndOfTurn(); + + expectTypeChange(karp); + expect(karp.getHpRatio(true)).toBeCloseTo(0.25); + expect(karp.getTag(BattlerTagType.CURSED)).toBeDefined(); + }); + + it("should not trigger during Focus Punch's start-of-turn message or being interrupted", async () => { + game.override.moveset(MoveId.FOCUS_PUNCH).enemyMoveset(MoveId.ABSORB); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + + const karp = game.field.getPlayerPokemon(); + expect(karp.isOfType(PokemonType.FIGHTING)).toBe(false); + + game.move.select(MoveId.FOCUS_PUNCH); + + await game.phaseInterceptor.to("MessagePhase"); + expect(karp.isOfType(PokemonType.FIGHTING)).toBe(false); + + await game.toEndOfTurn(); + + expectNoTypeChange(karp); + expect(karp.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); +}); diff --git a/test/abilities/protean.test.ts b/test/abilities/protean.test.ts deleted file mode 100644 index 09c9addbc35..00000000000 --- a/test/abilities/protean.test.ts +++ /dev/null @@ -1,297 +0,0 @@ -import { allMoves } from "#app/data/data-lists"; -import { PokemonType } from "#enums/pokemon-type"; -import { Weather } from "#app/data/weather"; -import type { PlayerPokemon } from "#app/field/pokemon"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { BiomeId } from "#enums/biome-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 Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; - -describe("Abilities - Protean", () => { - 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") - .ability(AbilityId.PROTEAN) - .startingLevel(100) - .enemySpecies(SpeciesId.RATTATA) - .enemyMoveset(MoveId.ENDURE); - }); - - test("ability applies and changes a pokemon's type", async () => { - game.override.moveset([MoveId.SPLASH]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); - }); - - // Test for Gen9+ functionality, we are using previous funcionality - test.skip("ability applies only once per switch in", async () => { - game.override.moveset([MoveId.SPLASH, MoveId.AGILITY]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.BULBASAUR]); - - let leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); - - game.move.select(MoveId.AGILITY); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.PROTEAN); - const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]]; - const moveType = PokemonType[allMoves[MoveId.AGILITY].type]; - expect(leadPokemonType).not.toBe(moveType); - - await game.toNextTurn(); - game.doSwitchPokemon(1); - await game.toNextTurn(); - game.doSwitchPokemon(1); - await game.toNextTurn(); - - leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.SPLASH); - }); - - test("ability applies correctly even if the pokemon's move has a variable type", async () => { - game.override.moveset([MoveId.WEATHER_BALL]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.scene.arena.weather = new Weather(WeatherType.SUNNY); - game.move.select(MoveId.WEATHER_BALL); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.PROTEAN); - expect(leadPokemon.getTypes()).toHaveLength(1); - const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], - moveType = PokemonType[PokemonType.FIRE]; - expect(leadPokemonType).toBe(moveType); - }); - - test("ability applies correctly even if the type has changed by another ability", async () => { - game.override.moveset([MoveId.TACKLE]).passiveAbility(AbilityId.REFRIGERATE); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).toContain(AbilityId.PROTEAN); - expect(leadPokemon.getTypes()).toHaveLength(1); - const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], - moveType = PokemonType[PokemonType.ICE]; - expect(leadPokemonType).toBe(moveType); - }); - - test("ability applies correctly even if the pokemon's move calls another move", async () => { - game.override.moveset([MoveId.NATURE_POWER]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.scene.arena.biomeType = BiomeId.MOUNTAIN; - game.move.select(MoveId.NATURE_POWER); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.AIR_SLASH); - }); - - test("ability applies correctly even if the pokemon's move is delayed / charging", async () => { - game.override.moveset([MoveId.DIG]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.DIG); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.DIG); - }); - - test("ability applies correctly even if the pokemon's move misses", async () => { - game.override.moveset([MoveId.TACKLE]).enemyMoveset(MoveId.SPLASH); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TACKLE); - await game.move.forceMiss(); - await game.phaseInterceptor.to(TurnEndPhase); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - expect(enemyPokemon.isFullHp()).toBe(true); - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); - }); - - test("ability applies correctly even if the pokemon's move is protected against", async () => { - game.override.moveset([MoveId.TACKLE]).enemyMoveset(MoveId.PROTECT); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); - }); - - test("ability applies correctly even if the pokemon's move fails because of type immunity", async () => { - game.override.moveset([MoveId.TACKLE]).enemySpecies(SpeciesId.GASTLY); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TACKLE); - }); - - test("ability is not applied if pokemon's type is the same as the move's type", async () => { - game.override.moveset([MoveId.SPLASH]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - leadPokemon.summonData.types = [allMoves[MoveId.SPLASH].type]; - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.PROTEAN); - }); - - test("ability is not applied if pokemon is terastallized", async () => { - game.override.moveset([MoveId.SPLASH]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - leadPokemon.isTerastallized = true; - - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.PROTEAN); - }); - - test("ability is not applied if pokemon uses struggle", async () => { - game.override.moveset([MoveId.STRUGGLE]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.STRUGGLE); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.PROTEAN); - }); - - test("ability is not applied if the pokemon's move fails", async () => { - game.override.moveset([MoveId.BURN_UP]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.BURN_UP); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(leadPokemon.waveData.abilitiesApplied).not.toContain(AbilityId.PROTEAN); - }); - - test("ability applies correctly even if the pokemon's Trick-or-Treat fails", async () => { - game.override.moveset([MoveId.TRICK_OR_TREAT]).enemySpecies(SpeciesId.GASTLY); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.TRICK_OR_TREAT); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.TRICK_OR_TREAT); - }); - - test("ability applies correctly and the pokemon curses itself", async () => { - game.override.moveset([MoveId.CURSE]); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - expect(leadPokemon).not.toBe(undefined); - - game.move.select(MoveId.CURSE); - await game.phaseInterceptor.to(TurnEndPhase); - - testPokemonTypeMatchesDefaultMoveType(leadPokemon, MoveId.CURSE); - expect(leadPokemon.getTag(BattlerTagType.CURSED)).not.toBe(undefined); - }); -}); - -function testPokemonTypeMatchesDefaultMoveType(pokemon: PlayerPokemon, move: MoveId) { - expect(pokemon.waveData.abilitiesApplied).toContain(AbilityId.PROTEAN); - expect(pokemon.getTypes()).toHaveLength(1); - const pokemonType = PokemonType[pokemon.getTypes()[0]], - moveType = PokemonType[allMoves[move].type]; - expect(pokemonType).toBe(moveType); -} diff --git a/test/abilities/protosynthesis.test.ts b/test/abilities/protosynthesis.test.ts index ef860fc0cd5..f4461a562ea 100644 --- a/test/abilities/protosynthesis.test.ts +++ b/test/abilities/protosynthesis.test.ts @@ -1,11 +1,11 @@ import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; 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 { BattlerIndex } from "#enums/battler-index"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Abilities - Protosynthesis", () => { diff --git a/test/abilities/quick_draw.test.ts b/test/abilities/quick-draw.test.ts similarity index 94% rename from test/abilities/quick_draw.test.ts rename to test/abilities/quick-draw.test.ts index 11418f31375..d3914e24268 100644 --- a/test/abilities/quick_draw.test.ts +++ b/test/abilities/quick-draw.test.ts @@ -1,9 +1,9 @@ -import { allAbilities } from "#app/data/data-lists"; -import { FaintPhase } from "#app/phases/faint-phase"; +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 { FaintPhase } from "#phases/faint-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; diff --git a/test/abilities/sand_spit.test.ts b/test/abilities/sand-spit.test.ts similarity index 94% rename from test/abilities/sand_spit.test.ts rename to test/abilities/sand-spit.test.ts index 2b519745649..9cfd94a1857 100644 --- a/test/abilities/sand_spit.test.ts +++ b/test/abilities/sand-spit.test.ts @@ -1,8 +1,8 @@ -import { WeatherType } from "#app/enums/weather-type"; 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 { 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"; diff --git a/test/abilities/sand_veil.test.ts b/test/abilities/sand-veil.test.ts similarity index 83% rename from test/abilities/sand_veil.test.ts rename to test/abilities/sand-veil.test.ts index 035b37d85a8..4777a016743 100644 --- a/test/abilities/sand_veil.test.ts +++ b/test/abilities/sand-veil.test.ts @@ -1,14 +1,13 @@ -import type { StatMultiplierAbAttrParams } from "#app/@types/ability-types"; -import { allAbilities } from "#app/data/data-lists"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; +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 { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +import { MoveEndPhase } from "#phases/move-end-phase"; +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"; @@ -59,9 +58,6 @@ describe("Abilities - Sand Veil", () => { expect(leadPokemon[1].hasAbility(AbilityId.SAND_VEIL)).toBe(false); game.move.select(MoveId.SPLASH); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase, false); diff --git a/test/abilities/sap_sipper.test.ts b/test/abilities/sap-sipper.test.ts similarity index 92% rename from test/abilities/sap_sipper.test.ts rename to test/abilities/sap-sipper.test.ts index 0a1b0da6be5..493b8709b7e 100644 --- a/test/abilities/sap_sipper.test.ts +++ b/test/abilities/sap-sipper.test.ts @@ -1,13 +1,12 @@ -import { Stat } from "#enums/stat"; -import { TerrainType } from "#app/data/terrain"; +import { TerrainType } from "#data/terrain"; 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 { 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"; -import { RandomMoveAttr } from "#app/data/moves/move"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; // See also: TypeImmunityAbAttr describe("Abilities - Sap Sipper", () => { @@ -82,7 +81,7 @@ describe("Abilities - Sap Sipper", () => { }); it("should trigger and cancel multi-hit moves, including ones called indirectly", async () => { - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.BULLET_SEED); + game.move.forceMetronomeMove(MoveId.BULLET_SEED); await game.classicMode.startBattle([SpeciesId.BULBASAUR]); const player = game.field.getPlayerPokemon(); diff --git a/test/abilities/schooling.test.ts b/test/abilities/schooling.test.ts index 646beafb80f..fea919c7c5a 100644 --- a/test/abilities/schooling.test.ts +++ b/test/abilities/schooling.test.ts @@ -1,11 +1,11 @@ -import { Status } from "#app/data/status-effect"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { Status } from "#data/status-effect"; 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 { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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 83% rename from test/abilities/screen_cleaner.test.ts rename to test/abilities/screen-cleaner.test.ts index e896d2e51f9..50a854adeb1 100644 --- a/test/abilities/screen_cleaner.test.ts +++ b/test/abilities/screen-cleaner.test.ts @@ -1,10 +1,10 @@ -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { PostSummonPhase } from "#app/phases/post-summon-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { AbilityId } from "#enums/ability-id"; +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 { PostSummonPhase } from "#phases/post-summon-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -28,11 +28,11 @@ describe("Abilities - Screen Cleaner", () => { }); it("removes Aurora Veil", async () => { - game.override.moveset([MoveId.HAIL]).enemyMoveset(MoveId.AURORA_VEIL); + game.override.enemyMoveset(MoveId.AURORA_VEIL); await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(MoveId.HAIL); + game.move.use(MoveId.HAIL); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.arena.getTag(ArenaTagType.AURORA_VEIL)).toBeDefined(); @@ -49,7 +49,7 @@ describe("Abilities - Screen Cleaner", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(MoveId.SPLASH); + game.move.use(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.arena.getTag(ArenaTagType.LIGHT_SCREEN)).toBeDefined(); @@ -66,7 +66,7 @@ describe("Abilities - Screen Cleaner", () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]); - game.move.select(MoveId.SPLASH); + game.move.use(MoveId.SPLASH); await game.phaseInterceptor.to(TurnEndPhase); expect(game.scene.arena.getTag(ArenaTagType.REFLECT)).toBeDefined(); diff --git a/test/abilities/seed_sower.test.ts b/test/abilities/seed-sower.test.ts similarity index 94% rename from test/abilities/seed_sower.test.ts rename to test/abilities/seed-sower.test.ts index 7a898f5bcf9..f31955a0bbb 100644 --- a/test/abilities/seed_sower.test.ts +++ b/test/abilities/seed-sower.test.ts @@ -1,8 +1,8 @@ -import { TerrainType } from "#app/data/terrain"; +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 93% rename from test/abilities/serene_grace.test.ts rename to test/abilities/serene-grace.test.ts index 2acf2981537..bbf9cf7555b 100644 --- a/test/abilities/serene_grace.test.ts +++ b/test/abilities/serene-grace.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; +import { allMoves } from "#data/data-lists"; 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 { allMoves } from "#app/data/data-lists"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - Serene Grace", () => { 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 e90b8d08611..0e2ce85bfca 100644 --- a/test/abilities/sheer_force.test.ts +++ b/test/abilities/sheer-force.test.ts @@ -1,13 +1,13 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { PokemonType } from "#enums/pokemon-type"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; +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 { 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"; -import { allMoves } from "#app/data/data-lists"; describe("Abilities - Sheer Force", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/shell-armor.test.ts b/test/abilities/shell-armor.test.ts index ea0ed4a95dd..df0802b25da 100644 --- a/test/abilities/shell-armor.test.ts +++ b/test/abilities/shell-armor.test.ts @@ -1,12 +1,12 @@ -import type Move from "#app/data/moves/move"; -import Pokemon from "#app/field/pokemon"; 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 { Pokemon } from "#field/pokemon"; +import type { Move } from "#moves/move"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi, type MockInstance } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, type MockInstance, vi } from "vitest"; describe("Abilities - Shell Armor", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/shield_dust.test.ts b/test/abilities/shield-dust.test.ts similarity index 88% rename from test/abilities/shield_dust.test.ts rename to test/abilities/shield-dust.test.ts index a7896b9eeb8..025b415dbc0 100644 --- a/test/abilities/shield_dust.test.ts +++ b/test/abilities/shield-dust.test.ts @@ -1,12 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { NumberHolder } from "#app/utils/common"; +import { applyAbAttrs } from "#abilities/apply-ab-attrs"; 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 { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +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/abilities/shields_down.test.ts b/test/abilities/shields-down.test.ts similarity index 95% rename from test/abilities/shields_down.test.ts rename to test/abilities/shields-down.test.ts index 7b4803915f1..0323a4afbec 100644 --- a/test/abilities/shields_down.test.ts +++ b/test/abilities/shields-down.test.ts @@ -1,12 +1,12 @@ -import { Status } from "#app/data/status-effect"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { Status } from "#data/status-effect"; 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 { StatusEffect } from "#enums/status-effect"; -import GameManager from "#test/testUtils/gameManager"; +import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; describe("Abilities - SHIELDS DOWN", () => { diff --git a/test/abilities/simple.test.ts b/test/abilities/simple.test.ts index 703f8fcffac..39f1b579a19 100644 --- a/test/abilities/simple.test.ts +++ b/test/abilities/simple.test.ts @@ -1,8 +1,8 @@ -import { MoveId } from "#enums/move-id"; 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/speed_boost.test.ts b/test/abilities/speed-boost.test.ts similarity index 87% rename from test/abilities/speed_boost.test.ts rename to test/abilities/speed-boost.test.ts index a4445d085f3..ff0beaf74a0 100644 --- a/test/abilities/speed_boost.test.ts +++ b/test/abilities/speed-boost.test.ts @@ -1,13 +1,14 @@ -import { Stat } from "#enums/stat"; +import Overrides from "#app/overrides"; import { AbilityId } from "#enums/ability-id"; +import { Command } from "#enums/command"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { Stat } from "#enums/stat"; +import { AttemptRunPhase } from "#phases/attempt-run-phase"; +import type { CommandPhase } from "#phases/command-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import type { CommandPhase } from "#app/phases/command-phase"; -import { Command } from "#enums/command"; -import { AttemptRunPhase } from "#app/phases/attempt-run-phase"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - Speed Boost", () => { let phaserGame: Phaser.Game; @@ -96,12 +97,15 @@ describe("Abilities - Speed Boost", () => { }); it("should not trigger if pokemon fails to escape", async () => { + //Account for doubles, should not trigger on either pokemon + game.override.battleStyle("double"); await game.classicMode.startBattle([SpeciesId.SHUCKLE]); + vi.spyOn(Overrides, "RUN_SUCCESS_OVERRIDE", "get").mockReturnValue(false); + const commandPhase = game.scene.phaseManager.getCurrentPhase() as CommandPhase; commandPhase.handleCommand(Command.RUN, 0); - const runPhase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; - runPhase.forceFailEscape = true; + await game.phaseInterceptor.to(AttemptRunPhase); await game.toNextTurn(); diff --git a/test/abilities/stakeout.test.ts b/test/abilities/stakeout.test.ts index b3844bf17ca..5dafb620274 100644 --- a/test/abilities/stakeout.test.ts +++ b/test/abilities/stakeout.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { isBetween } from "#app/utils/common"; 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 04a29a4f284..71796d376a3 100644 --- a/test/abilities/stall.test.ts +++ b/test/abilities/stall.test.ts @@ -1,10 +1,10 @@ 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 { TurnStartPhase } from "#phases/turn-start-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { TurnStartPhase } from "#app/phases/turn-start-phase"; describe("Abilities - Stall", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/steely_spirit.test.ts b/test/abilities/steely-spirit.test.ts similarity index 96% rename from test/abilities/steely_spirit.test.ts rename to test/abilities/steely-spirit.test.ts index 7a2bd98b6b1..072566fdb96 100644 --- a/test/abilities/steely_spirit.test.ts +++ b/test/abilities/steely-spirit.test.ts @@ -1,9 +1,8 @@ -import { allAbilities } from "#app/data/data-lists"; -import { allMoves } from "#app/data/data-lists"; +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"; diff --git a/test/abilities/storm_drain.test.ts b/test/abilities/storm-drain.test.ts similarity index 84% rename from test/abilities/storm_drain.test.ts rename to test/abilities/storm-drain.test.ts index 8eedf0c7ce8..bc4d4f15cfa 100644 --- a/test/abilities/storm_drain.test.ts +++ b/test/abilities/storm-drain.test.ts @@ -1,12 +1,13 @@ -import { BattlerIndex } from "#enums/battler-index"; 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 { 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"; +// TODO: Condense with lightning rod tests sometime describe("Abilities - Storm Drain", () => { let phaserGame: Phaser.Game; let game: GameManager; @@ -39,7 +40,7 @@ describe("Abilities - Storm Drain", () => { const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = AbilityId.STORM_DRAIN; + game.field.mockAbility(enemy2, AbilityId.STORM_DRAIN); game.move.select(MoveId.WATER_GUN, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); @@ -55,7 +56,7 @@ describe("Abilities - Storm Drain", () => { const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = AbilityId.STORM_DRAIN; + game.field.mockAbility(enemy2, AbilityId.STORM_DRAIN); game.move.select(MoveId.AERIAL_ACE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); @@ -68,8 +69,7 @@ describe("Abilities - Storm Drain", () => { await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); const enemy2 = game.scene.getEnemyField()[1]; - - enemy2.summonData.ability = AbilityId.STORM_DRAIN; + game.field.mockAbility(enemy2, AbilityId.STORM_DRAIN); game.move.select(MoveId.WATER_GUN, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); @@ -85,8 +85,7 @@ describe("Abilities - Storm Drain", () => { const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - - enemy2.summonData.ability = AbilityId.STORM_DRAIN; + game.field.mockAbility(enemy2, AbilityId.STORM_DRAIN); game.move.select(MoveId.WATER_GUN, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); @@ -96,16 +95,15 @@ describe("Abilities - Storm Drain", () => { }); it("should redirect moves changed to water type via ability", async () => { - game.override.ability(AbilityId.LIQUID_VOICE).moveset(MoveId.PSYCHIC_NOISE); - await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MAGIKARP]); + game.override.ability(AbilityId.LIQUID_VOICE); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); const enemy1 = game.scene.getEnemyField()[0]; const enemy2 = game.scene.getEnemyField()[1]; - enemy2.summonData.ability = AbilityId.STORM_DRAIN; + game.field.mockAbility(enemy2, AbilityId.STORM_DRAIN); - game.move.select(MoveId.PSYCHIC_NOISE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); - game.move.select(MoveId.SPLASH, BattlerIndex.PLAYER_2); + game.move.use(MoveId.ROUND, BattlerIndex.PLAYER, BattlerIndex.ENEMY); await game.phaseInterceptor.to("BerryPhase"); expect(enemy1.isFullHp()).toBe(true); diff --git a/test/abilities/sturdy.test.ts b/test/abilities/sturdy.test.ts index e7b2c05040d..28d3098a420 100644 --- a/test/abilities/sturdy.test.ts +++ b/test/abilities/sturdy.test.ts @@ -1,10 +1,10 @@ -import type { EnemyPokemon } from "#app/field/pokemon"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; 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 type { EnemyPokemon } from "#field/pokemon"; +import { DamageAnimPhase } from "#phases/damage-anim-phase"; +import { MoveEndPhase } from "#phases/move-end-phase"; +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 95% rename from test/abilities/super_luck.test.ts rename to test/abilities/super-luck.test.ts index 60ed2534fe9..a0f5293b036 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"; diff --git a/test/abilities/supreme_overlord.test.ts b/test/abilities/supreme-overlord.test.ts similarity index 96% rename from test/abilities/supreme_overlord.test.ts rename to test/abilities/supreme-overlord.test.ts index 7143b590f68..a0f2d9050b3 100644 --- a/test/abilities/supreme_overlord.test.ts +++ b/test/abilities/supreme-overlord.test.ts @@ -1,13 +1,13 @@ -import { MoveId } from "#enums/move-id"; -import type Move from "#app/data/moves/move"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { SpeciesId } from "#enums/species-id"; import { BattlerIndex } from "#enums/battler-index"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import GameManager from "#test/testUtils/gameManager"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves } from "#app/data/data-lists"; describe("Abilities - Supreme Overlord", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/sweet_veil.test.ts b/test/abilities/sweet-veil.test.ts similarity index 90% rename from test/abilities/sweet_veil.test.ts rename to test/abilities/sweet-veil.test.ts index ed9cb20afcc..12eeae9f9c5 100644 --- a/test/abilities/sweet_veil.test.ts +++ b/test/abilities/sweet-veil.test.ts @@ -1,11 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { CommandPhase } from "#app/phases/command-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +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 { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -80,7 +79,6 @@ describe("Abilities - Sweet Veil", () => { expect(game.scene.getPlayerField().some(p => !!p.getTag(BattlerTagType.DROWSY))).toBe(true); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); diff --git a/test/abilities/synchronize.test.ts b/test/abilities/synchronize.test.ts index 030509ac4e6..c95ae1b7828 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"; diff --git a/test/abilities/tera_shell.test.ts b/test/abilities/tera-shell.test.ts similarity index 98% rename from test/abilities/tera_shell.test.ts rename to test/abilities/tera-shell.test.ts index a52a01862ff..385fabe1a54 100644 --- a/test/abilities/tera_shell.test.ts +++ b/test/abilities/tera-shell.test.ts @@ -1,8 +1,8 @@ -import { BattlerIndex } from "#enums/battler-index"; 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/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 70af864d413..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 f17bec159ab..4211234a451 100644 --- a/test/abilities/trace.test.ts +++ b/test/abilities/trace.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#app/enums/stat"; 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 { 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"; diff --git a/test/abilities/unburden.test.ts b/test/abilities/unburden.test.ts index fff37daff7b..686a6c20904 100644 --- a/test/abilities/unburden.test.ts +++ b/test/abilities/unburden.test.ts @@ -1,15 +1,15 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { StealHeldItemChanceAttr } from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; -import type Pokemon from "#app/field/pokemon"; -import type { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-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 type { Pokemon } from "#field/pokemon"; +import type { ContactHeldItemTransferChanceModifier } from "#modifiers/modifier"; +import { StealHeldItemChanceAttr } from "#moves/move"; +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/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 26de77d4643..01b573fe66c 100644 --- a/test/abilities/unseen_fist.test.ts +++ b/test/abilities/unseen-fist.test.ts @@ -1,12 +1,12 @@ -import { TurnEndPhase } from "#app/phases/turn-end-phase"; 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 { BerryPhase } from "#phases/berry-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { BerryPhase } from "#app/phases/berry-phase"; describe("Abilities - Unseen Fist", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/victory_star.test.ts b/test/abilities/victory-star.test.ts similarity index 93% rename from test/abilities/victory_star.test.ts rename to test/abilities/victory-star.test.ts index 4742dd96aa6..40611f6fbc1 100644 --- a/test/abilities/victory_star.test.ts +++ b/test/abilities/victory-star.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; 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 { TurnEndPhase } from "#phases/turn-end-phase"; +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 18764f94a6b..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 96% rename from test/abilities/volt_absorb.test.ts rename to test/abilities/volt-absorb.test.ts index 6bea70ee2a4..921d56f075b 100644 --- a/test/abilities/volt_absorb.test.ts +++ b/test/abilities/volt-absorb.test.ts @@ -1,13 +1,13 @@ -import { Stat } from "#enums/stat"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; 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 GameManager from "#test/testUtils/gameManager"; +import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { BattlerIndex } from "#enums/battler-index"; -import { SpeciesId } from "#enums/species-id"; // See also: TypeImmunityAbAttr describe("Abilities - Volt Absorb", () => { diff --git a/test/abilities/wandering_spirit.test.ts b/test/abilities/wandering-spirit.test.ts similarity index 95% rename from test/abilities/wandering_spirit.test.ts rename to test/abilities/wandering-spirit.test.ts index 950cec6d27c..63c2550b198 100644 --- a/test/abilities/wandering_spirit.test.ts +++ b/test/abilities/wandering-spirit.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#app/enums/stat"; 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 { 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"; 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 455a2e368c4..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 2df06ec1a21..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 98% rename from test/abilities/wimp_out.test.ts rename to test/abilities/wimp-out.test.ts index 1db0b80fcd0..a1c19a12fd4 100644 --- a/test/abilities/wimp_out.test.ts +++ b/test/abilities/wimp-out.test.ts @@ -1,16 +1,16 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { allMoves } from "#app/data/data-lists"; -import GameManager from "#test/testUtils/gameManager"; -import { toDmgValue } from "#app/utils/common"; +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 { 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 { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; +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"; @@ -108,7 +108,7 @@ describe("Abilities - Wimp Out", () => { }); it("Trapping moves do not prevent Wimp Out from activating.", async () => { - game.override.enemyMoveset([MoveId.SPIRIT_SHACKLE]).startingLevel(53).enemyLevel(45); + game.override.enemyMoveset([MoveId.SPIRIT_SHACKLE]).startingLevel(1).passiveAbility(AbilityId.STURDY); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.move.select(MoveId.SPLASH); @@ -123,7 +123,7 @@ describe("Abilities - Wimp Out", () => { }); it("If this Ability activates due to being hit by U-turn or Volt Switch, the user of that move will not be switched out.", async () => { - game.override.startingLevel(95).enemyMoveset([MoveId.U_TURN]); + game.override.startingLevel(1).enemyMoveset([MoveId.U_TURN]).passiveAbility(AbilityId.STURDY); await game.classicMode.startBattle([SpeciesId.WIMPOD, SpeciesId.TYRUNT]); game.move.select(MoveId.SPLASH); diff --git a/test/abilities/wind_power.test.ts b/test/abilities/wind-power.test.ts similarity index 94% rename from test/abilities/wind_power.test.ts rename to test/abilities/wind-power.test.ts index 8e657997008..377a8052e13 100644 --- a/test/abilities/wind_power.test.ts +++ b/test/abilities/wind-power.test.ts @@ -1,9 +1,9 @@ -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; 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 { TurnEndPhase } from "#phases/turn-end-phase"; +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/wind_rider.test.ts b/test/abilities/wind-rider.test.ts similarity index 98% rename from test/abilities/wind_rider.test.ts rename to test/abilities/wind-rider.test.ts index ea1747fcae9..be30acb0f64 100644 --- a/test/abilities/wind_rider.test.ts +++ b/test/abilities/wind-rider.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/abilities/wonder_skin.test.ts b/test/abilities/wonder-skin.test.ts similarity index 93% rename from test/abilities/wonder_skin.test.ts rename to test/abilities/wonder-skin.test.ts index 177b97ae3b7..8f14bf10101 100644 --- a/test/abilities/wonder_skin.test.ts +++ b/test/abilities/wonder-skin.test.ts @@ -1,9 +1,9 @@ -import { allMoves } from "#app/data/data-lists"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +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 { MoveEffectPhase } from "#phases/move-effect-phase"; +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 96% rename from test/abilities/zen_mode.test.ts rename to test/abilities/zen-mode.test.ts index 5df2b3a6bc7..24d53bda7b6 100644 --- a/test/abilities/zen_mode.test.ts +++ b/test/abilities/zen-mode.test.ts @@ -1,9 +1,9 @@ -import { Status } from "#app/data/status-effect"; +import { Status } from "#data/status-effect"; 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/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 7d0128a4dbc..cb0fe75d11b 100644 --- a/test/abilities/zero_to_hero.test.ts +++ b/test/abilities/zero-to-hero.test.ts @@ -1,11 +1,11 @@ -import { Status } from "#app/data/status-effect"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { Status } from "#data/status-effect"; 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 { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Abilities - ZERO TO HERO", () => { diff --git a/test/account.test.ts b/test/account.test.ts index 77368b0b64c..52d52778dad 100644 --- a/test/account.test.ts +++ b/test/account.test.ts @@ -1,7 +1,7 @@ -import * as bypassLogin from "#app/global-vars/bypass-login"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import { describe, expect, it, vi } from "vitest"; +import { pokerogueApi } from "#api/pokerogue-api"; import { initLoggedInUser, loggedInUser, updateUserInfo } from "#app/account"; +import * as bypassLogin from "#app/global-vars/bypass-login"; +import { describe, expect, it, vi } from "vitest"; describe("account", () => { describe("initLoggedInUser", () => { diff --git a/test/achievements/achievement.test.ts b/test/achievements/achievement.test.ts index 5a74c77fe6a..9060d6213cc 100644 --- a/test/achievements/achievement.test.ts +++ b/test/achievements/achievement.test.ts @@ -1,20 +1,20 @@ -import { TurnHeldItemTransferModifier } from "#app/modifier/modifier"; +import type { BattleScene } from "#app/battle-scene"; +import { TurnHeldItemTransferModifier } from "#modifiers/modifier"; import { Achv, AchvTier, + achvs, DamageAchv, HealAchv, LevelAchv, ModifierAchv, MoneyAchv, RibbonAchv, - achvs, -} from "#app/system/achv"; -import { NumberHolder } from "#app/utils/common"; -import GameManager from "#test/testUtils/gameManager"; +} from "#system/achv"; +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"; -import type BattleScene from "#app/battle-scene"; describe("check some Achievement related stuff", () => { it("should check Achievement creation", () => { diff --git a/test/arena/arena_gravity.test.ts b/test/arena/arena-gravity.test.ts similarity index 98% rename from test/arena/arena_gravity.test.ts rename to test/arena/arena-gravity.test.ts index 36fe0b58308..b08dcf0c9b0 100644 --- a/test/arena/arena_gravity.test.ts +++ b/test/arena/arena-gravity.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; 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 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/grassy_terrain.test.ts b/test/arena/grassy-terrain.test.ts similarity index 94% rename from test/arena/grassy_terrain.test.ts rename to test/arena/grassy-terrain.test.ts index 5f78d8f801d..d87498cdd23 100644 --- a/test/arena/grassy_terrain.test.ts +++ b/test/arena/grassy-terrain.test.ts @@ -1,8 +1,8 @@ -import { allMoves } from "#app/data/data-lists"; +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..82232cd8d05 --- /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.scene.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 88% rename from test/arena/weather_fog.test.ts rename to test/arena/weather-fog.test.ts index e6984e13bd0..8dd906d2df3 100644 --- a/test/arena/weather_fog.test.ts +++ b/test/arena/weather-fog.test.ts @@ -1,10 +1,10 @@ -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; 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 { MoveEffectPhase } from "#phases/move-effect-phase"; +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 97% rename from test/arena/weather_hail.test.ts rename to test/arena/weather-hail.test.ts index 27cf46fa9f2..b3ff8de3d42 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"; diff --git a/test/arena/weather_sandstorm.test.ts b/test/arena/weather-sandstorm.test.ts similarity index 96% rename from test/arena/weather_sandstorm.test.ts rename to test/arena/weather-sandstorm.test.ts index 61001abe1f4..f5cf44458c5 100644 --- a/test/arena/weather_sandstorm.test.ts +++ b/test/arena/weather-sandstorm.test.ts @@ -1,9 +1,9 @@ import { AbilityId } from "#enums/ability-id"; -import { Stat } from "#app/enums/stat"; 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/arena/weather_strong_winds.test.ts b/test/arena/weather-strong-winds.test.ts similarity index 92% rename from test/arena/weather_strong_winds.test.ts rename to test/arena/weather-strong-winds.test.ts index d0d256816eb..8d2d1ee0a75 100644 --- a/test/arena/weather_strong_winds.test.ts +++ b/test/arena/weather-strong-winds.test.ts @@ -1,10 +1,10 @@ -import { allMoves } from "#app/data/data-lists"; -import { StatusEffect } from "#app/enums/status-effect"; -import { TurnStartPhase } from "#app/phases/turn-start-phase"; +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 { StatusEffect } from "#enums/status-effect"; +import { TurnStartPhase } from "#phases/turn-start-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -86,7 +86,7 @@ describe("Weather - Strong Winds", () => { const enemy = game.scene.getEnemyPokemon()!; enemy.hp = 1; - game.move.select(MoveId.SPLASH); + game.move.use(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); expect(game.scene.arena.weather?.weatherType).toBeUndefined(); diff --git a/test/battle-scene.test.ts b/test/battle-scene.test.ts index 44f1364441b..0ff4b03a50f 100644 --- a/test/battle-scene.test.ts +++ b/test/battle-scene.test.ts @@ -1,6 +1,6 @@ import { LoadingScene } from "#app/loading-scene"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; describe("BattleScene", () => { let phaserGame: Phaser.Game; diff --git a/test/battle/ability_swap.test.ts b/test/battle/ability-swap.test.ts similarity index 94% rename from test/battle/ability_swap.test.ts rename to test/battle/ability-swap.test.ts index 3dd92576e3b..4ce60e1f0b2 100644 --- a/test/battle/ability_swap.test.ts +++ b/test/battle/ability-swap.test.ts @@ -1,9 +1,9 @@ -import { allAbilities } from "#app/data/data-lists"; -import { Stat } from "#app/enums/stat"; +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 { 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"; diff --git a/test/battle/battle-order.test.ts b/test/battle/battle-order.test.ts index 114592c8c8e..47afb582a5a 100644 --- a/test/battle/battle-order.test.ts +++ b/test/battle/battle-order.test.ts @@ -1,10 +1,10 @@ -import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { SelectTargetPhase } from "#app/phases/select-target-phase"; -import { TurnStartPhase } from "#app/phases/turn-start-phase"; 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 { EnemyCommandPhase } from "#phases/enemy-command-phase"; +import { SelectTargetPhase } from "#phases/select-target-phase"; +import { TurnStartPhase } from "#phases/turn-start-phase"; +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/battle.test.ts b/test/battle/battle.test.ts index bf2c3968aa6..ff5090e5f8d 100644 --- a/test/battle/battle.test.ts +++ b/test/battle/battle.test.ts @@ -1,32 +1,32 @@ -import { allSpecies } from "#app/data/data-lists"; -import { Stat } from "#enums/stat"; import { getGameMode } from "#app/game-mode"; -import { GameModes } from "#enums/game-modes"; -import { BattleEndPhase } from "#app/phases/battle-end-phase"; -import { CommandPhase } from "#app/phases/command-phase"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { LoginPhase } from "#app/phases/login-phase"; -import { NextEncounterPhase } from "#app/phases/next-encounter-phase"; -import { SelectGenderPhase } from "#app/phases/select-gender-phase"; -import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import { SummonPhase } from "#app/phases/summon-phase"; -import { SwitchPhase } from "#app/phases/switch-phase"; -import { TitlePhase } from "#app/phases/title-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import GameManager from "#test/testUtils/gameManager"; -import { generateStarter } from "#test/testUtils/gameManagerUtils"; -import { UiMode } from "#enums/ui-mode"; +import { allSpecies } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; +import { BiomeId } from "#enums/biome-id"; +import { GameModes } from "#enums/game-modes"; import { MoveId } from "#enums/move-id"; import { PlayerGender } from "#enums/player-gender"; import { SpeciesId } from "#enums/species-id"; +import { Stat } from "#enums/stat"; +import { UiMode } from "#enums/ui-mode"; +import { BattleEndPhase } from "#phases/battle-end-phase"; +import { CommandPhase } from "#phases/command-phase"; +import { DamageAnimPhase } from "#phases/damage-anim-phase"; +import { EncounterPhase } from "#phases/encounter-phase"; +import { EnemyCommandPhase } from "#phases/enemy-command-phase"; +import { LoginPhase } from "#phases/login-phase"; +import { NextEncounterPhase } from "#phases/next-encounter-phase"; +import { SelectGenderPhase } from "#phases/select-gender-phase"; +import { SelectStarterPhase } from "#phases/select-starter-phase"; +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/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"; -import { BiomeId } from "#enums/biome-id"; -describe("Test Battle Phase", () => { +describe("Phase - Battle Phase", () => { let phaserGame: Phaser.Game; let game: GameManager; @@ -111,7 +111,7 @@ describe("Test 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; @@ -197,47 +197,25 @@ describe("Test Battle Phase", () => { await game.phaseInterceptor.runFrom(SelectGenderPhase).to(SummonPhase); }); - it("2vs1", async () => { - game.override.battleStyle("single"); - game.override.enemySpecies(SpeciesId.MIGHTYENA); - game.override.enemyAbility(AbilityId.HYDRATION); - game.override.ability(AbilityId.HYDRATION); - await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); - expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); + it.each([ + { name: "1v1", double: false, qty: 1 }, + { name: "2v1", double: false, qty: 2 }, + { name: "2v2", double: true, qty: 2 }, + { name: "4v2", double: true, qty: 4 }, + ])("should not crash when starting $name battle", async ({ double, qty }) => { + game.override + .battleStyle(double ? "double" : "single") + .enemySpecies(SpeciesId.MIGHTYENA) + .enemyAbility(AbilityId.HYDRATION) + .ability(AbilityId.HYDRATION); - it("1vs1", async () => { - game.override.battleStyle("single"); - game.override.enemySpecies(SpeciesId.MIGHTYENA); - game.override.enemyAbility(AbilityId.HYDRATION); - game.override.ability(AbilityId.HYDRATION); - await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); + await game.classicMode.startBattle( + [SpeciesId.BLASTOISE, SpeciesId.CHARIZARD, SpeciesId.DARKRAI, SpeciesId.GABITE].slice(0, qty), + ); - it("2vs2", async () => { - game.override.battleStyle("double"); - game.override.enemySpecies(SpeciesId.MIGHTYENA); - game.override.enemyAbility(AbilityId.HYDRATION); - game.override.ability(AbilityId.HYDRATION); - game.override.startingWave(3); - await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); - - it("4vs2", async () => { - game.override.battleStyle("double"); - game.override.enemySpecies(SpeciesId.MIGHTYENA); - game.override.enemyAbility(AbilityId.HYDRATION); - game.override.ability(AbilityId.HYDRATION); - game.override.startingWave(3); - await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD, SpeciesId.DARKRAI, SpeciesId.GABITE]); - expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); + expect(game.scene.phaseManager.getCurrentPhase()).toBeInstanceOf(CommandPhase); + }); it("kill opponent pokemon", async () => { const moveToUse = MoveId.SPLASH; diff --git a/test/battle/damage_calculation.test.ts b/test/battle/damage-calculation.test.ts similarity index 95% rename from test/battle/damage_calculation.test.ts rename to test/battle/damage-calculation.test.ts index 19cdf6b9237..ca01830abd0 100644 --- a/test/battle/damage_calculation.test.ts +++ b/test/battle/damage-calculation.test.ts @@ -1,11 +1,10 @@ -import { allMoves } from "#app/data/data-lists"; -import type { EnemyPersistentModifier } from "#app/modifier/modifier"; -import { modifierTypes } from "#app/data/data-lists"; +import { allMoves, modifierTypes } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; 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 type { EnemyPersistentModifier } from "#modifiers/modifier"; +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/double_battle.test.ts b/test/battle/double-battle.test.ts similarity index 93% rename from test/battle/double_battle.test.ts rename to test/battle/double-battle.test.ts index 8e606a99ae0..ad385a1cecf 100644 --- a/test/battle/double_battle.test.ts +++ b/test/battle/double-battle.test.ts @@ -1,13 +1,13 @@ -import { Status } from "#app/data/status-effect"; -import { AbilityId } from "#enums/ability-id"; import { getGameMode } from "#app/game-mode"; +import { Status } from "#data/status-effect"; +import { AbilityId } from "#enums/ability-id"; import { GameModes } from "#enums/game-modes"; -import { BattleEndPhase } from "#app/phases/battle-end-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; 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 { BattleEndPhase } from "#phases/battle-end-phase"; +import { TurnInitPhase } from "#phases/turn-init-phase"; +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 99% rename from test/battle/inverse_battle.test.ts rename to test/battle/inverse-battle.test.ts index 66cab3e2d84..9ba2df9bc44 100644 --- a/test/battle/inverse_battle.test.ts +++ b/test/battle/inverse-battle.test.ts @@ -1,12 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { PokemonType } from "#enums/pokemon-type"; import { AbilityId } from "#enums/ability-id"; import { ArenaTagType } from "#enums/arena-tag-type"; +import { BattlerIndex } from "#enums/battler-index"; import { Challenges } from "#enums/challenges"; 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"; 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 4988e526b1e..d22931bfea5 100644 --- a/test/battle/special_battle.test.ts +++ b/test/battle/special-battle.test.ts @@ -1,8 +1,8 @@ -import { UiMode } from "#enums/ui-mode"; 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 { UiMode } from "#enums/ui-mode"; +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 84% rename from test/battlerTags/octolock.test.ts rename to test/battler-tags/octolock.test.ts index d0214f495fc..29024f177cb 100644 --- a/test/battlerTags/octolock.test.ts +++ b/test/battler-tags/octolock.test.ts @@ -1,10 +1,10 @@ -import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; -import type Pokemon from "#app/field/pokemon"; -import { OctolockTag, TrappedTag } from "#app/data/battler-tags"; +import { OctolockTag, TrappedTag } from "#data/battler-tags"; import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; +import type { Pokemon } from "#field/pokemon"; +import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; +import { GameManager } from "#test/test-utils/game-manager"; +import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; describe("BattlerTag - OctolockTag", () => { describe("lapse behavior", () => { diff --git a/test/battlerTags/stockpiling.test.ts b/test/battler-tags/stockpiling.test.ts similarity index 92% rename from test/battlerTags/stockpiling.test.ts rename to test/battler-tags/stockpiling.test.ts index 37873db9eab..a4bed560687 100644 --- a/test/battlerTags/stockpiling.test.ts +++ b/test/battler-tags/stockpiling.test.ts @@ -1,10 +1,10 @@ -import { StockpilingTag } from "#app/data/battler-tags"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonSummonData } from "#app/field/pokemon"; import * as messages from "#app/messages"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; +import { StockpilingTag } from "#data/battler-tags"; +import { PokemonSummonData } from "#data/pokemon-data"; import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; +import type { Pokemon } from "#field/pokemon"; +import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; beforeEach(() => { @@ -101,7 +101,8 @@ describe("BattlerTag - StockpilingTag", () => { }); describe("stack limit, stat tracking, and removal", () => { - it("can be added up to three times, even when one stat does not change", async () => { + // TODO: do we even want this file at all? regardless, this test is broken and is also likely unimportant + it.todo("can be added up to three times, even when one stat does not change", async () => { const mockPokemon = { summonData: new PokemonSummonData(), getBattlerIndex: () => 0, @@ -150,7 +151,7 @@ describe("BattlerTag - StockpilingTag", () => { expect(subject.stockpiledCount).toBe(3); vi.spyOn(game.scene.phaseManager, "unshiftPhase").mockImplementationOnce(_phase => { - throw new Error("Should not be called a fourth time"); + expect.fail("Should not be called a fourth time"); }); // fourth stack should not be applied diff --git a/test/battlerTags/substitute.test.ts b/test/battler-tags/substitute.test.ts similarity index 94% rename from test/battlerTags/substitute.test.ts rename to test/battler-tags/substitute.test.ts index 06aedab19f4..7ae60ad1408 100644 --- a/test/battlerTags/substitute.test.ts +++ b/test/battler-tags/substitute.test.ts @@ -1,16 +1,17 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import type { PokemonTurnData, TurnMove } from "#app/field/pokemon"; -import type Pokemon from "#app/field/pokemon"; -import { MoveResult } from "#enums/move-result"; -import type BattleScene from "#app/battle-scene"; -import { BindTag, SubstituteTag } from "#app/data/battler-tags"; +import type { BattleScene } from "#app/battle-scene"; +import * as messages from "#app/messages"; +import { BindTag, SubstituteTag } from "#data/battler-tags"; +import { allMoves } from "#data/data-lists"; +import type { PokemonTurnData } from "#data/pokemon-data"; import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import { MoveId } from "#enums/move-id"; -import { PokemonAnimType } from "#app/enums/pokemon-anim-type"; -import * as messages from "#app/messages"; -import { allMoves } from "#app/data/data-lists"; -import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import GameManager from "#test/testUtils/gameManager"; +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/test-utils/game-manager"; +import type { TurnMove } from "#types/turn-move"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("BattlerTag - SubstituteTag", () => { let phaserGame: Phaser.Game; diff --git a/test/boss-pokemon.test.ts b/test/boss-pokemon.test.ts index 6eb6d262c56..0a7c71c95e7 100644 --- a/test/boss-pokemon.test.ts +++ b/test/boss-pokemon.test.ts @@ -1,12 +1,12 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import { EFFECTIVE_STATS } from "#app/enums/stat"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import { toDmgValue } from "#app/utils/common"; +import { SpeciesId } from "#enums/species-id"; +import { EFFECTIVE_STATS } from "#enums/stat"; +import type { EnemyPokemon } from "#field/pokemon"; +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"; describe("Boss Pokemon / Shields", () => { let phaserGame: Phaser.Game; diff --git a/test/daily_mode.test.ts b/test/daily-mode.test.ts similarity index 91% rename from test/daily_mode.test.ts rename to test/daily-mode.test.ts index 41dcf51ccf6..34a8da80478 100644 --- a/test/daily_mode.test.ts +++ b/test/daily-mode.test.ts @@ -1,14 +1,12 @@ +import { pokerogueApi } from "#api/pokerogue-api"; import { BiomeId } from "#enums/biome-id"; import { MoveId } from "#enums/move-id"; -import { MapModifier } from "#app/modifier/modifier"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; +import { MapModifier } from "#modifiers/modifier"; +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"; -import GameManager from "#test/testUtils/gameManager"; - -//const TIMEOUT = 20 * 1000; describe("Daily Mode", () => { let phaserGame: Phaser.Game; diff --git a/test/data/splash_messages.test.ts b/test/data/splash-messages.test.ts similarity index 95% rename from test/data/splash_messages.test.ts rename to test/data/splash-messages.test.ts index 773b2715825..9763d85a583 100644 --- a/test/data/splash_messages.test.ts +++ b/test/data/splash-messages.test.ts @@ -1,6 +1,6 @@ -import { getSplashMessages } from "#app/data/splash-messages"; -import { describe, expect, it, vi, afterEach, beforeEach } from "vitest"; import * as Constants from "#app/constants"; +import { getSplashMessages } from "#data/splash-messages"; +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; describe("Data - Splash Messages", () => { it("should contain at least 15 splash messages", () => { diff --git a/test/data/status_effect.test.ts b/test/data/status-effect.test.ts similarity index 98% rename from test/data/status_effect.test.ts rename to test/data/status-effect.test.ts index e697ee3f1c7..ebfd9066b3c 100644 --- a/test/data/status_effect.test.ts +++ b/test/data/status-effect.test.ts @@ -1,18 +1,18 @@ import { - Status, getStatusEffectActivationText, getStatusEffectDescriptor, getStatusEffectHealText, getStatusEffectObtainText, getStatusEffectOverlapText, -} from "#app/data/status-effect"; -import { MoveResult } from "#enums/move-result"; + Status, +} from "#data/status-effect"; 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 { 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"; diff --git a/test/eggs/egg.test.ts b/test/eggs/egg.test.ts index 0d5d09c5179..8b47e68f402 100644 --- a/test/eggs/egg.test.ts +++ b/test/eggs/egg.test.ts @@ -1,13 +1,13 @@ -import { speciesEggTiers } from "#app/data/balance/species-egg-tiers"; -import { Egg, getLegendaryGachaSpeciesForTimestamp, getValidLegendaryGachaSpecies } from "#app/data/egg"; -import { allSpecies } from "#app/data/data-lists"; -import { EggSourceType } from "#app/enums/egg-source-types"; -import { EggTier } from "#app/enums/egg-type"; -import { VariantTier } from "#app/enums/variant-tier"; -import EggData from "#app/system/egg-data"; -import * as Utils from "#app/utils/common"; +import { speciesEggTiers } from "#balance/species-egg-tiers"; +import { allSpecies } from "#data/data-lists"; +import { Egg, getLegendaryGachaSpeciesForTimestamp, getValidLegendaryGachaSpecies } 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 { VariantTier } from "#enums/variant-tier"; +import { EggData } from "#system/egg-data"; +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 a58dfa9beba..484426f1b76 100644 --- a/test/eggs/manaphy-egg.test.ts +++ b/test/eggs/manaphy-egg.test.ts @@ -1,8 +1,8 @@ -import { Egg } from "#app/data/egg"; -import { EggSourceType } from "#app/enums/egg-source-types"; -import { EggTier } from "#app/enums/egg-type"; +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 98% rename from test/endless_boss.test.ts rename to test/endless-boss.test.ts index d219cacf317..707d164d4d0 100644 --- a/test/endless_boss.test.ts +++ b/test/endless-boss.test.ts @@ -1,8 +1,8 @@ import { BiomeId } from "#enums/biome-id"; -import { SpeciesId } from "#enums/species-id"; import { GameModes } from "#enums/game-modes"; +import { SpeciesId } from "#enums/species-id"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; const EndlessBossWave = { Minor: 250, diff --git a/test/enemy_command.test.ts b/test/enemy-command.test.ts similarity index 91% rename from test/enemy_command.test.ts rename to test/enemy-command.test.ts index fabb1f1fdb0..12281179e0d 100644 --- a/test/enemy_command.test.ts +++ b/test/enemy-command.test.ts @@ -1,13 +1,13 @@ -import type BattleScene from "#app/battle-scene"; -import { allMoves } from "#app/data/data-lists"; -import { MoveCategory } from "#enums/MoveCategory"; +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/move-category"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import type { EnemyPokemon } from "#app/field/pokemon"; -import { AiType } from "#enums/ai-type"; -import { randSeedInt } from "#app/utils/common"; -import GameManager from "#test/testUtils/gameManager"; +import type { EnemyPokemon } from "#field/pokemon"; +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"; diff --git a/test/escape-calculations.test.ts b/test/escape-calculations.test.ts index 2cc0934f7c1..f1bb955582a 100644 --- a/test/escape-calculations.test.ts +++ b/test/escape-calculations.test.ts @@ -1,10 +1,9 @@ -import { AttemptRunPhase } from "#app/phases/attempt-run-phase"; -import type { CommandPhase } from "#app/phases/command-phase"; -import { Command } from "#enums/command"; -import { NumberHolder } from "#app/utils/common"; import { AbilityId } from "#enums/ability-id"; +import { Command } from "#enums/command"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { AttemptRunPhase } from "#phases/attempt-run-phase"; +import type { CommandPhase } from "#phases/command-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -45,8 +44,6 @@ describe("Escape chance calculations", () => { await game.phaseInterceptor.to(AttemptRunPhase, false); const phase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; - const escapePercentage = new NumberHolder(0); - // this sets up an object for multiple attempts. The pokemonSpeedRatio is your speed divided by the enemy speed, the escapeAttempts are the number of escape attempts and the expectedEscapeChance is the chance it should be escaping const escapeChances: { pokemonSpeedRatio: number; @@ -91,8 +88,8 @@ describe("Escape chance calculations", () => { 20, escapeChances[i].pokemonSpeedRatio * enemySpeed, ]); - phase.attemptRunAway(playerPokemon, enemyField, escapePercentage); - expect(escapePercentage.value).toBe(escapeChances[i].expectedEscapeChance); + const chance = phase.calculateEscapeChance(game.scene.currentBattle.escapeAttempts); + expect(chance).toBe(escapeChances[i].expectedEscapeChance); } }); @@ -118,8 +115,6 @@ describe("Escape chance calculations", () => { await game.phaseInterceptor.to(AttemptRunPhase, false); const phase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; - const escapePercentage = new NumberHolder(0); - // this sets up an object for multiple attempts. The pokemonSpeedRatio is your speed divided by the enemy speed, the escapeAttempts are the number of escape attempts and the expectedEscapeChance is the chance it should be escaping const escapeChances: { pokemonSpeedRatio: number; @@ -172,9 +167,9 @@ describe("Escape chance calculations", () => { 20, escapeChances[i].pokemonSpeedRatio * totalEnemySpeed - playerPokemon[0].stats[5], ]); - phase.attemptRunAway(playerPokemon, enemyField, escapePercentage); + const chance = phase.calculateEscapeChance(game.scene.currentBattle.escapeAttempts); // checks to make sure the escape values are the same - expect(escapePercentage.value).toBe(escapeChances[i].expectedEscapeChance); + expect(chance).toBe(escapeChances[i].expectedEscapeChance); // checks to make sure the sum of the player's speed for all pokemon is equal to the appropriate ratio of the total enemy speed expect(playerPokemon[0].stats[5] + playerPokemon[1].stats[5]).toBe( escapeChances[i].pokemonSpeedRatio * totalEnemySpeed, @@ -197,7 +192,6 @@ describe("Escape chance calculations", () => { await game.phaseInterceptor.to(AttemptRunPhase, false); const phase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; - const escapePercentage = new NumberHolder(0); // this sets up an object for multiple attempts. The pokemonSpeedRatio is your speed divided by the enemy speed, the escapeAttempts are the number of escape attempts and the expectedEscapeChance is the chance it should be escaping const escapeChances: { @@ -256,8 +250,8 @@ describe("Escape chance calculations", () => { 20, escapeChances[i].pokemonSpeedRatio * enemySpeed, ]); - phase.attemptRunAway(playerPokemon, enemyField, escapePercentage); - expect(escapePercentage.value).toBe(escapeChances[i].expectedEscapeChance); + const chance = phase.calculateEscapeChance(game.scene.currentBattle.escapeAttempts); + expect(chance).toBe(escapeChances[i].expectedEscapeChance); } }); @@ -283,7 +277,6 @@ describe("Escape chance calculations", () => { await game.phaseInterceptor.to(AttemptRunPhase, false); const phase = game.scene.phaseManager.getCurrentPhase() as AttemptRunPhase; - const escapePercentage = new NumberHolder(0); // this sets up an object for multiple attempts. The pokemonSpeedRatio is your speed divided by the enemy speed, the escapeAttempts are the number of escape attempts and the expectedEscapeChance is the chance it should be escaping const escapeChances: { @@ -349,9 +342,9 @@ describe("Escape chance calculations", () => { 20, escapeChances[i].pokemonSpeedRatio * totalEnemySpeed - playerPokemon[0].stats[5], ]); - phase.attemptRunAway(playerPokemon, enemyField, escapePercentage); + const chance = phase.calculateEscapeChance(game.scene.currentBattle.escapeAttempts); // checks to make sure the escape values are the same - expect(escapePercentage.value).toBe(escapeChances[i].expectedEscapeChance); + expect(chance).toBe(escapeChances[i].expectedEscapeChance); // checks to make sure the sum of the player's speed for all pokemon is equal to the appropriate ratio of the total enemy speed expect(playerPokemon[0].stats[5] + playerPokemon[1].stats[5]).toBe( escapeChances[i].pokemonSpeedRatio * totalEnemySpeed, diff --git a/test/evolution.test.ts b/test/evolution.test.ts index c4bcca785c1..172a4e5d3aa 100644 --- a/test/evolution.test.ts +++ b/test/evolution.test.ts @@ -1,13 +1,9 @@ -import { - pokemonEvolutions, - SpeciesFormEvolution, - SpeciesWildEvolutionDelay, -} from "#app/data/balance/pokemon-evolutions"; +import { pokemonEvolutions, SpeciesFormEvolution, SpeciesWildEvolutionDelay } from "#balance/pokemon-evolutions"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import * as Utils from "#app/utils/common"; -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"; diff --git a/test/field/pokemon-id-checks.test.ts b/test/field/pokemon-id-checks.test.ts index 4023b8d73ad..3a648802a1d 100644 --- a/test/field/pokemon-id-checks.test.ts +++ b/test/field/pokemon-id-checks.test.ts @@ -1,13 +1,13 @@ -import type Pokemon from "#app/field/pokemon"; -import { MoveId } from "#enums/move-id"; import { AbilityId } from "#enums/ability-id"; -import { SpeciesId } from "#enums/species-id"; import { BattleType } from "#enums/battle-type"; +import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import type { Pokemon } from "#field/pokemon"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { BattlerIndex } from "#enums/battler-index"; describe("Field - Pokemon ID Checks", () => { let phaserGame: Phaser.Game; diff --git a/test/field/pokemon.test.ts b/test/field/pokemon.test.ts index c6524e7397f..baa50556473 100644 --- a/test/field/pokemon.test.ts +++ b/test/field/pokemon.test.ts @@ -1,11 +1,11 @@ -import { SpeciesId } from "#enums/species-id"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { PokeballType } from "#enums/pokeball"; -import type BattleScene from "#app/battle-scene"; +import type { BattleScene } from "#app/battle-scene"; +import { CustomPokemonData } from "#data/pokemon-data"; import { MoveId } from "#enums/move-id"; +import { PokeballType } from "#enums/pokeball"; import { PokemonType } from "#enums/pokemon-type"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; +import { SpeciesId } from "#enums/species-id"; +import { GameManager } from "#test/test-utils/game-manager"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Spec - Pokemon", () => { let phaserGame: Phaser.Game; diff --git a/test/final_boss.test.ts b/test/final-boss.test.ts similarity index 80% rename from test/final_boss.test.ts rename to test/final-boss.test.ts index 071f83285e7..2180979899a 100644 --- a/test/final_boss.test.ts +++ b/test/final-boss.test.ts @@ -1,11 +1,11 @@ -import { GameModes } from "#enums/game-modes"; -import { TurnHeldItemTransferModifier } from "#app/modifier/modifier"; import { AbilityId } from "#enums/ability-id"; import { BiomeId } from "#enums/biome-id"; +import { GameModes } from "#enums/game-modes"; 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 { TurnHeldItemTransferModifier } from "#modifiers/modifier"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; const FinalWave = { @@ -29,7 +29,6 @@ describe("Final Boss", () => { .startingBiome(BiomeId.END) .criticalHits(false) .enemyMoveset(MoveId.SPLASH) - .moveset([MoveId.SPLASH, MoveId.WILL_O_WISP, MoveId.DRAGON_PULSE]) .startingLevel(10000); }); @@ -63,33 +62,31 @@ describe("Final Boss", () => { expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(SpeciesId.ETERNATUS); }); - it("should not have passive enabled on Eternatus", async () => { + 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()!; + expect(eternatus.formIndex).toBe(0); + expect(eternatus.bossSegments).toBe(4); + expect(eternatus.bossSegmentIndex).toBe(3); expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus.hasPassive()).toBe(false); }); it("should change form on direct hit down to last boss fragment", async () => { await game.runToFinalBossEncounter([SpeciesId.KYUREM], GameModes.CLASSIC); - await game.phaseInterceptor.to("CommandPhase"); - // Eternatus phase 1 + // phase 1 const eternatus = game.scene.getEnemyPokemon()!; const phase1Hp = eternatus.getMaxHp(); - expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus.formIndex).toBe(0); - expect(eternatus.bossSegments).toBe(4); - expect(eternatus.bossSegmentIndex).toBe(3); - game.move.select(MoveId.DRAGON_PULSE); + game.move.use(MoveId.DRAGON_PULSE); await game.toNextTurn(); - // Eternatus phase 2: changed form, healed and restored its shields + // Eternatus phase 2: changed form, healed fully and restored its shields expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus.hp).toBeGreaterThan(phase1Hp); expect(eternatus.hp).toBe(eternatus.getMaxHp()); + expect(eternatus.getMaxHp()).toBeGreaterThan(phase1Hp); expect(eternatus.formIndex).toBe(1); expect(eternatus.bossSegments).toBe(5); expect(eternatus.bossSegmentIndex).toBe(4); @@ -100,19 +97,13 @@ describe("Final Boss", () => { it("should change form on status damage down to last boss fragment", async () => { game.override.ability(AbilityId.NO_GUARD); - - await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.CLASSIC); - await game.phaseInterceptor.to("CommandPhase"); + await game.runToFinalBossEncounter([SpeciesId.SALAZZLE], GameModes.CLASSIC); // Eternatus phase 1 const eternatus = game.scene.getEnemyPokemon()!; const phase1Hp = eternatus.getMaxHp(); - expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus.formIndex).toBe(0); - expect(eternatus.bossSegments).toBe(4); - expect(eternatus.bossSegmentIndex).toBe(3); - game.move.select(MoveId.WILL_O_WISP); + game.move.use(MoveId.WILL_O_WISP); await game.toNextTurn(); expect(eternatus.status?.effect).toBe(StatusEffect.BURN); @@ -120,19 +111,19 @@ describe("Final Boss", () => { const lastShieldHp = Math.ceil(phase1Hp / eternatus.bossSegments); // Stall until the burn is one hit away from breaking the last shield while (eternatus.hp - tickDamage > lastShieldHp) { - game.move.select(MoveId.SPLASH); + game.move.use(MoveId.SPLASH); await game.toNextTurn(); } expect(eternatus.bossSegmentIndex).toBe(1); - game.move.select(MoveId.SPLASH); + game.move.use(MoveId.SPLASH); await game.toNextTurn(); // Eternatus phase 2: changed form, healed and restored its shields expect(eternatus.hp).toBeGreaterThan(phase1Hp); expect(eternatus.hp).toBe(eternatus.getMaxHp()); - expect(eternatus.status).toBeFalsy(); + expect(eternatus.status?.effect).toBeUndefined(); expect(eternatus.formIndex).toBe(1); expect(eternatus.bossSegments).toBe(5); expect(eternatus.bossSegmentIndex).toBe(4); 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 c5ce1e02852..56af49b3f12 100644 --- a/test/game-mode.test.ts +++ b/test/game-mode.test.ts @@ -1,9 +1,9 @@ import type { GameMode } from "#app/game-mode"; import { getGameMode } from "#app/game-mode"; import { GameModes } from "#enums/game-modes"; +import { GameManager } from "#test/test-utils/game-manager"; +import * as Utils from "#utils/common"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as Utils from "#app/utils/common"; -import GameManager from "#test/testUtils/gameManager"; describe("game-mode", () => { let phaserGame: Phaser.Game; diff --git a/test/imports.test.ts b/test/imports.test.ts index 8a5c735e950..04e9462d8d0 100644 --- a/test/imports.test.ts +++ b/test/imports.test.ts @@ -1,4 +1,4 @@ -import { initStatsKeys } from "#app/ui/game-stats-ui-handler"; +import { initStatsKeys } from "#ui/game-stats-ui-handler"; import { describe, expect, it } from "vitest"; async function importModule() { diff --git a/test/inputs/inputs.test.ts b/test/inputs/inputs.test.ts index 1f566672f00..636b2e7a99e 100644 --- a/test/inputs/inputs.test.ts +++ b/test/inputs/inputs.test.ts @@ -1,7 +1,7 @@ -import cfg_keyboard_qwerty from "#app/configs/inputs/cfg_keyboard_qwerty"; -import pad_xbox360 from "#app/configs/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 bd603ec22fc..bb33b01c265 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"; diff --git a/test/items/dire_hit.test.ts b/test/items/dire-hit.test.ts similarity index 78% rename from test/items/dire_hit.test.ts rename to test/items/dire-hit.test.ts index 25fe9c8b876..fe7fabd3c4c 100644 --- a/test/items/dire_hit.test.ts +++ b/test/items/dire-hit.test.ts @@ -1,25 +1,25 @@ -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { Button } from "#enums/buttons"; import { MoveId } from "#enums/move-id"; +import { ShopCursorTarget } from "#enums/shop-cursor-target"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { BattleEndPhase } from "#app/phases/battle-end-phase"; -import { TempCritBoosterModifier } from "#app/modifier/modifier"; import { UiMode } from "#enums/ui-mode"; -import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { Button } from "#app/enums/buttons"; -import { CommandPhase } from "#app/phases/command-phase"; -import { NewBattlePhase } from "#app/phases/new-battle-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; +import { TempCritBoosterModifier } from "#modifiers/modifier"; +import { BattleEndPhase } from "#phases/battle-end-phase"; +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/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"; describe("Items - Dire Hit", () => { let phaserGame: Phaser.Game; let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); @@ -58,8 +58,7 @@ describe("Items - Dire Hit", () => { await game.classicMode.startBattle([SpeciesId.PIKACHU]); - game.move.select(MoveId.SPLASH); - + game.move.use(MoveId.SPLASH); await game.doKillOpponents(); await game.phaseInterceptor.to(BattleEndPhase); diff --git a/test/items/double_battle_chance_booster.test.ts b/test/items/double-battle-chance-booster.test.ts similarity index 90% rename from test/items/double_battle_chance_booster.test.ts rename to test/items/double-battle-chance-booster.test.ts index d1a9e826cda..2c12b34eba3 100644 --- a/test/items/double_battle_chance_booster.test.ts +++ b/test/items/double-battle-chance-booster.test.ts @@ -1,13 +1,13 @@ +import { Button } from "#enums/buttons"; import { MoveId } from "#enums/move-id"; +import { ShopCursorTarget } from "#enums/shop-cursor-target"; import { SpeciesId } from "#enums/species-id"; -import { DoubleBattleChanceBoosterModifier } from "#app/modifier/modifier"; -import GameManager from "#test/testUtils/gameManager"; +import { UiMode } from "#enums/ui-mode"; +import { DoubleBattleChanceBoosterModifier } from "#modifiers/modifier"; +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"; -import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; -import { UiMode } from "#enums/ui-mode"; -import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { Button } from "#app/enums/buttons"; describe("Items - Double Battle Chance Boosters", () => { let phaserGame: Phaser.Game; diff --git a/test/items/eviolite.test.ts b/test/items/eviolite.test.ts index 353cdbf91b4..2e64135d264 100644 --- a/test/items/eviolite.test.ts +++ b/test/items/eviolite.test.ts @@ -1,16 +1,16 @@ -import { StatBoosterModifier } from "#app/modifier/modifier"; -import { NumberHolder, randItem } from "#app/utils/common"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import { StatBoosterModifier } from "#modifiers/modifier"; +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"; describe("Items - Eviolite", () => { let phaserGame: Phaser.Game; let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/exp_booster.test.ts b/test/items/exp-booster.test.ts similarity index 81% rename from test/items/exp_booster.test.ts rename to test/items/exp-booster.test.ts index 44d7721aba2..dd2c8eb0c2b 100644 --- a/test/items/exp_booster.test.ts +++ b/test/items/exp-booster.test.ts @@ -1,8 +1,8 @@ import { AbilityId } from "#enums/ability-id"; -import { PokemonExpBoosterModifier } from "#app/modifier/modifier"; -import { NumberHolder } from "#app/utils/common"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import { PokemonExpBoosterModifier } from "#modifiers/modifier"; +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"; describe("EXP Modifier Items", () => { @@ -10,7 +10,7 @@ describe("EXP Modifier Items", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/grip_claw.test.ts b/test/items/grip-claw.test.ts similarity index 94% rename from test/items/grip_claw.test.ts rename to test/items/grip-claw.test.ts index 9c3e6548140..5ffebd76946 100644 --- a/test/items/grip_claw.test.ts +++ b/test/items/grip-claw.test.ts @@ -1,12 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import type Pokemon from "#app/field/pokemon"; -import type { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; import { BerryType } from "#enums/berry-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import type { Pokemon } from "#field/pokemon"; +import type { ContactHeldItemTransferChanceModifier } from "#modifiers/modifier"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Items - Grip Claw", () => { @@ -14,7 +14,7 @@ describe("Items - Grip Claw", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/leek.test.ts b/test/items/leek.test.ts index eedb6667b9b..c38294d07a4 100644 --- a/test/items/leek.test.ts +++ b/test/items/leek.test.ts @@ -1,9 +1,9 @@ -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { randInt } from "#app/utils/common"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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"; describe("Items - Leek", () => { @@ -11,7 +11,7 @@ describe("Items - Leek", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/leftovers.test.ts b/test/items/leftovers.test.ts index 21319d2c9d7..bed40b1c83a 100644 --- a/test/items/leftovers.test.ts +++ b/test/items/leftovers.test.ts @@ -1,9 +1,9 @@ -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; 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 { DamageAnimPhase } from "#phases/damage-anim-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/light_ball.test.ts b/test/items/light-ball.test.ts similarity index 96% rename from test/items/light_ball.test.ts rename to test/items/light-ball.test.ts index 6dfed3389b9..a7f41255ff3 100644 --- a/test/items/light_ball.test.ts +++ b/test/items/light-ball.test.ts @@ -1,11 +1,11 @@ -import { Stat } from "#enums/stat"; -import { SpeciesStatBoosterModifier } from "#app/modifier/modifier"; -import { modifierTypes } from "#app/data/data-lists"; -import i18next from "#app/plugins/i18n"; -import { NumberHolder } from "#app/utils/common"; +import { modifierTypes } from "#data/data-lists"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import { Stat } from "#enums/stat"; +import { SpeciesStatBoosterModifier } from "#modifiers/modifier"; +import i18next from "#plugins/i18n"; +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"; describe("Items - Light Ball", () => { @@ -13,7 +13,7 @@ describe("Items - Light Ball", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/lock_capsule.test.ts b/test/items/lock-capsule.test.ts similarity index 88% rename from test/items/lock_capsule.test.ts rename to test/items/lock-capsule.test.ts index beacc3a3907..01552a4db37 100644 --- a/test/items/lock_capsule.test.ts +++ b/test/items/lock-capsule.test.ts @@ -1,10 +1,10 @@ import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; import { ModifierTier } from "#enums/modifier-tier"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import { MoveId } from "#enums/move-id"; import { UiMode } from "#enums/ui-mode"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Items - Lock Capsule", () => { @@ -12,7 +12,7 @@ describe("Items - Lock Capsule", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/metal_powder.test.ts b/test/items/metal-powder.test.ts similarity index 95% rename from test/items/metal_powder.test.ts rename to test/items/metal-powder.test.ts index e731f6e7295..4dac8dd39b1 100644 --- a/test/items/metal_powder.test.ts +++ b/test/items/metal-powder.test.ts @@ -1,11 +1,11 @@ -import { Stat } from "#enums/stat"; -import { SpeciesStatBoosterModifier } from "#app/modifier/modifier"; -import { modifierTypes } from "#app/data/data-lists"; -import i18next from "#app/plugins/i18n"; -import { NumberHolder } from "#app/utils/common"; +import { modifierTypes } from "#data/data-lists"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import { Stat } from "#enums/stat"; +import { SpeciesStatBoosterModifier } from "#modifiers/modifier"; +import i18next from "#plugins/i18n"; +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"; describe("Items - Metal Powder", () => { @@ -13,7 +13,7 @@ describe("Items - Metal Powder", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/multi_lens.test.ts b/test/items/multi-lens.test.ts similarity index 90% rename from test/items/multi_lens.test.ts rename to test/items/multi-lens.test.ts index 8a3161970c0..e3cf39e4933 100644 --- a/test/items/multi_lens.test.ts +++ b/test/items/multi-lens.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { Stat } from "#enums/stat"; 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 { 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"; @@ -211,21 +211,4 @@ describe("Items - Multi Lens", () => { // TODO: Update hit count to 1 once Future Sight is fixed to not activate held items if user is off the field expect(enemyPokemon.damageAndUpdate).toHaveBeenCalledTimes(2); }); - - it("should not allow Pollen Puff to heal ally more than once", async () => { - game.override.battleStyle("double").moveset([MoveId.POLLEN_PUFF, MoveId.ENDURE]); - await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.OMANYTE]); - - const [, rightPokemon] = game.scene.getPlayerField(); - - rightPokemon.damageAndUpdate(rightPokemon.hp - 1); - - game.move.select(MoveId.POLLEN_PUFF, 0, BattlerIndex.PLAYER_2); - game.move.select(MoveId.ENDURE, 1); - - await game.toNextTurn(); - - // Pollen Puff heals with a ratio of 0.5, as long as Pollen Puff triggers only once the pokemon will always be <= (0.5 * Max HP) + 1 - expect(rightPokemon.hp).toBeLessThanOrEqual(0.5 * rightPokemon.getMaxHp() + 1); - }); }); diff --git a/test/items/mystical_rock.test.ts b/test/items/mystical-rock.test.ts similarity index 92% rename from test/items/mystical_rock.test.ts rename to test/items/mystical-rock.test.ts index 091815aa604..3a29c359582 100644 --- a/test/items/mystical_rock.test.ts +++ b/test/items/mystical-rock.test.ts @@ -1,9 +1,9 @@ import { globalScene } from "#app/global-scene"; -import { MoveId } from "#enums/move-id"; 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 Phase from "phaser"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Items - Mystical Rock", () => { @@ -11,7 +11,7 @@ describe("Items - Mystical Rock", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/quick_powder.test.ts b/test/items/quick-powder.test.ts similarity index 95% rename from test/items/quick_powder.test.ts rename to test/items/quick-powder.test.ts index af99f51273d..2200e8cf96e 100644 --- a/test/items/quick_powder.test.ts +++ b/test/items/quick-powder.test.ts @@ -1,11 +1,11 @@ -import { Stat } from "#enums/stat"; -import { SpeciesStatBoosterModifier } from "#app/modifier/modifier"; -import { modifierTypes } from "#app/data/data-lists"; -import i18next from "#app/plugins/i18n"; -import { NumberHolder } from "#app/utils/common"; +import { modifierTypes } from "#data/data-lists"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import { Stat } from "#enums/stat"; +import { SpeciesStatBoosterModifier } from "#modifiers/modifier"; +import i18next from "#plugins/i18n"; +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"; describe("Items - Quick Powder", () => { @@ -13,7 +13,7 @@ describe("Items - Quick Powder", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/reviver_seed.test.ts b/test/items/reviver-seed.test.ts similarity index 95% rename from test/items/reviver_seed.test.ts rename to test/items/reviver-seed.test.ts index f444a6eac66..268c5497899 100644 --- a/test/items/reviver_seed.test.ts +++ b/test/items/reviver-seed.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import type { PokemonInstantReviveModifier } from "#app/modifier/modifier"; +import { allMoves } from "#data/data-lists"; 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 type { PokemonInstantReviveModifier } from "#modifiers/modifier"; +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/scope_lens.test.ts b/test/items/scope-lens.test.ts similarity index 85% rename from test/items/scope_lens.test.ts rename to test/items/scope-lens.test.ts index 16be8aab930..578b0576aaa 100644 --- a/test/items/scope_lens.test.ts +++ b/test/items/scope-lens.test.ts @@ -1,8 +1,8 @@ -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Items - Scope Lens", () => { @@ -10,7 +10,7 @@ describe("Items - Scope Lens", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/temp_stat_stage_booster.test.ts b/test/items/temp-stat-stage-booster.test.ts similarity index 92% rename from test/items/temp_stat_stage_booster.test.ts rename to test/items/temp-stat-stage-booster.test.ts index b8cd0cde4eb..806ff20df6c 100644 --- a/test/items/temp_stat_stage_booster.test.ts +++ b/test/items/temp-stat-stage-booster.test.ts @@ -1,23 +1,23 @@ -import { BATTLE_STATS, Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import Phase from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { MoveId } from "#enums/move-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { AbilityId } from "#enums/ability-id"; -import { TempStatStageBoosterModifier } from "#app/modifier/modifier"; +import { Button } from "#enums/buttons"; +import { MoveId } from "#enums/move-id"; +import { ShopCursorTarget } from "#enums/shop-cursor-target"; +import { SpeciesId } from "#enums/species-id"; +import { BATTLE_STATS, Stat } from "#enums/stat"; import { UiMode } from "#enums/ui-mode"; -import { Button } from "#app/enums/buttons"; -import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; +import { TempStatStageBoosterModifier } from "#modifiers/modifier"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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"; describe("Items - Temporary Stat Stage Boosters", () => { let phaserGame: Phaser.Game; let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/thick_club.test.ts b/test/items/thick-club.test.ts similarity index 96% rename from test/items/thick_club.test.ts rename to test/items/thick-club.test.ts index bc019ee99f8..c497cef6338 100644 --- a/test/items/thick_club.test.ts +++ b/test/items/thick-club.test.ts @@ -1,11 +1,11 @@ -import { Stat } from "#enums/stat"; -import { SpeciesStatBoosterModifier } from "#app/modifier/modifier"; -import { modifierTypes } from "#app/data/data-lists"; -import i18next from "#app/plugins/i18n"; -import { NumberHolder, randInt } from "#app/utils/common"; +import { modifierTypes } from "#data/data-lists"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import Phase from "phaser"; +import { Stat } from "#enums/stat"; +import { SpeciesStatBoosterModifier } from "#modifiers/modifier"; +import i18next from "#plugins/i18n"; +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"; describe("Items - Thick Club", () => { @@ -13,7 +13,7 @@ describe("Items - Thick Club", () => { let game: GameManager; beforeAll(() => { - phaserGame = new Phase.Game({ + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); }); diff --git a/test/items/toxic_orb.test.ts b/test/items/toxic-orb.test.ts similarity index 94% rename from test/items/toxic_orb.test.ts rename to test/items/toxic-orb.test.ts index e0d86655028..a1888a6aa1d 100644 --- a/test/items/toxic_orb.test.ts +++ b/test/items/toxic-orb.test.ts @@ -1,9 +1,9 @@ -import i18next from "#app/plugins/i18n"; 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 i18next from "#plugins/i18n"; +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/misc.test.ts b/test/misc.test.ts index 12ed165d9d9..96407b78470 100644 --- a/test/misc.test.ts +++ b/test/misc.test.ts @@ -1,6 +1,5 @@ -// import { apiFetch } from "#app/utils"; -import GameManager from "#test/testUtils/gameManager"; -import { waitUntil } from "#test/testUtils/gameManagerUtils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { waitUntil } from "#test/test-utils/game-manager-utils"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/ability-ignore-moves.test.ts b/test/moves/ability-ignore-moves.test.ts new file mode 100644 index 00000000000..e226b1aacd4 --- /dev/null +++ b/test/moves/ability-ignore-moves.test.ts @@ -0,0 +1,108 @@ +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Moves - Ability-Ignoring Moves", () => { + 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) + .startingLevel(200) + .battleStyle("single") + .criticalHits(false) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.STURDY) + .enemyMoveset(MoveId.SPLASH); + }); + + it.each<{ name: string; move: MoveId }>([ + { name: "Sunsteel Strike", move: MoveId.SUNSTEEL_STRIKE }, + { name: "Moongeist Beam", move: MoveId.MOONGEIST_BEAM }, + { name: "Photon Geyser", move: MoveId.PHOTON_GEYSER }, + ])("$name should ignore enemy abilities during move use", async ({ move }) => { + await game.classicMode.startBattle([SpeciesId.NECROZMA]); + + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); + + game.move.use(move); + await game.phaseInterceptor.to("MoveEffectPhase"); + + expect(game.scene.arena.ignoreAbilities).toBe(true); + expect(game.scene.arena.ignoringEffectSource).toBe(player.getBattlerIndex()); + + await game.toEndOfTurn(); + + expect(game.scene.arena.ignoreAbilities).toBe(false); + expect(enemy.isFainted()).toBe(true); + }); + + it("should not ignore enemy abilities when called by Metronome", async () => { + game.move.forceMetronomeMove(MoveId.PHOTON_GEYSER, true); + await game.classicMode.startBattle([SpeciesId.MILOTIC]); + + game.move.use(MoveId.METRONOME); + await game.toEndOfTurn(); + + const enemy = game.field.getEnemyPokemon(); + expect(enemy.isFainted()).toBe(false); + expect(game.field.getPlayerPokemon().getLastXMoves()[0].move).toBe(MoveId.PHOTON_GEYSER); + }); + + it("should not ignore enemy abilities when called by Mirror Move", async () => { + game.override.moveset(MoveId.MIRROR_MOVE).enemyMoveset(MoveId.SUNSTEEL_STRIKE); + + await game.classicMode.startBattle([SpeciesId.MILOTIC]); + + const enemy = game.field.getEnemyPokemon(); + game.move.select(MoveId.MIRROR_MOVE); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.toEndOfTurn(); + + expect(enemy.isFainted()).toBe(false); + expect(game.scene.getPlayerPokemon()?.getLastXMoves()[0].move).toBe(MoveId.SUNSTEEL_STRIKE); + }); + + // TODO: Verify this behavior on cart + it("should ignore enemy abilities when called by Instruct", async () => { + game.override.moveset([MoveId.SUNSTEEL_STRIKE, MoveId.INSTRUCT]).battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.SOLGALEO, SpeciesId.LUNALA]); + + const solgaleo = game.field.getPlayerPokemon(); + + game.move.select(MoveId.SUNSTEEL_STRIKE, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); + + await game.phaseInterceptor.to("MoveEffectPhase"); // initial attack + await game.phaseInterceptor.to("MoveEffectPhase"); // instruct + await game.phaseInterceptor.to("MoveEffectPhase"); // instructed move use + + expect(game.scene.arena.ignoreAbilities).toBe(true); + expect(game.scene.arena.ignoringEffectSource).toBe(solgaleo.getBattlerIndex()); + + await game.toEndOfTurn(); + + // Both the initial and redirected instruct use ignored sturdy + const [enemy1, enemy2] = game.scene.getEnemyField(); + expect(enemy1.isFainted()).toBe(true); + expect(enemy2.isFainted()).toBe(true); + }); +}); diff --git a/test/moves/after_you.test.ts b/test/moves/after-you.test.ts similarity index 96% rename from test/moves/after_you.test.ts rename to test/moves/after-you.test.ts index 37186dcc7a5..1625af3dd88 100644 --- a/test/moves/after_you.test.ts +++ b/test/moves/after-you.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; -import { MoveResult } from "#enums/move-result"; -import { MovePhase } from "#app/phases/move-phase"; -import { MoveUseMode } from "#enums/move-use-mode"; +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/testUtils/gameManager"; +import { MovePhase } from "#phases/move-phase"; +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 88% rename from test/moves/alluring_voice.test.ts rename to test/moves/alluring-voice.test.ts index ba096391f1b..dc01cc1a54e 100644 --- a/test/moves/alluring_voice.test.ts +++ b/test/moves/alluring-voice.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { BerryPhase } from "#app/phases/berry-phase"; +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 { BerryPhase } from "#phases/berry-phase"; +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/aromatherapy.test.ts b/test/moves/aromatherapy.test.ts index bfe315a1390..60f9923a2f8 100644 --- a/test/moves/aromatherapy.test.ts +++ b/test/moves/aromatherapy.test.ts @@ -1,11 +1,10 @@ -import { StatusEffect } from "#app/enums/status-effect"; -import { CommandPhase } from "#app/phases/command-phase"; 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 { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Aromatherapy", () => { let phaserGame: Phaser.Game; @@ -40,7 +39,6 @@ describe("Moves - Aromatherapy", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.AROMATHERAPY, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -62,7 +60,6 @@ describe("Moves - Aromatherapy", () => { vi.spyOn(rightOpp, "resetStatus"); game.move.select(MoveId.AROMATHERAPY, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -86,7 +83,6 @@ describe("Moves - Aromatherapy", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.AROMATHERAPY, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/assist.test.ts b/test/moves/assist.test.ts index ba602bad281..0ff5f7d2ecf 100644 --- a/test/moves/assist.test.ts +++ b/test/moves/assist.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { Stat } from "#app/enums/stat"; -import { MoveResult } from "#enums/move-result"; 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 { MoveResult } from "#enums/move-result"; import { MoveUseMode } from "#enums/move-use-mode"; -import GameManager from "#test/testUtils/gameManager"; +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"; diff --git a/test/moves/astonish.test.ts b/test/moves/astonish.test.ts index 48deadf7a01..0f7dc526b2d 100644 --- a/test/moves/astonish.test.ts +++ b/test/moves/astonish.test.ts @@ -1,13 +1,13 @@ -import { allMoves } from "#app/data/data-lists"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { allMoves } from "#data/data-lists"; 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 { 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; diff --git a/test/moves/aurora_veil.test.ts b/test/moves/aurora-veil.test.ts similarity index 60% rename from test/moves/aurora_veil.test.ts rename to test/moves/aurora-veil.test.ts index b9ae79e4155..3c7c86c7fdf 100644 --- a/test/moves/aurora_veil.test.ts +++ b/test/moves/aurora-veil.test.ts @@ -1,18 +1,17 @@ -import type BattleScene from "#app/battle-scene"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import type Move from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import type Pokemon from "#app/field/pokemon"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { NumberHolder } from "#app/utils/common"; +import type { BattleScene } from "#app/battle-scene"; +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 { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { WeatherType } from "#enums/weather-type"; -import GameManager from "#test/testUtils/gameManager"; +import type { Pokemon } from "#field/pokemon"; +import type { Move } from "#moves/move"; +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"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; let globalScene: BattleScene; @@ -52,10 +51,10 @@ describe("Moves - Aurora Veil", () => { game.move.select(moveToUse); - await game.phaseInterceptor.to(TurnEndPhase); + await game.toEndOfTurn(); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); @@ -71,10 +70,10 @@ describe("Moves - Aurora Veil", () => { game.move.select(moveToUse); game.move.select(moveToUse, 1); - await game.phaseInterceptor.to(TurnEndPhase); + await game.toEndOfTurn(); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), allMoves[moveToUse], ); @@ -82,72 +81,48 @@ describe("Moves - Aurora Veil", () => { }); it("reduces damage of special attacks by half in a single battle", async () => { - const moveToUse = MoveId.ABSORB; await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - game.move.select(moveToUse); + game.move.use(MoveId.ABSORB); - await game.phaseInterceptor.to(TurnEndPhase); + await game.toEndOfTurn(); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, - allMoves[moveToUse], + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), + allMoves[MoveId.ABSORB], ); - expect(mockedDmg).toBe(allMoves[moveToUse].power * singleBattleMultiplier); + expect(mockedDmg).toBe(allMoves[MoveId.ABSORB].power * singleBattleMultiplier); }); it("reduces damage of special attacks by a third in a double battle", async () => { game.override.battleStyle("double"); - - const moveToUse = MoveId.DAZZLING_GLEAM; - await game.classicMode.startBattle([SpeciesId.SHUCKLE, SpeciesId.SHUCKLE]); - - game.move.select(moveToUse); - game.move.select(moveToUse, 1); - - await game.phaseInterceptor.to(TurnEndPhase); - const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, - allMoves[moveToUse], - ); - - expect(mockedDmg).toBe(allMoves[moveToUse].power * doubleBattleMultiplier); - }); - - it("does not affect physical critical hits", async () => { - game.override.moveset([MoveId.WICKED_BLOW]); - const moveToUse = MoveId.WICKED_BLOW; await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - game.move.select(moveToUse); - await game.phaseInterceptor.to(TurnEndPhase); - + game.move.use(MoveId.ABSORB); + await game.toEndOfTurn(); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, - allMoves[moveToUse], + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), + allMoves[MoveId.ABSORB], ); - expect(mockedDmg).toBe(allMoves[moveToUse].power); + + expect(mockedDmg).toBe(allMoves[MoveId.ABSORB].power * doubleBattleMultiplier); }); it("does not affect critical hits", async () => { - game.override.moveset([MoveId.FROST_BREATH]); - const moveToUse = MoveId.FROST_BREATH; - vi.spyOn(allMoves[MoveId.FROST_BREATH], "accuracy", "get").mockReturnValue(100); await game.classicMode.startBattle([SpeciesId.SHUCKLE]); - game.move.select(moveToUse); - await game.phaseInterceptor.to(TurnEndPhase); + game.move.use(MoveId.WICKED_BLOW); + await game.toEndOfTurn(); const mockedDmg = getMockedMoveDamage( - game.scene.getEnemyPokemon()!, - game.scene.getPlayerPokemon()!, - allMoves[moveToUse], + game.field.getEnemyPokemon(), + game.field.getPlayerPokemon(), + allMoves[MoveId.WICKED_BLOW], ); - expect(mockedDmg).toBe(allMoves[moveToUse].power); + expect(mockedDmg).toBe(allMoves[MoveId.WICKED_BLOW].power); }); }); diff --git a/test/moves/autotomize.test.ts b/test/moves/autotomize.test.ts index 000dd19b8f5..a8a7309e03e 100644 --- a/test/moves/autotomize.test.ts +++ b/test/moves/autotomize.test.ts @@ -1,9 +1,9 @@ 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, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Autotomize", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/baddy_bad.test.ts b/test/moves/baddy-bad.test.ts similarity index 91% rename from test/moves/baddy_bad.test.ts rename to test/moves/baddy-bad.test.ts index ffdf9f0309c..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"; @@ -33,7 +33,7 @@ describe("Moves - Baddy Bad", () => { game.override.enemyMoveset(MoveId.PROTECT); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - game.move.select(MoveId.BADDY_BAD); + game.move.use(MoveId.BADDY_BAD); await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.tags.length).toBe(0); diff --git a/test/moves/baneful_bunker.test.ts b/test/moves/baneful-bunker.test.ts similarity index 96% rename from test/moves/baneful_bunker.test.ts rename to test/moves/baneful-bunker.test.ts index c9cc2025a58..da2a8e0418a 100644 --- a/test/moves/baneful_bunker.test.ts +++ b/test/moves/baneful-bunker.test.ts @@ -1,11 +1,11 @@ +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, test } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; -import { BattlerIndex } from "#enums/battler-index"; -import { StatusEffect } from "#app/enums/status-effect"; describe("Moves - Baneful Bunker", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/baton_pass.test.ts b/test/moves/baton-pass.test.ts similarity index 98% rename from test/moves/baton_pass.test.ts rename to test/moves/baton-pass.test.ts index 1b1b0620133..ef1979b223d 100644 --- a/test/moves/baton_pass.test.ts +++ b/test/moves/baton-pass.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; -import GameManager from "#test/testUtils/gameManager"; 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 { 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"; diff --git a/test/moves/beak_blast.test.ts b/test/moves/beak-blast.test.ts similarity index 93% rename from test/moves/beak_blast.test.ts rename to test/moves/beak-blast.test.ts index 2cb9f9bdd6f..71d2d957bed 100644 --- a/test/moves/beak_blast.test.ts +++ b/test/moves/beak-blast.test.ts @@ -1,12 +1,12 @@ -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { StatusEffect } from "#app/enums/status-effect"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; 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 { 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/beat_up.test.ts b/test/moves/beat-up.test.ts similarity index 92% rename from test/moves/beat_up.test.ts rename to test/moves/beat-up.test.ts index 7c4686ab4fa..79d672bd0ed 100644 --- a/test/moves/beat_up.test.ts +++ b/test/moves/beat-up.test.ts @@ -1,9 +1,9 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { StatusEffect } from "#app/enums/status-effect"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import GameManager from "#test/testUtils/gameManager"; +import { StatusEffect } from "#enums/status-effect"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +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/belly_drum.test.ts b/test/moves/belly-drum.test.ts similarity index 95% rename from test/moves/belly_drum.test.ts rename to test/moves/belly-drum.test.ts index 239b3c3d794..9cbb7adb1ae 100644 --- a/test/moves/belly_drum.test.ts +++ b/test/moves/belly-drum.test.ts @@ -1,12 +1,12 @@ -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { toDmgValue } from "#app/utils/common"; +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 { TurnEndPhase } from "#phases/turn-end-phase"; +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"; -import { AbilityId } from "#enums/ability-id"; // RATIO : HP Cost of Move const RATIO = 2; diff --git a/test/moves/burning_jealousy.test.ts b/test/moves/burning-jealousy.test.ts similarity index 95% rename from test/moves/burning_jealousy.test.ts rename to test/moves/burning-jealousy.test.ts index ce0a1ce57c9..62f41790582 100644 --- a/test/moves/burning_jealousy.test.ts +++ b/test/moves/burning-jealousy.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { StatusEffect } from "#app/enums/status-effect"; +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 { StatusEffect } from "#enums/status-effect"; +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/camouflage.test.ts b/test/moves/camouflage.test.ts index 6f28493b1e5..badab8ec4a5 100644 --- a/test/moves/camouflage.test.ts +++ b/test/moves/camouflage.test.ts @@ -1,10 +1,10 @@ +import { TerrainType } from "#data/terrain"; import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { TerrainType } from "#app/data/terrain"; -import { PokemonType } from "#enums/pokemon-type"; import { BattlerIndex } from "#enums/battler-index"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveId } from "#enums/move-id"; +import { PokemonType } from "#enums/pokemon-type"; +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"; diff --git a/test/moves/ceaseless_edge.test.ts b/test/moves/ceaseless-edge.test.ts similarity index 92% rename from test/moves/ceaseless_edge.test.ts rename to test/moves/ceaseless-edge.test.ts index 1dec98fe3a8..56d7c97ea68 100644 --- a/test/moves/ceaseless_edge.test.ts +++ b/test/moves/ceaseless-edge.test.ts @@ -1,13 +1,13 @@ -import { ArenaTrapTag } from "#app/data/arena-tag"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { allMoves } from "#app/data/data-lists"; +import { ArenaTrapTag } from "#data/arena-tag"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +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 { MoveEffectPhase } from "#phases/move-effect-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; diff --git a/test/moves/chilly_reception.test.ts b/test/moves/chilly-reception.test.ts similarity index 94% rename from test/moves/chilly_reception.test.ts rename to test/moves/chilly-reception.test.ts index 8c54a4df85a..78032292b38 100644 --- a/test/moves/chilly_reception.test.ts +++ b/test/moves/chilly-reception.test.ts @@ -1,14 +1,13 @@ -import { RandomMoveAttr } from "#app/data/moves/move"; -import { MoveResult } from "#enums/move-result"; 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 { AbilityId } from "#app/enums/ability-id"; import { WeatherType } from "#enums/weather-type"; -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"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Chilly Reception", () => { let phaserGame: Phaser.Game; @@ -116,7 +115,7 @@ describe("Moves - Chilly Reception", () => { }); it("should succeed without message if called indirectly", async () => { - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.CHILLY_RECEPTION); + game.move.forceMetronomeMove(MoveId.CHILLY_RECEPTION); await game.classicMode.startBattle([SpeciesId.SLOWKING, SpeciesId.MEOWTH]); const [slowking, meowth] = game.scene.getPlayerParty(); diff --git a/test/moves/chloroblast.test.ts b/test/moves/chloroblast.test.ts index 6c790bac150..a6320d2691d 100644 --- a/test/moves/chloroblast.test.ts +++ b/test/moves/chloroblast.test.ts @@ -1,8 +1,8 @@ -import { MoveResult } from "#enums/move-result"; 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 97% rename from test/moves/clangorous_soul.test.ts rename to test/moves/clangorous-soul.test.ts index f08503acdc6..82a0d383f65 100644 --- a/test/moves/clangorous_soul.test.ts +++ b/test/moves/clangorous-soul.test.ts @@ -1,10 +1,10 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; 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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; /** HP Cost of Move */ const RATIO = 3; diff --git a/test/moves/copycat.test.ts b/test/moves/copycat.test.ts index 35b02c9122f..5e988ac1f5a 100644 --- a/test/moves/copycat.test.ts +++ b/test/moves/copycat.test.ts @@ -1,13 +1,13 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { RandomMoveAttr } from "#app/data/moves/move"; -import { Stat } from "#app/enums/stat"; -import { MoveResult } from "#enums/move-result"; 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/testUtils/gameManager"; +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"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Copycat", () => { let phaserGame: Phaser.Game; @@ -75,10 +75,10 @@ describe("Moves - Copycat", () => { }); it("should copy the called move when the last move successfully calls another", async () => { - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.SWORDS_DANCE); await game.classicMode.startBattle([SpeciesId.FEEBAS]); game.move.use(MoveId.METRONOME); + game.move.forceMetronomeMove(MoveId.SWORDS_DANCE, true); await game.move.forceEnemyMove(MoveId.COPYCAT); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); // Player moves first, so enemy can copy Swords Dance await game.toNextTurn(); diff --git a/test/moves/crafty_shield.test.ts b/test/moves/crafty-shield.test.ts similarity index 86% rename from test/moves/crafty_shield.test.ts rename to test/moves/crafty-shield.test.ts index 12a607a2a1b..d0c148c1f41 100644 --- a/test/moves/crafty_shield.test.ts +++ b/test/moves/crafty-shield.test.ts @@ -1,13 +1,12 @@ +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; -import { Stat } from "#enums/stat"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { CommandPhase } from "#app/phases/command-phase"; describe("Moves - Crafty Shield", () => { let phaserGame: Phaser.Game; @@ -42,9 +41,6 @@ describe("Moves - Crafty Shield", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.CRAFTY_SHIELD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -60,9 +56,6 @@ describe("Moves - Crafty Shield", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.CRAFTY_SHIELD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -78,9 +71,6 @@ describe("Moves - Crafty Shield", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.CRAFTY_SHIELD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -94,9 +84,6 @@ describe("Moves - Crafty Shield", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.CRAFTY_SHIELD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SWORDS_DANCE, 1); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/defog.test.ts b/test/moves/defog.test.ts index 17dc0613e9b..820dfaa6bcb 100644 --- a/test/moves/defog.test.ts +++ b/test/moves/defog.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#enums/stat"; 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 { 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"; diff --git a/test/moves/destiny_bond.test.ts b/test/moves/destiny-bond.test.ts similarity index 97% rename from test/moves/destiny_bond.test.ts rename to test/moves/destiny-bond.test.ts index a78d46b464b..48bd29fe662 100644 --- a/test/moves/destiny_bond.test.ts +++ b/test/moves/destiny-bond.test.ts @@ -1,16 +1,16 @@ -import type { ArenaTrapTag } from "#app/data/arena-tag"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { allMoves } from "#app/data/data-lists"; +import type { 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 { ArenaTagType } from "#enums/arena-tag-type"; +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 { StatusEffect } from "#enums/status-effect"; +import { PokemonInstantReviveModifier } from "#modifiers/modifier"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { BattlerIndex } from "#enums/battler-index"; -import { StatusEffect } from "#enums/status-effect"; -import { PokemonInstantReviveModifier } from "#app/modifier/modifier"; describe("Moves - Destiny Bond", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/diamond_storm.test.ts b/test/moves/diamond-storm.test.ts similarity index 92% rename from test/moves/diamond_storm.test.ts rename to test/moves/diamond-storm.test.ts index 20067b3a0f3..9de7409ca18 100644 --- a/test/moves/diamond_storm.test.ts +++ b/test/moves/diamond-storm.test.ts @@ -1,9 +1,9 @@ -import { allMoves } from "#app/data/data-lists"; +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 { 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/moves/dig.test.ts b/test/moves/dig.test.ts index a80ac0405fe..2cb8ae05963 100644 --- a/test/moves/dig.test.ts +++ b/test/moves/dig.test.ts @@ -1,13 +1,13 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; 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 { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { MoveResult } from "#enums/move-result"; -import { describe, beforeAll, afterEach, beforeEach, it, expect } from "vitest"; -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", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/disable.test.ts b/test/moves/disable.test.ts index 99395110cee..f03f424417d 100644 --- a/test/moves/disable.test.ts +++ b/test/moves/disable.test.ts @@ -1,13 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { MoveResult } from "#enums/move-result"; import { AbilityId } from "#enums/ability-id"; -import { MoveUseMode } from "#enums/move-use-mode"; +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 { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { RandomMoveAttr } from "#app/data/moves/move"; +import { GameManager } from "#test/test-utils/game-manager"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Disable", () => { let phaserGame: Phaser.Game; @@ -129,7 +128,7 @@ describe("Moves - Disable", () => { { name: "Copycat", moveId: MoveId.COPYCAT }, { name: "Metronome", moveId: MoveId.METRONOME }, ])("should ignore virtual moves called by $name", async ({ moveId }) => { - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.ABSORB); + game.move.forceMetronomeMove(MoveId.ABSORB); await game.classicMode.startBattle([SpeciesId.PIKACHU]); const playerMon = game.scene.getPlayerPokemon()!; diff --git a/test/moves/dive.test.ts b/test/moves/dive.test.ts index 9c467976775..c34f3dc54dc 100644 --- a/test/moves/dive.test.ts +++ b/test/moves/dive.test.ts @@ -1,13 +1,13 @@ -import { BattlerTagType } from "#enums/battler-tag-type"; -import { StatusEffect } from "#enums/status-effect"; -import { MoveResult } from "#enums/move-result"; import { AbilityId } from "#enums/ability-id"; +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 Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; +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("Moves - Dive", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/doodle.test.ts b/test/moves/doodle.test.ts index 2dbd5c08c8f..c4380720f20 100644 --- a/test/moves/doodle.test.ts +++ b/test/moves/doodle.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { Stat } from "#app/enums/stat"; 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 { 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"; diff --git a/test/moves/double_team.test.ts b/test/moves/double-team.test.ts similarity index 92% rename from test/moves/double_team.test.ts rename to test/moves/double-team.test.ts index d1f6c5be3e4..9276a0956e8 100644 --- a/test/moves/double_team.test.ts +++ b/test/moves/double-team.test.ts @@ -1,9 +1,9 @@ -import { Stat } from "#enums/stat"; import { AbilityId } from "#enums/ability-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { Stat } from "#enums/stat"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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_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 56feac513a1..614dd9ab6ab 100644 --- a/test/moves/dragon_cheer.test.ts +++ b/test/moves/dragon-cheer.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { PokemonType } from "#enums/pokemon-type"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; import { AbilityId } from "#enums/ability-id"; -import GameManager from "#test/testUtils/gameManager"; +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/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 94% rename from test/moves/dragon_rage.test.ts rename to test/moves/dragon-rage.test.ts index c5bed3377fa..1b850ade488 100644 --- a/test/moves/dragon_rage.test.ts +++ b/test/moves/dragon-rage.test.ts @@ -1,14 +1,14 @@ -import { Stat } from "#enums/stat"; -import { PokemonType } from "#enums/pokemon-type"; -import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { AbilityId } from "#enums/ability-id"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; -import GameManager from "#test/testUtils/gameManager"; +import { PokemonType } from "#enums/pokemon-type"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { SpeciesId } from "#enums/species-id"; describe("Moves - Dragon Rage", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/dragon_tail.test.ts b/test/moves/dragon-tail.test.ts similarity index 98% rename from test/moves/dragon_tail.test.ts rename to test/moves/dragon-tail.test.ts index 8c456f27853..487647784f7 100644 --- a/test/moves/dragon_tail.test.ts +++ b/test/moves/dragon-tail.test.ts @@ -1,13 +1,13 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; -import { Status } from "#app/data/status-effect"; -import { Challenges } from "#enums/challenges"; -import { StatusEffect } from "#enums/status-effect"; -import { PokemonType } from "#enums/pokemon-type"; +import { allMoves } from "#data/data-lists"; +import { Status } from "#data/status-effect"; import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +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 { StatusEffect } from "#enums/status-effect"; +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/dynamax_cannon.test.ts b/test/moves/dynamax-cannon.test.ts similarity index 95% rename from test/moves/dynamax_cannon.test.ts rename to test/moves/dynamax-cannon.test.ts index 3febf918de8..5090a228e23 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax-cannon.test.ts @@ -1,11 +1,11 @@ +import { allMoves } from "#data/data-lists"; import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveId } from "#enums/move-id"; -import type Move from "#app/data/moves/move"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import type { Move } from "#moves/move"; +import { DamageAnimPhase } from "#phases/damage-anim-phase"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +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 58b2d07b1b6..0bdef2428a4 100644 --- a/test/moves/effectiveness.test.ts +++ b/test/moves/effectiveness.test.ts @@ -1,12 +1,12 @@ -import { allMoves } from "#app/data/data-lists"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { TrainerSlot } from "#enums/trainer-slot"; -import { PokemonType } from "#enums/pokemon-type"; +import * as Messages from "#app/messages"; +import { allMoves } from "#data/data-lists"; 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 * as Messages from "#app/messages"; -import GameManager from "#test/testUtils/gameManager"; +import { TrainerSlot } from "#enums/trainer-slot"; +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 b6a3cac9fff..19a2fdfb7a2 100644 --- a/test/moves/electrify.test.ts +++ b/test/moves/electrify.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { PokemonType } from "#enums/pokemon-type"; import { AbilityId } from "#enums/ability-id"; +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, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Electrify", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/electro_shot.test.ts b/test/moves/electro-shot.test.ts similarity index 96% rename from test/moves/electro_shot.test.ts rename to test/moves/electro-shot.test.ts index 1d69e9c2fa7..e5031fefb3d 100644 --- a/test/moves/electro_shot.test.ts +++ b/test/moves/electro-shot.test.ts @@ -1,13 +1,13 @@ +import { AbilityId } from "#enums/ability-id"; 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 { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; -import { MoveResult } from "#enums/move-result"; -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, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Electro Shot", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/encore.test.ts b/test/moves/encore.test.ts index 772b7c96060..1b0e2ed03f2 100644 --- a/test/moves/encore.test.ts +++ b/test/moves/encore.test.ts @@ -1,10 +1,10 @@ -import { BattlerTagType } from "#enums/battler-tag-type"; -import { BattlerIndex } from "#enums/battler-index"; -import { MoveResult } from "#enums/move-result"; 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 { 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/endure.test.ts b/test/moves/endure.test.ts index 7738f7426fe..71a16ef4cc1 100644 --- a/test/moves/endure.test.ts +++ b/test/moves/endure.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/entrainment.test.ts b/test/moves/entrainment.test.ts index 65586149492..c96cacc8d0b 100644 --- a/test/moves/entrainment.test.ts +++ b/test/moves/entrainment.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#app/enums/stat"; 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 { 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"; diff --git a/test/moves/fairy_lock.test.ts b/test/moves/fairy-lock.test.ts similarity index 98% rename from test/moves/fairy_lock.test.ts rename to test/moves/fairy-lock.test.ts index b9f854cdc93..eba139fee22 100644 --- a/test/moves/fairy_lock.test.ts +++ b/test/moves/fairy-lock.test.ts @@ -1,9 +1,9 @@ -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; import { AbilityId } from "#enums/ability-id"; +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 98% rename from test/moves/fake_out.test.ts rename to test/moves/fake-out.test.ts index 4fc83e5aa07..8db73681f05 100644 --- a/test/moves/fake_out.test.ts +++ b/test/moves/fake-out.test.ts @@ -1,6 +1,6 @@ -import GameManager from "#test/testUtils/gameManager"; 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, expect, it } from "vitest"; diff --git a/test/moves/false_swipe.test.ts b/test/moves/false-swipe.test.ts similarity index 96% rename from test/moves/false_swipe.test.ts rename to test/moves/false-swipe.test.ts index bf9c8307c22..30547036e69 100644 --- a/test/moves/false_swipe.test.ts +++ b/test/moves/false-swipe.test.ts @@ -1,8 +1,8 @@ -import { MoveResult } from "#enums/move-result"; 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/fell_stinger.test.ts b/test/moves/fell-stinger.test.ts similarity index 96% rename from test/moves/fell_stinger.test.ts rename to test/moves/fell-stinger.test.ts index 0737db9105f..9f482202c47 100644 --- a/test/moves/fell_stinger.test.ts +++ b/test/moves/fell-stinger.test.ts @@ -1,13 +1,13 @@ -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; +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 { Stat } from "#enums/stat"; -import { StatusEffect } from "#app/enums/status-effect"; -import { WeatherType } from "#app/enums/weather-type"; -import { allMoves } from "#app/data/data-lists"; +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, vi } from "vitest"; describe("Moves - Fell Stinger", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/fillet_away.test.ts b/test/moves/fillet-away.test.ts similarity index 95% rename from test/moves/fillet_away.test.ts rename to test/moves/fillet-away.test.ts index 1e00f2ee02d..c4c87e1d00e 100644 --- a/test/moves/fillet_away.test.ts +++ b/test/moves/fillet-away.test.ts @@ -1,9 +1,9 @@ -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { toDmgValue } from "#app/utils/common"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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"; diff --git a/test/moves/first-attack-double-power.test.ts b/test/moves/first-attack-double-power.test.ts new file mode 100644 index 00000000000..4172f843872 --- /dev/null +++ b/test/moves/first-attack-double-power.test.ts @@ -0,0 +1,121 @@ +import { allMoves } from "#data/data-lists"; +import { AbilityId } from "#enums/ability-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Moves - Fishious Rend & Bolt Beak", () => { + 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.STURDY) + .battleStyle("single") + .startingWave(5) + .criticalHits(false) + .enemyLevel(100) + .enemySpecies(SpeciesId.DRACOVISH) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH); + }); + + it.each<{ name: string; move: MoveId }>([ + { name: "Bolt Beak", move: MoveId.BOLT_BEAK }, + { name: "Fishious Rend", move: MoveId.FISHIOUS_REND }, + ])("$name should double power if the user moves before the target", async ({ move }) => { + const powerSpy = vi.spyOn(allMoves[move], "calculateBattlePower"); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + // turn 1: enemy, then player (no boost) + game.move.use(move); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.toNextTurn(); + + expect(powerSpy).toHaveLastReturnedWith(allMoves[move].power); + + // turn 2: player, then enemy (boost) + game.move.use(move); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toEndOfTurn(); + + expect(powerSpy).toHaveLastReturnedWith(allMoves[move].power * 2); + }); + + it("should only consider the selected target in Double Battles", async () => { + game.override.battleStyle("double"); + const powerSpy = vi.spyOn(allMoves[MoveId.BOLT_BEAK], "calculateBattlePower"); + await game.classicMode.startBattle([SpeciesId.FEEBAS, SpeciesId.MILOTIC]); + + // Use move after everyone but P1 and enemy 1 have already moved + game.move.use(MoveId.BOLT_BEAK, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toEndOfTurn(); + + expect(powerSpy).toHaveLastReturnedWith(allMoves[MoveId.BOLT_BEAK].power * 2); + }); + + it("should double power on the turn the target switches in", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + const powerSpy = vi.spyOn(allMoves[MoveId.BOLT_BEAK], "calculateBattlePower"); + + game.move.use(MoveId.BOLT_BEAK); + game.forceEnemyToSwitch(); + await game.toEndOfTurn(); + + expect(powerSpy).toHaveLastReturnedWith(allMoves[MoveId.BOLT_BEAK].power * 2); + }); + + it("should double power on forced switch-induced sendouts", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + const powerSpy = vi.spyOn(allMoves[MoveId.BOLT_BEAK], "calculateBattlePower"); + + game.move.use(MoveId.BOLT_BEAK); + await game.move.forceEnemyMove(MoveId.U_TURN); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.toEndOfTurn(); + + expect(powerSpy).toHaveLastReturnedWith(allMoves[MoveId.BOLT_BEAK].power * 2); + }); + + it.each<{ type: string; allyMove: MoveId }>([ + { type: "a Dancer-induced", allyMove: MoveId.FIERY_DANCE }, + { type: "an Instructed", allyMove: MoveId.INSTRUCT }, + ])("should double power if $type move is used as the target's first action that turn", async ({ allyMove }) => { + game.override.battleStyle("double").enemyAbility(AbilityId.DANCER); + const powerSpy = vi.spyOn(allMoves[MoveId.FISHIOUS_REND], "calculateBattlePower"); + await game.classicMode.startBattle([SpeciesId.DRACOVISH, SpeciesId.ARCTOZOLT]); + + // Simulate enemy having used splash last turn to allow Instruct to copy it + const enemy = game.field.getEnemyPokemon(); + enemy.pushMoveHistory({ + move: MoveId.SPLASH, + targets: [BattlerIndex.ENEMY], + turn: game.scene.currentBattle.turn - 1, + useMode: MoveUseMode.NORMAL, + }); + + game.move.use(MoveId.FISHIOUS_REND, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.use(allyMove, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); + await game.toEndOfTurn(); + + expect(powerSpy).toHaveLastReturnedWith(allMoves[MoveId.FISHIOUS_REND].power); + }); +}); diff --git a/test/moves/fissure.test.ts b/test/moves/fissure.test.ts index 27031a7736d..8a8673811ce 100644 --- a/test/moves/fissure.test.ts +++ b/test/moves/fissure.test.ts @@ -1,13 +1,13 @@ -import { Stat } from "#enums/stat"; -import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import GameManager from "#test/testUtils/gameManager"; +import { SpeciesId } from "#enums/species-id"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { SpeciesId } from "#enums/species-id"; describe("Moves - Fissure", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/flame_burst.test.ts b/test/moves/flame-burst.test.ts similarity index 94% rename from test/moves/flame_burst.test.ts rename to test/moves/flame-burst.test.ts index 0a378df1077..ce82b46d0fc 100644 --- a/test/moves/flame_burst.test.ts +++ b/test/moves/flame-burst.test.ts @@ -1,10 +1,10 @@ -import { allAbilities } from "#app/data/data-lists"; +import { allAbilities } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import type Pokemon from "#app/field/pokemon"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import type { Pokemon } from "#field/pokemon"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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 95% rename from test/moves/flower_shield.test.ts rename to test/moves/flower-shield.test.ts index c3c5e5cf870..425d0443ca7 100644 --- a/test/moves/flower_shield.test.ts +++ b/test/moves/flower-shield.test.ts @@ -1,12 +1,12 @@ -import { Stat } from "#enums/stat"; -import { SemiInvulnerableTag } from "#app/data/battler-tags"; -import { PokemonType } from "#enums/pokemon-type"; -import { BiomeId } from "#enums/biome-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { SemiInvulnerableTag } from "#data/battler-tags"; import { AbilityId } from "#enums/ability-id"; +import { BiomeId } from "#enums/biome-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 { Stat } from "#enums/stat"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/fly.test.ts b/test/moves/fly.test.ts index 7d8a6ee659e..3682fce3d0c 100644 --- a/test/moves/fly.test.ts +++ b/test/moves/fly.test.ts @@ -1,14 +1,14 @@ -import { BattlerTagType } from "#enums/battler-tag-type"; -import { StatusEffect } from "#enums/status-effect"; -import { MoveResult } from "#enums/move-result"; +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 Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; +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 { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Fly", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/focus_punch.test.ts b/test/moves/focus-punch.test.ts similarity index 92% rename from test/moves/focus_punch.test.ts rename to test/moves/focus-punch.test.ts index 38b57b201c0..c67053ef7ec 100644 --- a/test/moves/focus_punch.test.ts +++ b/test/moves/focus-punch.test.ts @@ -1,12 +1,12 @@ -import { BerryPhase } from "#app/phases/berry-phase"; -import { MessagePhase } from "#app/phases/message-phase"; -import { MoveHeaderPhase } from "#app/phases/move-header-phase"; -import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; -import { TurnStartPhase } from "#app/phases/turn-start-phase"; 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 { BerryPhase } from "#phases/berry-phase"; +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/test-utils/game-manager"; import i18next from "i18next"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/follow_me.test.ts b/test/moves/follow-me.test.ts similarity index 97% rename from test/moves/follow_me.test.ts rename to test/moves/follow-me.test.ts index a99ac0b6c00..2624a1fd267 100644 --- a/test/moves/follow_me.test.ts +++ b/test/moves/follow-me.test.ts @@ -1,10 +1,10 @@ -import { Stat } from "#enums/stat"; -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +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 { Stat } from "#enums/stat"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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 96a341582f9..c3b29d8fabb 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 "#app/phases/move-effect-phase"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +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/forests_curse.test.ts b/test/moves/forests-curse.test.ts similarity index 95% rename from test/moves/forests_curse.test.ts rename to test/moves/forests-curse.test.ts index 81ced674a33..4467a5c4037 100644 --- a/test/moves/forests_curse.test.ts +++ b/test/moves/forests-curse.test.ts @@ -1,8 +1,8 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; import { PokemonType } from "#enums/pokemon-type"; -import GameManager from "#test/testUtils/gameManager"; +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"; diff --git a/test/moves/freeze_dry.test.ts b/test/moves/freeze-dry.test.ts similarity index 99% rename from test/moves/freeze_dry.test.ts rename to test/moves/freeze-dry.test.ts index f1577d3d6c5..5d84d6be795 100644 --- a/test/moves/freeze_dry.test.ts +++ b/test/moves/freeze-dry.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { PokemonType } from "#enums/pokemon-type"; +import { BattlerIndex } from "#enums/battler-index"; import { Challenges } from "#enums/challenges"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveId } from "#enums/move-id"; +import { PokemonType } from "#enums/pokemon-type"; +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"; diff --git a/test/moves/freezy_frost.test.ts b/test/moves/freezy-frost.test.ts similarity index 92% rename from test/moves/freezy_frost.test.ts rename to test/moves/freezy-frost.test.ts index 55f67de085f..8a8a47013ca 100644 --- a/test/moves/freezy_frost.test.ts +++ b/test/moves/freezy-frost.test.ts @@ -1,12 +1,11 @@ -import { Stat } from "#enums/stat"; +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 { 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"; -import { allMoves } from "#app/data/data-lists"; -import { CommandPhase } from "#app/phases/command-phase"; describe("Moves - Freezy Frost", () => { let phaserGame: Phaser.Game; @@ -77,7 +76,6 @@ describe("Moves - Freezy Frost", () => { const [leftOpp, rightOpp] = game.scene.getEnemyField(); game.move.select(MoveId.HOWL, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -87,7 +85,6 @@ describe("Moves - Freezy Frost", () => { expect(rightOpp.getStatStage(Stat.ATK)).toBe(2); game.move.select(MoveId.FREEZY_FROST, 0, leftOpp.getBattlerIndex()); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/fusion_bolt.test.ts b/test/moves/fusion-bolt.test.ts similarity index 95% rename from test/moves/fusion_bolt.test.ts rename to test/moves/fusion-bolt.test.ts index c92a483a497..aa8073c4c1f 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"; diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion-flare-bolt.test.ts similarity index 96% rename from test/moves/fusion_flare_bolt.test.ts rename to test/moves/fusion-flare-bolt.test.ts index 1967e9f12d1..42cc1248325 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion-flare-bolt.test.ts @@ -1,14 +1,14 @@ -import { Stat } from "#enums/stat"; +import { allMoves } from "#data/data-lists"; import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; -import type Move from "#app/data/moves/move"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { MovePhase } from "#app/phases/move-phase"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { Stat } from "#enums/stat"; +import type { Move } from "#moves/move"; +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/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 c0df347fcce..be8ce4eeec4 100644 --- a/test/moves/fusion_flare.test.ts +++ b/test/moves/fusion-flare.test.ts @@ -1,8 +1,8 @@ -import { TurnStartPhase } from "#app/phases/turn-start-phase"; 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 { TurnStartPhase } from "#phases/turn-start-phase"; +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/future_sight.test.ts b/test/moves/future-sight.test.ts similarity index 95% rename from test/moves/future_sight.test.ts rename to test/moves/future-sight.test.ts index 7de70a88d10..53e93412570 100644 --- a/test/moves/future_sight.test.ts +++ b/test/moves/future-sight.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/gastro_acid.test.ts b/test/moves/gastro-acid.test.ts similarity index 95% rename from test/moves/gastro_acid.test.ts rename to test/moves/gastro-acid.test.ts index 39167987809..59177528492 100644 --- a/test/moves/gastro_acid.test.ts +++ b/test/moves/gastro-acid.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { MoveResult } from "#enums/move-result"; import { BattleType } from "#enums/battle-type"; -import GameManager from "#test/testUtils/gameManager"; +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 { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Gastro Acid", () => { @@ -100,12 +100,12 @@ describe("Moves - Gastro Acid", () => { await game.toNextTurn(); expect(enemyPokemon.summonData.abilitySuppressed).toBe(true); - game.move.select(MoveId.WATER_GUN); + game.move.use(MoveId.WATER_GUN); await game.toNextTurn(); // water gun should've dealt damage due to suppressed Water Absorb - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); + expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - game.move.select(MoveId.SPORE); + game.move.use(MoveId.SPORE); await game.toEndOfTurn(); // Comatose should block stauts effect diff --git a/test/moves/geomancy.test.ts b/test/moves/geomancy.test.ts index 452022b4cf1..b01ad756f9b 100644 --- a/test/moves/geomancy.test.ts +++ b/test/moves/geomancy.test.ts @@ -1,12 +1,12 @@ -import type { EffectiveStat } from "#enums/stat"; -import { Stat } from "#enums/stat"; -import { MoveResult } from "#enums/move-result"; 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 type { EffectiveStat } from "#enums/stat"; +import { Stat } from "#enums/stat"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Geomancy", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/gigaton_hammer.test.ts b/test/moves/gigaton-hammer.test.ts similarity index 97% rename from test/moves/gigaton_hammer.test.ts rename to test/moves/gigaton-hammer.test.ts index d80743f4ed0..6043f9d7f51 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 GameManager from "#test/testUtils/gameManager"; 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, expect, it } from "vitest"; diff --git a/test/moves/glaive_rush.test.ts b/test/moves/glaive-rush.test.ts similarity index 97% rename from test/moves/glaive_rush.test.ts rename to test/moves/glaive-rush.test.ts index 0b6f30da71a..f20abd68500 100644 --- a/test/moves/glaive_rush.test.ts +++ b/test/moves/glaive-rush.test.ts @@ -1,8 +1,8 @@ -import { allMoves } from "#app/data/data-lists"; +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"; diff --git a/test/moves/growth.test.ts b/test/moves/growth.test.ts index 6eec30be49f..5737f32d891 100644 --- a/test/moves/growth.test.ts +++ b/test/moves/growth.test.ts @@ -1,12 +1,12 @@ -import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; describe("Moves - Growth", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/grudge.test.ts b/test/moves/grudge.test.ts index 36030c88bad..6f5df077d9f 100644 --- a/test/moves/grudge.test.ts +++ b/test/moves/grudge.test.ts @@ -1,8 +1,8 @@ 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 { BattlerIndex } from "#enums/battler-index"; -import 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/guard_split.test.ts b/test/moves/guard-split.test.ts similarity index 95% rename from test/moves/guard_split.test.ts rename to test/moves/guard-split.test.ts index 878bb80f251..fa5dc162a6c 100644 --- a/test/moves/guard_split.test.ts +++ b/test/moves/guard-split.test.ts @@ -1,11 +1,11 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { MoveId } from "#enums/move-id"; -import { Stat } from "#enums/stat"; import { AbilityId } from "#enums/ability-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Guard Split", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/guard_swap.test.ts b/test/moves/guard-swap.test.ts similarity index 88% rename from test/moves/guard_swap.test.ts rename to test/moves/guard-swap.test.ts index d2c33e45df0..e7f8ed1df91 100644 --- a/test/moves/guard_swap.test.ts +++ b/test/moves/guard-swap.test.ts @@ -1,12 +1,12 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { MoveId } from "#enums/move-id"; -import { Stat, BATTLE_STATS } from "#enums/stat"; import { AbilityId } from "#enums/ability-id"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; +import { MoveId } from "#enums/move-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Guard Swap", () => { let phaserGame: Phaser.Game; 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 e57c9af981f..f269373e697 100644 --- a/test/moves/hard_press.test.ts +++ b/test/moves/hard-press.test.ts @@ -1,12 +1,12 @@ -import { allMoves } from "#app/data/data-lists"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +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 type { Move } from "#moves/move"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import type Move from "#app/data/moves/move"; describe("Moves - Hard Press", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/haze.test.ts b/test/moves/haze.test.ts index f3e3dafae0a..179a06fba09 100644 --- a/test/moves/haze.test.ts +++ b/test/moves/haze.test.ts @@ -1,11 +1,11 @@ -import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; import { AbilityId } from "#enums/ability-id"; 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; describe("Moves - Haze", () => { describe("integration tests", () => { diff --git a/test/moves/heal_bell.test.ts b/test/moves/heal-bell.test.ts similarity index 89% rename from test/moves/heal_bell.test.ts rename to test/moves/heal-bell.test.ts index 914307b4795..8b526601e49 100644 --- a/test/moves/heal_bell.test.ts +++ b/test/moves/heal-bell.test.ts @@ -1,11 +1,10 @@ -import { StatusEffect } from "#app/enums/status-effect"; -import { CommandPhase } from "#app/phases/command-phase"; 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 { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Heal Bell", () => { let phaserGame: Phaser.Game; @@ -40,7 +39,6 @@ describe("Moves - Heal Bell", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.HEAL_BELL, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -62,7 +60,6 @@ describe("Moves - Heal Bell", () => { vi.spyOn(rightOpp, "resetStatus"); game.move.select(MoveId.HEAL_BELL, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -86,7 +83,6 @@ describe("Moves - Heal Bell", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.HEAL_BELL, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/heal_block.test.ts b/test/moves/heal-block.test.ts similarity index 97% rename from test/moves/heal_block.test.ts rename to test/moves/heal-block.test.ts index 77a10927930..4e4a9355467 100644 --- a/test/moves/heal_block.test.ts +++ b/test/moves/heal-block.test.ts @@ -1,12 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import GameManager from "#test/testUtils/gameManager"; 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 { 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"; @@ -42,7 +42,7 @@ describe("Moves - Heal Block", () => { const player = game.scene.getPlayerPokemon()!; const enemy = game.scene.getEnemyPokemon()!; - player.damageAndUpdate(enemy.getMaxHp() - 1); + player.damageAndUpdate(player.getMaxHp() - 1); game.move.select(MoveId.ABSORB); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); diff --git a/test/moves/heart_swap.test.ts b/test/moves/heart-swap.test.ts similarity index 90% rename from test/moves/heart_swap.test.ts rename to test/moves/heart-swap.test.ts index e9e407b6b30..e876ec06646 100644 --- a/test/moves/heart_swap.test.ts +++ b/test/moves/heart-swap.test.ts @@ -1,12 +1,12 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { MoveId } from "#enums/move-id"; -import { BATTLE_STATS } from "#enums/stat"; import { AbilityId } from "#enums/ability-id"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; +import { MoveId } from "#enums/move-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Heart Swap", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/hyper_beam.test.ts b/test/moves/hyper-beam.test.ts similarity index 87% rename from test/moves/hyper_beam.test.ts rename to test/moves/hyper-beam.test.ts index bca7cba4e9a..510dac5f662 100644 --- a/test/moves/hyper_beam.test.ts +++ b/test/moves/hyper-beam.test.ts @@ -1,11 +1,11 @@ -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; +import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import GameManager from "#test/testUtils/gameManager"; +import { BerryPhase } from "#phases/berry-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/imprison.test.ts b/test/moves/imprison.test.ts index 26eadb685f9..ed2213bbc7b 100644 --- a/test/moves/imprison.test.ts +++ b/test/moves/imprison.test.ts @@ -1,11 +1,11 @@ +import { AbilityId } from "#enums/ability-id"; +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 { AbilityId } from "#enums/ability-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 { BattlerTagType } from "#enums/battler-tag-type"; -import { ArenaTagType } from "#enums/arena-tag-type"; describe("Moves - Imprison", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/instruct.test.ts b/test/moves/instruct.test.ts index 4b97536f580..086676a1860 100644 --- a/test/moves/instruct.test.ts +++ b/test/moves/instruct.test.ts @@ -1,15 +1,15 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { RandomMoveAttr } from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; -import type Pokemon from "#app/field/pokemon"; -import { MoveResult } from "#enums/move-result"; -import type { MovePhase } from "#app/phases/move-phase"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { MoveUseMode } from "#enums/move-use-mode"; +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 type { Pokemon } from "#field/pokemon"; +import type { MovePhase } from "#phases/move-phase"; +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"; @@ -143,7 +143,7 @@ describe("Moves - Instruct", () => { }); it("should fail on metronomed moves, even if also in moveset", async () => { - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.ABSORB); + game.move.forceMetronomeMove(MoveId.ABSORB); await game.classicMode.startBattle([SpeciesId.AMOONGUSS]); const enemy = game.field.getEnemyPokemon(); @@ -201,21 +201,32 @@ describe("Moves - Instruct", () => { game.override.battleStyle("double").enemyMoveset(MoveId.SPLASH).enemySpecies(SpeciesId.MAGIKARP).enemyLevel(1); await game.classicMode.startBattle([SpeciesId.HISUI_ELECTRODE, SpeciesId.KOMMO_O]); - const [electrode, kommo_o] = game.scene.getPlayerField()!; - game.move.changeMoveset(electrode, MoveId.CHLOROBLAST); + const [electrode, kommo_o] = game.scene.getPlayerField(); + game.move.changeMoveset(electrode, MoveId.THUNDERBOLT); game.move.changeMoveset(kommo_o, MoveId.INSTRUCT); - game.move.select(MoveId.CHLOROBLAST, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(MoveId.THUNDERBOLT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); game.move.select(MoveId.INSTRUCT, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); - await game.phaseInterceptor.to("BerryPhase"); + await game.toEndOfTurn(); - // Chloroblast always deals 50% max HP% recoil UNLESS you whiff - // due to lack of targets or similar, - // so all we have to do is check whether electrode fainted or not. - // Naturally, both karps should also be dead as well. - expect(electrode.isFainted()).toBe(true); - const [karp1, karp2] = game.scene.getEnemyField()!; + expect(electrode.getMoveHistory()).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + result: MoveResult.SUCCESS, + move: MoveId.THUNDERBOLT, + targets: [BattlerIndex.ENEMY], + useMode: MoveUseMode.NORMAL, + }), + expect.objectContaining({ + result: MoveResult.SUCCESS, + move: MoveId.THUNDERBOLT, + targets: [BattlerIndex.ENEMY_2], + useMode: MoveUseMode.NORMAL, + }), + ]), + ); + const [karp1, karp2] = game.scene.getEnemyField(); expect(karp1.isFainted()).toBe(true); expect(karp2.isFainted()).toBe(true); }); @@ -348,7 +359,7 @@ describe("Moves - Instruct", () => { useMode: MoveUseMode.NORMAL, }); - game.move.select(MoveId.SPLASH); + game.move.use(MoveId.SPLASH); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toEndOfTurn(); expect(game.field.getEnemyPokemon().getLastXMoves()[0].result).toBe(MoveResult.FAIL); diff --git a/test/moves/jaw_lock.test.ts b/test/moves/jaw-lock.test.ts similarity index 93% rename from test/moves/jaw_lock.test.ts rename to test/moves/jaw-lock.test.ts index 4e103c14f98..919e07ece9a 100644 --- a/test/moves/jaw_lock.test.ts +++ b/test/moves/jaw-lock.test.ts @@ -1,13 +1,13 @@ -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { FaintPhase } from "#app/phases/faint-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import GameManager from "#test/testUtils/gameManager"; +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 { 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/moves/lash_out.test.ts b/test/moves/lash-out.test.ts similarity index 93% rename from test/moves/lash_out.test.ts rename to test/moves/lash-out.test.ts index 33a58914978..06629997b71 100644 --- a/test/moves/lash_out.test.ts +++ b/test/moves/lash-out.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; 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 3cb98a0cd92..e6f4faacd09 100644 --- a/test/moves/last-resort.test.ts +++ b/test/moves/last-resort.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { MoveResult } from "#enums/move-result"; import { AbilityId } from "#enums/ability-id"; -import { MoveUseMode } from "#enums/move-use-mode"; +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/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/last_respects.test.ts b/test/moves/last-respects.test.ts similarity index 97% rename from test/moves/last_respects.test.ts rename to test/moves/last-respects.test.ts index 14aa5ad3309..9dadb316144 100644 --- a/test/moves/last_respects.test.ts +++ b/test/moves/last-respects.test.ts @@ -1,11 +1,11 @@ -import { MoveId } from "#enums/move-id"; -import { BattlerIndex } from "#enums/battler-index"; -import { SpeciesId } from "#enums/species-id"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import GameManager from "#test/testUtils/gameManager"; -import { allMoves } from "#app/data/data-lists"; -import type Move from "#app/data/moves/move"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +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 { MoveEffectPhase } from "#phases/move-effect-phase"; +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 91% rename from test/moves/light_screen.test.ts rename to test/moves/light-screen.test.ts index 8c436aacf6a..04f7f59f184 100644 --- a/test/moves/light_screen.test.ts +++ b/test/moves/light-screen.test.ts @@ -1,15 +1,15 @@ -import type BattleScene from "#app/battle-scene"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import type Move from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; +import type { BattleScene } from "#app/battle-scene"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import type Pokemon from "#app/field/pokemon"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { NumberHolder } from "#app/utils/common"; +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 type { Pokemon } from "#field/pokemon"; +import type { Move } from "#moves/move"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/moves/lucky_chant.test.ts b/test/moves/lucky-chant.test.ts similarity index 98% rename from test/moves/lucky_chant.test.ts rename to test/moves/lucky-chant.test.ts index a57d231134b..1128f79b1d2 100644 --- a/test/moves/lucky_chant.test.ts +++ b/test/moves/lucky-chant.test.ts @@ -1,10 +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/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { BattlerIndex } from "#enums/battler-index"; describe("Moves - Lucky Chant", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/lunar_blessing.test.ts b/test/moves/lunar-blessing.test.ts similarity index 90% rename from test/moves/lunar_blessing.test.ts rename to test/moves/lunar-blessing.test.ts index 2709ccbacf3..480c7fb3b31 100644 --- a/test/moves/lunar_blessing.test.ts +++ b/test/moves/lunar-blessing.test.ts @@ -1,9 +1,8 @@ -import { StatusEffect } from "#app/enums/status-effect"; -import { CommandPhase } from "#app/phases/command-phase"; 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 { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -47,7 +46,6 @@ describe("Moves - Lunar Blessing", () => { vi.spyOn(rightPlayer, "heal"); game.move.select(MoveId.LUNAR_BLESSING, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -67,7 +65,6 @@ describe("Moves - Lunar Blessing", () => { vi.spyOn(rightPlayer, "resetStatus"); game.move.select(MoveId.LUNAR_BLESSING, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/lunar_dance.test.ts b/test/moves/lunar-dance.test.ts similarity index 86% rename from test/moves/lunar_dance.test.ts rename to test/moves/lunar-dance.test.ts index aea1e31b616..7386d15079b 100644 --- a/test/moves/lunar_dance.test.ts +++ b/test/moves/lunar-dance.test.ts @@ -1,11 +1,10 @@ -import { StatusEffect } from "#app/enums/status-effect"; -import { CommandPhase } from "#app/phases/command-phase"; 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 { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Lunar Dance", () => { let phaserGame: Phaser.Game; @@ -40,7 +39,6 @@ describe("Moves - Lunar Dance", () => { game.move.select(MoveId.SPLASH, 0); game.move.select(MoveId.SPLASH, 1); - await game.phaseInterceptor.to(CommandPhase); await game.toNextTurn(); // Bulbasaur should still be burned and have used a PP for splash and not at max hp @@ -51,7 +49,6 @@ describe("Moves - Lunar Dance", () => { // Switch out Bulbasaur for Rattata so we can swtich bulbasaur back in with lunar dance game.doSwitchPokemon(2); game.move.select(MoveId.SPLASH, 1); - await game.phaseInterceptor.to(CommandPhase); await game.toNextTurn(); game.move.select(MoveId.SPLASH, 0); @@ -67,7 +64,6 @@ describe("Moves - Lunar Dance", () => { game.move.select(MoveId.SPLASH, 0); game.move.select(MoveId.LUNAR_DANCE); - await game.phaseInterceptor.to(CommandPhase); await game.toNextTurn(); // Using Lunar dance again should fail because nothing in party and rattata should be alive diff --git a/test/moves/magic_coat.test.ts b/test/moves/magic-coat.test.ts similarity index 97% rename from test/moves/magic_coat.test.ts rename to test/moves/magic-coat.test.ts index 566c206f1ba..2ed09499e95 100644 --- a/test/moves/magic_coat.test.ts +++ b/test/moves/magic-coat.test.ts @@ -1,15 +1,15 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { allMoves } from "#app/data/data-lists"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { Stat } from "#app/enums/stat"; -import { StatusEffect } from "#app/enums/status-effect"; -import { MoveResult } from "#enums/move-result"; +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 { BattlerIndex } from "#enums/battler-index"; +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 { Stat } from "#enums/stat"; +import { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Magic Coat", () => { diff --git a/test/moves/magnet-rise.test.ts b/test/moves/magnet-rise.test.ts new file mode 100644 index 00000000000..181113b5328 --- /dev/null +++ b/test/moves/magnet-rise.test.ts @@ -0,0 +1,57 @@ +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, expect, it } from "vitest"; + +describe("Moves - Magnet Rise", () => { + 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") + .enemySpecies(SpeciesId.RATTATA) + .enemyMoveset(MoveId.EARTHQUAKE) + .criticalHits(false) + .enemyLevel(1); + }); + + it("should make the user immune to ground-type moves", async () => { + await game.classicMode.startBattle([SpeciesId.MAGNEZONE]); + + game.move.use(MoveId.MAGNET_RISE); + await game.toEndOfTurn(); + + const magnezone = game.field.getPlayerPokemon(); + expect(magnezone.hp).toBe(magnezone.getMaxHp()); + expect(magnezone.isGrounded()).toBe(false); + }); + + it("should be removed by gravity", async () => { + await game.classicMode.startBattle([SpeciesId.MAGNEZONE]); + + game.move.use(MoveId.MAGNET_RISE); + await game.toNextTurn(); + + const magnezone = game.field.getPlayerPokemon(); + expect(magnezone.hp).toBe(magnezone.getMaxHp()); + + game.move.use(MoveId.GRAVITY); + await game.toEndOfTurn(); + + expect(magnezone.hp).toBeLessThan(magnezone.getMaxHp()); + expect(magnezone.isGrounded()).toBe(true); + }); +}); diff --git a/test/moves/magnet_rise.test.ts b/test/moves/magnet_rise.test.ts deleted file mode 100644 index d8fc6a74225..00000000000 --- a/test/moves/magnet_rise.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { CommandPhase } from "#app/phases/command-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -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 - Magnet Rise", () => { - let phaserGame: Phaser.Game; - let game: GameManager; - const moveToUse = MoveId.MAGNET_RISE; - - beforeAll(() => { - phaserGame = new Phaser.Game({ - type: Phaser.HEADLESS, - }); - }); - - afterEach(() => { - game.phaseInterceptor.restoreOg(); - }); - - beforeEach(() => { - game = new GameManager(phaserGame); - game.override - .battleStyle("single") - .starterSpecies(SpeciesId.MAGNEZONE) - .enemySpecies(SpeciesId.RATTATA) - .enemyMoveset(MoveId.DRILL_RUN) - .criticalHits(false) - .enemyLevel(1) - .moveset([moveToUse, MoveId.SPLASH, MoveId.GRAVITY, MoveId.BATON_PASS]); - }); - - it("MAGNET RISE", async () => { - await game.classicMode.startBattle(); - - const startingHp = game.scene.getPlayerParty()[0].hp; - game.move.select(moveToUse); - await game.phaseInterceptor.to(TurnEndPhase); - const finalHp = game.scene.getPlayerParty()[0].hp; - const hpLost = finalHp - startingHp; - expect(hpLost).toBe(0); - }); - - it("MAGNET RISE - Gravity", async () => { - await game.classicMode.startBattle(); - - const startingHp = game.scene.getPlayerParty()[0].hp; - game.move.select(moveToUse); - await game.phaseInterceptor.to(CommandPhase); - let finalHp = game.scene.getPlayerParty()[0].hp; - let hpLost = finalHp - startingHp; - expect(hpLost).toBe(0); - game.move.select(MoveId.GRAVITY); - await game.phaseInterceptor.to(TurnEndPhase); - finalHp = game.scene.getPlayerParty()[0].hp; - hpLost = finalHp - startingHp; - expect(hpLost).not.toBe(0); - }); -}); diff --git a/test/moves/make_it_rain.test.ts b/test/moves/make-it-rain.test.ts similarity index 94% rename from test/moves/make_it_rain.test.ts rename to test/moves/make-it-rain.test.ts index 13b8e8f1853..ab242d0c3a0 100644 --- a/test/moves/make_it_rain.test.ts +++ b/test/moves/make-it-rain.test.ts @@ -1,12 +1,12 @@ -import { Stat } from "#enums/stat"; 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 { Stat } from "#enums/stat"; +import { MoveEndPhase } from "#phases/move-end-phase"; +import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; describe("Moves - Make It Rain", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/mat_block.test.ts b/test/moves/mat-block.test.ts similarity index 85% rename from test/moves/mat_block.test.ts rename to test/moves/mat-block.test.ts index d77f538a973..0870a38f062 100644 --- a/test/moves/mat_block.test.ts +++ b/test/moves/mat-block.test.ts @@ -1,13 +1,13 @@ -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; 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 "#app/phases/berry-phase"; -import { CommandPhase } from "#app/phases/command-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { BerryPhase } from "#phases/berry-phase"; +import { CommandPhase } from "#phases/command-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; describe("Moves - Mat Block", () => { let phaserGame: Phaser.Game; @@ -42,9 +42,6 @@ describe("Moves - Mat Block", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.MAT_BLOCK); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -60,9 +57,6 @@ describe("Moves - Mat Block", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.MAT_BLOCK); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -76,7 +70,6 @@ describe("Moves - Mat Block", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); @@ -85,7 +78,6 @@ describe("Moves - Mat Block", () => { await game.phaseInterceptor.to(CommandPhase, false); game.move.select(MoveId.MAT_BLOCK); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.MAT_BLOCK, 1); await game.phaseInterceptor.to(BerryPhase, false); 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 4d07d59c16d..024f12d76af 100644 --- a/test/moves/metal_burst.test.ts +++ b/test/moves/metal-burst.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { MoveResult } from "#enums/move-result"; 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/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 0695ff88407..189cddd367b 100644 --- a/test/moves/metronome.test.ts +++ b/test/moves/metronome.test.ts @@ -1,17 +1,17 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { RechargingTag, SemiInvulnerableTag } from "#app/data/battler-tags"; -import { allMoves } from "#app/data/data-lists"; +import { RechargingTag, SemiInvulnerableTag } from "#data/battler-tags"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { Stat } from "#app/enums/stat"; -import { MoveResult } from "#enums/move-result"; +import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { MoveUseMode } from "#enums/move-use-mode"; 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 { Stat } from "#enums/stat"; +import type { RandomMoveAttr } from "#moves/move"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; -import { RandomMoveAttr } from "#app/data/moves/move"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Metronome", () => { let phaserGame: Phaser.Game; @@ -30,7 +30,6 @@ describe("Moves - Metronome", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([MoveId.METRONOME, MoveId.SPLASH]) .battleStyle("single") .startingLevel(100) .enemyLevel(100) @@ -45,7 +44,7 @@ describe("Moves - Metronome", () => { // Pick the first move available to use const player = game.field.getPlayerPokemon(); vi.spyOn(player, "randBattleSeedInt").mockReturnValue(0); - game.move.select(MoveId.METRONOME); + game.move.use(MoveId.METRONOME); await game.toNextTurn(); const lastMoveStr = MoveId[player.getLastXMoves()[0].move]; @@ -54,20 +53,21 @@ describe("Moves - Metronome", () => { }); it("should become semi-invulnerable when using phasing moves", async () => { - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.DIVE); + game.move.forceMetronomeMove(MoveId.DIVE); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); const player = game.field.getPlayerPokemon(); expect(player.getTag(SemiInvulnerableTag)).toBeUndefined(); expect(player.visible).toBe(true); - game.move.select(MoveId.METRONOME); + game.move.use(MoveId.METRONOME); await game.toNextTurn(); expect(player.getTag(SemiInvulnerableTag)).toBeDefined(); expect(player.visible).toBe(false); - await game.phaseInterceptor.to("TurnEndPhase"); + await game.toEndOfTurn(); + expect(player.getTag(SemiInvulnerableTag)).toBeUndefined(); expect(player.visible).toBe(true); @@ -76,10 +76,10 @@ describe("Moves - Metronome", () => { }); it("should apply secondary effects of the called move", async () => { - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.WOOD_HAMMER); + game.move.forceMetronomeMove(MoveId.WOOD_HAMMER); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - game.move.select(MoveId.METRONOME); + game.move.use(MoveId.METRONOME); await game.toNextTurn(); const player = game.field.getPlayerPokemon(); @@ -90,10 +90,10 @@ describe("Moves - Metronome", () => { }); it("should count as last move used for Copycat/Mirror Move", async () => { - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.ABSORB); + game.move.forceMetronomeMove(MoveId.ABSORB, true); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - game.move.select(MoveId.METRONOME); + game.move.use(MoveId.METRONOME); await game.move.forceEnemyMove(MoveId.MIRROR_MOVE); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextTurn(); @@ -107,9 +107,10 @@ describe("Moves - Metronome", () => { }); it("should recharge after using recharge moves", async () => { + game.move.forceMetronomeMove(MoveId.HYPER_BEAM); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); + const player = game.field.getPlayerPokemon(); - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.HYPER_BEAM); vi.spyOn(allMoves[MoveId.HYPER_BEAM], "accuracy", "get").mockReturnValue(100); game.move.select(MoveId.METRONOME); @@ -119,10 +120,10 @@ describe("Moves - Metronome", () => { }); it("should charge for charging moves while still maintaining follow-up status", async () => { - game.override.moveset([]).enemyMoveset(MoveId.SPITE); - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.SOLAR_BEAM); + game.move.forceMetronomeMove(MoveId.SOLAR_BEAM); await game.classicMode.startBattle([SpeciesId.REGIELEKI]); + // We need to override movesets here const player = game.field.getPlayerPokemon(); game.move.changeMoveset(player, [MoveId.METRONOME, MoveId.SOLAR_BEAM]); @@ -130,19 +131,21 @@ describe("Moves - Metronome", () => { expect(metronomeMove).toBeDefined(); expect(solarBeamMove).toBeDefined(); - game.move.select(MoveId.METRONOME); + game.move.use(MoveId.METRONOME); + await game.move.forceEnemyMove(MoveId.SPITE) await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); - await game.phaseInterceptor.to("TurnEndPhase"); + await game.toEndOfTurn(); - expect(player.getTag(BattlerTagType.CHARGING)).toBeTruthy(); + // Solar beam charged up, but did not block Spite from reducing Metronome's PP + expect(player.getTag(BattlerTagType.CHARGING)).toBeDefined(); const turn1PpUsed = metronomeMove.ppUsed; expect.soft(turn1PpUsed).toBeGreaterThan(1); expect(solarBeamMove.ppUsed).toBe(0); - await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.toNextTurn(); - expect(player.getTag(BattlerTagType.CHARGING)).toBeFalsy(); + expect(player.getTag(BattlerTagType.CHARGING)).toBeUndefined(); const turn2PpUsed = metronomeMove.ppUsed - turn1PpUsed; expect(turn2PpUsed).toBeGreaterThan(1); expect(solarBeamMove.ppUsed).toBe(0); @@ -159,10 +162,10 @@ describe("Moves - Metronome", () => { const [leftPlayer, rightPlayer] = game.scene.getPlayerField(); const [leftOpp, rightOpp] = game.scene.getEnemyField(); - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.AROMATIC_MIST); + game.move.forceMetronomeMove(MoveId.AROMATIC_MIST); - game.move.select(MoveId.METRONOME, 0); - game.move.select(MoveId.SPLASH, 1); + game.move.use(MoveId.METRONOME, BattlerIndex.PLAYER); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); await game.toNextTurn(); expect(rightPlayer.getStatStage(Stat.SPDEF)).toBe(1); @@ -173,18 +176,18 @@ describe("Moves - Metronome", () => { it("should cause opponent to flee when using Roar", async () => { await game.classicMode.startBattle([SpeciesId.REGIELEKI]); - vi.spyOn(RandomMoveAttr.prototype, "getMove").mockReturnValue(MoveId.ROAR); + game.move.forceMetronomeMove(MoveId.ROAR); const enemyPokemon = game.field.getEnemyPokemon(); - game.move.select(MoveId.METRONOME); - await game.phaseInterceptor.to("BerryPhase"); + game.move.use(MoveId.METRONOME); + await game.toEndOfTurn() const isVisible = enemyPokemon.visible; const hasFled = enemyPokemon.switchOutStatus; expect(isVisible).toBe(false); expect(hasFled).toBe(true); - await game.toNextTurn(); // Check no crash + await game.toNextTurn(); }); }); diff --git a/test/moves/miracle_eye.test.ts b/test/moves/miracle-eye.test.ts similarity index 91% rename from test/moves/miracle_eye.test.ts rename to test/moves/miracle-eye.test.ts index 9281931621f..9ed3824fc28 100644 --- a/test/moves/miracle_eye.test.ts +++ b/test/moves/miracle-eye.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +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/mirror_move.test.ts b/test/moves/mirror-move.test.ts similarity index 98% rename from test/moves/mirror_move.test.ts rename to test/moves/mirror-move.test.ts index df502b49709..6420ad37f50 100644 --- a/test/moves/mirror_move.test.ts +++ b/test/moves/mirror-move.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { Stat } from "#enums/stat"; -import { MoveUseMode } from "#enums/move-use-mode"; -import { MoveResult } from "#enums/move-result"; 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/testUtils/gameManager"; +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"; diff --git a/test/moves/mist.test.ts b/test/moves/mist.test.ts index 4191aae0a46..c1a3777e2a5 100644 --- a/test/moves/mist.test.ts +++ b/test/moves/mist.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#enums/stat"; 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 { 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"; diff --git a/test/moves/moongeist_beam.test.ts b/test/moves/moongeist_beam.test.ts deleted file mode 100644 index 94e454e3f0f..00000000000 --- a/test/moves/moongeist_beam.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { allMoves } from "#app/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 Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; - -describe("Moves - Moongeist Beam", () => { - 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 - .moveset([MoveId.MOONGEIST_BEAM, MoveId.METRONOME]) - .ability(AbilityId.BALL_FETCH) - .startingLevel(200) - .battleStyle("single") - .criticalHits(false) - .enemySpecies(SpeciesId.MAGIKARP) - .enemyAbility(AbilityId.STURDY) - .enemyMoveset(MoveId.SPLASH); - }); - - // Also covers Photon Geyser and Sunsteel Strike - it("should ignore enemy abilities", async () => { - await game.classicMode.startBattle([SpeciesId.MILOTIC]); - - const enemy = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.MOONGEIST_BEAM); - await game.phaseInterceptor.to("BerryPhase"); - - expect(enemy.isFainted()).toBe(true); - }); - - // Also covers Photon Geyser and Sunsteel Strike - it("should not ignore enemy abilities when called by another move, such as metronome", async () => { - await game.classicMode.startBattle([SpeciesId.MILOTIC]); - vi.spyOn(allMoves[MoveId.METRONOME].getAttrs("RandomMoveAttr")[0], "getMove").mockReturnValue( - MoveId.MOONGEIST_BEAM, - ); - - game.move.select(MoveId.METRONOME); - await game.phaseInterceptor.to("BerryPhase"); - - expect(game.scene.getEnemyPokemon()!.isFainted()).toBe(false); - expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].move).toBe(MoveId.MOONGEIST_BEAM); - }); -}); diff --git a/test/moves/multi_target.test.ts b/test/moves/multi-target.test.ts similarity index 97% rename from test/moves/multi_target.test.ts rename to test/moves/multi-target.test.ts index bc6b24c474d..53480a6505f 100644 --- a/test/moves/multi_target.test.ts +++ b/test/moves/multi-target.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; -import { SpeciesId } from "#enums/species-id"; -import { toDmgValue } from "#app/utils/common"; +import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; -import GameManager from "#test/testUtils/gameManager"; +import { SpeciesId } from "#enums/species-id"; +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 e005def85ad..7b3772d8b71 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"; diff --git a/test/moves/obstruct.test.ts b/test/moves/obstruct.test.ts index fc534180bef..9abc60be129 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"; diff --git a/test/moves/octolock.test.ts b/test/moves/octolock.test.ts index 2a2f8743ad2..09992dd52c7 100644 --- a/test/moves/octolock.test.ts +++ b/test/moves/octolock.test.ts @@ -1,9 +1,9 @@ -import { TrappedTag } from "#app/data/battler-tags"; +import { TrappedTag } from "#data/battler-tags"; 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/order_up.test.ts b/test/moves/order-up.test.ts similarity index 98% rename from test/moves/order_up.test.ts rename to test/moves/order-up.test.ts index fc505809fe6..2e77d4b2fa7 100644 --- a/test/moves/order_up.test.ts +++ b/test/moves/order-up.test.ts @@ -1,12 +1,12 @@ +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 { PokemonAnimType } from "#enums/pokemon-anim-type"; +import { SpeciesId } from "#enums/species-id"; import type { EffectiveStat } from "#enums/stat"; import { Stat } from "#enums/stat"; -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/parting_shot.test.ts b/test/moves/parting-shot.test.ts similarity index 96% rename from test/moves/parting_shot.test.ts rename to test/moves/parting-shot.test.ts index fdeab6bfc7c..7785bdd3a2f 100644 --- a/test/moves/parting_shot.test.ts +++ b/test/moves/parting-shot.test.ts @@ -1,14 +1,14 @@ 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 { FaintPhase } from "#phases/faint-phase"; +import { MessagePhase } from "#phases/message-phase"; +import { TurnInitPhase } from "#phases/turn-init-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, test } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { Stat } from "#enums/stat"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { FaintPhase } from "#app/phases/faint-phase"; -import { MessagePhase } from "#app/phases/message-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; describe("Moves - Parting Shot", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/payback.test.ts b/test/moves/payback.test.ts new file mode 100644 index 00000000000..f9692bd480f --- /dev/null +++ b/test/moves/payback.test.ts @@ -0,0 +1,69 @@ +import { allMoves } from "#data/data-lists"; +import { AbilityId } from "#enums/ability-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, type MockInstance, vi } from "vitest"; + +describe("Move - Payback", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + let powerSpy: MockInstance; + + 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) + .enemyLevel(100) + .enemySpecies(SpeciesId.DRACOVISH) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .startingModifier([{ name: "POKEBALL", count: 5 }]); + + powerSpy = vi.spyOn(allMoves[MoveId.PAYBACK], "calculateBattlePower"); + }); + + it("should double power if the user moves after the target", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + // turn 1: enemy, then player (boost) + game.move.use(MoveId.PAYBACK); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.toNextTurn(); + + expect(powerSpy).toHaveLastReturnedWith(allMoves[MoveId.PAYBACK].power * 2); + + // turn 2: player, then enemy (no boost) + game.move.use(MoveId.PAYBACK); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toEndOfTurn(); + + expect(powerSpy).toHaveLastReturnedWith(allMoves[MoveId.PAYBACK].power); + }); + + // TODO: Enable test once ability to force catch failure is added + it.todo("should trigger for enemies on player failed ball catch", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + game.doThrowPokeball(PokeballType.POKEBALL); + await game.move.forceEnemyMove(MoveId.PAYBACK); + await game.toEndOfTurn(); + + expect(powerSpy).toHaveLastReturnedWith(allMoves[MoveId.PAYBACK].power * 2); + }); +}); diff --git a/test/moves/plasma_fists.test.ts b/test/moves/plasma-fists.test.ts similarity index 96% rename from test/moves/plasma_fists.test.ts rename to test/moves/plasma-fists.test.ts index 7d1985be13e..569fb1d5c0d 100644 --- a/test/moves/plasma_fists.test.ts +++ b/test/moves/plasma-fists.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { PokemonType } from "#enums/pokemon-type"; import { AbilityId } from "#enums/ability-id"; +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, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Plasma Fists", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/pledge_moves.test.ts b/test/moves/pledge-moves.test.ts similarity index 97% rename from test/moves/pledge_moves.test.ts rename to test/moves/pledge-moves.test.ts index f653e245f6f..c67519d417b 100644 --- a/test/moves/pledge_moves.test.ts +++ b/test/moves/pledge-moves.test.ts @@ -1,17 +1,16 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allAbilities } from "#app/data/data-lists"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { allMoves } from "#app/data/data-lists"; -import { PokemonType } from "#enums/pokemon-type"; -import { ArenaTagType } from "#enums/arena-tag-type"; -import { Stat } from "#enums/stat"; -import { toDmgValue } from "#app/utils/common"; +import { allAbilities, 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 { 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 { Stat } from "#enums/stat"; +import { GameManager } from "#test/test-utils/game-manager"; +import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Pledge Moves", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/pollen_puff.test.ts b/test/moves/pollen-puff.test.ts similarity index 97% rename from test/moves/pollen_puff.test.ts rename to test/moves/pollen-puff.test.ts index cd0a138e96c..ecd208f777b 100644 --- a/test/moves/pollen_puff.test.ts +++ b/test/moves/pollen-puff.test.ts @@ -1,8 +1,8 @@ -import { BattlerIndex } from "#enums/battler-index"; 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"; diff --git a/test/moves/powder.test.ts b/test/moves/powder.test.ts index 8f47f2ff428..17f64a95179 100644 --- a/test/moves/powder.test.ts +++ b/test/moves/powder.test.ts @@ -1,12 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { MoveResult } from "#enums/move-result"; -import { BerryPhase } from "#app/phases/berry-phase"; 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 { MoveResult } from "#enums/move-result"; 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 { BerryPhase } from "#phases/berry-phase"; +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/power_shift.test.ts b/test/moves/power-shift.test.ts similarity index 94% rename from test/moves/power_shift.test.ts rename to test/moves/power-shift.test.ts index cd5252c3f2f..adfd1f0aaa9 100644 --- a/test/moves/power_shift.test.ts +++ b/test/moves/power-shift.test.ts @@ -1,8 +1,8 @@ +import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { Stat } from "#app/enums/stat"; -import { AbilityId } from "#enums/ability-id"; -import GameManager from "#test/testUtils/gameManager"; +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"; diff --git a/test/moves/power_split.test.ts b/test/moves/power-split.test.ts similarity index 95% rename from test/moves/power_split.test.ts rename to test/moves/power-split.test.ts index c0fcd317182..1eaabf6090d 100644 --- a/test/moves/power_split.test.ts +++ b/test/moves/power-split.test.ts @@ -1,11 +1,11 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { MoveId } from "#enums/move-id"; -import { Stat } from "#enums/stat"; import { AbilityId } from "#enums/ability-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Power Split", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/power_swap.test.ts b/test/moves/power-swap.test.ts similarity index 88% rename from test/moves/power_swap.test.ts rename to test/moves/power-swap.test.ts index 82662850c77..b25db40e64c 100644 --- a/test/moves/power_swap.test.ts +++ b/test/moves/power-swap.test.ts @@ -1,12 +1,12 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { MoveId } from "#enums/move-id"; -import { Stat, BATTLE_STATS } from "#enums/stat"; import { AbilityId } from "#enums/ability-id"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; +import { MoveId } from "#enums/move-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Power Swap", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/power_trick.test.ts b/test/moves/power-trick.test.ts similarity index 97% rename from test/moves/power_trick.test.ts rename to test/moves/power-trick.test.ts index af90525d263..3ddd27212e1 100644 --- a/test/moves/power_trick.test.ts +++ b/test/moves/power-trick.test.ts @@ -1,12 +1,12 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { MoveId } from "#enums/move-id"; -import { Stat } from "#enums/stat"; -import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; 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 { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Power Trick", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/protect.test.ts b/test/moves/protect.test.ts index 601afb43ec3..7da54f268e0 100644 --- a/test/moves/protect.test.ts +++ b/test/moves/protect.test.ts @@ -1,15 +1,15 @@ -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; +import { ArenaTrapTag } from "#data/arena-tag"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; -import { Stat } from "#enums/stat"; -import { allMoves } from "#app/data/data-lists"; -import { ArenaTrapTag } from "#app/data/arena-tag"; 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 { 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, test, vi } from "vitest"; describe("Moves - Protect", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/psycho_shift.test.ts b/test/moves/psycho-shift.test.ts similarity index 92% rename from test/moves/psycho_shift.test.ts rename to test/moves/psycho-shift.test.ts index e4eb2bd8ef6..f2e762f1381 100644 --- a/test/moves/psycho_shift.test.ts +++ b/test/moves/psycho-shift.test.ts @@ -1,8 +1,8 @@ -import { StatusEffect } from "#app/enums/status-effect"; 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 { 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"; diff --git a/test/moves/purify.test.ts b/test/moves/purify.test.ts index 2e8e312f23c..88e0da802a3 100644 --- a/test/moves/purify.test.ts +++ b/test/moves/purify.test.ts @@ -1,11 +1,11 @@ +import { Status } from "#data/status-effect"; import { BattlerIndex } from "#enums/battler-index"; -import { Status } from "#app/data/status-effect"; -import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; 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 type { EnemyPokemon, PlayerPokemon } from "#field/pokemon"; +import { MoveEndPhase } from "#phases/move-end-phase"; +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/quash.test.ts b/test/moves/quash.test.ts index 158c409cf05..91ff5581b9e 100644 --- a/test/moves/quash.test.ts +++ b/test/moves/quash.test.ts @@ -1,13 +1,13 @@ -import { SpeciesId } from "#enums/species-id"; -import { MoveId } from "#enums/move-id"; import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; -import { WeatherType } from "#enums/weather-type"; +import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; -import GameManager from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { describe, beforeAll, afterEach, beforeEach, it, expect } from "vitest"; import { MoveUseMode } from "#enums/move-use-mode"; +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("Moves - Quash", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/quick_guard.test.ts b/test/moves/quick-guard.test.ts similarity index 98% rename from test/moves/quick_guard.test.ts rename to test/moves/quick-guard.test.ts index 7146b804ffa..d14eada2445 100644 --- a/test/moves/quick_guard.test.ts +++ b/test/moves/quick-guard.test.ts @@ -1,12 +1,12 @@ +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, test } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; -import { Stat } from "#enums/stat"; -import { BattlerIndex } from "#enums/battler-index"; -import { MoveResult } from "#enums/move-result"; describe("Moves - Quick Guard", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/rage_fist.test.ts b/test/moves/rage-fist.test.ts similarity index 97% rename from test/moves/rage_fist.test.ts rename to test/moves/rage-fist.test.ts index 31dd987cb87..8ed0a71306b 100644 --- a/test/moves/rage_fist.test.ts +++ b/test/moves/rage-fist.test.ts @@ -1,13 +1,13 @@ -import { BattlerIndex } from "#enums/battler-index"; +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 { SpeciesId } from "#enums/species-id"; -import { allMoves } from "#app/data/data-lists"; -import type Move from "#app/data/moves/move"; -import GameManager from "#test/testUtils/gameManager"; +import type { Move } from "#moves/move"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { BattleType } from "#enums/battle-type"; describe("Moves - Rage Fist", () => { let phaserGame: Phaser.Game; 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 845bff33d04..9ae81720e32 100644 --- a/test/moves/rage_powder.test.ts +++ b/test/moves/rage-powder.test.ts @@ -1,8 +1,8 @@ -import { BattlerIndex } from "#enums/battler-index"; 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 54% rename from test/moves/reflect_type.test.ts rename to test/moves/reflect-type.test.ts index 0915069764c..ceaff4019b3 100644 --- a/test/moves/reflect_type.test.ts +++ b/test/moves/reflect-type.test.ts @@ -1,8 +1,8 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; import { PokemonType } from "#enums/pokemon-type"; -import GameManager from "#test/testUtils/gameManager"; +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"; @@ -30,30 +30,26 @@ describe("Moves - Reflect Type", () => { }); it("will make the user Normal/Grass if targetting a typeless Pokemon affected by Forest's Curse", async () => { - game.override - .moveset([MoveId.FORESTS_CURSE, MoveId.REFLECT_TYPE]) - .startingLevel(60) - .enemySpecies(SpeciesId.CHARMANDER) - .enemyMoveset([MoveId.BURN_UP, MoveId.SPLASH]); + game.override.startingLevel(60).enemySpecies(SpeciesId.CHARMANDER); await game.classicMode.startBattle([SpeciesId.FEEBAS]); - const playerPokemon = game.scene.getPlayerPokemon(); - const enemyPokemon = game.scene.getEnemyPokemon(); + const playerPokemon = game.field.getPlayerPokemon(); + const enemyPokemon = game.field.getEnemyPokemon(); - game.move.select(MoveId.SPLASH); - await game.move.selectEnemyMove(MoveId.BURN_UP); + game.move.use(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.BURN_UP); await game.toNextTurn(); - game.move.select(MoveId.FORESTS_CURSE); - await game.move.selectEnemyMove(MoveId.SPLASH); + game.move.use(MoveId.FORESTS_CURSE); + await game.move.forceEnemyMove(MoveId.SPLASH); await game.toNextTurn(); - expect(enemyPokemon?.getTypes().includes(PokemonType.UNKNOWN)).toBe(true); - expect(enemyPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); + expect(enemyPokemon.getTypes().includes(PokemonType.UNKNOWN)).toBe(true); + expect(enemyPokemon.getTypes().includes(PokemonType.GRASS)).toBe(true); - game.move.select(MoveId.REFLECT_TYPE); - await game.move.selectEnemyMove(MoveId.SPLASH); + game.move.use(MoveId.REFLECT_TYPE); + await game.move.forceEnemyMove(MoveId.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); - expect(playerPokemon?.getTypes()[0]).toBe(PokemonType.NORMAL); - expect(playerPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); + expect(playerPokemon.getTypes()[0]).toBe(PokemonType.NORMAL); + expect(playerPokemon.getTypes().includes(PokemonType.GRASS)).toBe(true); }); }); diff --git a/test/moves/reflect.test.ts b/test/moves/reflect.test.ts index ef8c80070bf..228730e9fb6 100644 --- a/test/moves/reflect.test.ts +++ b/test/moves/reflect.test.ts @@ -1,15 +1,15 @@ -import type BattleScene from "#app/battle-scene"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import type Move from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; +import type { BattleScene } from "#app/battle-scene"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import type Pokemon from "#app/field/pokemon"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { NumberHolder } from "#app/utils/common"; +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 type { Pokemon } from "#field/pokemon"; +import type { Move } from "#moves/move"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/relic_song.test.ts b/test/moves/relic-song.test.ts similarity index 95% rename from test/moves/relic_song.test.ts rename to test/moves/relic-song.test.ts index b3dd400a202..62069ac3cd3 100644 --- a/test/moves/relic_song.test.ts +++ b/test/moves/relic-song.test.ts @@ -1,9 +1,9 @@ -import { PokemonType } from "#enums/pokemon-type"; -import { Challenges } from "#app/enums/challenges"; import { AbilityId } from "#enums/ability-id"; +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"; diff --git a/test/moves/retaliate.test.ts b/test/moves/retaliate.test.ts index dd5029a7c83..9e564c52a99 100644 --- a/test/moves/retaliate.test.ts +++ b/test/moves/retaliate.test.ts @@ -1,10 +1,10 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; +import { allMoves } from "#data/data-lists"; import { MoveId } from "#enums/move-id"; -import { allMoves } from "#app/data/data-lists"; -import type Move from "#app/data/moves/move"; +import { SpeciesId } from "#enums/species-id"; +import type { Move } from "#moves/move"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Retaliate", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/revival_blessing.test.ts b/test/moves/revival-blessing.test.ts similarity index 97% rename from test/moves/revival_blessing.test.ts rename to test/moves/revival-blessing.test.ts index 1f2ba869e4f..89a1996fe03 100644 --- a/test/moves/revival_blessing.test.ts +++ b/test/moves/revival-blessing.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { MoveResult } from "#enums/move-result"; -import { toDmgValue } from "#app/utils/common"; 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/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/role_play.test.ts b/test/moves/role-play.test.ts similarity index 94% rename from test/moves/role_play.test.ts rename to test/moves/role-play.test.ts index cfa38ed38b7..af9fc68efa4 100644 --- a/test/moves/role_play.test.ts +++ b/test/moves/role-play.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#app/enums/stat"; 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 { 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"; diff --git a/test/moves/rollout.test.ts b/test/moves/rollout.test.ts index 9639a2e5408..c1c66f4ab39 100644 --- a/test/moves/rollout.test.ts +++ b/test/moves/rollout.test.ts @@ -1,9 +1,8 @@ -import { allMoves } from "#app/data/data-lists"; -import { CommandPhase } from "#app/phases/command-phase"; +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"; @@ -57,8 +56,7 @@ describe("Moves - Rollout", () => { for (let i = 0; i < turns; i++) { game.move.select(MoveId.ROLLOUT); - await game.phaseInterceptor.to(CommandPhase); - + await game.toNextTurn(); dmgHistory.push(previousHp - enemyPkm.hp); previousHp = enemyPkm.hp; } diff --git a/test/moves/roost.test.ts b/test/moves/roost.test.ts index 3707e0ead45..e4ea09e245c 100644 --- a/test/moves/roost.test.ts +++ b/test/moves/roost.test.ts @@ -1,11 +1,11 @@ import { BattlerIndex } from "#enums/battler-index"; -import { PokemonType } from "#enums/pokemon-type"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; +import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; +import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import GameManager from "#test/testUtils/gameManager"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/round.test.ts b/test/moves/round.test.ts index 8e07a819131..517e2202d4d 100644 --- a/test/moves/round.test.ts +++ b/test/moves/round.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; -import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import { allMoves } from "#data/data-lists"; 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 type { MoveEffectPhase } from "#phases/move-effect-phase"; +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 91aa298a8ca..19b56cd759f 100644 --- a/test/moves/safeguard.test.ts +++ b/test/moves/safeguard.test.ts @@ -1,12 +1,12 @@ +import { allAbilities } from "#data/data-lists"; +import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; -import { allAbilities } from "#app/data/data-lists"; -import { StatusEffect } from "#app/enums/status-effect"; -import GameManager from "#test/testUtils/gameManager"; 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, vi } from "vitest"; -import { AbilityId } from "#enums/ability-id"; describe("Moves - Safeguard", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/scale_shot.test.ts b/test/moves/scale-shot.test.ts similarity index 85% rename from test/moves/scale_shot.test.ts rename to test/moves/scale-shot.test.ts index e2c86091378..7e5c60577ce 100644 --- a/test/moves/scale_shot.test.ts +++ b/test/moves/scale-shot.test.ts @@ -1,16 +1,16 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { allMoves } from "#data/data-lists"; 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 { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; +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/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Scale Shot", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/secret_power.test.ts b/test/moves/secret-power.test.ts similarity index 95% rename from test/moves/secret_power.test.ts rename to test/moves/secret-power.test.ts index adb91162ae8..16090bebcbe 100644 --- a/test/moves/secret_power.test.ts +++ b/test/moves/secret-power.test.ts @@ -1,17 +1,16 @@ +import { allAbilities, 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 { BattlerIndex } from "#enums/battler-index"; import { BiomeId } from "#enums/biome-id"; import { MoveId } from "#enums/move-id"; -import { Stat } from "#enums/stat"; -import { allMoves } from "#app/data/data-lists"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { Stat } from "#enums/stat"; +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, vi } from "vitest"; -import { StatusEffect } from "#enums/status-effect"; -import { BattlerIndex } from "#enums/battler-index"; -import { ArenaTagType } from "#enums/arena-tag-type"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { allAbilities } from "#app/data/data-lists"; describe("Moves - Secret Power", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/shed_tail.test.ts b/test/moves/shed-tail.test.ts similarity index 92% rename from test/moves/shed_tail.test.ts rename to test/moves/shed-tail.test.ts index 81ab9215bc9..ff2b29e846d 100644 --- a/test/moves/shed_tail.test.ts +++ b/test/moves/shed-tail.test.ts @@ -1,11 +1,11 @@ -import { SubstituteTag } from "#app/data/battler-tags"; -import { MoveResult } from "#enums/move-result"; +import { SubstituteTag } from "#data/battler-tags"; 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, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Shed Tail", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/shell_side_arm.test.ts b/test/moves/shell-side-arm.test.ts similarity index 91% rename from test/moves/shell_side_arm.test.ts rename to test/moves/shell-side-arm.test.ts index 35246e10e3f..32f37fcc8ac 100644 --- a/test/moves/shell_side_arm.test.ts +++ b/test/moves/shell-side-arm.test.ts @@ -1,11 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; -import type { ShellSideArmCategoryAttr } from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; -import type Move from "#app/data/moves/move"; +import { allMoves } from "#data/data-lists"; 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 type { Move, ShellSideArmCategoryAttr } from "#moves/move"; +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 94% rename from test/moves/shell_trap.test.ts rename to test/moves/shell-trap.test.ts index a3f55cef10f..d2908278d93 100644 --- a/test/moves/shell_trap.test.ts +++ b/test/moves/shell-trap.test.ts @@ -1,12 +1,12 @@ +import { allMoves } from "#data/data-lists"; import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; import { MoveResult } from "#enums/move-result"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import GameManager from "#test/testUtils/gameManager"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/simple_beam.test.ts b/test/moves/simple-beam.test.ts similarity index 95% rename from test/moves/simple_beam.test.ts rename to test/moves/simple-beam.test.ts index f8549944ed9..f45c19c690e 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"; diff --git a/test/moves/sketch.test.ts b/test/moves/sketch.test.ts index 437eaf6759a..34e76b26881 100644 --- a/test/moves/sketch.test.ts +++ b/test/moves/sketch.test.ts @@ -1,15 +1,15 @@ +import { allMoves } from "#data/data-lists"; 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 { PokemonMove } from "#app/data/moves/pokemon-move"; import { MoveResult } from "#enums/move-result"; -import GameManager from "#test/testUtils/gameManager"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { StatusEffect } from "#app/enums/status-effect"; -import { BattlerIndex } from "#enums/battler-index"; -import { RandomMoveAttr } from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; describe("Moves - Sketch", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/skill_swap.test.ts b/test/moves/skill-swap.test.ts similarity index 94% rename from test/moves/skill_swap.test.ts rename to test/moves/skill-swap.test.ts index 7c2e6f5fd0a..50a0a232f6e 100644 --- a/test/moves/skill_swap.test.ts +++ b/test/moves/skill-swap.test.ts @@ -1,8 +1,8 @@ -import { Stat } from "#app/enums/stat"; 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 { 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"; diff --git a/test/moves/sleep_talk.test.ts b/test/moves/sleep-talk.test.ts similarity index 94% rename from test/moves/sleep_talk.test.ts rename to test/moves/sleep-talk.test.ts index 84e9d509a03..8593f4b4d07 100644 --- a/test/moves/sleep_talk.test.ts +++ b/test/moves/sleep-talk.test.ts @@ -1,10 +1,10 @@ -import { Stat } from "#app/enums/stat"; -import { StatusEffect } from "#app/enums/status-effect"; -import { MoveResult } from "#enums/move-result"; 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 { Stat } from "#enums/stat"; +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"; diff --git a/test/moves/solar_beam.test.ts b/test/moves/solar-beam.test.ts similarity index 95% rename from test/moves/solar_beam.test.ts rename to test/moves/solar-beam.test.ts index 55d2ee5d13c..f4347493de5 100644 --- a/test/moves/solar_beam.test.ts +++ b/test/moves/solar-beam.test.ts @@ -1,13 +1,13 @@ -import { allMoves } from "#app/data/data-lists"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { WeatherType } from "#enums/weather-type"; -import { MoveResult } from "#enums/move-result"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; +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 { WeatherType } from "#enums/weather-type"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Solar Beam", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/sparkly_swirl.test.ts b/test/moves/sparkly-swirl.test.ts similarity index 89% rename from test/moves/sparkly_swirl.test.ts rename to test/moves/sparkly-swirl.test.ts index d1cbdd70107..6e43211ed50 100644 --- a/test/moves/sparkly_swirl.test.ts +++ b/test/moves/sparkly-swirl.test.ts @@ -1,10 +1,9 @@ -import { allMoves } from "#app/data/data-lists"; -import { StatusEffect } from "#app/enums/status-effect"; -import { CommandPhase } from "#app/phases/command-phase"; +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 { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -44,7 +43,6 @@ describe("Moves - Sparkly Swirl", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.SPARKLY_SWIRL, 0, leftOpp.getBattlerIndex()); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -66,7 +64,6 @@ describe("Moves - Sparkly Swirl", () => { vi.spyOn(rightOpp, "resetStatus"); game.move.select(MoveId.SPARKLY_SWIRL, 0, leftOpp.getBattlerIndex()); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/spectral_thief.test.ts b/test/moves/spectral-thief.test.ts similarity index 97% rename from test/moves/spectral_thief.test.ts rename to test/moves/spectral-thief.test.ts index e7b19eda506..dd988ac667a 100644 --- a/test/moves/spectral_thief.test.ts +++ b/test/moves/spectral-thief.test.ts @@ -1,11 +1,11 @@ +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { BattlerIndex } from "#enums/battler-index"; -import { Stat } from "#enums/stat"; -import { allMoves } from "#app/data/data-lists"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import GameManager from "#test/testUtils/gameManager"; +import { Stat } from "#enums/stat"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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/speed_swap.test.ts b/test/moves/speed-swap.test.ts similarity index 92% rename from test/moves/speed_swap.test.ts rename to test/moves/speed-swap.test.ts index 3723e7db740..b67ad68746a 100644 --- a/test/moves/speed_swap.test.ts +++ b/test/moves/speed-swap.test.ts @@ -1,11 +1,11 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { MoveId } from "#enums/move-id"; -import { Stat } from "#enums/stat"; import { AbilityId } from "#enums/ability-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Speed Swap", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/spikes.test.ts b/test/moves/spikes.test.ts index 49492701d18..0055945cef9 100644 --- a/test/moves/spikes.test.ts +++ b/test/moves/spikes.test.ts @@ -1,11 +1,12 @@ +import { ArenaTrapTag } from "#data/arena-tag"; 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 { 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 { ArenaTrapTag } from "#app/data/arena-tag"; -import { ArenaTagSide } from "#enums/arena-tag-side"; describe("Moves - Spikes", () => { let phaserGame: Phaser.Game; @@ -80,14 +81,19 @@ describe("Moves - Spikes", () => { expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); }); - it("should work when all targets fainted", async () => { - game.override.enemySpecies(SpeciesId.DIGLETT).battleStyle("double").startingLevel(50); - await game.classicMode.startBattle([SpeciesId.RAYQUAZA, SpeciesId.ROWLET]); + // TODO: re-enable after re-fixing hazards moves + it.todo("should work when all targets fainted", async () => { + game.override.enemySpecies(SpeciesId.DIGLETT).battleStyle("double").startingLevel(1000); + await game.classicMode.startBattle([SpeciesId.RAYQUAZA, SpeciesId.SHUCKLE]); - game.move.select(MoveId.EARTHQUAKE); - game.move.select(MoveId.SPIKES, 1); - await game.phaseInterceptor.to("TurnEndPhase"); + const [enemy1, enemy2] = game.scene.getEnemyField(); + game.move.use(MoveId.HYPER_VOICE, BattlerIndex.PLAYER); + game.move.use(MoveId.SPIKES, BattlerIndex.PLAYER_2); + await game.toEndOfTurn(); + + expect(enemy1.isFainted()).toBe(true); + expect(enemy2.isFainted()).toBe(true); expect(game.scene.arena.getTagOnSide(ArenaTrapTag, ArenaTagSide.ENEMY)).toBeDefined(); }); }); diff --git a/test/moves/spit_up.test.ts b/test/moves/spit-up.test.ts similarity index 94% rename from test/moves/spit_up.test.ts rename to test/moves/spit-up.test.ts index 00cbe2fd0ad..22722cfed2b 100644 --- a/test/moves/spit_up.test.ts +++ b/test/moves/spit-up.test.ts @@ -1,17 +1,17 @@ -import { Stat } from "#enums/stat"; -import { StockpilingTag } from "#app/data/battler-tags"; -import { allMoves } from "#app/data/data-lists"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { MoveResult } from "#enums/move-result"; -import GameManager from "#test/testUtils/gameManager"; +import { StockpilingTag } from "#data/battler-tags"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; +import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; -import type Move from "#app/data/moves/move"; +import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { MovePhase } from "#app/phases/move-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; describe("Moves - Spit Up", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/spotlight.test.ts b/test/moves/spotlight.test.ts index a9e8cd7e2b6..69510c1d852 100644 --- a/test/moves/spotlight.test.ts +++ b/test/moves/spotlight.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#enums/battler-index"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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 4eb011c47f5..2219b95e733 100644 --- a/test/moves/steamroller.test.ts +++ b/test/moves/steamroller.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import type { DamageCalculationResult } from "#app/field/pokemon"; +import { allMoves } from "#data/data-lists"; 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 { 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"; diff --git a/test/moves/stockpile.test.ts b/test/moves/stockpile.test.ts index 3ad47d8d85e..5b170c10fcb 100644 --- a/test/moves/stockpile.test.ts +++ b/test/moves/stockpile.test.ts @@ -1,12 +1,11 @@ -import { Stat } from "#enums/stat"; -import { StockpilingTag } from "#app/data/battler-tags"; -import { MoveResult } from "#enums/move-result"; -import { CommandPhase } from "#app/phases/command-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; +import { StockpilingTag } from "#data/battler-tags"; 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 { Stat } from "#enums/stat"; +import { TurnInitPhase } from "#phases/turn-init-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -50,12 +49,8 @@ describe("Moves - Stockpile", () => { // use Stockpile four times for (let i = 0; i < 4; i++) { - if (i !== 0) { - await game.phaseInterceptor.to(CommandPhase); - } - game.move.select(MoveId.STOCKPILE); - await game.phaseInterceptor.to(TurnInitPhase); + await game.toNextTurn(); const stockpilingTag = user.getTag(StockpilingTag)!; @@ -101,9 +96,6 @@ describe("Moves - Stockpile", () => { expect(user.getStatStage(Stat.DEF)).toBe(6); expect(user.getStatStage(Stat.SPDEF)).toBe(6); - // do it again, just for good measure - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.STOCKPILE); await game.phaseInterceptor.to(TurnInitPhase); diff --git a/test/moves/struggle.test.ts b/test/moves/struggle.test.ts index e1373b29d33..21c4e204974 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"; diff --git a/test/moves/substitute.test.ts b/test/moves/substitute.test.ts index 182fefb74d7..15fd770805a 100644 --- a/test/moves/substitute.test.ts +++ b/test/moves/substitute.test.ts @@ -1,21 +1,21 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { SubstituteTag, TrappedTag } from "#app/data/battler-tags"; -import { StealHeldItemChanceAttr } from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; -import { MoveResult } from "#enums/move-result"; -import type { CommandPhase } from "#app/phases/command-phase"; -import GameManager from "#test/testUtils/gameManager"; -import { Command } from "#enums/command"; -import { UiMode } from "#enums/ui-mode"; +import { SubstituteTag, TrappedTag } from "#data/battler-tags"; +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 { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; +import { Command } from "#enums/command"; import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/swallow.test.ts b/test/moves/swallow.test.ts index c511682011f..1ae31517cb6 100644 --- a/test/moves/swallow.test.ts +++ b/test/moves/swallow.test.ts @@ -1,13 +1,13 @@ -import { Stat } from "#enums/stat"; -import { StockpilingTag } from "#app/data/battler-tags"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { MoveResult } from "#enums/move-result"; -import { MovePhase } from "#app/phases/move-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; +import { StockpilingTag } from "#data/battler-tags"; import { AbilityId } from "#enums/ability-id"; +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 { Stat } from "#enums/stat"; +import { MovePhase } from "#phases/move-phase"; +import { TurnInitPhase } from "#phases/turn-init-phase"; +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/synchronoise.test.ts b/test/moves/synchronoise.test.ts index 9068a40693b..3cfeaf04af9 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"; diff --git a/test/moves/syrup_bomb.test.ts b/test/moves/syrup-bomb.test.ts similarity index 98% rename from test/moves/syrup_bomb.test.ts rename to test/moves/syrup-bomb.test.ts index 4b2821b439c..3e5bddf1e7b 100644 --- a/test/moves/syrup_bomb.test.ts +++ b/test/moves/syrup-bomb.test.ts @@ -1,11 +1,11 @@ +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 { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#enums/battler-tag-type"; import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { BattlerIndex } from "#enums/battler-index"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - SYRUP BOMB", () => { diff --git a/test/moves/tackle.test.ts b/test/moves/tackle.test.ts index f3c0db85a39..23abd650e55 100644 --- a/test/moves/tackle.test.ts +++ b/test/moves/tackle.test.ts @@ -1,9 +1,9 @@ -import { Stat } from "#enums/stat"; -import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { Stat } from "#enums/stat"; +import { EnemyCommandPhase } from "#phases/enemy-command-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +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 88% rename from test/moves/tail_whip.test.ts rename to test/moves/tail-whip.test.ts index e98194b52dd..c872b2535e3 100644 --- a/test/moves/tail_whip.test.ts +++ b/test/moves/tail-whip.test.ts @@ -1,12 +1,12 @@ -import { Stat } from "#enums/stat"; -import GameManager from "#test/testUtils/gameManager"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; 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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; describe("Moves - Tail whip", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/tailwind.test.ts b/test/moves/tailwind.test.ts index 874934fc8f3..436c854066f 100644 --- a/test/moves/tailwind.test.ts +++ b/test/moves/tailwind.test.ts @@ -1,10 +1,10 @@ -import { ArenaTagSide } from "#enums/arena-tag-side"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; import { AbilityId } from "#enums/ability-id"; +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 { 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/tar_shot.test.ts b/test/moves/tar-shot.test.ts similarity index 97% rename from test/moves/tar_shot.test.ts rename to test/moves/tar-shot.test.ts index 8d5ea4b3582..719b5e4c7fe 100644 --- a/test/moves/tar_shot.test.ts +++ b/test/moves/tar-shot.test.ts @@ -1,10 +1,10 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { PokemonType } from "#enums/pokemon-type"; -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; -import { Stat } from "#app/enums/stat"; import { AbilityId } from "#enums/ability-id"; -import GameManager from "#test/testUtils/gameManager"; +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 { 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"; diff --git a/test/moves/taunt.test.ts b/test/moves/taunt.test.ts index fabb95f98b2..f16a019ce2c 100644 --- a/test/moves/taunt.test.ts +++ b/test/moves/taunt.test.ts @@ -1,11 +1,11 @@ -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; import { AbilityId } from "#enums/ability-id"; -import GameManager from "#test/testUtils/gameManager"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { MoveResult } from "#enums/move-result"; -import { BattlerTagType } from "#enums/battler-tag-type"; describe("Moves - Taunt", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/telekinesis.test.ts b/test/moves/telekinesis.test.ts index 5c9f1e22395..4c452c24ec6 100644 --- a/test/moves/telekinesis.test.ts +++ b/test/moves/telekinesis.test.ts @@ -1,13 +1,13 @@ -import { BattlerTagType } from "#enums/battler-tag-type"; -import { allMoves } from "#app/data/data-lists"; +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 { MoveResult } from "#enums/move-result"; -import GameManager from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; import { BattlerIndex } from "#enums/battler-index"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Telekinesis", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/tera_blast.test.ts b/test/moves/tera-blast.test.ts similarity index 97% rename from test/moves/tera_blast.test.ts rename to test/moves/tera-blast.test.ts index fbebd428cfd..37dd8f53eaf 100644 --- a/test/moves/tera_blast.test.ts +++ b/test/moves/tera-blast.test.ts @@ -1,13 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { Stat } from "#enums/stat"; -import type { TeraMoveCategoryAttr } from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; -import type Move from "#app/data/moves/move"; -import { PokemonType } from "#enums/pokemon-type"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; +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 { Stat } from "#enums/stat"; +import type { Move, TeraMoveCategoryAttr } from "#moves/move"; +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/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 2eaf2ec0372..d13ab3fb3b0 100644 --- a/test/moves/tera_starstorm.test.ts +++ b/test/moves/tera-starstorm.test.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { PokemonType } from "#enums/pokemon-type"; import { AbilityId } from "#enums/ability-id"; +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, it, expect, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Moves - Tera Starstorm", () => { let phaserGame: Phaser.Game; 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 9ecdd94a94f..e42e92d35d2 100644 --- a/test/moves/thousand_arrows.test.ts +++ b/test/moves/thousand-arrows.test.ts @@ -1,10 +1,10 @@ import { AbilityId } from "#enums/ability-id"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +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 { BerryPhase } from "#phases/berry-phase"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +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/throat_chop.test.ts b/test/moves/throat-chop.test.ts similarity index 90% rename from test/moves/throat_chop.test.ts rename to test/moves/throat-chop.test.ts index aa92f657c86..f5e6a978e3d 100644 --- a/test/moves/throat_chop.test.ts +++ b/test/moves/throat-chop.test.ts @@ -1,11 +1,11 @@ +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 { Stat } from "#app/enums/stat"; -import { AbilityId } from "#enums/ability-id"; -import GameManager from "#test/testUtils/gameManager"; +import { Stat } from "#enums/stat"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Throat Chop", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/thunder_wave.test.ts b/test/moves/thunder-wave.test.ts similarity index 96% rename from test/moves/thunder_wave.test.ts rename to test/moves/thunder-wave.test.ts index 7d2692fdfa3..84408ace7e9 100644 --- a/test/moves/thunder_wave.test.ts +++ b/test/moves/thunder-wave.test.ts @@ -1,9 +1,9 @@ -import type { EnemyPokemon } from "#app/field/pokemon"; 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 type { EnemyPokemon } from "#field/pokemon"; +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/tidy_up.test.ts b/test/moves/tidy-up.test.ts similarity index 92% rename from test/moves/tidy_up.test.ts rename to test/moves/tidy-up.test.ts index 69c9df42b36..8dd74e4ab78 100644 --- a/test/moves/tidy_up.test.ts +++ b/test/moves/tidy-up.test.ts @@ -1,14 +1,14 @@ -import { Stat } from "#enums/stat"; -import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { SubstituteTag } from "#data/battler-tags"; import { AbilityId } from "#enums/ability-id"; +import { ArenaTagType } from "#enums/arena-tag-type"; import { MoveId } from "#enums/move-id"; -import GameManager from "#test/testUtils/gameManager"; +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/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { SubstituteTag } from "#app/data/battler-tags"; -import { SpeciesId } from "#enums/species-id"; describe("Moves - Tidy Up", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/torment.test.ts b/test/moves/torment.test.ts index e4d926d9601..1ed4529fcbd 100644 --- a/test/moves/torment.test.ts +++ b/test/moves/torment.test.ts @@ -1,12 +1,12 @@ -import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; import { AbilityId } from "#enums/ability-id"; -import GameManager from "#test/testUtils/gameManager"; +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 { TurnEndPhase } from "#phases/turn-end-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { MoveResult } from "#enums/move-result"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; describe("Moves - Torment", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/toxic_spikes.test.ts b/test/moves/toxic-spikes.test.ts similarity index 94% rename from test/moves/toxic_spikes.test.ts rename to test/moves/toxic-spikes.test.ts index bf1f5acc1cb..1315eaa31c3 100644 --- a/test/moves/toxic_spikes.test.ts +++ b/test/moves/toxic-spikes.test.ts @@ -1,14 +1,14 @@ -import type { ArenaTrapTag } from "#app/data/arena-tag"; -import { ArenaTagSide } from "#enums/arena-tag-side"; -import type { SessionSaveData } from "#app/system/game-data"; -import { GameData } from "#app/system/game-data"; -import { decrypt, encrypt } from "#app/utils/data"; +import type { ArenaTrapTag } from "#data/arena-tag"; import { AbilityId } from "#enums/ability-id"; +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 { StatusEffect } from "#enums/status-effect"; -import GameManager from "#test/testUtils/gameManager"; +import type { SessionSaveData } from "#system/game-data"; +import { GameData } from "#system/game-data"; +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"; diff --git a/test/moves/toxic.test.ts b/test/moves/toxic.test.ts index a7ba52eb963..13af6cf48fd 100644 --- a/test/moves/toxic.test.ts +++ b/test/moves/toxic.test.ts @@ -1,11 +1,11 @@ +import { allMoves } from "#data/data-lists"; +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 { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { StatusEffect } from "#enums/status-effect"; -import { BattlerIndex } from "#enums/battler-index"; -import { allMoves } from "#app/data/data-lists"; describe("Moves - Toxic", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/transform-imposter.test.ts b/test/moves/transform-imposter.test.ts new file mode 100644 index 00000000000..b1631130154 --- /dev/null +++ b/test/moves/transform-imposter.test.ts @@ -0,0 +1,379 @@ +import { Status } from "#data/status-effect"; +import { AbilityId } from "#enums/ability-id"; +import { BattleType } from "#enums/battle-type"; +import { BattlerIndex } from "#enums/battler-index"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { BerryType } from "#enums/berry-type"; +import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +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/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, type MockInstance, vi } from "vitest"; + +// TODO: Add more tests once Transform/Imposter are fully implemented +describe("Transforming Effects", () => { + 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") + .enemySpecies(SpeciesId.MEW) + .enemyLevel(200) + .enemyAbility(AbilityId.BEAST_BOOST) + .enemyPassiveAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .ability(AbilityId.STURDY); + }); + + // Contains logic shared by both Transform and Impostor (for brevity) + describe("Phases - PokemonTransformPhase", async () => { + it("should copy target's species, ability, gender, all stats except HP, all stat stages, moveset and types", async () => { + await game.classicMode.startBattle([SpeciesId.DITTO]); + + const ditto = game.field.getPlayerPokemon(); + const mew = game.field.getEnemyPokemon(); + + mew.setStatStage(Stat.ATK, 4); + + game.move.use(MoveId.SPLASH); + game.scene.phaseManager.unshiftNew("PokemonTransformPhase", ditto.getBattlerIndex(), mew.getBattlerIndex()); + await game.toEndOfTurn(); + + expect(ditto.isTransformed()).toBe(true); + expect(ditto.getSpeciesForm().speciesId).toBe(mew.getSpeciesForm().speciesId); + expect(ditto.getAbility()).toBe(mew.getAbility()); + expect(ditto.getGender()).toBe(mew.getGender()); + + const playerStats = ditto.getStats(false); + const enemyStats = mew.getStats(false); + // HP stays the same; all other stats should carry over + expect(playerStats[0]).not.toBe(enemyStats[0]); + expect(playerStats.slice(1)).toEqual(enemyStats.slice(1)); + + // Stat stages/moveset IDs + expect(ditto.getStatStages()).toEqual(mew.getStatStages()); + + expect(ditto.getMoveset().map(m => m.moveId)).toEqual(ditto.getMoveset().map(m => m.moveId)); + + expect(ditto.getTypes()).toEqual(mew.getTypes()); + }); + + // TODO: This is not implemented + it.todo("should copy the target's original typing if target is typeless", async () => { + game.override.enemySpecies(SpeciesId.MAGMAR); + await game.classicMode.startBattle([SpeciesId.DITTO]); + + const ditto = game.field.getPlayerPokemon(); + const magmar = game.field.getEnemyPokemon(); + + game.move.use(MoveId.TRANSFORM); + await game.move.forceEnemyMove(MoveId.BURN_UP); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.toEndOfTurn(); + + expect(magmar.getTypes()).toEqual([PokemonType.UNKNOWN]); + expect(ditto.getTypes()).toEqual([PokemonType.FIRE]); + }); + + it("should not consider the target's Tera Type when copying types", async () => { + game.override.enemySpecies(SpeciesId.MAGMAR); + await game.classicMode.startBattle([SpeciesId.DITTO]); + + const ditto = game.field.getPlayerPokemon(); + const magmar = game.field.getEnemyPokemon(); + magmar.isTerastallized = true; + magmar.teraType = PokemonType.DARK; + + game.move.use(MoveId.TRANSFORM); + await game.toEndOfTurn(); + + expect(ditto.getTypes(true)).toEqual([PokemonType.FIRE]); + }); + + // TODO: This is not currently implemented + it.todo("should copy volatile status effects", async () => { + await game.classicMode.startBattle([SpeciesId.DITTO]); + + const ditto = game.field.getPlayerPokemon(); + const mew = game.field.getEnemyPokemon(); + mew.addTag(BattlerTagType.SEEDED, 0, MoveId.LEECH_SEED, ditto.id); + mew.addTag(BattlerTagType.CONFUSED, 4, MoveId.AXE_KICK, ditto.id); + + game.move.use(MoveId.TRANSFORM); + await game.toEndOfTurn(); + + expect(ditto.getTag(BattlerTagType.SEEDED)).toBeDefined(); + expect(ditto.getTag(BattlerTagType.CONFUSED)).toBeDefined(); + }); + + // TODO: This is not implemented + it.todo("should copy the target's rage fist hit count"); + + it("should not copy friendship, held items, nickname, level or non-volatile status effects", async () => { + game.override.enemyHeldItems([{ name: "BERRY", count: 1, type: BerryType.SITRUS }]); + await game.classicMode.startBattle([SpeciesId.DITTO]); + + const ditto = game.field.getPlayerPokemon(); + const mew = game.field.getEnemyPokemon(); + + mew.status = new Status(StatusEffect.POISON); + mew.friendship = 255; + mew.nickname = btoa(unescape(encodeURIComponent("Pink Furry Cat Thing"))); + + game.move.use(MoveId.TRANSFORM); + await game.toEndOfTurn(); + + expect(ditto.status?.effect).toBeUndefined(); + expect(ditto.getNameToRender()).not.toBe(mew.getNameToRender()); + expect(ditto.level).not.toBe(mew.level); + expect(ditto.friendship).not.toBe(mew.friendship); + expect(ditto.getHeldItems()).not.toEqual(mew.getHeldItems()); + }); + + it("should copy in-battle overridden stats", async () => { + await game.classicMode.startBattle([SpeciesId.DITTO]); + + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); + + const oldAtk = player.getStat(Stat.ATK); + const avgAtk = Math.floor((player.getStat(Stat.ATK, false) + enemy.getStat(Stat.ATK, false)) / 2); + + game.move.use(MoveId.TRANSFORM); + await game.move.forceEnemyMove(MoveId.POWER_SPLIT); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.toEndOfTurn(); + + expect(player.getStat(Stat.ATK, false)).toBe(avgAtk); + expect(enemy.getStat(Stat.ATK, false)).toBe(avgAtk); + expect(avgAtk).not.toBe(oldAtk); + }); + + it("should set each move's pp to a maximum of 5 without affecting PP ups", async () => { + game.override.enemyMoveset([MoveId.SWORDS_DANCE, MoveId.GROWL, MoveId.SKETCH, MoveId.RECOVER]); + await game.classicMode.startBattle([SpeciesId.DITTO]); + + const player = game.field.getPlayerPokemon(); + + game.move.use(MoveId.TRANSFORM); + await game.toEndOfTurn(); + + player.getMoveset().forEach(move => { + // Should set correct maximum PP without touching `ppUp` + if (move) { + if (move.moveId === MoveId.SKETCH) { + expect(move.getMovePp()).toBe(1); + } else { + expect(move.getMovePp()).toBe(5); + } + expect(move.ppUp).toBe(0); + } + }); + }); + + it("should activate its ability if it copies one that activates on summon", async () => { + game.override.enemyAbility(AbilityId.INTIMIDATE); + await game.classicMode.startBattle([SpeciesId.DITTO]); + + game.move.use(MoveId.TRANSFORM); + game.phaseInterceptor.clearLogs(); + await game.toEndOfTurn(); + + expect(game.field.getEnemyPokemon().getStatStage(Stat.ATK)).toBe(-1); + expect(game.phaseInterceptor.log).toContain("StatStageChangePhase"); + }); + + it("should persist transformed attributes across reloads", async () => { + await game.classicMode.startBattle([SpeciesId.DITTO]); + + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); + + game.move.use(MoveId.TRANSFORM); + await game.move.forceEnemyMove(MoveId.MEMENTO); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toNextWave(); + + expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game.scene.currentBattle.waveIndex).toBe(2); + + await game.reload.reloadSession(); + + const playerReloaded = game.field.getPlayerPokemon(); + const playerMoveset = player.getMoveset(); + + expect(playerReloaded.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); + expect(playerReloaded.getAbility()).toBe(enemy.getAbility()); + expect(playerReloaded.getGender()).toBe(enemy.getGender()); + + expect(playerMoveset.map(m => m.moveId)).toEqual([MoveId.MEMENTO]); + }); + + it("should stay transformed with the correct form after reload", async () => { + game.override.enemySpecies(SpeciesId.DARMANITAN); + await game.classicMode.startBattle([SpeciesId.DITTO]); + + const player = game.field.getPlayerPokemon(); + const enemy = game.field.getEnemyPokemon(); + + // change form + enemy.species.formIndex = 1; + + game.move.use(MoveId.TRANSFORM); + await game.move.forceEnemyMove(MoveId.MEMENTO); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toNextWave(); + + expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game.scene.currentBattle.waveIndex).toBe(2); + + expect(player.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); + expect(player.getSpeciesForm().formIndex).toBe(enemy.getSpeciesForm().formIndex); + + await game.reload.reloadSession(); + + const playerReloaded = game.field.getPlayerPokemon(); + expect(playerReloaded.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); + expect(playerReloaded.getSpeciesForm().formIndex).toBe(enemy.getSpeciesForm().formIndex); + }); + }); + + describe("Moves - Transform", () => { + it.each<{ cause: string; callback: (p: Pokemon) => void; player?: boolean }>([ + { + cause: "user is fused", + callback: p => vi.spyOn(p, "isFusion").mockReturnValue(true), + }, + { + cause: "target is fused", + callback: p => vi.spyOn(p, "isFusion").mockReturnValue(true), + player: false, + }, + { + cause: "user is transformed", + callback: p => vi.spyOn(p, "isTransformed").mockReturnValue(true), + }, + { + cause: "target is transformed", + callback: p => vi.spyOn(p, "isTransformed").mockReturnValue(true), + player: false, + }, + { + cause: "user has illusion", + callback: p => p.setIllusion(game.scene.getEnemyParty()[1]), + }, + { + cause: "target has illusion", + callback: p => p.setIllusion(game.scene.getEnemyParty()[1]), + player: false, + }, + { + cause: "target is behind a substitute", + callback: p => p.addTag(BattlerTagType.SUBSTITUTE, 1, MoveId.SUBSTITUTE, p.id), + player: false, + }, + ])("should fail if $cause", async ({ callback, player = true }) => { + game.override.battleType(BattleType.TRAINER); // ensures 2 enemy pokemon for illusion + await game.classicMode.startBattle([SpeciesId.DITTO, SpeciesId.ABOMASNOW]); + + callback(player ? game.field.getPlayerPokemon() : game.field.getEnemyPokemon()); + + game.move.use(MoveId.TRANSFORM); + await game.toEndOfTurn(); + + const ditto = game.field.getPlayerPokemon(); + expect(ditto.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(game.phaseInterceptor.log).not.toContain("PokemonTransformPhase"); + }); + }); + + describe("Abilities - Imposter", () => { + beforeEach(async () => { + game.override.ability(AbilityId.NONE); + // Mock ability index to always be HA (ensuring Ditto has Imposter and nobody else). + ( + vi.spyOn(Pokemon.prototype as any, "generateAbilityIndex") as MockInstance< + (typeof Pokemon.prototype)["generateAbilityIndex"] + > + ).mockReturnValue(3); + }); + + it.each<{ name: string; callback: (p: EnemyPokemon) => void }>([ + { + name: "opponents with substitutes", + callback: p => p.addTag(BattlerTagType.SUBSTITUTE, 1, MoveId.SUBSTITUTE, p.id), + }, + { name: "fused opponents", callback: p => vi.spyOn(p, "isFusion").mockReturnValue(true) }, + { + name: "opponents with illusions", + callback: p => p.setIllusion(game.scene.getEnemyParty()[1]), // doesn't really matter what the illusion is, merely that it exists + }, + ])("should ignore $name during target selection", async ({ callback }) => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.GYARADOS, SpeciesId.MILOTIC, SpeciesId.DITTO]); + + const ditto = game.scene.getPlayerParty()[2]; + + const [enemy1, enemy2] = game.scene.getEnemyField(); + // Override enemy 1 to be a fusion/illusion + callback(enemy1); + + expect(ditto.canTransformInto(enemy1)).toBe(false); + expect(ditto.canTransformInto(enemy2)).toBe(true); + + // Switch out to Ditto + game.doSwitchPokemon(2); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.toEndOfTurn(); + + expect(ditto.isActive()).toBe(true); + expect(ditto.isTransformed()).toBe(true); + expect(ditto.getSpeciesForm().speciesId).toBe(enemy2.getSpeciesForm().speciesId); + expect(game.phaseInterceptor.log).toContain("ShowAbilityPhase"); + expect(game.phaseInterceptor.log).toContain("PokemonTransformPhase"); + }); + + it("should not activate if both opponents are fused or have illusions", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.GYARADOS, SpeciesId.MILOTIC, SpeciesId.DITTO]); + + const [gyarados, , ditto] = game.scene.getPlayerParty(); + const [enemy1, enemy2] = game.scene.getEnemyParty(); + // Override enemy 1 to be a fusion & enemy 2 to have illusion + vi.spyOn(enemy1, "isFusion").mockReturnValue(true); + enemy2.setIllusion(gyarados); + + expect(ditto.canTransformInto(enemy1)).toBe(false); + expect(ditto.canTransformInto(enemy2)).toBe(false); + + // Switch out to Ditto + game.doSwitchPokemon(2); + game.move.use(MoveId.SPLASH, BattlerIndex.PLAYER_2); + await game.toEndOfTurn(); + + expect(ditto.isActive()).toBe(true); + expect(ditto.isTransformed()).toBe(false); + expect(ditto.getSpeciesForm().speciesId).toBe(SpeciesId.DITTO); + expect(game.phaseInterceptor.log).not.toContain("ShowAbilityPhase"); + expect(game.phaseInterceptor.log).not.toContain("PokemonTransformPhase"); + }); + }); +}); diff --git a/test/moves/transform.test.ts b/test/moves/transform.test.ts deleted file mode 100644 index 4fbaf0136ab..00000000000 --- a/test/moves/transform.test.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { MoveId } from "#enums/move-id"; -import { Stat, EFFECTIVE_STATS } from "#enums/stat"; -import { AbilityId } from "#enums/ability-id"; -import { BattlerIndex } from "#enums/battler-index"; - -// TODO: Add more tests once Transform is fully implemented -describe("Moves - Transform", () => { - 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") - .enemySpecies(SpeciesId.MEW) - .enemyLevel(200) - .enemyAbility(AbilityId.BEAST_BOOST) - .enemyPassiveAbility(AbilityId.BALL_FETCH) - .enemyMoveset(MoveId.SPLASH) - .ability(AbilityId.INTIMIDATE) - .moveset([MoveId.TRANSFORM]); - }); - - it("should copy species, ability, gender, all stats except HP, all stat stages, moveset, and types of target", async () => { - await game.classicMode.startBattle([SpeciesId.DITTO]); - - game.move.select(MoveId.TRANSFORM); - await game.phaseInterceptor.to(TurnEndPhase); - - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; - - expect(player.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); - expect(player.getAbility()).toBe(enemy.getAbility()); - expect(player.getGender()).toBe(enemy.getGender()); - - // copies all stats except hp - expect(player.getStat(Stat.HP, false)).not.toBe(enemy.getStat(Stat.HP)); - for (const s of EFFECTIVE_STATS) { - expect(player.getStat(s, false)).toBe(enemy.getStat(s, false)); - } - - expect(player.getStatStages()).toEqual(enemy.getStatStages()); - - // move IDs are equal - expect(player.getMoveset().map(m => m.moveId)).toEqual(enemy.getMoveset().map(m => m.moveId)); - - expect(player.getTypes()).toEqual(enemy.getTypes()); - }); - - it("should copy in-battle overridden stats", async () => { - game.override.enemyMoveset([MoveId.POWER_SPLIT]); - - await game.classicMode.startBattle([SpeciesId.DITTO]); - - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.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); - - game.move.select(MoveId.TRANSFORM); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(player.getStat(Stat.ATK, false)).toBe(avgAtk); - expect(enemy.getStat(Stat.ATK, false)).toBe(avgAtk); - - expect(player.getStat(Stat.SPATK, false)).toBe(avgSpAtk); - expect(enemy.getStat(Stat.SPATK, false)).toBe(avgSpAtk); - }); - - it("should set each move's pp to a maximum of 5", async () => { - game.override.enemyMoveset([MoveId.SWORDS_DANCE, MoveId.GROWL, MoveId.SKETCH, MoveId.RECOVER]); - - await game.classicMode.startBattle([SpeciesId.DITTO]); - const player = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.TRANSFORM); - await game.phaseInterceptor.to(TurnEndPhase); - - player.getMoveset().forEach(move => { - // Should set correct maximum PP without touching `ppUp` - if (move) { - if (move.moveId === MoveId.SKETCH) { - expect(move.getMovePp()).toBe(1); - } else { - expect(move.getMovePp()).toBe(5); - } - expect(move.ppUp).toBe(0); - } - }); - }); - - it("should activate its ability if it copies one that activates on summon", async () => { - game.override.enemyAbility(AbilityId.INTIMIDATE).ability(AbilityId.BALL_FETCH); - - await game.classicMode.startBattle([SpeciesId.DITTO]); - game.move.select(MoveId.TRANSFORM); - - await game.phaseInterceptor.to("BerryPhase"); - - expect(game.scene.getEnemyPokemon()?.getStatStage(Stat.ATK)).toBe(-1); - }); - - it("should persist transformed attributes across reloads", async () => { - game.override.enemyMoveset([]).moveset([]); - - await game.classicMode.startBattle([SpeciesId.DITTO]); - - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; - - game.move.changeMoveset(player, MoveId.TRANSFORM); - game.move.changeMoveset(enemy, MoveId.MEMENTO); - - game.move.select(MoveId.TRANSFORM); - await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); - await game.toNextWave(); - - expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); - expect(game.scene.currentBattle.waveIndex).toBe(2); - - await game.reload.reloadSession(); - - const playerReloaded = game.scene.getPlayerPokemon()!; - const playerMoveset = player.getMoveset(); - - expect(playerReloaded.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); - expect(playerReloaded.getAbility()).toBe(enemy.getAbility()); - expect(playerReloaded.getGender()).toBe(enemy.getGender()); - - expect(playerReloaded.getStat(Stat.HP, false)).not.toBe(enemy.getStat(Stat.HP)); - for (const s of EFFECTIVE_STATS) { - expect(playerReloaded.getStat(s, false)).toBe(enemy.getStat(s, false)); - } - - expect(playerMoveset.length).toEqual(1); - expect(playerMoveset[0]?.moveId).toEqual(MoveId.MEMENTO); - }); - - it("should stay transformed with the correct form after reload", async () => { - game.override.enemyMoveset([]).moveset([]).enemySpecies(SpeciesId.DARMANITAN); - - await game.classicMode.startBattle([SpeciesId.DITTO]); - - const player = game.scene.getPlayerPokemon()!; - const enemy = game.scene.getEnemyPokemon()!; - - // change form - enemy.species.forms[1]; - enemy.species.formIndex = 1; - - game.move.changeMoveset(player, MoveId.TRANSFORM); - game.move.changeMoveset(enemy, MoveId.MEMENTO); - - game.move.select(MoveId.TRANSFORM); - await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); - await game.toNextWave(); - - expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); - expect(game.scene.currentBattle.waveIndex).toBe(2); - - await game.reload.reloadSession(); - - const playerReloaded = game.scene.getPlayerPokemon()!; - - expect(playerReloaded.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); - expect(playerReloaded.getSpeciesForm().formIndex).toBe(enemy.getSpeciesForm().formIndex); - }); -}); diff --git a/test/moves/trick_or_treat.test.ts b/test/moves/trick-or-treat.test.ts similarity index 95% rename from test/moves/trick_or_treat.test.ts rename to test/moves/trick-or-treat.test.ts index 861115e2503..095cda873e0 100644 --- a/test/moves/trick_or_treat.test.ts +++ b/test/moves/trick-or-treat.test.ts @@ -1,8 +1,8 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import { SpeciesId } from "#enums/species-id"; import { PokemonType } from "#enums/pokemon-type"; -import GameManager from "#test/testUtils/gameManager"; +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"; diff --git a/test/moves/triple_arrows.test.ts b/test/moves/triple-arrows.test.ts similarity index 89% rename from test/moves/triple_arrows.test.ts rename to test/moves/triple-arrows.test.ts index 89ccb4e5b04..2f7c50f8a44 100644 --- a/test/moves/triple_arrows.test.ts +++ b/test/moves/triple-arrows.test.ts @@ -1,10 +1,9 @@ -import type { FlinchAttr, StatStageChangeAttr } from "#app/data/moves/move"; -import { allMoves } from "#app/data/data-lists"; +import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import type Move from "#app/data/moves/move"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import type { FlinchAttr, Move, StatStageChangeAttr } from "#moves/move"; +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 98% rename from test/moves/u_turn.test.ts rename to test/moves/u-turn.test.ts index a2e29899ad8..fb34490fdf4 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"; diff --git a/test/moves/upper_hand.test.ts b/test/moves/upper-hand.test.ts similarity index 98% rename from test/moves/upper_hand.test.ts rename to test/moves/upper-hand.test.ts index fe38e75cf9a..91f3a34b9c6 100644 --- a/test/moves/upper_hand.test.ts +++ b/test/moves/upper-hand.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; -import { MoveResult } from "#enums/move-result"; 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/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/whirlwind.test.ts b/test/moves/whirlwind.test.ts index 00d7c16561c..90bbf722224 100644 --- a/test/moves/whirlwind.test.ts +++ b/test/moves/whirlwind.test.ts @@ -1,19 +1,19 @@ +import { globalScene } from "#app/global-scene"; +import { Status } from "#data/status-effect"; +import { AbilityId } from "#enums/ability-id"; +import { BattleType } from "#enums/battle-type"; +import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Challenges } from "#enums/challenges"; -import { PokemonType } from "#enums/pokemon-type"; -import { MoveResult } from "#enums/move-result"; -import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; +import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { StatusEffect } from "#enums/status-effect"; +import { TrainerType } from "#enums/trainer-type"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { Status } from "#app/data/status-effect"; -import { StatusEffect } from "#enums/status-effect"; -import { globalScene } from "#app/global-scene"; -import { BattlerIndex } from "#enums/battler-index"; -import { BattleType } from "#enums/battle-type"; -import { TrainerType } from "#enums/trainer-type"; describe("Moves - Whirlwind", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/wide_guard.test.ts b/test/moves/wide-guard.test.ts similarity index 88% rename from test/moves/wide_guard.test.ts rename to test/moves/wide-guard.test.ts index 07c02158e94..e599829e1b9 100644 --- a/test/moves/wide_guard.test.ts +++ b/test/moves/wide-guard.test.ts @@ -1,12 +1,11 @@ -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; 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 "#app/phases/berry-phase"; -import { CommandPhase } from "#app/phases/command-phase"; +import { BerryPhase } from "#phases/berry-phase"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; describe("Moves - Wide Guard", () => { let phaserGame: Phaser.Game; @@ -41,9 +40,6 @@ describe("Moves - Wide Guard", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.WIDE_GUARD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -59,9 +55,6 @@ describe("Moves - Wide Guard", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.WIDE_GUARD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -77,9 +70,6 @@ describe("Moves - Wide Guard", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.WIDE_GUARD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -96,9 +86,6 @@ describe("Moves - Wide Guard", () => { const enemyPokemon = game.scene.getEnemyField(); game.move.select(MoveId.WIDE_GUARD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SURF, 1); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/will_o_wisp.test.ts b/test/moves/will-o-wisp.test.ts similarity index 96% rename from test/moves/will_o_wisp.test.ts rename to test/moves/will-o-wisp.test.ts index 336e84129c5..5cb94c4617c 100644 --- a/test/moves/will_o_wisp.test.ts +++ b/test/moves/will-o-wisp.test.ts @@ -1,9 +1,9 @@ -import { BattlerIndex } from "#enums/battler-index"; 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 { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/mystery-encounter/encounter-test-utils.ts b/test/mystery-encounter/encounter-test-utils.ts index 6293a49cf63..784e8ae4950 100644 --- a/test/mystery-encounter/encounter-test-utils.ts +++ b/test/mystery-encounter/encounter-test-utils.ts @@ -1,24 +1,24 @@ +import { Status } from "#data/status-effect"; +import { Button } from "#enums/buttons"; +import { StatusEffect } from "#enums/status-effect"; +import { UiMode } from "#enums/ui-mode"; // biome-ignore lint/performance/noNamespaceImport: Necessary for mocks -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { Status } from "#app/data/status-effect"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MessagePhase } from "#app/phases/message-phase"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { CommandPhase } from "#phases/command-phase"; +import { MessagePhase } from "#phases/message-phase"; import { MysteryEncounterBattlePhase, MysteryEncounterOptionSelectedPhase, MysteryEncounterPhase, MysteryEncounterRewardsPhase, -} from "#app/phases/mystery-encounter-phases"; -import { VictoryPhase } from "#app/phases/victory-phase"; -import type MessageUiHandler from "#app/ui/message-ui-handler"; -import type MysteryEncounterUiHandler from "#app/ui/mystery-encounter-ui-handler"; -import type PartyUiHandler from "#app/ui/party-ui-handler"; -import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import { isNullOrUndefined } from "#app/utils/common"; -import { Button } from "#enums/buttons"; -import { StatusEffect } from "#enums/status-effect"; -import type GameManager from "#test/testUtils/gameManager"; +} from "#phases/mystery-encounter-phases"; +import { VictoryPhase } from "#phases/victory-phase"; +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"; +import type { PartyUiHandler } from "#ui/party-ui-handler"; +import { isNullOrUndefined } from "#utils/common"; import { expect, vi } from "vitest"; /** 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 82cac197fe9..93cf4537c53 100644 --- a/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts +++ b/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts @@ -1,25 +1,25 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { EggTier } from "#enums/egg-type"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { ATrainersTestEncounter } from "#mystery-encounters/a-trainers-test-encounter"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { PartyHealPhase } from "#phases/party-heal-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { ATrainersTestEncounter } from "#app/data/mystery-encounters/encounters/a-trainers-test-encounter"; -import { EggTier } from "#enums/egg-type"; -import { CommandPhase } from "#app/phases/command-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { PartyHealPhase } from "#app/phases/party-heal-phase"; +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"; const namespace = "mysteryEncounters/aTrainersTest"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; diff --git a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts index b6c4e4d85fb..562482dd520 100644 --- a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts +++ b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts @@ -1,25 +1,25 @@ +import type { BattleScene } from "#app/battle-scene"; +import { BerryType } from "#enums/berry-type"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { BerryModifier, PokemonHeldItemModifier } from "#modifiers/modifier"; +import { AbsoluteAvariceEncounter } from "#mystery-encounters/absolute-avarice-encounter"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { MovePhase } from "#phases/move-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { BerryModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { BerryType } from "#enums/berry-type"; -import { AbsoluteAvariceEncounter } from "#app/data/mystery-encounters/encounters/absolute-avarice-encounter"; -import { MoveId } from "#enums/move-id"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import { GameManager } from "#test/test-utils/game-manager"; import i18next from "i18next"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/absoluteAvarice"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; 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 4f986f58b88..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 @@ -1,24 +1,24 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import { AbilityId } from "#enums/ability-id"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { AnOfferYouCantRefuseEncounter } from "#app/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter"; +import { MoveId } from "#enums/move-id"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { MoveId } from "#enums/move-id"; -import { ShinyRateBoosterModifier } from "#app/modifier/modifier"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; +import { ShinyRateBoosterModifier } from "#modifiers/modifier"; +import { PokemonMove } from "#moves/pokemon-move"; +import { AnOfferYouCantRefuseEncounter } from "#mystery-encounters/an-offer-you-cant-refuse-encounter"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +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/test-utils/game-manager"; +import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; -import { AbilityId } from "#enums/ability-id"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/anOfferYouCantRefuse"; /** Gyarados for Indimidate */ diff --git a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts index 8c2c6c608cd..3d29c04cab7 100644 --- a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts +++ b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts @@ -1,26 +1,26 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import { AbilityId } from "#enums/ability-id"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { UiMode } from "#enums/ui-mode"; +import { BerryModifier } from "#modifiers/modifier"; +import { BerriesAboundEncounter } from "#mystery-encounters/berries-abound-encounter"; +import * as EncounterDialogueUtils from "#mystery-encounters/encounter-dialogue-utils"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { UiMode } from "#enums/ui-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { BerryModifier } from "#app/modifier/modifier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { BerriesAboundEncounter } from "#app/data/mystery-encounters/encounters/berries-abound-encounter"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import * as EncounterDialogueUtils from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { CommandPhase } from "#app/phases/command-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { AbilityId } from "#enums/ability-id"; +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"; const namespace = "mysteryEncounters/berriesAbound"; const defaultParty = [SpeciesId.PYUKUMUKU, SpeciesId.MAGIKARP, SpeciesId.PIKACHU]; 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 4da8ff7f643..205bf996815 100644 --- a/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts +++ b/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts @@ -1,29 +1,29 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { TrainerType } from "#enums/trainer-type"; +import { UiMode } from "#enums/ui-mode"; +import { ContactHeldItemTransferChanceModifier } from "#modifiers/modifier"; +import { PokemonMove } from "#moves/pokemon-move"; +import { BugTypeSuperfanEncounter } from "#mystery-encounters/bug-type-superfan-encounter"; +import * as encounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { MysteryEncounterPhase, MysteryEncounterRewardsPhase } from "#phases/mystery-encounter-phases"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { MoveId } from "#enums/move-id"; -import type BattleScene from "#app/battle-scene"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { UiMode } from "#enums/ui-mode"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { TrainerType } from "#enums/trainer-type"; -import { MysteryEncounterPhase, MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phases"; -import { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; -import { CommandPhase } from "#app/phases/command-phase"; -import { BugTypeSuperfanEncounter } from "#app/data/mystery-encounters/encounters/bug-type-superfan-encounter"; -import * as encounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; +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"; const namespace = "mysteryEncounters/bugTypeSuperfan"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.WEEDLE]; diff --git a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index 85193d1ec72..b573701d568 100644 --- a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -1,42 +1,42 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import * as BattleAnims from "#data/battle-anims"; +import { modifierTypes } from "#data/data-lists"; +import { AbilityId } from "#enums/ability-id"; +import { BerryType } from "#enums/berry-type"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { Button } from "#enums/buttons"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import * as BattleAnims from "#app/data/battle-anims"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { TrainerType } from "#enums/trainer-type"; +import { UiMode } from "#enums/ui-mode"; +import type { Pokemon } from "#field/pokemon"; +import type { PokemonHeldItemModifier } from "#modifiers/modifier"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { ClowningAroundEncounter } from "#mystery-encounters/clowning-around-encounter"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { generateModifierType } from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { MovePhase } from "#phases/move-phase"; +import { PostMysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { NewBattlePhase } from "#phases/new-battle-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { MoveId } from "#enums/move-id"; -import type BattleScene from "#app/battle-scene"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { UiMode } from "#enums/ui-mode"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { ModifierTier } from "#enums/modifier-tier"; -import { ClowningAroundEncounter } from "#app/data/mystery-encounters/encounters/clowning-around-encounter"; -import { TrainerType } from "#enums/trainer-type"; -import { AbilityId } from "#enums/ability-id"; -import { PostMysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { Button } from "#enums/buttons"; -import type PartyUiHandler from "#app/ui/party-ui-handler"; -import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { BerryType } from "#enums/berry-type"; -import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { PokemonType } from "#enums/pokemon-type"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { NewBattlePhase } from "#app/phases/new-battle-phase"; +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"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/clowningAround"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; diff --git a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts index e47c7cc1a42..97d0ce31367 100644 --- a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts +++ b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts @@ -1,28 +1,28 @@ +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { UiMode } from "#enums/ui-mode"; +import { PokemonMove } from "#moves/pokemon-move"; +import { DancingLessonsEncounter } from "#mystery-encounters/dancing-lessons-encounter"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { LearnMovePhase } from "#phases/learn-move-phase"; +import { MovePhase } from "#phases/move-phase"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { MoveId } from "#enums/move-id"; -import { DancingLessonsEncounter } from "#app/data/mystery-encounters/encounters/dancing-lessons-encounter"; -import { UiMode } from "#enums/ui-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; +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"; const namespace = "mysteryEncounters/dancingLessons"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; diff --git a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts index 3ef8431cc2c..16c726f1de6 100644 --- a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts +++ b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts @@ -1,19 +1,11 @@ +import type { BattleScene } from "#app/battle-scene"; +import { modifierTypes } from "#data/data-lists"; +import { BerryType } from "#enums/berry-type"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { - runMysteryEncounterToEnd, - runSelectMysteryEncounterOption, -} from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { DelibirdyEncounter } from "#app/data/mystery-encounters/encounters/delibirdy-encounter"; -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import type { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; import { BerryModifier, HealingBoosterModifier, @@ -23,11 +15,19 @@ import { PokemonInstantReviveModifier, PokemonNatureWeightModifier, PreserveBerryModifier, -} from "#app/modifier/modifier"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { modifierTypes } from "#app/data/data-lists"; -import { BerryType } from "#enums/berry-type"; +} from "#modifiers/modifier"; +import { DelibirdyEncounter } from "#mystery-encounters/delibirdy-encounter"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { generateModifierType } from "#mystery-encounters/encounter-phase-utils"; +import type { MoneyRequirement } from "#mystery-encounters/mystery-encounter-requirements"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { + runMysteryEncounterToEnd, + runSelectMysteryEncounterOption, +} from "#test/mystery-encounter/encounter-test-utils"; +import { GameManager } from "#test/test-utils/game-manager"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/delibirdy"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; 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 a82734d0c03..3d84d70b47e 100644 --- a/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts +++ b/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts @@ -1,19 +1,19 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { UiMode } from "#enums/ui-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { DepartmentStoreSaleEncounter } from "#app/data/mystery-encounters/encounters/department-store-sale-encounter"; -import { CIVILIZATION_ENCOUNTER_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; +import { UiMode } from "#enums/ui-mode"; +import { DepartmentStoreSaleEncounter } from "#mystery-encounters/department-store-sale-encounter"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +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/test-utils/game-manager"; +import { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/departmentStoreSale"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; diff --git a/test/mystery-encounter/encounters/field-trip-encounter.test.ts b/test/mystery-encounter/encounters/field-trip-encounter.test.ts index f4b3c52eb65..8502137cc6e 100644 --- a/test/mystery-encounter/encounters/field-trip-encounter.test.ts +++ b/test/mystery-encounter/encounters/field-trip-encounter.test.ts @@ -1,20 +1,20 @@ +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; +import { MoveId } from "#enums/move-id"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { FieldTripEncounter } from "#app/data/mystery-encounters/encounters/field-trip-encounter"; -import { MoveId } from "#enums/move-id"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +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/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"; const namespace = "mysteryEncounters/fieldTrip"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; diff --git a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts index 16adc47ff11..8ec9b4cb345 100644 --- a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts +++ b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts @@ -1,35 +1,35 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import * as BattleAnims from "#data/battle-anims"; +import { Gender } from "#data/gender"; +import { Status } from "#data/status-effect"; +import { AbilityId } from "#enums/ability-id"; +import { BattlerTagType } from "#enums/battler-tag-type"; import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { FieryFalloutEncounter } from "#app/data/mystery-encounters/encounters/fiery-fallout-encounter"; -import { Gender } from "#app/data/gender"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import * as BattleAnims from "#app/data/battle-anims"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { StatusEffect } from "#enums/status-effect"; +import { AttackTypeBoosterModifier, PokemonHeldItemModifier } from "#modifiers/modifier"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { FieryFalloutEncounter } from "#mystery-encounters/fiery-fallout-encounter"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { MovePhase } from "#phases/move-phase"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { MoveId } from "#enums/move-id"; -import type BattleScene from "#app/battle-scene"; -import { AttackTypeBoosterModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { PokemonType } from "#enums/pokemon-type"; -import { Status } from "#app/data/status-effect"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { AbilityId } from "#enums/ability-id"; +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 { StatusEffect } from "#enums/status-effect"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/fieryFallout"; /** Arcanine and Ninetails for 2 Fire types. Lapras, Gengar, Abra for burnable mon. */ 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 28db869004c..8149212f00f 100644 --- a/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts +++ b/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts @@ -1,27 +1,27 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { UiMode } from "#enums/ui-mode"; +import { PokemonMove } from "#moves/pokemon-move"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { FightOrFlightEncounter } from "#mystery-encounters/fight-or-flight-encounter"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { MoveId } from "#enums/move-id"; -import type BattleScene from "#app/battle-scene"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { UiMode } from "#enums/ui-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { FightOrFlightEncounter } from "#app/data/mystery-encounters/encounters/fight-or-flight-encounter"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { CommandPhase } from "#app/phases/command-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +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"; const namespace = "mysteryEncounters/fightOrFlight"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; 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 ae7e269ea00..b66d0e95ad0 100644 --- a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts +++ b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts @@ -1,30 +1,30 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { Command } from "#enums/command"; +import { MoveId } from "#enums/move-id"; +import { MoveUseMode } from "#enums/move-use-mode"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { UiMode } from "#enums/ui-mode"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { FunAndGamesEncounter } from "#mystery-encounters/fun-and-games-encounter"; +import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { UiMode } from "#enums/ui-mode"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { Nature } from "#enums/nature"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { CommandPhase } from "#app/phases/command-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { FunAndGamesEncounter } from "#app/data/mystery-encounters/encounters/fun-and-games-encounter"; -import { MoveId } from "#enums/move-id"; -import { Command } from "#enums/command"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { MoveUseMode } from "#enums/move-use-mode"; +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"; const namespace = "mysteryEncounters/funAndGames"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; @@ -154,11 +154,11 @@ describe("Fun And Games! - Mystery Encounter", () => { // Turn 1 (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, MoveUseMode.NORMAL); - await game.phaseInterceptor.to(CommandPhase); + await game.toNextTurn(); // Turn 2 (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, MoveUseMode.NORMAL); - await game.phaseInterceptor.to(CommandPhase); + await game.toNextTurn(); // Turn 3 (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 bb598f4ae6e..2ac55dabe1c 100644 --- a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts +++ b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts @@ -1,24 +1,24 @@ +import type { BattleScene } from "#app/battle-scene"; +import { modifierTypes } from "#data/data-lists"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; +import { ModifierTier } from "#enums/modifier-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { PokemonNatureWeightModifier } from "#app/modifier/modifier"; -import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { modifierTypes } from "#app/data/data-lists"; -import { GlobalTradeSystemEncounter } from "#app/data/mystery-encounters/encounters/global-trade-system-encounter"; -import { CIVILIZATION_ENCOUNTER_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { ModifierTier } from "#enums/modifier-tier"; -import * as Utils from "#app/utils/common"; +import { PokemonNatureWeightModifier } from "#modifiers/modifier"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { generateModifierType } from "#mystery-encounters/encounter-phase-utils"; +import { GlobalTradeSystemEncounter } from "#mystery-encounters/global-trade-system-encounter"; +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/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"; const namespace = "mysteryEncounters/globalTradeSystem"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; 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 a55806e5f48..d29f8fe6a82 100644 --- a/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts +++ b/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts @@ -1,20 +1,23 @@ -import { LostAtSeaEncounter } from "#app/data/mystery-encounters/encounters/lost-at-sea-encounter"; -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "../encounter-test-utils"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import type BattleScene from "#app/battle-scene"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { PartyExpPhase } from "#app/phases/party-exp-phase"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { LostAtSeaEncounter } from "#mystery-encounters/lost-at-sea-encounter"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { PartyExpPhase } from "#phases/party-exp-phase"; +import { + runMysteryEncounterToEnd, + runSelectMysteryEncounterOption, +} from "#test/mystery-encounter/encounter-test-utils"; +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"; const namespace = "mysteryEncounters/lostAtSea"; /** Blastoise for surf. Pidgeot for fly. Abra for none. */ diff --git a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts index 478648d88a7..5412f269122 100644 --- a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts +++ b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts @@ -1,30 +1,29 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { PartyMemberStrength } from "#enums/party-member-strength"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { UiMode } from "#enums/ui-mode"; +import { MysteriousChallengersEncounter } from "#mystery-encounters/mysterious-challengers-encounter"; +import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; +import { CommandPhase } from "#phases/command-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { UiMode } from "#enums/ui-mode"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { ModifierTier } from "#enums/modifier-tier"; -import { MysteriousChallengersEncounter } from "#app/data/mystery-encounters/encounters/mysterious-challengers-encounter"; -import { TrainerConfig } from "#app/data/trainers/trainer-config"; -import { TrainerPartyCompoundTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate"; -import { PartyMemberStrength } from "#enums/party-member-strength"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { CommandPhase } from "#app/phases/command-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +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"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/mysteriousChallengers"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; diff --git a/test/mystery-encounter/encounters/part-timer-encounter.test.ts b/test/mystery-encounter/encounters/part-timer-encounter.test.ts index d36b387cae1..63eea8bbca2 100644 --- a/test/mystery-encounter/encounters/part-timer-encounter.test.ts +++ b/test/mystery-encounter/encounters/part-timer-encounter.test.ts @@ -1,22 +1,22 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { PokemonMove } from "#moves/pokemon-move"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { CIVILIZATION_ENCOUNTER_BIOMES } from "#mystery-encounters/mystery-encounters"; +import { PartTimerEncounter } from "#mystery-encounters/part-timer-encounter"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { CIVILIZATION_ENCOUNTER_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { PartTimerEncounter } from "#app/data/mystery-encounters/encounters/part-timer-encounter"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { MoveId } from "#enums/move-id"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; +import { GameManager } from "#test/test-utils/game-manager"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/partTimer"; // Pyukumuku for lowest speed, Regieleki for highest speed, Feebas for lowest "bulk", Melmetal for highest "bulk" diff --git a/test/mystery-encounter/encounters/safari-zone.test.ts b/test/mystery-encounter/encounters/safari-zone.test.ts index 7ac26f48e59..ec43dcfb69b 100644 --- a/test/mystery-encounter/encounters/safari-zone.test.ts +++ b/test/mystery-encounter/encounters/safari-zone.test.ts @@ -1,25 +1,22 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import { NON_LEGEND_PARADOX_POKEMON } from "#balance/special-species-groups"; import { BiomeId } from "#enums/biome-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { getSafariSpeciesSpawn, SafariZoneEncounter } from "#mystery-encounters/safari-zone-encounter"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { - getSafariSpeciesSpawn, - SafariZoneEncounter, -} from "#app/data/mystery-encounters/encounters/safari-zone-encounter"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; +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"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; diff --git a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts index 2138298ee2b..43d497c57bb 100644 --- a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts +++ b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts @@ -1,24 +1,24 @@ -import type BattleScene from "#app/battle-scene"; -import { TeleportingHijinksEncounter } from "#app/data/mystery-encounters/encounters/teleporting-hijinks-encounter"; -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; import { AbilityId } from "#enums/ability-id"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import GameManager from "#test/testUtils/gameManager"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; +import { UiMode } from "#enums/ui-mode"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { TeleportingHijinksEncounter } from "#mystery-encounters/teleporting-hijinks-encounter"; +import { CommandPhase } from "#phases/command-phase"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -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"; 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 c9d6f540191..4556f7a7f45 100644 --- a/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts @@ -1,27 +1,27 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#balance/starters"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { EggTier } from "#enums/egg-type"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { TrainerType } from "#enums/trainer-type"; +import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; +import { TheExpertPokemonBreederEncounter } from "#mystery-encounters/the-expert-pokemon-breeder-encounter"; +import { CommandPhase } from "#phases/command-phase"; +import { PostMysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { CommandPhase } from "#app/phases/command-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { TheExpertPokemonBreederEncounter } from "#app/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter"; -import { TrainerType } from "#enums/trainer-type"; -import { EggTier } from "#enums/egg-type"; -import { PostMysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters"; +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"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; 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 990e39014e2..611a103dab2 100644 --- a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts @@ -1,25 +1,25 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import { NON_LEGEND_PARADOX_POKEMON } from "#balance/special-species-groups"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; +import { + getSalesmanSpeciesOffer, + ThePokemonSalesmanEncounter, +} from "#mystery-encounters/the-pokemon-salesman-encounter"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { - getSalesmanSpeciesOffer, - ThePokemonSalesmanEncounter, -} from "#app/data/mystery-encounters/encounters/the-pokemon-salesman-encounter"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; +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"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; 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 96060e4114c..a314a14485f 100644 --- a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts @@ -1,34 +1,34 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import * as BattleAnims from "#data/battle-anims"; +import { CustomPokemonData } from "#data/pokemon-data"; +import { AbilityId } from "#enums/ability-id"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { BerryType } from "#enums/berry-type"; import { BiomeId } from "#enums/biome-id"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import * as BattleAnims from "#app/data/battle-anims"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { UiMode } from "#enums/ui-mode"; +import { BerryModifier, PokemonBaseStatTotalModifier } from "#modifiers/modifier"; +import { PokemonMove } from "#moves/pokemon-move"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { TheStrongStuffEncounter } from "#mystery-encounters/the-strong-stuff-encounter"; +import { CommandPhase } from "#phases/command-phase"; +import { MovePhase } from "#phases/move-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import { MoveId } from "#enums/move-id"; -import type BattleScene from "#app/battle-scene"; -import { TheStrongStuffEncounter } from "#app/data/mystery-encounters/encounters/the-strong-stuff-encounter"; -import { Nature } from "#enums/nature"; -import { BerryType } from "#enums/berry-type"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { UiMode } from "#enums/ui-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { BerryModifier, PokemonBaseStatTotalModifier } from "#app/modifier/modifier"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { AbilityId } from "#enums/ability-id"; +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"; const namespace = "mysteryEncounters/theStrongStuff"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; 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 012b88bcd73..ae2f9fd79ff 100644 --- a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts @@ -1,31 +1,31 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import { Status } from "#data/status-effect"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { UiMode } from "#enums/ui-mode"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { TrainerType } from "#enums/trainer-type"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Nature } from "#enums/nature"; -import { MoveId } from "#enums/move-id"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { TheWinstrateChallengeEncounter } from "#app/data/mystery-encounters/encounters/the-winstrate-challenge-encounter"; -import { Status } from "#app/data/status-effect"; -import { MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phases"; -import { CommandPhase } from "#app/phases/command-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { PartyHealPhase } from "#app/phases/party-heal-phase"; -import { VictoryPhase } from "#app/phases/victory-phase"; +import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; +import { TrainerType } from "#enums/trainer-type"; +import { UiMode } from "#enums/ui-mode"; +import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; +import { TheWinstrateChallengeEncounter } from "#mystery-encounters/the-winstrate-challenge-encounter"; +import { CommandPhase } from "#phases/command-phase"; +import { MysteryEncounterRewardsPhase } from "#phases/mystery-encounter-phases"; +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/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"; const namespace = "mysteryEncounters/theWinstrateChallenge"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; @@ -372,6 +372,6 @@ async function skipBattleToNextBattle(game: GameManager, isFinalBattle = false) if (isFinalBattle) { await game.phaseInterceptor.to(MysteryEncounterRewardsPhase); } else { - await game.phaseInterceptor.to(CommandPhase); + await game.toNextTurn(); } } 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 9ab5f16d1b9..133fbfb10ba 100644 --- a/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts +++ b/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts @@ -1,37 +1,37 @@ -import type BattleScene from "#app/battle-scene"; -import * as BattleAnims from "#app/data/battle-anims"; -import { TrashToTreasureEncounter } from "#app/data/mystery-encounters/encounters/trash-to-treasure-encounter"; -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { BattleScene } from "#app/battle-scene"; +import * as BattleAnims from "#data/battle-anims"; +import { modifierTypes } from "#data/data-lists"; +import { BiomeId } from "#enums/biome-id"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { SpeciesId } from "#enums/species-id"; +import { UiMode } from "#enums/ui-mode"; +import { HealShopCostModifier, HitHealModifier, TurnHealModifier } from "#modifiers/modifier"; +import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import { type EnemyPartyConfig, type EnemyPokemonConfig, generateModifierType, -} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; -import { SpeciesId } from "#enums/species-id"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { HealShopCostModifier, HitHealModifier, TurnHealModifier } from "#app/modifier/modifier"; -import { ModifierTier } from "#enums/modifier-tier"; -import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import * as Utils from "#app/utils/common"; -import { MoveId } from "#enums/move-id"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +} from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { TrashToTreasureEncounter } from "#mystery-encounters/trash-to-treasure-encounter"; +import { CommandPhase } from "#phases/command-phase"; +import { MovePhase } from "#phases/move-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; 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"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const namespace = "mysteryEncounters/trashToTreasure"; diff --git a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts index ec64a17d291..24d7960049e 100644 --- a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts +++ b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts @@ -1,33 +1,33 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; +import { speciesEggMoves } from "#balance/egg-moves"; +import { modifierTypes } from "#data/data-lists"; +import { AbilityId } from "#enums/ability-id"; +import { BerryType } from "#enums/berry-type"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { MoveId } from "#enums/move-id"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { Stat } from "#enums/stat"; +import type { BerryModifier } from "#modifiers/modifier"; +import { PokemonMove } from "#moves/pokemon-move"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import { generateModifierType } from "#mystery-encounters/encounter-phase-utils"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { UncommonBreedEncounter } from "#mystery-encounters/uncommon-breed-encounter"; +import { CommandPhase } from "#phases/command-phase"; +import { MovePhase } from "#phases/move-phase"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, } from "#test/mystery-encounter/encounter-test-utils"; -import { MoveId } from "#enums/move-id"; -import type BattleScene from "#app/battle-scene"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { CommandPhase } from "#app/phases/command-phase"; -import { UncommonBreedEncounter } from "#app/data/mystery-encounters/encounters/uncommon-breed-encounter"; -import { MovePhase } from "#app/phases/move-phase"; -import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { BerryType } from "#enums/berry-type"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; -import { Stat } from "#enums/stat"; -import type { BerryModifier } from "#app/modifier/modifier"; -import { modifierTypes } from "#app/data/data-lists"; -import { AbilityId } from "#enums/ability-id"; +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"; const namespace = "mysteryEncounters/uncommonBreed"; const defaultParty = [SpeciesId.LAPRAS, SpeciesId.GENGAR, SpeciesId.ABRA]; diff --git a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts index 475d5cc3c6e..e9fcc9797d1 100644 --- a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts +++ b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts @@ -1,25 +1,25 @@ -import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import type { BattleScene } from "#app/battle-scene"; import { BiomeId } from "#enums/biome-id"; -import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; +import { ModifierTier } from "#enums/modifier-tier"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { UiMode } from "#enums/ui-mode"; +import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; +import * as EncounterTransformationSequence from "#mystery-encounters/encounter-transformation-sequence"; +import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; +import { WeirdDreamEncounter } from "#mystery-encounters/weird-dream-encounter"; +import { CommandPhase } from "#phases/command-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase, } from "#test/mystery-encounter/encounter-test-utils"; -import type BattleScene from "#app/battle-scene"; -import { UiMode } from "#enums/ui-mode"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; -import { WeirdDreamEncounter } from "#app/data/mystery-encounters/encounters/weird-dream-encounter"; -import * as EncounterTransformationSequence from "#app/data/mystery-encounters/utils/encounter-transformation-sequence"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { CommandPhase } from "#app/phases/command-phase"; -import { ModifierTier } from "#enums/modifier-tier"; +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"; const namespace = "mysteryEncounters/weirdDream"; const defaultParty = [SpeciesId.MAGBY, SpeciesId.HAUNTER, SpeciesId.ABRA]; diff --git a/test/mystery-encounter/mystery-encounter-utils.test.ts b/test/mystery-encounter/mystery-encounter-utils.test.ts index b775ce8df60..adcc3111319 100644 --- a/test/mystery-encounter/mystery-encounter-utils.test.ts +++ b/test/mystery-encounter/mystery-encounter-utils.test.ts @@ -1,26 +1,26 @@ -import type BattleScene from "#app/battle-scene"; -import { speciesStarterCosts } from "#app/data/balance/starters"; -import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import type { BattleScene } from "#app/battle-scene"; +import { speciesStarterCosts } from "#balance/starters"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { StatusEffect } from "#enums/status-effect"; import { getEncounterText, queueEncounterMessage, showEncounterDialogue, showEncounterText, -} from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; +} from "#mystery-encounters/encounter-dialogue-utils"; import { getHighestLevelPlayerPokemon, getLowestLevelPlayerPokemon, getRandomPlayerPokemon, getRandomSpeciesByStarterCost, koPlayerPokemon, -} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { PokemonType } from "#enums/pokemon-type"; -import { MessagePhase } from "#app/phases/message-phase"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; -import { StatusEffect } from "#enums/status-effect"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +} from "#mystery-encounters/encounter-pokemon-utils"; +import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; +import { MessagePhase } from "#phases/message-phase"; +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 be1f153f8b1..71bc9aec008 100644 --- a/test/mystery-encounter/mystery-encounter.test.ts +++ b/test/mystery-encounter/mystery-encounter.test.ts @@ -1,10 +1,10 @@ -import { afterEach, beforeAll, beforeEach, expect, describe, it } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { SpeciesId } from "#enums/species-id"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; +import type { BattleScene } from "#app/battle-scene"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import type BattleScene from "#app/battle-scene"; +import { SpeciesId } from "#enums/species-id"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Mystery Encounters", () => { let phaserGame: Phaser.Game; diff --git a/test/phases/form-change-phase.test.ts b/test/phases/form-change-phase.test.ts index b025f72f5e4..3caf824b252 100644 --- a/test/phases/form-change-phase.test.ts +++ b/test/phases/form-change-phase.test.ts @@ -1,12 +1,12 @@ +import { modifierTypes } from "#data/data-lists"; 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 { generateModifierType } from "#mystery-encounters/encounter-phase-utils"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { PokemonType } from "#enums/pokemon-type"; -import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { modifierTypes } from "#app/data/data-lists"; describe("Form Change Phase", () => { let phaserGame: Phaser.Game; diff --git a/test/phases/frenzy-move-reset.test.ts b/test/phases/frenzy-move-reset.test.ts index 9c59e1da968..93406ddd577 100644 --- a/test/phases/frenzy-move-reset.test.ts +++ b/test/phases/frenzy-move-reset.test.ts @@ -1,12 +1,12 @@ -import { BattlerIndex } from "#enums/battler-index"; import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { StatusEffect } from "#enums/status-effect"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { StatusEffect } from "#enums/status-effect"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Frenzy Move Reset", () => { let phaserGame: Phaser.Game; diff --git a/test/phases/game-over-phase.test.ts b/test/phases/game-over-phase.test.ts index 008f9fb68e8..201eebc5264 100644 --- a/test/phases/game-over-phase.test.ts +++ b/test/phases/game-over-phase.test.ts @@ -1,12 +1,12 @@ -import { BiomeId } from "#enums/biome-id"; import { AbilityId } from "#enums/ability-id"; +import { BiomeId } from "#enums/biome-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +import { Unlockables } from "#enums/unlockables"; +import { achvs } from "#system/achv"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { achvs } from "#app/system/achv"; -import { Unlockables } from "#enums/unlockables"; describe("Game Over Phase", () => { let phaserGame: Phaser.Game; diff --git a/test/phases/learn-move-phase.test.ts b/test/phases/learn-move-phase.test.ts index 88b8187069b..77902a0d959 100644 --- a/test/phases/learn-move-phase.test.ts +++ b/test/phases/learn-move-phase.test.ts @@ -1,11 +1,11 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#test/testUtils/gameManager"; -import { SpeciesId } from "#enums/species-id"; +import { Button } from "#enums/buttons"; import { MoveId } from "#enums/move-id"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; +import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; -import { Button } from "#app/enums/buttons"; +import { LearnMovePhase } from "#phases/learn-move-phase"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Learn Move Phase", () => { let phaserGame: Phaser.Game; diff --git a/test/phases/mystery-encounter-phase.test.ts b/test/phases/mystery-encounter-phase.test.ts index b17682d6c74..ad71a4151ac 100644 --- a/test/phases/mystery-encounter-phase.test.ts +++ b/test/phases/mystery-encounter-phase.test.ts @@ -1,15 +1,15 @@ -import { afterEach, beforeAll, beforeEach, expect, describe, it, vi } from "vitest"; -import GameManager from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { SpeciesId } from "#enums/species-id"; -import { MysteryEncounterOptionSelectedPhase, MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { UiMode } from "#enums/ui-mode"; import { Button } from "#enums/buttons"; -import type MysteryEncounterUiHandler from "#app/ui/mystery-encounter-ui-handler"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import type MessageUiHandler from "#app/ui/message-ui-handler"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +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/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"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Mystery Encounter Phases", () => { let phaserGame: Phaser.Game; diff --git a/test/phases/phases.test.ts b/test/phases/phases.test.ts index 9d1c1804615..27ee4114701 100644 --- a/test/phases/phases.test.ts +++ b/test/phases/phases.test.ts @@ -1,9 +1,9 @@ -import type BattleScene from "#app/battle-scene"; -import { LoginPhase } from "#app/phases/login-phase"; -import { TitlePhase } from "#app/phases/title-phase"; -import { UnavailablePhase } from "#app/phases/unavailable-phase"; +import type { BattleScene } from "#app/battle-scene"; import { UiMode } from "#enums/ui-mode"; -import GameManager from "#test/testUtils/gameManager"; +import { LoginPhase } from "#phases/login-phase"; +import { TitlePhase } from "#phases/title-phase"; +import { UnavailablePhase } from "#phases/unavailable-phase"; +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 b6c3089e236..ae4cebb1866 100644 --- a/test/phases/select-modifier-phase.test.ts +++ b/test/phases/select-modifier-phase.test.ts @@ -1,20 +1,20 @@ -import type BattleScene from "#app/battle-scene"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { PlayerPokemon } from "#app/field/pokemon"; -import { ModifierTier } from "#enums/modifier-tier"; -import type { CustomModifierSettings } from "#app/modifier/modifier-type"; -import { ModifierTypeOption } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; -import { shiftCharCodes } from "#app/utils/common"; +import type { BattleScene } from "#app/battle-scene"; +import { modifierTypes } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { Button } from "#enums/buttons"; +import { ModifierTier } from "#enums/modifier-tier"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; +import { UiMode } from "#enums/ui-mode"; +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/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"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/plugins/api/pokerogue-account-api.test.ts b/test/plugins/api/pokerogue-account-api.test.ts index 3c37451960a..b830289c773 100644 --- a/test/plugins/api/pokerogue-account-api.test.ts +++ b/test/plugins/api/pokerogue-account-api.test.ts @@ -1,13 +1,13 @@ -import type { AccountInfoResponse } from "#app/@types/PokerogueAccountApi"; +import { PokerogueAccountApi } from "#api/pokerogue-account-api"; import { SESSION_ID_COOKIE_NAME } from "#app/constants"; -import { PokerogueAccountApi } from "#app/plugins/api/pokerogue-account-api"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import * as CookieUtils from "#app/utils/cookies"; -import * as cookies from "#app/utils/cookies"; -import { http, HttpResponse } from "msw"; -import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +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"; import type { SetupServerApi } from "msw/node"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const apiBase = getApiBaseUrl(); const accountApi = new PokerogueAccountApi(apiBase); diff --git a/test/plugins/api/pokerogue-admin-api.test.ts b/test/plugins/api/pokerogue-admin-api.test.ts index 08c4cf0dc45..a40fa23698f 100644 --- a/test/plugins/api/pokerogue-admin-api.test.ts +++ b/test/plugins/api/pokerogue-admin-api.test.ts @@ -1,3 +1,6 @@ +import { PokerogueAdminApi } from "#api/pokerogue-admin-api"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; import type { LinkAccountToDiscordIdRequest, LinkAccountToGoogledIdRequest, @@ -5,13 +8,10 @@ import type { SearchAccountResponse, UnlinkAccountFromDiscordIdRequest, UnlinkAccountFromGoogledIdRequest, -} from "#app/@types/PokerogueAdminApi"; -import { PokerogueAdminApi } from "#app/plugins/api/pokerogue-admin-api"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import { http, HttpResponse } from "msw"; -import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +} 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"; const apiBase = getApiBaseUrl(); const adminApi = new PokerogueAdminApi(apiBase); diff --git a/test/plugins/api/pokerogue-api.test.ts b/test/plugins/api/pokerogue-api.test.ts index c53a38e23ab..afd7b3dd608 100644 --- a/test/plugins/api/pokerogue-api.test.ts +++ b/test/plugins/api/pokerogue-api.test.ts @@ -1,10 +1,10 @@ -import type { TitleStatsResponse } from "#app/@types/PokerogueApi"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import { http, HttpResponse } from "msw"; -import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +import { pokerogueApi } from "#api/pokerogue-api"; +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"; const apiBase = getApiBaseUrl(); let server: SetupServerApi; diff --git a/test/plugins/api/pokerogue-daily-api.test.ts b/test/plugins/api/pokerogue-daily-api.test.ts index 563e6d09009..ef5dfddada5 100644 --- a/test/plugins/api/pokerogue-daily-api.test.ts +++ b/test/plugins/api/pokerogue-daily-api.test.ts @@ -1,11 +1,11 @@ -import type { GetDailyRankingsPageCountRequest, GetDailyRankingsRequest } from "#app/@types/PokerogueDailyApi"; -import { PokerogueDailyApi } from "#app/plugins/api/pokerogue-daily-api"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import { ScoreboardCategory, type RankingEntry } from "#app/ui/daily-run-scoreboard"; -import { http, HttpResponse } from "msw"; -import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +import { PokerogueDailyApi } from "#api/pokerogue-daily-api"; +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"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const apiBase = getApiBaseUrl(); const dailyApi = new PokerogueDailyApi(apiBase); diff --git a/test/plugins/api/pokerogue-savedata-api.test.ts b/test/plugins/api/pokerogue-savedata-api.test.ts index 481ba62c19d..5dbaf9ff542 100644 --- a/test/plugins/api/pokerogue-savedata-api.test.ts +++ b/test/plugins/api/pokerogue-savedata-api.test.ts @@ -1,10 +1,10 @@ -import type { UpdateAllSavedataRequest } from "#app/@types/PokerogueSavedataApi"; -import { PokerogueSavedataApi } from "#app/plugins/api/pokerogue-savedata-api"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import { http, HttpResponse } from "msw"; -import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +import { PokerogueSavedataApi } from "#api/pokerogue-savedata-api"; +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"; const apiBase = getApiBaseUrl(); const savedataApi = new PokerogueSavedataApi(apiBase); diff --git a/test/plugins/api/pokerogue-session-savedata-api.test.ts b/test/plugins/api/pokerogue-session-savedata-api.test.ts index 4d4774f2283..d7ee2703405 100644 --- a/test/plugins/api/pokerogue-session-savedata-api.test.ts +++ b/test/plugins/api/pokerogue-session-savedata-api.test.ts @@ -1,3 +1,7 @@ +import { PokerogueSessionSavedataApi } from "#api/pokerogue-session-savedata-api"; +import type { SessionSaveData } from "#system/game-data"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; import type { ClearSessionSavedataRequest, ClearSessionSavedataResponse, @@ -5,14 +9,10 @@ import type { GetSessionSavedataRequest, NewClearSessionSavedataRequest, UpdateSessionSavedataRequest, -} from "#app/@types/PokerogueSessionSavedataApi"; -import { PokerogueSessionSavedataApi } from "#app/plugins/api/pokerogue-session-savedata-api"; -import type { SessionSaveData } from "#app/system/game-data"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import { http, HttpResponse } from "msw"; -import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +} 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"; const apiBase = getApiBaseUrl(); const sessionSavedataApi = new PokerogueSessionSavedataApi(apiBase); diff --git a/test/plugins/api/pokerogue-system-savedata-api.test.ts b/test/plugins/api/pokerogue-system-savedata-api.test.ts index 0c69ab8f922..d6e4fe18eed 100644 --- a/test/plugins/api/pokerogue-system-savedata-api.test.ts +++ b/test/plugins/api/pokerogue-system-savedata-api.test.ts @@ -1,16 +1,16 @@ +import { PokerogueSystemSavedataApi } from "#api/pokerogue-system-savedata-api"; +import type { SystemSaveData } from "#system/game-data"; +import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; +import { getApiBaseUrl } from "#test/test-utils/test-utils"; import type { GetSystemSavedataRequest, UpdateSystemSavedataRequest, VerifySystemSavedataRequest, VerifySystemSavedataResponse, -} from "#app/@types/PokerogueSystemSavedataApi"; -import { PokerogueSystemSavedataApi } from "#app/plugins/api/pokerogue-system-savedata-api"; -import type { SystemSaveData } from "#app/system/game-data"; -import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; -import { getApiBaseUrl } from "#test/testUtils/testUtils"; -import { http, HttpResponse } from "msw"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +} 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"; const apiBase = getApiBaseUrl(); const systemSavedataApi = new PokerogueSystemSavedataApi(getApiBaseUrl()); diff --git a/test/reload.test.ts b/test/reload.test.ts index 8e39df23f47..018a5e334ef 100644 --- a/test/reload.test.ts +++ b/test/reload.test.ts @@ -1,13 +1,13 @@ -import { GameModes } from "#enums/game-modes"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; +import { pokerogueApi } from "#api/pokerogue-api"; import { BiomeId } from "#enums/biome-id"; import { Button } from "#enums/buttons"; +import { GameModes } from "#enums/game-modes"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; -import type { MockClock } from "#test/testUtils/mocks/mockClock"; +import { UiMode } from "#enums/ui-mode"; +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"; describe("Reload", () => { diff --git a/test/settingMenu/helpers/inGameManip.ts b/test/setting-menu/helpers/in-game-manip.ts similarity index 95% rename from test/settingMenu/helpers/inGameManip.ts rename to test/setting-menu/helpers/in-game-manip.ts index ca1fac3bc65..acc119b2cc2 100644 --- a/test/settingMenu/helpers/inGameManip.ts +++ b/test/setting-menu/helpers/in-game-manip.ts @@ -1,5 +1,5 @@ -import { getIconForLatestInput, getSettingNameWithKeycode } from "#app/configs/inputs/configHandler"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; +import { getIconForLatestInput, getSettingNameWithKeycode } from "#inputs/config-handler"; +import { SettingKeyboard } from "#system/settings-keyboard"; import { expect } from "vitest"; export class InGameManip { diff --git a/test/settingMenu/helpers/menuManip.ts b/test/setting-menu/helpers/menu-manip.ts similarity index 96% rename from test/settingMenu/helpers/menuManip.ts rename to test/setting-menu/helpers/menu-manip.ts index 1ddd842c864..29e096608f1 100644 --- a/test/settingMenu/helpers/menuManip.ts +++ b/test/setting-menu/helpers/menu-manip.ts @@ -9,8 +9,8 @@ import { getKeyWithKeycode, getKeyWithSettingName, getSettingNameWithKeycode, -} from "#app/configs/inputs/configHandler"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; +} from "#inputs/config-handler"; +import { SettingKeyboard } from "#system/settings-keyboard"; import { expect } from "vitest"; export class MenuManip { diff --git a/test/settingMenu/rebinding_setting.test.ts b/test/setting-menu/rebinding-setting.test.ts similarity index 98% rename from test/settingMenu/rebinding_setting.test.ts rename to test/setting-menu/rebinding-setting.test.ts index 20a1fe51484..6c065a0dd3b 100644 --- a/test/settingMenu/rebinding_setting.test.ts +++ b/test/setting-menu/rebinding-setting.test.ts @@ -1,12 +1,12 @@ -import cfg_keyboard_qwerty from "#app/configs/inputs/cfg_keyboard_qwerty"; -import { getKeyWithKeycode, getKeyWithSettingName } from "#app/configs/inputs/configHandler"; import type { InterfaceConfig } from "#app/inputs-controller"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; -import { deepCopy } from "#app/utils/data"; import { Button } from "#enums/buttons"; import { Device } from "#enums/devices"; -import { InGameManip } from "#test/settingMenu/helpers/inGameManip"; -import { MenuManip } from "#test/settingMenu/helpers/menuManip"; +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/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"; describe("Test Rebinding", () => { 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 be188503b1e..bf945636a71 100644 --- a/test/sprites/pokemonSprite.test.ts +++ b/test/sprites/pokemon-sprite.test.ts @@ -1,9 +1,9 @@ -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"; -import _masterlist from "../../public/images/pokemon/variant/_masterlist.json"; import _exp_masterlist from "../../public/images/pokemon/variant/_exp_masterlist.json"; +import _masterlist from "../../public/images/pokemon/variant/_masterlist.json"; type PokemonVariantMasterlist = typeof _masterlist; type PokemonExpVariantMasterlist = typeof _exp_masterlist; 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 93% rename from test/system/game_data.test.ts rename to test/system/game-data.test.ts index b9011cd934f..18775f310b7 100644 --- a/test/system/game_data.test.ts +++ b/test/system/game-data.test.ts @@ -1,12 +1,12 @@ +import { pokerogueApi } from "#api/pokerogue-api"; +import * as account from "#app/account"; import * as bypassLoginModule from "#app/global-vars/bypass-login"; -import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import type { SessionSaveData } from "#app/system/game-data"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; -import GameManager from "#test/testUtils/gameManager"; +import type { SessionSaveData } from "#system/game-data"; +import { GameManager } from "#test/test-utils/game-manager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import * as account from "#app/account"; describe("System - Game Data", () => { let phaserGame: Phaser.Game; diff --git a/test/testUtils/errorInterceptor.ts b/test/test-utils/error-interceptor.ts similarity index 96% rename from test/testUtils/errorInterceptor.ts rename to test/test-utils/error-interceptor.ts index a8fb3284b78..c253561a71c 100644 --- a/test/testUtils/errorInterceptor.ts +++ b/test/test-utils/error-interceptor.ts @@ -1,4 +1,4 @@ -export default class ErrorInterceptor { +export class ErrorInterceptor { private static instance: ErrorInterceptor; public running; 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 79% rename from test/testUtils/gameManagerUtils.ts rename to test/test-utils/game-manager-utils.ts index 57fd9b91d26..db758cfe64d 100644 --- a/test/testUtils/gameManagerUtils.ts +++ b/test/test-utils/game-manager-utils.ts @@ -1,17 +1,17 @@ -import Battle from "#app/battle"; -import { BattleType } from "#enums/battle-type"; -import type BattleScene from "#app/battle-scene"; -import { getDailyRunStarters } from "#app/data/daily-run"; -import { Gender } from "#app/data/gender"; -import { getPokemonSpeciesForm } from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { PlayerPokemon } from "#app/field/pokemon"; +import { Battle } from "#app/battle"; +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 { StarterMoveset } from "#app/system/game-data"; -import type { Starter } from "#app/ui/starter-select-ui-handler"; -import { MoveId } from "#enums/move-id"; +import type { MoveId } from "#enums/move-id"; 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"; /** Function to convert Blob to string */ export function blobToString(blob) { @@ -98,15 +98,6 @@ export function waitUntil(truth): Promise { }); } -/** Get the index of `move` from the moveset of the pokemon on the player's field at location `pokemonIndex`. */ -export function getMovePosition(scene: BattleScene, pokemonIndex: 0 | 1, move: MoveId): number { - const playerPokemon = scene.getPlayerField()[pokemonIndex]; - const moveSet = playerPokemon.getMoveset(); - const index = moveSet.findIndex(m => m.moveId === move && m.ppUsed < m.getMovePp()); - console.log(`Move position for ${MoveId[move]} (=${move}):`, index); - return index; -} - /** * 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 81% rename from test/testUtils/gameManager.ts rename to test/test-utils/game-manager.ts index b9f499d4e0c..b81b077b2f2 100644 --- a/test/testUtils/gameManager.ts +++ b/test/test-utils/game-manager.ts @@ -1,67 +1,67 @@ import { updateUserInfo } from "#app/account"; -import { BattlerIndex } from "#enums/battler-index"; -import BattleScene from "#app/battle-scene"; -import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import Trainer from "#app/field/trainer"; +import { BattleScene } from "#app/battle-scene"; import { getGameMode } from "#app/game-mode"; -import { GameModes } from "#enums/game-modes"; import { globalScene } from "#app/global-scene"; -import { ModifierTypeOption } from "#app/modifier/modifier-type"; -import { modifierTypes } from "#app/data/data-lists"; import overrides from "#app/overrides"; -import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; -import { CommandPhase } from "#app/phases/command-phase"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { FaintPhase } from "#app/phases/faint-phase"; -import { LoginPhase } from "#app/phases/login-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; -import { NewBattlePhase } from "#app/phases/new-battle-phase"; -import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import type { SelectTargetPhase } from "#app/phases/select-target-phase"; -import { TitlePhase } from "#app/phases/title-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { TurnStartPhase } from "#app/phases/turn-start-phase"; -import type BallUiHandler from "#app/ui/ball-ui-handler"; -import type BattleMessageUiHandler from "#app/ui/battle-message-ui-handler"; -import type CommandUiHandler from "#app/ui/command-ui-handler"; -import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import type PartyUiHandler from "#app/ui/party-ui-handler"; -import type StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; -import type TargetSelectUiHandler from "#app/ui/target-select-ui-handler"; -import { isNullOrUndefined } from "#app/utils/common"; +import { modifierTypes } from "#data/data-lists"; +import { BattlerIndex } from "#enums/battler-index"; import { Button } from "#enums/buttons"; import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { ExpNotification } from "#enums/exp-notification"; +import { GameModes } from "#enums/game-modes"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PlayerGender } from "#enums/player-gender"; +import type { PokeballType } from "#enums/pokeball"; import type { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; -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 { AES, enc } from "crypto-js"; +import type { EnemyPokemon, PlayerPokemon } from "#field/pokemon"; +import { Trainer } from "#field/trainer"; +import { ModifierTypeOption } from "#modifiers/modifier-type"; +import { CheckSwitchPhase } from "#phases/check-switch-phase"; +import { CommandPhase } from "#phases/command-phase"; +import { EncounterPhase } from "#phases/encounter-phase"; +import { LoginPhase } from "#phases/login-phase"; +import { MovePhase } from "#phases/move-phase"; +import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; +import { NewBattlePhase } from "#phases/new-battle-phase"; +import { SelectStarterPhase } from "#phases/select-starter-phase"; +import type { SelectTargetPhase } from "#phases/select-target-phase"; +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/test-utils/error-interceptor"; +import { generateStarter, waitUntil } 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"; +import type { ModifierSelectUiHandler } from "#ui/modifier-select-ui-handler"; +import type { PartyUiHandler } from "#ui/party-ui-handler"; +import type { StarterSelectUiHandler } from "#ui/starter-select-ui-handler"; +import type { TargetSelectUiHandler } from "#ui/target-select-ui-handler"; +import { isNullOrUndefined } from "#utils/common"; import fs from "node:fs"; +import { AES, enc } from "crypto-js"; import { expect, vi } from "vitest"; /** * Class to manage the game state and transitions between phases. */ -export default class GameManager { +export class GameManager { public gameWrapper: GameWrapper; public scene: BattleScene; public phaseInterceptor: PhaseInterceptor; @@ -124,7 +124,6 @@ export default class GameManager { this.reload = new ReloadHelper(this); this.modifiers = new ModifierHelper(this); this.field = new FieldHelper(this); - this.override.sanitizeOverrides(); // Disables Mystery Encounters on all tests (can be overridden at test level) this.override.mysteryEncounterChance(0); @@ -201,12 +200,10 @@ export default class GameManager { /** * Helper function to run to the final boss encounter as it's a bit tricky due to extra dialogue * Also handles Major/Minor bosses from endless modes - * @param game - The game manager - * @param species - * @param mode + * @param species - Array of {@linkcode SpeciesId}s to start the final battle with. + * @param mode - The {@linkcode GameModes} to spawn the final boss encounter in. */ async runToFinalBossEncounter(species: SpeciesId[], mode: GameModes) { - console.log("===to final boss encounter==="); await this.runToTitle(); this.onNextPrompt("TitlePhase", UiMode.TITLE, () => { @@ -224,15 +221,15 @@ export default class GameManager { this.removeEnemyHeldItems(); } - await this.phaseInterceptor.to(EncounterPhase); - console.log("===finished run to final boss encounter==="); + await this.phaseInterceptor.to("CommandPhase", false); + console.log("==================[Final Boss Encounter]=================="); } /** * Runs the game to a mystery encounter phase. - * @param encounterType if specified, will expect encounter to have been spawned - * @param species Optional array of species for party. - * @returns A promise that resolves when the EncounterPhase ends. + * @param encounterType - If specified, will expect encounter to be the given type. + * @param species - Optional array of species for party to start with. + * @returns A Promise that resolves when the EncounterPhase ends. */ async runToMysteryEncounter(encounterType?: MysteryEncounterType, species?: SpeciesId[]) { if (!isNullOrUndefined(encounterType)) { @@ -277,6 +274,7 @@ export default class GameManager { * Will trigger during the next {@linkcode SelectTargetPhase} * @param targetIndex - The {@linkcode BattlerIndex} of the attack target, or `undefined` for multi-target attacks * @param movePosition - The 0-indexed position of the move in the pokemon's moveset array + * @throws Immediately fails tests */ selectTarget(movePosition: number, targetIndex?: BattlerIndex) { this.onNextPrompt( @@ -292,7 +290,7 @@ export default class GameManager { handler.setCursor(targetIndex !== undefined ? targetIndex : BattlerIndex.ENEMY); } if (move.isMultiTarget() && targetIndex !== undefined) { - throw new Error(`targetIndex was passed to selectMove() but move ("${move.name}") is not targetted`); + expect.fail(`targetIndex was passed to selectMove() but move ("${move.name}") is not targetted`); } handler.processInput(Button.ACTION); }, @@ -452,17 +450,14 @@ export default class GameManager { } /** - * Faints a player or enemy pokemon instantly by setting their HP to 0. + * Faint a player or enemy pokemon instantly by setting their HP to 0. * @param pokemon - The player/enemy pokemon being fainted - * @returns A promise that resolves once the fainted pokemon's FaintPhase finishes running. + * @returns A Promise that resolves once the fainted pokemon's FaintPhase finishes running. */ async killPokemon(pokemon: PlayerPokemon | EnemyPokemon) { - return new Promise(async (resolve, reject) => { - pokemon.hp = 0; - this.scene.phaseManager.pushPhase(new FaintPhase(pokemon.getBattlerIndex(), true)); - await this.phaseInterceptor.to(FaintPhase).catch(e => reject(e)); - resolve(); - }); + pokemon.hp = 0; + this.scene.phaseManager.pushNew("FaintPhase", pokemon.getBattlerIndex(), true); + await this.phaseInterceptor.to("FaintPhase"); } /** @@ -511,9 +506,9 @@ export default class GameManager { /** * Select the BALL option from the command menu, then press Action; in the BALL * menu, select a pokéball type and press Action again to throw it. - * @param ballIndex - The index of the pokeball to throw + * @param ballIndex - The {@linkcode PokeballType} to throw */ - public doThrowPokeball(ballIndex: number) { + public doThrowPokeball(ballIndex: PokeballType) { this.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { (this.scene.ui.getHandler() as CommandUiHandler).setCursor(1); (this.scene.ui.getHandler() as CommandUiHandler).processInput(Button.ACTION); diff --git a/test/testUtils/gameWrapper.ts b/test/test-utils/game-wrapper.ts similarity index 84% rename from test/testUtils/gameWrapper.ts rename to test/test-utils/game-wrapper.ts index 7b5d564de2e..1a906bf8492 100644 --- a/test/testUtils/gameWrapper.ts +++ b/test/test-utils/game-wrapper.ts @@ -1,30 +1,32 @@ // @ts-nocheck - TODO: remove this -import BattleScene from "#app/battle-scene"; -import { MoveAnim } from "#app/data/battle-anims"; -import Pokemon from "#app/field/pokemon"; -import { sessionIdKey } from "#app/utils/common"; -import { setCookie } from "#app/utils/cookies"; -import { blobToString } from "#test/testUtils/gameManagerUtils"; -import { MockClock } from "#test/testUtils/mocks/mockClock"; -import { MockFetch } from "#test/testUtils/mocks/mockFetch"; -import MockLoader from "#test/testUtils/mocks/mockLoader"; -import MockTextureManager from "#test/testUtils/mocks/mockTextureManager"; + +import { BattleScene } from "#app/battle-scene"; +// biome-ignore lint/performance/noNamespaceImport: Necessary in order to mock the var +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/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"; import fs from "node:fs"; import Phaser from "phaser"; import { vi } from "vitest"; -import { version } from "../../package.json"; -import { MockGameObjectCreator } from "./mocks/mockGameObjectCreator"; -import { MockTimedEventManager } from "./mocks/mockTimedEventManager"; -import { PokedexMonContainer } from "#app/ui/pokedex-mon-container"; -import MockContainer from "./mocks/mocksContainer/mockContainer"; -import InputManager = Phaser.Input.InputManager; -import KeyboardManager = Phaser.Input.Keyboard.KeyboardManager; -import KeyboardPlugin = Phaser.Input.Keyboard.KeyboardPlugin; -import GamepadPlugin = Phaser.Input.Gamepad.GamepadPlugin; -import EventEmitter = Phaser.Events.EventEmitter; -import UpdateList = Phaser.GameObjects.UpdateList; -// biome-ignore lint/performance/noNamespaceImport: Necessary in order to mock the var -import * as bypassLoginModule from "#app/global-vars/bypass-login"; + +const InputManager = Phaser.Input.InputManager; +const KeyboardManager = Phaser.Input.Keyboard.KeyboardManager; +const KeyboardPlugin = Phaser.Input.Keyboard.KeyboardPlugin; +const GamepadPlugin = Phaser.Input.Gamepad.GamepadPlugin; +const EventEmitter = Phaser.Events.EventEmitter; +const UpdateList = Phaser.GameObjects.UpdateList; window.URL.createObjectURL = (blob: Blob) => { blobToString(blob).then((data: string) => { @@ -40,7 +42,7 @@ window.matchMedia = () => ({ matches: false, }); -export default class GameWrapper { +export class GameWrapper { public game: Phaser.Game; public scene: BattleScene; diff --git a/test/testUtils/helpers/challengeModeHelper.ts b/test/test-utils/helpers/challenge-mode-helper.ts similarity index 84% rename from test/testUtils/helpers/challengeModeHelper.ts rename to test/test-utils/helpers/challenge-mode-helper.ts index f0b4b151d22..3952685a560 100644 --- a/test/testUtils/helpers/challengeModeHelper.ts +++ b/test/test-utils/helpers/challenge-mode-helper.ts @@ -1,15 +1,15 @@ -import { BattleStyle } from "#app/enums/battle-style"; -import type { SpeciesId } from "#enums/species-id"; import overrides from "#app/overrides"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import { UiMode } from "#enums/ui-mode"; -import { generateStarter } from "../gameManagerUtils"; -import { GameManagerHelper } from "./gameManagerHelper"; -import type { Challenge } from "#app/data/challenge"; -import { CommandPhase } from "#app/phases/command-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; +import type { Challenge } from "#data/challenge"; +import { BattleStyle } from "#enums/battle-style"; import type { Challenges } from "#enums/challenges"; +import type { SpeciesId } from "#enums/species-id"; +import { UiMode } from "#enums/ui-mode"; +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/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 82% rename from test/testUtils/helpers/classicModeHelper.ts rename to test/test-utils/helpers/classic-mode-helper.ts index eff97483777..5d73dc07615 100644 --- a/test/testUtils/helpers/classicModeHelper.ts +++ b/test/test-utils/helpers/classic-mode-helper.ts @@ -1,15 +1,16 @@ -import { BattleStyle } from "#app/enums/battle-style"; -import type { SpeciesId } from "#enums/species-id"; import { getGameMode } from "#app/game-mode"; -import { GameModes } from "#enums/game-modes"; import overrides from "#app/overrides"; -import { CommandPhase } from "#app/phases/command-phase"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; +import { BattleStyle } from "#enums/battle-style"; +import { GameModes } from "#enums/game-modes"; +import { Nature } from "#enums/nature"; +import type { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; -import { generateStarter } from "../gameManagerUtils"; -import { GameManagerHelper } from "./gameManagerHelper"; +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/test-utils/game-manager-utils"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; /** * Helper to handle classic-mode specific operations. @@ -36,6 +37,12 @@ export class ClassicModeHelper extends GameManagerHelper { if (this.game.override.disableShinies) { this.game.override.shiny(false).enemyShiny(false); } + if (this.game.override.normalizeIVs) { + this.game.override.playerIVs(31).enemyIVs(31); + } + if (this.game.override.normalizeNatures) { + this.game.override.nature(Nature.HARDY).enemyNature(Nature.HARDY); + } this.game.onNextPrompt("TitlePhase", UiMode.TITLE, () => { this.game.scene.gameMode = getGameMode(GameModes.CLASSIC); diff --git a/test/testUtils/helpers/dailyModeHelper.ts b/test/test-utils/helpers/daily-mode-helper.ts similarity index 82% rename from test/testUtils/helpers/dailyModeHelper.ts rename to test/test-utils/helpers/daily-mode-helper.ts index 4672d4dc787..7aa1e699118 100644 --- a/test/testUtils/helpers/dailyModeHelper.ts +++ b/test/test-utils/helpers/daily-mode-helper.ts @@ -1,13 +1,13 @@ -import { BattleStyle } from "#app/enums/battle-style"; -import { Button } from "#app/enums/buttons"; import overrides from "#app/overrides"; -import { CommandPhase } from "#app/phases/command-phase"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { TitlePhase } from "#app/phases/title-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import type SaveSlotSelectUiHandler from "#app/ui/save-slot-select-ui-handler"; +import { BattleStyle } from "#enums/battle-style"; +import { Button } from "#enums/buttons"; import { UiMode } from "#enums/ui-mode"; -import { GameManagerHelper } from "./gameManagerHelper"; +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/test-utils/helpers/game-manager-helper"; +import type { SaveSlotSelectUiHandler } from "#ui/save-slot-select-ui-handler"; /** * Helper to handle daily mode specifics 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 2866c01209f..35ca853d049 100644 --- a/test/testUtils/helpers/field-helper.ts +++ b/test/test-utils/helpers/field-helper.ts @@ -1,17 +1,15 @@ -// -- start tsdoc imports -- -// biome-ignore lint/correctness/noUnusedImports: TSDoc import +/* biome-ignore-start lint/correctness/noUnusedImports: tsdoc imports */ import type { globalScene } from "#app/global-scene"; -// -- end tsdoc imports -- +/* biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */ -import type { BattlerIndex } from "#enums/battler-index"; -import type { Ability } from "#app/data/abilities/ability"; -import { allAbilities } from "#app/data/data-lists"; -import type Pokemon from "#app/field/pokemon"; -import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +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 { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; +import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { expect, type MockInstance, vi } from "vitest"; /** Helper to manage pokemon */ @@ -70,7 +68,7 @@ export class FieldHelper extends GameManagerHelper { * @see {@linkcode vi.spyOn} * @see https://vitest.dev/api/mock#mockreturnvalue */ - public mockAbility(pokemon: Pokemon, ability: AbilityId): MockInstance<(baseOnly?: boolean) => Ability> { + public mockAbility(pokemon: Pokemon, ability: AbilityId): MockInstance<(ignoreOverride?: boolean) => Ability> { return vi.spyOn(pokemon, "getAbility").mockReturnValue(allAbilities[ability]); } 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 85d7bc0df97..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 "../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 89% rename from test/testUtils/helpers/modifiersHelper.ts rename to test/test-utils/helpers/modifiers-helper.ts index 22500c87906..bfda35427fa 100644 --- a/test/testUtils/helpers/modifiersHelper.ts +++ b/test/test-utils/helpers/modifiers-helper.ts @@ -1,7 +1,7 @@ +import type { ModifierTypeKeys } from "#modifiers/modifier-type"; +import { itemPoolChecks } from "#modifiers/modifier-type"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { expect } from "vitest"; -import { GameManagerHelper } from "./gameManagerHelper"; -import type { ModifierTypeKeys } from "#app/modifier/modifier-type"; -import { itemPoolChecks } from "#app/modifier/modifier-type"; export class ModifierHelper extends GameManagerHelper { /** diff --git a/test/testUtils/helpers/moveHelper.ts b/test/test-utils/helpers/move-helper.ts similarity index 65% rename from test/testUtils/helpers/moveHelper.ts rename to test/test-utils/helpers/move-helper.ts index ed1441a6a2f..fd6a123a5bb 100644 --- a/test/testUtils/helpers/moveHelper.ts +++ b/test/test-utils/helpers/move-helper.ts @@ -1,22 +1,23 @@ -import type { BattlerIndex } from "#enums/battler-index"; -import { getMoveTargets } from "#app/data/moves/move-utils"; -import type Pokemon from "#app/field/pokemon"; -import { PokemonMove } from "#app/data/moves/pokemon-move"; import Overrides from "#app/overrides"; -import type { CommandPhase } from "#app/phases/command-phase"; -import type { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import { allMoves } from "#data/data-lists"; +import { BattlerIndex } from "#enums/battler-index"; import { Command } from "#enums/command"; import { MoveId } from "#enums/move-id"; -import { UiMode } from "#enums/ui-mode"; -import { getMovePosition } from "#test/testUtils/gameManagerUtils"; -import { GameManagerHelper } from "#test/testUtils/helpers/gameManagerHelper"; -import { vi } from "vitest"; -import { coerceArray } from "#app/utils/common"; import { MoveUseMode } from "#enums/move-use-mode"; +import { UiMode } from "#enums/ui-mode"; +import type { Pokemon } from "#field/pokemon"; +import { getMoveTargets } from "#moves/move-utils"; +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/test-utils/helpers/game-manager-helper"; +import { coerceArray, toReadableString } from "#utils/common"; +import type { MockInstance } from "vitest"; +import { expect, vi } from "vitest"; /** - * Helper to handle a Pokemon's move + * Helper to handle using a Pokemon's moves. */ export class MoveHelper extends GameManagerHelper { /** @@ -49,13 +50,31 @@ export class MoveHelper extends GameManagerHelper { } /** - * Select the move to be used by the given Pokemon(-index). Triggers during the next {@linkcode CommandPhase} - * @param move - the move to use - * @param pkmIndex - the pokemon index. Relevant for double-battles only (defaults to 0) - * @param targetIndex - The {@linkcode BattlerIndex} of the Pokemon to target for single-target moves, or `null` if a manual call to `selectTarget()` is required + * Select a move _already in the player's moveset_ to be used during the next {@linkcode CommandPhase}. + * @param move - 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. + * If set to `null`, will forgo normal target selection entirely (useful for UI tests). + * @remarks + * Will fail the current test if the move being selected is not in the user's moveset. */ - public select(move: MoveId, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null) { - const movePosition = getMovePosition(this.game.scene, pkmIndex, move); + public select( + move: MoveId, + pkmIndex: BattlerIndex.PLAYER | BattlerIndex.PLAYER_2 = BattlerIndex.PLAYER, + targetIndex?: BattlerIndex | null, + ) { + 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])}` + + `\nMoveset: [${this.game.scene + .getPlayerParty() + [pkmIndex].getMoveset() + .map(pm => toReadableString(MoveId[pm.moveId])) + .join(", ")}]`, + ); + } this.game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { this.game.scene.ui.setMode( @@ -77,14 +96,30 @@ export class MoveHelper extends GameManagerHelper { } /** - * Select the move to be used by the given Pokemon(-index), **which will also terastallize on this turn**. - * Triggers during the next {@linkcode CommandPhase} - * @param move - the move to use - * @param pkmIndex - the pokemon index. Relevant for double-battles only (defaults to 0) - * @param targetIndex - The {@linkcode BattlerIndex} of the Pokemon to target for single-target moves, or `null` if a manual call to `selectTarget()` is required + * Select a move _already in the player's moveset_ to be used during the next {@linkcode CommandPhase}, **which will also terastallize on this turn**. + * @param move - 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. + * If set to `null`, will forgo normal target selection entirely (useful for UI tests) */ - public selectWithTera(move: MoveId, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null) { - const movePosition = getMovePosition(this.game.scene, pkmIndex, move); + public selectWithTera( + move: MoveId, + pkmIndex: BattlerIndex.PLAYER | BattlerIndex.PLAYER_2 = BattlerIndex.PLAYER, + targetIndex?: BattlerIndex | null, + ) { + 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])}` + + `\nMoveset: [${this.game.scene + .getPlayerParty() + [pkmIndex].getMoveset() + .map(pm => toReadableString(MoveId[pm.moveId])) + .join(", ")}]`, + ); + } + this.game.scene.getPlayerParty()[pkmIndex].isTerastallized = false; this.game.onNextPrompt("CommandPhase", UiMode.COMMAND, () => { @@ -107,6 +142,15 @@ export class MoveHelper extends GameManagerHelper { } } + /** Helper function to get the index of the selected move in the selected part 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(); + const index = moveset.findIndex(m => m.moveId === move && m.ppUsed < m.getMovePp()); + console.log(`Move position for ${MoveId[move]} (=${move}):`, index); + return index; + } + /** * Modifies a player pokemon's moveset to contain only the selected move and then * selects it to be used during the next {@linkcode CommandPhase}. @@ -116,14 +160,19 @@ export class MoveHelper extends GameManagerHelper { * 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 pokemon index. Relevant for double-battles only (defaults to 0) - * @param targetIndex - (optional) The {@linkcode BattlerIndex} of the Pokemon to target for single-target moves, or `null` if a manual call to `selectTarget()` is required - * @param useTera - If `true`, the Pokemon also chooses to Terastallize. This does not require a Tera Orb. Default: `false`. + * @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`. */ - public use(moveId: MoveId, pkmIndex: 0 | 1 = 0, targetIndex?: BattlerIndex | null, useTera = false): void { + public use( + moveId: MoveId, + pkmIndex: BattlerIndex.PLAYER | BattlerIndex.PLAYER_2 = BattlerIndex.PLAYER, + targetIndex?: BattlerIndex, + useTera = false, + ): void { if ([Overrides.MOVESET_OVERRIDE].flat().length > 0) { vi.spyOn(Overrides, "MOVESET_OVERRIDE", "get").mockReturnValue([]); - console.warn("Warning: `use` overwrites the Pokemon's moveset and disables the player moveset override!"); + console.warn("Warning: `MoveHelper.use` overwriting player pokemon moveset and disabling moveset override!"); } const pokemon = this.game.scene.getPlayerField()[pkmIndex]; @@ -258,4 +307,20 @@ export class MoveHelper extends GameManagerHelper { */ await this.game.phaseInterceptor.to("EnemyCommandPhase"); } + + /** + * 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}. + * @returns The spy that for Metronome that was mocked (Usually unneeded). + */ + public forceMetronomeMove(move: MoveId, once = false): MockInstance { + const spy = vi.spyOn(allMoves[MoveId.METRONOME].getAttrs("RandomMoveAttr")[0], "getMoveOverride"); + if (once) { + spy.mockReturnValueOnce(move); + } else { + spy.mockReturnValue(move); + } + return spy; + } } diff --git a/test/testUtils/helpers/overridesHelper.ts b/test/test-utils/helpers/overrides-helper.ts similarity index 82% rename from test/testUtils/helpers/overridesHelper.ts rename to test/test-utils/helpers/overrides-helper.ts index 3bf0fbbda47..d67ceedf891 100644 --- a/test/testUtils/helpers/overridesHelper.ts +++ b/test/test-utils/helpers/overrides-helper.ts @@ -1,35 +1,54 @@ -import type { Variant } from "#app/sprites/variant"; -import { Weather } from "#app/data/weather"; +/** biome-ignore-start lint/correctness/noUnusedImports: tsdoc imports */ +import type { NewArenaEvent } from "#events/battle-scene"; +/** biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */ + +import type { BattleStyle, RandomTrainerOverride } from "#app/overrides"; +import Overrides from "#app/overrides"; import { AbilityId } from "#enums/ability-id"; -import type { ModifierOverride } from "#app/modifier/modifier-type"; -import type { BattleStyle } from "#app/overrides"; -import Overrides, { defaultOverrides } from "#app/overrides"; -import type { Unlockables } from "#enums/unlockables"; +import type { BattleType } from "#enums/battle-type"; import { BiomeId } from "#enums/biome-id"; import { MoveId } from "#enums/move-id"; import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Nature } from "#enums/nature"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import type { WeatherType } from "#enums/weather-type"; -import { expect, vi } from "vitest"; -import { GameManagerHelper } from "./gameManagerHelper"; -import { coerceArray, shiftCharCodes } from "#app/utils/common"; -import type { RandomTrainerOverride } from "#app/overrides"; -import type { BattleType } from "#enums/battle-type"; +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/test-utils/helpers/game-manager-helper"; +import { coerceArray, shiftCharCodes } from "#utils/common"; +import { vi } from "vitest"; /** * Helper to handle overrides in tests */ export class OverridesHelper extends GameManagerHelper { - /** If `true`, removes the starting items from enemies at the start of each test; default `true` */ + /** + * If `true`, removes the starting items from enemies at the start of each test. + * @defaultValue `true` + */ public removeEnemyStartingItems = true; - /** If `true`, sets the shiny overrides to disable shinies at the start of each test; default `true` */ + /** + * If `true`, sets the shiny overrides to disable shinies at the start of each test. + * @defaultValue `true` + */ public disableShinies = true; + /** + * If `true`, will set the IV overrides for player and enemy pokemon to `31` at the start of each test. + * @defaultValue `true` + */ + public normalizeIVs = true; + /** + * If `true`, will set the Nature overrides for player and enemy pokemon to a neutral nature at the start of each test. + * @defaultValue `true` + */ + public normalizeNatures = true; /** * Override the starting biome - * @warning Any event listeners that are attached to [NewArenaEvent](events\battle-scene.ts) may need to be handled down the line + * @warning Any event listeners that are attached to {@linkcode NewArenaEvent} may need to be handled down the line * @param biome - The biome to set */ public startingBiome(biome: BiomeId): this { @@ -209,9 +228,9 @@ export class OverridesHelper extends GameManagerHelper { } /** - * Override the player pokemon's {@linkcode StatusEffect | status-effect} + * Override the player pokemon's initial {@linkcode StatusEffect | status-effect}, * @param statusEffect - The {@linkcode StatusEffect | status-effect} to set - * @returns + * @returns `this` */ public statusEffect(statusEffect: StatusEffect): this { vi.spyOn(Overrides, "STATUS_OVERRIDE", "get").mockReturnValue(statusEffect); @@ -219,6 +238,80 @@ export class OverridesHelper extends GameManagerHelper { return this; } + /** + * Overrides the IVs of the player pokemon + * @param ivs - If set to a number, all IVs are set to the same value. Must be between `0` and `31`! + * + * If set to an array, that array is applied to the pokemon's IV field as-is. + * All values must be between `0` and `31`, and the array must be of exactly length `6`! + * + * If set to `null`, the override is disabled. + * @returns `this` + */ + public playerIVs(ivs: number | number[] | null): this { + this.normalizeIVs = false; + vi.spyOn(Overrides, "IVS_OVERRIDE", "get").mockReturnValue(ivs); + if (ivs === null) { + this.log("Player IVs override disabled!"); + } else { + this.log(`Player IVs set to ${ivs}!`); + } + return this; + } + + /** + * Overrides the nature of the player's pokemon + * @param nature - The nature to set, or `null` to disable the override. + * @returns `this` + */ + public nature(nature: Nature | null): this { + this.normalizeNatures = false; + vi.spyOn(Overrides, "NATURE_OVERRIDE", "get").mockReturnValue(nature); + if (nature === null) { + this.log("Player Nature override disabled!"); + } else { + this.log(`Player Nature set to ${Nature[nature]} (=${nature})!`); + } + return this; + } + + /** + * Overrides the IVs of the enemy pokemon + * @param ivs - If set to a number, all IVs are set to the same value. Must be between `0` and `31`! + * + * If set to an array, that array is applied to the pokemon's IV field as-is. + * All values must be between `0` and `31`, and the array must be of exactly length `6`! + * + * If set to `null`, the override is disabled. + * @returns `this` + */ + public enemyIVs(ivs: number | number[] | null): this { + this.normalizeIVs = false; + vi.spyOn(Overrides, "ENEMY_IVS_OVERRIDE", "get").mockReturnValue(ivs); + if (ivs === null) { + this.log("Enemy IVs override disabled!"); + } else { + this.log(`Enemy IVs set to ${ivs}!`); + } + return this; + } + + /** + * Overrides the nature of the enemy's pokemon + * @param nature - The nature to set, or `null` to disable the override. + * @returns `this` + */ + public enemyNature(nature: Nature | null): this { + this.normalizeNatures = false; + vi.spyOn(Overrides, "ENEMY_NATURE_OVERRIDE", "get").mockReturnValue(nature); + if (nature === null) { + this.log("Enemy Nature override disabled!"); + } else { + this.log(`Enemy Nature set to ${Nature[nature]} (=${nature})!`); + } + return this; + } + /** * Override each wave to not have standard trainer battles * @returns `this` @@ -262,7 +355,7 @@ export class OverridesHelper extends GameManagerHelper { */ public weather(type: WeatherType): this { vi.spyOn(Overrides, "WEATHER_OVERRIDE", "get").mockReturnValue(type); - this.log(`Weather set to ${Weather[type]} (=${type})!`); + this.log(`Weather set to ${WeatherType[type]} (=${type})!`); return this; } @@ -401,9 +494,9 @@ export class OverridesHelper extends GameManagerHelper { } /** - * Override the enemy {@linkcode StatusEffect | status-effect} for enemy pokemon + * Override the enemy pokemon's initial {@linkcode StatusEffect | status-effect}. * @param statusEffect - The {@linkcode StatusEffect | status-effect} to set - * @returns + * @returns `this` */ public enemyStatusEffect(statusEffect: StatusEffect): this { vi.spyOn(Overrides, "OPP_STATUS_OVERRIDE", "get").mockReturnValue(statusEffect); @@ -574,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 86% rename from test/testUtils/helpers/reloadHelper.ts rename to test/test-utils/helpers/reload-helper.ts index 4f9d6c810f8..a8ed0e21307 100644 --- a/test/testUtils/helpers/reloadHelper.ts +++ b/test/test-utils/helpers/reload-helper.ts @@ -1,12 +1,12 @@ -import { GameManagerHelper } from "./gameManagerHelper"; -import { TitlePhase } from "#app/phases/title-phase"; +import { BattleStyle } from "#enums/battle-style"; import { UiMode } from "#enums/ui-mode"; +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/test-utils/game-manager"; +import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { vi } from "vitest"; -import { BattleStyle } from "#app/enums/battle-style"; -import { CommandPhase } from "#app/phases/command-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import type { SessionSaveData } from "#app/system/game-data"; -import type GameManager from "../gameManager"; /** * Helper to allow reloading sessions in unit tests. diff --git a/test/testUtils/helpers/settingsHelper.ts b/test/test-utils/helpers/settings-helper.ts similarity index 84% rename from test/testUtils/helpers/settingsHelper.ts rename to test/test-utils/helpers/settings-helper.ts index d5a60e6496a..a26aa2de33c 100644 --- a/test/testUtils/helpers/settingsHelper.ts +++ b/test/test-utils/helpers/settings-helper.ts @@ -1,7 +1,7 @@ -import { PlayerGender } from "#app/enums/player-gender"; -import { BattleStyle } from "#app/enums/battle-style"; -import { GameManagerHelper } from "./gameManagerHelper"; -import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; +import { BattleStyle } from "#enums/battle-style"; +import { ExpGainsSpeed } from "#enums/exp-gains-speed"; +import { PlayerGender } from "#enums/player-gender"; +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 89% rename from test/testUtils/inputsHandler.ts rename to test/test-utils/inputs-handler.ts index 0d8c43e7616..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 pad_xbox360 from "#app/configs/inputs/pad_xbox360"; +import type { BattleScene } from "#app/battle-scene"; import type { InputsController } from "#app/inputs-controller"; -import TouchControl from "#app/touch-controls"; -import { holdOn } from "#test/testUtils/gameManagerUtils"; +import { TouchControl } from "#app/touch-controls"; +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"; @@ -12,7 +12,7 @@ interface LogEntry { button: any; } -export default class InputsHandler { +export class InputsHandler { private scene: BattleScene; private events: Phaser.Events.EventEmitter; private inputController: InputsController; @@ -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/testUtils/mocks/mockClock.ts b/test/test-utils/mocks/mock-clock.ts similarity index 91% rename from test/testUtils/mocks/mockClock.ts rename to test/test-utils/mocks/mock-clock.ts index 67f399ae41d..0d94a62824c 100644 --- a/test/testUtils/mocks/mockClock.ts +++ b/test/test-utils/mocks/mock-clock.ts @@ -1,4 +1,6 @@ -import Clock = Phaser.Time.Clock; +import Phaser from "phaser"; + +const Clock = Phaser.Time.Clock; export class MockClock extends Clock { public overrideDelay: number | null = 1; 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 caf98b79a9f..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 "./mocksContainer/mockGraphics"; -import type MockTextureManager from "./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 79% rename from test/testUtils/mocks/mockLoader.ts rename to test/test-utils/mocks/mock-loader.ts index 7452f85a317..7bb3ffe7147 100644 --- a/test/testUtils/mocks/mockLoader.ts +++ b/test/test-utils/mocks/mock-loader.ts @@ -1,6 +1,8 @@ -import CacheManager = Phaser.Cache.CacheManager; +import Phaser from "phaser"; -export default class MockLoader { +const CacheManager = Phaser.Cache.CacheManager; + +export class MockLoader { public cacheManager; constructor(scene) { this.cacheManager = new CacheManager(scene); 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 61% rename from test/testUtils/mocks/mockTextureManager.ts rename to test/test-utils/mocks/mock-texture-manager.ts index 585ee0a674a..54002ad3cbb 100644 --- a/test/testUtils/mocks/mockTextureManager.ts +++ b/test/test-utils/mocks/mock-texture-manager.ts @@ -1,18 +1,20 @@ -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 type { MockGameObject } from "./mockGameObject"; -import { MockVideoGameObject } from "./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 */ -export default class MockTextureManager { +export class MockTextureManager { private textures: Map; private scene; public add; @@ -33,6 +35,8 @@ export default class MockTextureManager { image: this.image.bind(this), polygon: this.polygon.bind(this), text: this.text.bind(this), + rexBBCodeText: this.rexBBCodeText.bind(this), + rexInputText: this.rexInputText.bind(this), bitmapText: this.text.bind(this), displayList: this.displayList, video: () => new MockVideoGameObject(), @@ -103,9 +107,25 @@ export default class MockTextureManager { return text; } + rexBBCodeText(x, y, content, styleOptions) { + const text = new MockBBCodeText(this, x, y, content, styleOptions); + this.list.push(text); + return text; + } + + rexInputText(x, y, w, h, content, styleOptions) { + const text = new MockInputText(this, x, y, w, h, content, styleOptions); + this.list.push(text); + return text; + } + polygon(x, y, content, fillColor, fillAlpha) { const polygon = new MockPolygon(this, x, y, content, fillColor, fillAlpha); this.list.push(polygon); return polygon; } + + exists(key: string): boolean { + return this.textures.has(key); + } } diff --git a/test/testUtils/mocks/mockTimedEventManager.ts b/test/test-utils/mocks/mock-timed-event-manager.ts similarity index 85% rename from test/testUtils/mocks/mockTimedEventManager.ts rename to test/test-utils/mocks/mock-timed-event-manager.ts index 10f32fd4c8b..b6c84876783 100644 --- a/test/testUtils/mocks/mockTimedEventManager.ts +++ b/test/test-utils/mocks/mock-timed-event-manager.ts @@ -1,5 +1,5 @@ -import { CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER } from "#app/data/balance/starters"; import { TimedEventManager } from "#app/timed-event-manager"; +import { CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER } from "#balance/starters"; /** Mock TimedEventManager so that ongoing events don't impact tests */ export class MockTimedEventManager extends TimedEventManager { 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 9b25877c80c..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 "./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/test-utils/mocks/mocks-container/mock-bbcode-text.ts b/test/test-utils/mocks/mocks-container/mock-bbcode-text.ts new file mode 100644 index 00000000000..90b6a54a517 --- /dev/null +++ b/test/test-utils/mocks/mocks-container/mock-bbcode-text.ts @@ -0,0 +1,6 @@ +import { MockText } from "#test/test-utils/mocks/mocks-container/mock-text"; + +export class MockBBCodeText extends MockText { + setMaxLines(_lines: number) {} + setWrapMode(_mode: 0 | 1 | 2 | 3 | "none" | "word" | "char" | "character" | "mix") {} +} diff --git a/test/testUtils/mocks/mocksContainer/mockContainer.ts b/test/test-utils/mocks/mocks-container/mock-container.ts similarity index 96% rename from test/testUtils/mocks/mocksContainer/mockContainer.ts rename to test/test-utils/mocks/mocks-container/mock-container.ts index d31165bb847..dd19dc3259c 100644 --- a/test/testUtils/mocks/mocksContainer/mockContainer.ts +++ b/test/test-utils/mocks/mocks-container/mock-container.ts @@ -1,8 +1,8 @@ -import { coerceArray } from "#app/utils/common"; -import type MockTextureManager from "#test/testUtils/mocks/mockTextureManager"; -import type { MockGameObject } from "../mockGameObject"; +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 default class MockContainer implements MockGameObject { +export class MockContainer implements MockGameObject { protected x: number; protected y: number; protected scene; diff --git a/test/testUtils/mocks/mocksContainer/mockGraphics.ts b/test/test-utils/mocks/mocks-container/mock-graphics.ts similarity index 94% rename from test/testUtils/mocks/mocksContainer/mockGraphics.ts rename to test/test-utils/mocks/mocks-container/mock-graphics.ts index cd43bb3a877..1e1dfd38124 100644 --- a/test/testUtils/mocks/mocksContainer/mockGraphics.ts +++ b/test/test-utils/mocks/mocks-container/mock-graphics.ts @@ -1,6 +1,6 @@ -import type { MockGameObject } from "../mockGameObject"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; -export default class MockGraphics implements MockGameObject { +export class MockGraphics implements MockGameObject { private scene; public list: MockGameObject[] = []; public name: string; 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 f8990985e54..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/test-utils/mocks/mocks-container/mock-input-text.ts b/test/test-utils/mocks/mocks-container/mock-input-text.ts new file mode 100644 index 00000000000..bc5e26fddc5 --- /dev/null +++ b/test/test-utils/mocks/mocks-container/mock-input-text.ts @@ -0,0 +1,24 @@ +import { MockText } from "#test/test-utils/mocks/mocks-container/mock-text"; + +export class MockInputText extends MockText { + public inputType: string; + public selectionStart: number; + public selectionEnd: number; + public selectedText: string; + + constructor(textureManager, x, y, _w, _h, content, styleOptions) { + super(textureManager, x, y, content, styleOptions); + } + + selectText(_selectionStart?: number, _selectionEnd?: number) {} + + selectAll() {} + + setCursorPosition(_value: number) {} + + scrollToBottom() {} + + resize(_width: number, _height: number) {} + + setElement(_element, _style, _innerText) {} +} diff --git a/test/testUtils/mocks/mocksContainer/mockNineslice.ts b/test/test-utils/mocks/mocks-container/mock-nineslice.ts similarity index 76% rename from test/testUtils/mocks/mocksContainer/mockNineslice.ts rename to test/test-utils/mocks/mocks-container/mock-nineslice.ts index 90c0e13e725..6678a5fca65 100644 --- a/test/testUtils/mocks/mocksContainer/mockNineslice.ts +++ b/test/test-utils/mocks/mocks-container/mock-nineslice.ts @@ -1,6 +1,6 @@ -import MockContainer from "#test/testUtils/mocks/mocksContainer/mockContainer"; +import { MockContainer } from "#test/test-utils/mocks/mocks-container/mock-container"; -export default class MockNineslice extends MockContainer { +export class MockNineslice extends MockContainer { private texture; private leftWidth; private rightWidth; diff --git a/test/test-utils/mocks/mocks-container/mock-polygon.ts b/test/test-utils/mocks/mocks-container/mock-polygon.ts new file mode 100644 index 00000000000..7fc13fd7a00 --- /dev/null +++ b/test/test-utils/mocks/mocks-container/mock-polygon.ts @@ -0,0 +1,7 @@ +import { MockContainer } from "#test/test-utils/mocks/mocks-container/mock-container"; + +export class MockPolygon extends MockContainer { + constructor(textureManager, x, y, _content, _fillColor, _fillAlpha) { + super(textureManager, x, y); + } +} diff --git a/test/testUtils/mocks/mocksContainer/mockRectangle.ts b/test/test-utils/mocks/mocks-container/mock-rectangle.ts similarity index 91% rename from test/testUtils/mocks/mocksContainer/mockRectangle.ts rename to test/test-utils/mocks/mocks-container/mock-rectangle.ts index a8eeb370115..96c49dec692 100644 --- a/test/testUtils/mocks/mocksContainer/mockRectangle.ts +++ b/test/test-utils/mocks/mocks-container/mock-rectangle.ts @@ -1,7 +1,7 @@ -import { coerceArray } from "#app/utils/common"; -import type { MockGameObject } from "../mockGameObject"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; +import { coerceArray } from "#utils/common"; -export default class MockRectangle implements MockGameObject { +export class MockRectangle implements MockGameObject { private fillColor; private scene; public list: MockGameObject[] = []; diff --git a/test/testUtils/mocks/mocksContainer/mockSprite.ts b/test/test-utils/mocks/mocks-container/mock-sprite.ts similarity index 92% rename from test/testUtils/mocks/mocksContainer/mockSprite.ts rename to test/test-utils/mocks/mocks-container/mock-sprite.ts index bbcd421e1a7..d5e11f5c4f9 100644 --- a/test/testUtils/mocks/mocksContainer/mockSprite.ts +++ b/test/test-utils/mocks/mocks-container/mock-sprite.ts @@ -1,10 +1,10 @@ -import { coerceArray } from "#app/utils/common"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; +import { coerceArray } from "#utils/common"; import Phaser from "phaser"; -import type { MockGameObject } from "../mockGameObject"; type Frame = Phaser.Textures.Frame; -export default class MockSprite implements MockGameObject { +export class MockSprite implements MockGameObject { private phaserSprite; public pipelineData; public texture; @@ -154,6 +154,17 @@ export default 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 98% rename from test/testUtils/mocks/mocksContainer/mockText.ts rename to test/test-utils/mocks/mocks-container/mock-text.ts index 2345ff70c0d..ad2fce80972 100644 --- a/test/testUtils/mocks/mocksContainer/mockText.ts +++ b/test/test-utils/mocks/mocks-container/mock-text.ts @@ -1,7 +1,7 @@ -import UI from "#app/ui/ui"; -import type { MockGameObject } from "../mockGameObject"; +import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; +import { UI } from "#ui/ui"; -export default class MockText implements MockGameObject { +export class MockText implements MockGameObject { private phaserText; private wordWrapWidth; private splitRegExp; diff --git a/test/testUtils/mocks/mocksContainer/mockTexture.ts b/test/test-utils/mocks/mocks-container/mock-texture.ts similarity index 82% rename from test/testUtils/mocks/mocksContainer/mockTexture.ts rename to test/test-utils/mocks/mocks-container/mock-texture.ts index 3b01f9ab4ea..3e6b8137676 100644 --- a/test/testUtils/mocks/mocksContainer/mockTexture.ts +++ b/test/test-utils/mocks/mocks-container/mock-texture.ts @@ -1,11 +1,11 @@ -import type MockTextureManager from "#test/testUtils/mocks/mockTextureManager"; -import type { MockGameObject } from "../mockGameObject"; +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 * Just mocks the function calls and data required for use in tests */ -export default class MockTexture implements MockGameObject { +export class MockTexture implements MockGameObject { public manager: MockTextureManager; public key: string; public source; diff --git a/test/testUtils/phaseInterceptor.ts b/test/test-utils/phase-interceptor.ts similarity index 79% rename from test/testUtils/phaseInterceptor.ts rename to test/test-utils/phase-interceptor.ts index 9d046fc85ba..e0675a722f9 100644 --- a/test/testUtils/phaseInterceptor.ts +++ b/test/test-utils/phase-interceptor.ts @@ -1,69 +1,69 @@ import { Phase } from "#app/phase"; -import ErrorInterceptor from "#test/testUtils/errorInterceptor"; -import { AttemptRunPhase } from "#app/phases/attempt-run-phase"; -import { BattleEndPhase } from "#app/phases/battle-end-phase"; -import { BerryPhase } from "#app/phases/berry-phase"; -import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; -import { CommandPhase } from "#app/phases/command-phase"; -import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; -import { EggLapsePhase } from "#app/phases/egg-lapse-phase"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { EndEvolutionPhase } from "#app/phases/end-evolution-phase"; -import { EnemyCommandPhase } from "#app/phases/enemy-command-phase"; -import { EvolutionPhase } from "#app/phases/evolution-phase"; -import { FaintPhase } from "#app/phases/faint-phase"; -import { FormChangePhase } from "#app/phases/form-change-phase"; -import { LearnMovePhase } from "#app/phases/learn-move-phase"; -import { LevelCapPhase } from "#app/phases/level-cap-phase"; -import { LoginPhase } from "#app/phases/login-phase"; -import { MessagePhase } from "#app/phases/message-phase"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { MovePhase } from "#app/phases/move-phase"; -import { NewBattlePhase } from "#app/phases/new-battle-phase"; -import { NewBiomeEncounterPhase } from "#app/phases/new-biome-encounter-phase"; -import { NextEncounterPhase } from "#app/phases/next-encounter-phase"; -import { PostSummonPhase } from "#app/phases/post-summon-phase"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; -import { SelectGenderPhase } from "#app/phases/select-gender-phase"; -import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; -import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import { SelectTargetPhase } from "#app/phases/select-target-phase"; -import { ShinySparklePhase } from "#app/phases/shiny-sparkle-phase"; -import { ShowAbilityPhase } from "#app/phases/show-ability-phase"; -import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; -import { SummonPhase } from "#app/phases/summon-phase"; -import { SwitchPhase } from "#app/phases/switch-phase"; -import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; -import { TitlePhase } from "#app/phases/title-phase"; -import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; -import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { TurnStartPhase } from "#app/phases/turn-start-phase"; -import { UnavailablePhase } from "#app/phases/unavailable-phase"; -import { VictoryPhase } from "#app/phases/victory-phase"; -import { PartyHealPhase } from "#app/phases/party-heal-phase"; -import UI from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode"; -import { SelectBiomePhase } from "#app/phases/select-biome-phase"; +import { AttemptRunPhase } from "#phases/attempt-run-phase"; +import { BattleEndPhase } from "#phases/battle-end-phase"; +import { BerryPhase } from "#phases/berry-phase"; +import { CheckSwitchPhase } from "#phases/check-switch-phase"; +import { CommandPhase } from "#phases/command-phase"; +import { DamageAnimPhase } from "#phases/damage-anim-phase"; +import { EggLapsePhase } from "#phases/egg-lapse-phase"; +import { EncounterPhase } from "#phases/encounter-phase"; +import { EndEvolutionPhase } from "#phases/end-evolution-phase"; +import { EnemyCommandPhase } from "#phases/enemy-command-phase"; +import { EvolutionPhase } from "#phases/evolution-phase"; +import { ExpPhase } from "#phases/exp-phase"; +import { FaintPhase } from "#phases/faint-phase"; +import { FormChangePhase } from "#phases/form-change-phase"; +import { GameOverModifierRewardPhase } from "#phases/game-over-modifier-reward-phase"; +import { GameOverPhase } from "#phases/game-over-phase"; +import { LearnMovePhase } from "#phases/learn-move-phase"; +import { LevelCapPhase } from "#phases/level-cap-phase"; +import { LoginPhase } from "#phases/login-phase"; +import { MessagePhase } from "#phases/message-phase"; +import { ModifierRewardPhase } from "#phases/modifier-reward-phase"; +import { MoveEffectPhase } from "#phases/move-effect-phase"; +import { MoveEndPhase } from "#phases/move-end-phase"; +import { MovePhase } from "#phases/move-phase"; import { MysteryEncounterBattlePhase, MysteryEncounterOptionSelectedPhase, MysteryEncounterPhase, MysteryEncounterRewardsPhase, PostMysteryEncounterPhase, -} from "#app/phases/mystery-encounter-phases"; -import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; -import { PartyExpPhase } from "#app/phases/party-exp-phase"; -import { ExpPhase } from "#app/phases/exp-phase"; -import { GameOverPhase } from "#app/phases/game-over-phase"; -import { RibbonModifierRewardPhase } from "#app/phases/ribbon-modifier-reward-phase"; -import { GameOverModifierRewardPhase } from "#app/phases/game-over-modifier-reward-phase"; -import { UnlockPhase } from "#app/phases/unlock-phase"; -import { PostGameOverPhase } from "#app/phases/post-game-over-phase"; -import { RevivalBlessingPhase } from "#app/phases/revival-blessing-phase"; - -import type { PhaseClass, PhaseString } from "#app/@types/phase-types"; +} from "#phases/mystery-encounter-phases"; +import { NewBattlePhase } from "#phases/new-battle-phase"; +import { NewBiomeEncounterPhase } from "#phases/new-biome-encounter-phase"; +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 { PostGameOverPhase } from "#phases/post-game-over-phase"; +import { PostSummonPhase } from "#phases/post-summon-phase"; +import { QuietFormChangePhase } from "#phases/quiet-form-change-phase"; +import { RevivalBlessingPhase } from "#phases/revival-blessing-phase"; +import { RibbonModifierRewardPhase } from "#phases/ribbon-modifier-reward-phase"; +import { SelectBiomePhase } from "#phases/select-biome-phase"; +import { SelectGenderPhase } from "#phases/select-gender-phase"; +import { SelectModifierPhase } from "#phases/select-modifier-phase"; +import { SelectStarterPhase } from "#phases/select-starter-phase"; +import { SelectTargetPhase } from "#phases/select-target-phase"; +import { ShinySparklePhase } from "#phases/shiny-sparkle-phase"; +import { ShowAbilityPhase } from "#phases/show-ability-phase"; +import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; +import { SummonPhase } from "#phases/summon-phase"; +import { SwitchPhase } from "#phases/switch-phase"; +import { SwitchSummonPhase } from "#phases/switch-summon-phase"; +import { TitlePhase } from "#phases/title-phase"; +import { ToggleDoublePositionPhase } from "#phases/toggle-double-position-phase"; +import { TurnEndPhase } from "#phases/turn-end-phase"; +import { TurnInitPhase } from "#phases/turn-init-phase"; +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/test-utils/error-interceptor"; +import type { PhaseClass, PhaseString } from "#types/phase-types"; +import { UI } from "#ui/ui"; export interface PromptHandler { phaseTarget?: string; @@ -75,7 +75,7 @@ export interface PromptHandler { type PhaseInterceptorPhase = PhaseClass | PhaseString; -export default class PhaseInterceptor { +export class PhaseInterceptor { public scene; public phases = {}; public log: string[]; @@ -142,6 +142,7 @@ export default class PhaseInterceptor { [LevelCapPhase, this.startPhase], [AttemptRunPhase, this.startPhase], [SelectBiomePhase, this.startPhase], + [PokemonTransformPhase, this.startPhase], [MysteryEncounterPhase, this.startPhase], [MysteryEncounterOptionSelectedPhase, this.startPhase], [MysteryEncounterBattlePhase, 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/testUtils/testFileInitialization.ts b/test/test-utils/test-file-initialization.ts similarity index 53% rename from test/testUtils/testFileInitialization.ts rename to test/test-utils/test-file-initialization.ts index 578747b0529..631d3f9146b 100644 --- a/test/testUtils/testFileInitialization.ts +++ b/test/test-utils/test-file-initialization.ts @@ -1,38 +1,46 @@ import { SESSION_ID_COOKIE_NAME } from "#app/constants"; -import { initLoggedInUser } from "#app/account"; -import { initAbilities } from "#app/data/abilities/ability"; -import { initBiomes } from "#app/data/balance/biomes"; -import { initEggMoves } from "#app/data/balance/egg-moves"; -import { initPokemonPrevolutions, initPokemonStarters } from "#app/data/balance/pokemon-evolutions"; -import { initMoves } from "#app/data/moves/move"; -import { initModifierPools } from "#app/modifier/init-modifier-pools"; -import { initMysteryEncounters } from "#app/data/mystery-encounters/mystery-encounters"; -import { initPokemonForms } from "#app/data/pokemon-forms"; -import { initSpecies } from "#app/data/pokemon-species"; -import { initAchievements } from "#app/system/achv"; -import { initVouchers } from "#app/system/voucher"; -import { initStatsKeys } from "#app/ui/game-stats-ui-handler"; -import { setCookie } from "#app/utils/cookies"; -import { blobToString } from "#test/testUtils/gameManagerUtils"; -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 { initializeGame } from "#app/init/init"; +import { initI18n } from "#plugins/i18n"; +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 InputText from "phaser3-rex-plugins/plugins/inputtext"; import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import { manageListeners } from "./listenersManager"; -import { initI18n } from "#app/plugins/i18n"; -import { initModifierTypes } from "#app/modifier/modifier-type"; +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/testUtils/testUtils.ts b/test/test-utils/test-utils.ts similarity index 100% rename from test/testUtils/testUtils.ts rename to test/test-utils/test-utils.ts diff --git a/test/testUtils/TextInterceptor.ts b/test/test-utils/text-interceptor.ts similarity index 95% rename from test/testUtils/TextInterceptor.ts rename to test/test-utils/text-interceptor.ts index 4aaed458e44..36a5db4c78d 100644 --- a/test/testUtils/TextInterceptor.ts +++ b/test/test-utils/text-interceptor.ts @@ -1,7 +1,7 @@ /** * Class will intercept any text or dialogue message calls and log them for test purposes */ -export default class TextInterceptor { +export class TextInterceptor { private scene; public logs: string[] = []; constructor(scene) { diff --git a/test/testUtils/mocks/mocksContainer/mockPolygon.ts b/test/testUtils/mocks/mocksContainer/mockPolygon.ts deleted file mode 100644 index 4a7f3baec78..00000000000 --- a/test/testUtils/mocks/mocksContainer/mockPolygon.ts +++ /dev/null @@ -1,7 +0,0 @@ -import MockContainer from "#test/testUtils/mocks/mocksContainer/mockContainer"; - -export default class MockPolygon extends MockContainer { - constructor(textureManager, x, y, _content, _fillColor, _fillAlpha) { - super(textureManager, x, y); - } -} diff --git a/test/types/enum-types.test-d.ts b/test/types/enum-types.test-d.ts new file mode 100644 index 00000000000..396c479e85a --- /dev/null +++ b/test/types/enum-types.test-d.ts @@ -0,0 +1,104 @@ +import type { EnumOrObject, EnumValues, NormalEnum, TSNumericEnum } from "#app/@types/enum-types"; +import type { enumValueToKey, getEnumKeys, getEnumValues } from "#app/utils/enums"; +import { describe, expectTypeOf, it } from "vitest"; + +enum testEnumNum { + testN1 = 1, + testN2 = 2, +} + +enum testEnumString { + testS1 = "apple", + testS2 = "banana", +} + +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>(); + + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toMatchTypeOf<"apple" | "banana">(); + }); + + it("should produce union of const object values as type", () => { + expectTypeOf>().toEqualTypeOf<1 | 2>(); + + expectTypeOf>().toEqualTypeOf<"apple" | "banana">(); + }); + }); + + describe("TSNumericEnum", () => { + it("should match numeric enums", () => { + expectTypeOf>().toEqualTypeOf(); + }); + + it("should not match string enums or const objects", () => { + expectTypeOf>().toBeNever(); + expectTypeOf>().toBeNever(); + expectTypeOf>().toBeNever(); + }); + }); + + describe("NormalEnum", () => { + it("should match string enums or const objects", () => { + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf(); + }); + it("should not match numeric enums", () => { + expectTypeOf>().toBeNever(); + }); + }); + + describe("EnumOrObject", () => { + it("should match any enum or const object", () => { + expectTypeOf().toMatchTypeOf(); + expectTypeOf().toMatchTypeOf(); + expectTypeOf().toMatchTypeOf(); + expectTypeOf().toMatchTypeOf(); + }); + + it("should not match an enum value union w/o typeof", () => { + expectTypeOf().not.toMatchTypeOf(); + expectTypeOf().not.toMatchTypeOf(); + }); + + it("should be equivalent to `TSNumericEnum | NormalEnum`", () => { + expectTypeOf().branded.toEqualTypeOf | NormalEnum>(); + }); + }); +}); + +describe("Enum Functions", () => { + describe("getEnumKeys", () => { + it("should retrieve keys of numeric enum", () => { + expectTypeOf>().returns.toEqualTypeOf<("testN1" | "testN2")[]>(); + }); + }); + + describe("getEnumValues", () => { + it("should retrieve values of numeric enum", () => { + expectTypeOf>().returns.branded.toEqualTypeOf<(1 | 2)[]>(); + }); + }); + + describe("enumValueToKey", () => { + it("should retrieve values for a given key", () => { + expectTypeOf< + typeof enumValueToKey + >().returns.toEqualTypeOf<"testS1">(); + expectTypeOf>().returns.toEqualTypeOf< + "testS1" | "testS2" + >(); + expectTypeOf>().returns.toEqualTypeOf<"testON1">(); + expectTypeOf>().returns.toEqualTypeOf<"testON1" | "testON2">(); + }); + }); +}); diff --git a/test/ui/battle_info.test.ts b/test/ui/battle-info.test.ts similarity index 90% rename from test/ui/battle_info.test.ts rename to test/ui/battle-info.test.ts index 3049424e3d2..8bdd61e05b0 100644 --- a/test/ui/battle_info.test.ts +++ b/test/ui/battle-info.test.ts @@ -1,9 +1,9 @@ -import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; -import { SpeciesId } from "#enums/species-id"; -import { ExpPhase } from "#app/phases/exp-phase"; import { AbilityId } from "#enums/ability-id"; +import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { MoveId } from "#enums/move-id"; -import GameManager from "#test/testUtils/gameManager"; +import { SpeciesId } from "#enums/species-id"; +import { ExpPhase } from "#phases/exp-phase"; +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/pokedex.test.ts b/test/ui/pokedex.test.ts index 13f595e0c60..217c1f09a3b 100644 --- a/test/ui/pokedex.test.ts +++ b/test/ui/pokedex.test.ts @@ -1,21 +1,19 @@ -import GameManager from "#test/testUtils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import PokedexUiHandler from "#app/ui/pokedex-ui-handler"; -import { FilterTextRow } from "#app/ui/filter-text"; -import { allAbilities } from "#app/data/data-lists"; +import { allAbilities, allSpecies } from "#data/data-lists"; +import type { PokemonForm, PokemonSpecies } from "#data/pokemon-species"; import { AbilityId } from "#enums/ability-id"; -import { SpeciesId } from "#enums/species-id"; -import type { PokemonForm } from "#app/data/pokemon-species"; -import { getPokemonSpecies } from "#app/utils/pokemon-utils"; -import { allSpecies } from "#app/data/data-lists"; import { Button } from "#enums/buttons"; import { DropDownColumn } from "#enums/drop-down-column"; -import type PokemonSpecies from "#app/data/pokemon-species"; import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; -import PokedexPageUiHandler from "#app/ui/pokedex-page-ui-handler"; -import type { StarterAttributes } from "#app/system/game-data"; +import type { StarterAttributes } from "#system/game-data"; +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"; +import { getPokemonSpecies } from "#utils/pokemon-utils"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; /* Information for the `data_pokedex_tests.psrv`: @@ -195,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 @@ -303,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 @@ -332,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 @@ -349,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 @@ -377,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]); @@ -396,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]); @@ -416,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 @@ -435,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); @@ -515,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 @@ -530,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 8167ab17957..a8c6284cf3f 100644 --- a/test/ui/starter-select.test.ts +++ b/test/ui/starter-select.test.ts @@ -1,19 +1,19 @@ -import { Gender } from "#app/data/gender"; -import { Nature } from "#enums/nature"; -import { allSpecies } from "#app/data/data-lists"; -import { GameModes } from "#enums/game-modes"; -import { EncounterPhase } from "#app/phases/encounter-phase"; -import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import type { TitlePhase } from "#app/phases/title-phase"; -import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import type SaveSlotSelectUiHandler from "#app/ui/save-slot-select-ui-handler"; -import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; -import type StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; -import { UiMode } from "#enums/ui-mode"; +import { allSpecies } from "#data/data-lists"; +import { Gender } from "#data/gender"; import { AbilityId } from "#enums/ability-id"; import { Button } from "#enums/buttons"; +import { GameModes } from "#enums/game-modes"; +import { Nature } from "#enums/nature"; import { SpeciesId } from "#enums/species-id"; -import GameManager from "#test/testUtils/gameManager"; +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/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"; +import type { StarterSelectUiHandler } from "#ui/starter-select-ui-handler"; import i18next from "i18next"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -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 572d56c5903..0d101b5b4ef 100644 --- a/test/ui/transfer-item.test.ts +++ b/test/ui/transfer-item.test.ts @@ -1,11 +1,11 @@ -import { BerryType } from "#app/enums/berry-type"; -import { Button } from "#app/enums/buttons"; +import { BerryType } from "#enums/berry-type"; +import { Button } from "#enums/buttons"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; 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"; import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/test/ui/type-hints.test.ts b/test/ui/type-hints.test.ts index 6b0bc6e5ea5..f1f27322a64 100644 --- a/test/ui/type-hints.test.ts +++ b/test/ui/type-hints.test.ts @@ -1,14 +1,14 @@ -import { Button } from "#app/enums/buttons"; +import { Button } from "#enums/buttons"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { CommandPhase } from "#app/phases/command-phase"; -import FightUiHandler from "#app/ui/fight-ui-handler"; import { UiMode } from "#enums/ui-mode"; -import GameManager from "#test/testUtils/gameManager"; +import { CommandPhase } from "#phases/command-phase"; +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"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import type MockText from "#test/testUtils/mocks/mocksContainer/mockText"; -import i18next from "i18next"; describe("UI - Type Hints", () => { let phaserGame: Phaser.Game; diff --git a/test/utils.test.ts b/test/utils.test.ts index fe93bdd6970..aacd590a023 100644 --- a/test/utils.test.ts +++ b/test/utils.test.ts @@ -1,8 +1,7 @@ -import { expect, describe, it, beforeAll } from "vitest"; -import { randomString, padInt } from "#app/utils/common"; -import { deepMergeSpriteData } from "#app/utils/data"; - +import { padInt, randomString } from "#utils/common"; +import { deepMergeSpriteData } from "#utils/data"; import Phaser from "phaser"; +import { beforeAll, describe, expect, it } from "vitest"; describe("utils", () => { beforeAll(() => { diff --git a/test/vitest.setup.ts b/test/vitest.setup.ts index 93b439e540f..be35e18e2e9 100644 --- a/test/vitest.setup.ts +++ b/test/vitest.setup.ts @@ -1,8 +1,7 @@ import "vitest-canvas-mock"; +import { initTests } from "#test/test-utils/test-file-initialization"; import { afterAll, beforeAll, vi } from "vitest"; -import { initTestFile } from "./testUtils/testFileInitialization"; - /** Set the timezone to UTC for tests. */ /** Mock the override import to always return default values, ignoring any custom overrides. */ @@ -52,7 +51,7 @@ vi.mock("i18next", async importOriginal => { global.testFailed = false; beforeAll(() => { - initTestFile(); + initTests(); }); afterAll(() => { diff --git a/tsconfig.json b/tsconfig.json index 6af3e9ce650..8c53625ce55 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,17 @@ "compilerOptions": { "target": "ES2020", "module": "ES2020", + // 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 + "lib": [ + "ES2020", + "ES2024.Promise", + "DOM", + "DOM.AsyncIterable", + "DOM.Iterable", + "ScriptHost", + "WebWorker.ImportScripts" + ], "moduleResolution": "bundler", "resolveJsonModule": true, "esModuleInterop": true, @@ -11,18 +22,41 @@ "rootDir": ".", "baseUrl": "./src", "paths": { + "#abilities/*": ["./data/abilities/*.ts"], + "#api/*": ["./plugins/api/*.ts"], + "#balance/*": ["./data/balance/*.ts"], "#enums/*": ["./enums/*.ts"], - "#app/*": ["*.ts"], - "#test/*": ["../test/*.ts"] + "#events/*": ["./events/*.ts"], + "#field/*": ["./field/*.ts"], + "#inputs/*": ["./configs/inputs/*.ts"], + "#modifiers/*": ["./modifier/*.ts"], + "#moves/*": ["./data/moves/*.ts"], + "#mystery-encounters/*": [ + "./data/mystery-encounters/utils/*.ts", + "./data/mystery-encounters/encounters/*.ts", + "./data/mystery-encounters/requirements/*.ts", + "./data/mystery-encounters/*.ts" + ], + "#package.json": ["../package.json"], + "#phases/*": ["./phases/*.ts"], + "#plugins/*": ["./plugins/vite/*.ts", "./plugins/*.ts"], + "#sprites/*": ["./sprites/*.ts"], + "#system/*": [ + "./system/settings/*.ts", + "./system/version-migration/versions/*.ts", + "./system/version-migration/*.ts", + "./system/*.ts" + ], + "#trainers/*": ["./data/trainers/*.ts"], + "#types/*": ["./@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"], + "#test/*": ["../test/*.ts"], + "#app/*": ["*.ts"] }, "outDir": "./build", "noEmit": true }, - "typedocOptions": { - "entryPoints": ["./src"], - "entryPointStrategy": "expand", - "exclude": "**/*+.test.ts", - "out": "typedoc" - }, "exclude": ["node_modules", "dist", "vite.config.ts", "vitest.config.ts", "vitest.workspace.ts"] } diff --git a/tsdoc.json b/tsdoc.json new file mode 100644 index 00000000000..b4cbc9a62a5 --- /dev/null +++ b/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/en-us/json-schemas/tsdoc/v0/tsdoc.schema.json", + "noStandardTags": false, + "tagDefinitions": [ + { + "tagName": "@todo", + "syntaxKind": "block" + }, + { + "tagName": "@linkcode", + "syntaxKind": "inline" + } + ] +} diff --git a/typedoc.json b/typedoc.json new file mode 100644 index 00000000000..c34e6190c1a --- /dev/null +++ b/typedoc.json @@ -0,0 +1,7 @@ +{ + "entryPoints": ["./src"], + "entryPointStrategy": "expand", + "exclude": ["**/*+.test.ts"], + "out": "typedoc", + "highlightLanguages": ["javascript", "json", "jsonc", "json5", "tsx", "typescript", "markdown"] +} diff --git a/vitest.config.ts b/vitest.config.ts index c781bde97ed..e788302857b 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,32 +1,17 @@ import { defineProject } from "vitest/config"; -import { defaultConfig } from "./vite.config"; import { BaseSequencer, type TestSpecification } from "vitest/node"; - -function getTestOrder(testName: string): number { - if (testName.includes("battle-scene.test.ts")) { - return 1; - } - if (testName.includes("inputs.test.ts")) { - return 2; - } - return 3; -} +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"], sequence: { - sequencer: class CustomSequencer extends BaseSequencer { - async sort(files: TestSpecification[]) { - // use default sorting at first. - files = await super.sort(files); - // Except, forcibly reorder - - return files.sort((a, b) => getTestOrder(a.moduleId) - getTestOrder(b.moduleId)); - } - }, + sequencer: MySequencer, }, environment: "jsdom" as const, environmentOptions: { @@ -34,6 +19,10 @@ export default defineProject(({ mode }) => ({ resources: "usable", }, }, + typecheck: { + tsconfig: "tsconfig.json", + include: ["./test/types/**/*.{test,spec}{-|.}d.ts"], + }, threads: false, trace: true, restoreMocks: true, @@ -51,3 +40,38 @@ export default defineProject(({ mode }) => ({ keepNames: true, }, })); + +//#region Helpers + +/** + * Class for sorting test files in the desired order. + */ +class MySequencer extends BaseSequencer { + async sort(files: TestSpecification[]) { + files = await super.sort(files); + + return files.sort((a, b) => { + const aTestOrder = getTestOrder(a.moduleId); + const bTestOrder = getTestOrder(b.moduleId); + return aTestOrder - bTestOrder; + }); + } +} + +/** + * A helper function for sorting test files in a desired order. + * + * A lower number means that a test file must be run earlier, + * or else it breaks due to running tests with `--no-isolate.` + */ +function getTestOrder(testName: string): number { + if (testName.includes("battle-scene.test.ts")) { + return 1; + } + if (testName.includes("inputs.test.ts")) { + return 2; + } + return 3; +} + +//#endregion diff --git a/vitest.workspace.ts b/vitest.workspace.ts deleted file mode 100644 index 2f5d1f1e2c8..00000000000 --- a/vitest.workspace.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { defineWorkspace } from "vitest/config"; -import { defaultConfig } from "./vite.config"; - -export default defineWorkspace([ - { - ...defaultConfig, - test: { - name: "pre", - include: ["./test/pre.test.ts"], - environment: "jsdom", - }, - }, - "./vitest.config.ts", -]);