Merge branch 'beta' into todo-test-enable
61
.devcontainer/devcontainer.json
Normal file
@ -0,0 +1,61 @@
|
||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||
// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node
|
||||
{
|
||||
"name": "Node.js & TypeScript",
|
||||
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
||||
"image": "mcr.microsoft.com/devcontainers/typescript-node:1-22-bookworm",
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/github-cli:1": {
|
||||
"installDirectlyFromGitHubRelease": true,
|
||||
"version": "latest"
|
||||
},
|
||||
"ghcr.io/devcontainers-extra/features/pnpm:2": {
|
||||
"version": "latest"
|
||||
}
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"settings": {
|
||||
// # Formatter configs
|
||||
"editor.defaultFormatter": "biomejs.biome",
|
||||
"editor.tabSize": 2,
|
||||
"editor.insertSpaces": true,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.addMissingImports.ts": "always",
|
||||
"source.removeUnusedImports": "always",
|
||||
"source.fixAll.biome": "always",
|
||||
"source.organizeImports.biome": "always"
|
||||
},
|
||||
"biome.suggestInstallingGlobally": false,
|
||||
|
||||
// # JS/TS setting overrides
|
||||
"javascript.preferences.importModuleSpecifier": "non-relative",
|
||||
"javascript.preferences.importModuleSpecifierEnding": "index",
|
||||
"javascript.preferGoToSourceDefinition": true,
|
||||
"javascript.updateImportsOnFileMove.enabled": "always",
|
||||
|
||||
"typescript.preferences.importModuleSpecifier": "non-relative",
|
||||
"typescript.preferences.importModuleSpecifierEnding": "index",
|
||||
"typescript.preferGoToSourceDefinition": true,
|
||||
"typescript.updateImportsOnFileMove.enabled": "always",
|
||||
|
||||
"typescript.tsserver.experimental.enableProjectDiagnostics": true,
|
||||
|
||||
// # Miscellaneous
|
||||
"npm.packageManager": "pnpm",
|
||||
"npm.scriptRunner": "pnpm",
|
||||
"vitest.cliArguments": "--no-isolate"
|
||||
},
|
||||
"extensions": [
|
||||
"biomejs.biome",
|
||||
"YoavBls.pretty-ts-errors",
|
||||
"vitest.explorer",
|
||||
"adpyke.codesnap", // Bind to a hotkey (ctrl+\, etc) for best results
|
||||
"aaron-bond.better-comments",
|
||||
"MuTsunTsai.jsdoc-link"
|
||||
]
|
||||
}
|
||||
},
|
||||
"postCreateCommand": "pnpm install",
|
||||
"forwardPorts": [8000]
|
||||
}
|
5
.gitignore
vendored
@ -12,9 +12,10 @@ dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode
|
||||
# Editor directories and files (excluding `extensions.json` for devcontainer)
|
||||
*.code-workspace
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
|
@ -26,3 +26,4 @@ ignore:
|
||||
- .git
|
||||
- public
|
||||
- dist
|
||||
- .devcontainer
|
||||
|
13
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"biomejs.biome",
|
||||
"YoavBls.pretty-ts-errors",
|
||||
"vitest.explorer",
|
||||
|
||||
// This stuff isn't mandatory - it's just nice to have :)
|
||||
|
||||
"adpyke.codesnap", // Bind to a hotkey (ctrl+\, etc) for best results
|
||||
"aaron-bond.better-comments",
|
||||
"MuTsunTsai.jsdoc-link"
|
||||
]
|
||||
}
|
@ -18,17 +18,34 @@ We are here to help and the better you understand what you're working on, the ea
|
||||
|
||||
PokéRogue is built with [Typescript](https://www.typescriptlang.org/docs/handbook/intro.html), using the [Phaser](https://github.com/phaserjs/phaser) game framework.
|
||||
|
||||
If you have the motivation and experience with Typescript/Javascript (or are willing to learn) you can contribute by forking the repository and making pull requests with contributions.
|
||||
If you have the motivation and experience with Typescript/Javascript (or are willing to learn), you can contribute by forking the repository and making pull requests with contributions.
|
||||
|
||||
## 💻 Environment Setup
|
||||
|
||||
### Prerequisites
|
||||
### Codespaces/Devcontainer Environment
|
||||
|
||||
- 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)
|
||||
Arguably the easiest way to get started is by using the prepared development environment.
|
||||
|
||||
We have a `.devcontainer/devcontainer.json` file, meaning we are compatible with:
|
||||
|
||||
- [![Open in GitHub Codespaces][codespaces-badge]][codespaces-link], or
|
||||
- the [Visual Studio Code Remote - Containers][devcontainer-ext] extension.
|
||||
|
||||
This Linux environment comes with all required dependencies needed to start working on the project.
|
||||
|
||||
[codespaces-badge]: <https://github.com/codespaces/badge.svg>
|
||||
[codespaces-link]: <https://github.com/codespaces/new?hide_repo_select=true&repo=620476224&ref=beta>
|
||||
[devcontainer-ext]: <https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers>
|
||||
|
||||
### Local Development
|
||||
|
||||
#### Prerequisites
|
||||
|
||||
- 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) | [manage with volta.sh](https://volta.sh/)
|
||||
- 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
|
||||
#### Running Locally
|
||||
|
||||
1. Run `pnpm install` from the repository root
|
||||
- *if you run into any errors, reach out in the **#dev-corner** channel on Discord*
|
||||
@ -50,7 +67,7 @@ Most issues are bugs and are labeled with their area, such as `Move`, `Ability`,
|
||||
- `P2`: Minor - Incorrect (but non-crashing) move/ability/interaction
|
||||
- `P3`: No gameplay impact - typo, minor graphical error, etc.
|
||||
|
||||
Also under issues, you can take a look at the [List of Partial / Unimplemented Moves and Abilities](https://github.com/pagefaultgames/pokerogue/issues/3503) and the [Bug Board](https://github.com/orgs/pagefaultgames/projects/3) (the latter is essentially the same as the issues page but easier to work with).
|
||||
Also under issues, you can take a look at the [List of Partial / Unimplemented Moves and Abilities](https://github.com/pagefaultgames/pokerogue/issues/3503) and the [Bug Board](https://github.com/orgs/pagefaultgames/projects/3). The latter is essentially the same as the issues page, so take your pick.
|
||||
|
||||
You are free to comment on any issue so that you may be assigned to it and we can avoid multiple people working on the same thing.
|
||||
|
||||
@ -58,7 +75,7 @@ You are free to comment on any issue so that you may be assigned to it and we ca
|
||||
|
||||
You can find the auto-generated documentation [here](https://pagefaultgames.github.io/pokerogue/main/index.html).
|
||||
|
||||
Additionally, the [docs folder](./docs) contains a variety of in-depth documents and guides useful for aspiring contributors.
|
||||
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)
|
||||
@ -81,7 +98,7 @@ For example, here is how you could test a scenario where the player Pokemon has
|
||||
```typescript
|
||||
const overrides = {
|
||||
ABILITY_OVERRIDE: AbilityId.DROUGHT,
|
||||
OPP_MOVESET_OVERRIDE: MoveId.WATER_GUN,
|
||||
ENEMY_MOVESET_OVERRIDE: MoveId.WATER_GUN,
|
||||
} satisfies Partial<InstanceType<typeof DefaultOverrides>>;
|
||||
```
|
||||
|
||||
|
@ -24,9 +24,10 @@
|
||||
- Pokémon Sword/Shield
|
||||
- Pokémon Legends: Arceus
|
||||
- Pokémon Scarlet/Violet
|
||||
- Firel (Custom Graveyard, Ice Cave, Laboratory, Metropolis, Plains, Power Plant, Seabed, Space, and Volcano biome music)
|
||||
- Firel (Custom Graveyard, Ice Cave, Laboratory, Metropolis, Plains, Power Plant, Seabed, Space, Volcano, and Desert biome music)
|
||||
- Lmz (Custom Ancient Ruins, Jungle, and Lake biome music)
|
||||
- Andr06 (Custom Forest, Slum and Sea biome music)
|
||||
- Andr06 (Custom Forest, Slum, Sea, and Fairy Cave biome music)
|
||||
- Leavannite (Custom Wasteland biome music)
|
||||
- _tresnoir
|
||||
- unveiler
|
||||
|
||||
|
@ -36,7 +36,6 @@
|
||||
"!**/src/data/balance/tms.ts"
|
||||
]
|
||||
},
|
||||
|
||||
"assist": {
|
||||
"actions": {
|
||||
"source": {
|
||||
|
@ -90,9 +90,13 @@ If this feature requires new text, the text should be integrated into the code w
|
||||
- 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.
|
||||
3. Your locales should use the following format:
|
||||
- File names should be in `kebab-case`. Example: `trainer-names.json`
|
||||
- Key names should be in `camelCase`. Example: `aceTrainer`
|
||||
- If you make use of i18next's inbuilt [context support](https://www.i18next.com/translation-function/context), you need to use `snake_case` for the context key. Example: `aceTrainer_male`
|
||||
4. At this point, you may begin [testing locales integration in your main PR](#documenting-locales-changes).
|
||||
5. The Translation Team will approve the locale PR (after corrections, if necessary), then merge it into `pokerogue-locales`.
|
||||
6. 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.
|
||||
|
@ -15,8 +15,6 @@
|
||||
"test:silent": "vitest run --silent='passed-only' --no-isolate",
|
||||
"test:create": "node scripts/create-test/create-test.js",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"eslint": "eslint --fix .",
|
||||
"eslint-ci": "eslint .",
|
||||
"biome": "biome check --write --changed --no-errors-on-unmatched --diagnostic-level=error",
|
||||
"biome-ci": "biome ci --diagnostic-level=error --reporter=github --no-errors-on-unmatched",
|
||||
"docs": "typedoc",
|
||||
@ -29,6 +27,7 @@
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "2.0.0",
|
||||
"@ls-lint/ls-lint": "2.3.1",
|
||||
"@types/crypto-js": "^4.2.0",
|
||||
"@types/jsdom": "^21.1.7",
|
||||
"@types/node": "^22.16.5",
|
||||
"@vitest/coverage-istanbul": "^3.2.4",
|
||||
|
@ -48,6 +48,9 @@ importers:
|
||||
'@ls-lint/ls-lint':
|
||||
specifier: 2.3.1
|
||||
version: 2.3.1
|
||||
'@types/crypto-js':
|
||||
specifier: ^4.2.0
|
||||
version: 4.2.2
|
||||
'@types/jsdom':
|
||||
specifier: ^21.1.7
|
||||
version: 21.1.7
|
||||
@ -718,6 +721,9 @@ packages:
|
||||
'@types/cookie@0.6.0':
|
||||
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
|
||||
|
||||
'@types/crypto-js@4.2.2':
|
||||
resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==}
|
||||
|
||||
'@types/deep-eql@4.0.2':
|
||||
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
|
||||
|
||||
@ -2525,6 +2531,8 @@ snapshots:
|
||||
|
||||
'@types/cookie@0.6.0': {}
|
||||
|
||||
'@types/crypto-js@4.2.2': {}
|
||||
|
||||
'@types/deep-eql@4.0.2': {}
|
||||
|
||||
'@types/estree@1.0.8': {}
|
||||
|
Before Width: | Height: | Size: 223 B After Width: | Height: | Size: 222 B |
Before Width: | Height: | Size: 257 B After Width: | Height: | Size: 256 B |
Before Width: | Height: | Size: 231 B After Width: | Height: | Size: 229 B |
Before Width: | Height: | Size: 312 B After Width: | Height: | Size: 311 B |
Before Width: | Height: | Size: 275 B After Width: | Height: | Size: 270 B |
Before Width: | Height: | Size: 227 B After Width: | Height: | Size: 226 B |
Before Width: | Height: | Size: 938 B After Width: | Height: | Size: 937 B |
Before Width: | Height: | Size: 223 B After Width: | Height: | Size: 222 B |
Before Width: | Height: | Size: 287 B After Width: | Height: | Size: 285 B |
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 270 B |
Before Width: | Height: | Size: 251 B After Width: | Height: | Size: 248 B |
Before Width: | Height: | Size: 263 B After Width: | Height: | Size: 261 B |
Before Width: | Height: | Size: 852 B After Width: | Height: | Size: 851 B |
Before Width: | Height: | Size: 259 B After Width: | Height: | Size: 257 B |
Before Width: | Height: | Size: 455 B After Width: | Height: | Size: 454 B |
Before Width: | Height: | Size: 250 B After Width: | Height: | Size: 248 B |
Before Width: | Height: | Size: 201 B After Width: | Height: | Size: 200 B |
Before Width: | Height: | Size: 235 B After Width: | Height: | Size: 234 B |
Before Width: | Height: | Size: 235 B After Width: | Height: | Size: 234 B |
Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 348 B |
Before Width: | Height: | Size: 348 B After Width: | Height: | Size: 347 B |
Before Width: | Height: | Size: 235 B After Width: | Height: | Size: 234 B |
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 232 B |
Before Width: | Height: | Size: 265 B After Width: | Height: | Size: 264 B |
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 405 B |
Before Width: | Height: | Size: 307 B After Width: | Height: | Size: 306 B |
Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 304 B |
Before Width: | Height: | Size: 234 B After Width: | Height: | Size: 233 B |
Before Width: | Height: | Size: 166 B After Width: | Height: | Size: 165 B |
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 235 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 248 B After Width: | Height: | Size: 247 B |
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 239 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 248 B After Width: | Height: | Size: 247 B |
Before Width: | Height: | Size: 249 B After Width: | Height: | Size: 247 B |
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 718 B |
Before Width: | Height: | Size: 217 B After Width: | Height: | Size: 213 B |
Before Width: | Height: | Size: 198 B After Width: | Height: | Size: 196 B |
Before Width: | Height: | Size: 208 B After Width: | Height: | Size: 205 B |
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 198 B |
Before Width: | Height: | Size: 204 B After Width: | Height: | Size: 202 B |
Before Width: | Height: | Size: 207 B After Width: | Height: | Size: 206 B |
Before Width: | Height: | Size: 419 B After Width: | Height: | Size: 417 B |
Before Width: | Height: | Size: 692 B After Width: | Height: | Size: 689 B |
Before Width: | Height: | Size: 727 B After Width: | Height: | Size: 726 B |
Before Width: | Height: | Size: 704 B After Width: | Height: | Size: 703 B |
Before Width: | Height: | Size: 939 B After Width: | Height: | Size: 936 B |
Before Width: | Height: | Size: 931 B After Width: | Height: | Size: 930 B |
Before Width: | Height: | Size: 737 B After Width: | Height: | Size: 736 B |
Before Width: | Height: | Size: 698 B After Width: | Height: | Size: 617 B |
Before Width: | Height: | Size: 143 B After Width: | Height: | Size: 142 B |
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 151 B |
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 142 B |
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 151 B |
BIN
public/images/ui/champion_ribbon_emerald.png
Normal file
After Width: | Height: | Size: 151 B |
Before Width: | Height: | Size: 222 B After Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 125 B After Width: | Height: | Size: 124 B |
Before Width: | Height: | Size: 213 B After Width: | Height: | Size: 212 B |
Before Width: | Height: | Size: 240 B After Width: | Height: | Size: 233 B |
Before Width: | Height: | Size: 171 B After Width: | Height: | Size: 165 B |
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 121 B |
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 121 B |
Before Width: | Height: | Size: 160 B After Width: | Height: | Size: 158 B |
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 151 B |
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 142 B |
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 151 B |
BIN
public/images/ui/legacy/champion_ribbon_emerald.png
Normal file
After Width: | Height: | Size: 151 B |
Before Width: | Height: | Size: 222 B After Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 125 B After Width: | Height: | Size: 124 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 423 B After Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 171 B After Width: | Height: | Size: 165 B |
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 121 B |
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 121 B |
Before Width: | Height: | Size: 160 B After Width: | Height: | Size: 158 B |
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 196 B |
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 179 B |