Merge branch 'beta' into money-rebalance
12
.editorconfig
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# EditorConfig is awesome: https://EditorConfig.org
|
||||||
|
|
||||||
|
# top-most EditorConfig file
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[src/*.{js,ts}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
@ -1,6 +1,6 @@
|
|||||||
VITE_BYPASS_LOGIN=0
|
VITE_BYPASS_LOGIN=0
|
||||||
VITE_BYPASS_TUTORIAL=0
|
VITE_BYPASS_TUTORIAL=0
|
||||||
VITE_SERVER_URL=https://api.beta.pokerogue.net
|
VITE_SERVER_URL=https://apibeta.pokerogue.net
|
||||||
VITE_DISCORD_CLIENT_ID=1248062921129459756
|
VITE_DISCORD_CLIENT_ID=1248062921129459756
|
||||||
VITE_GOOGLE_CLIENT_ID=955345393540-2k6lfftf0fdnb0krqmpthjnqavfvvf73.apps.googleusercontent.com
|
VITE_GOOGLE_CLIENT_ID=955345393540-2k6lfftf0fdnb0krqmpthjnqavfvvf73.apps.googleusercontent.com
|
||||||
VITE_I18N_DEBUG=1
|
VITE_I18N_DEBUG=0
|
||||||
|
@ -3,5 +3,5 @@ VITE_BYPASS_TUTORIAL=0
|
|||||||
VITE_SERVER_URL=http://localhost:8001
|
VITE_SERVER_URL=http://localhost:8001
|
||||||
VITE_DISCORD_CLIENT_ID=1234567890
|
VITE_DISCORD_CLIENT_ID=1234567890
|
||||||
VITE_GOOGLE_CLIENT_ID=1234567890
|
VITE_GOOGLE_CLIENT_ID=1234567890
|
||||||
VITE_I18N_DEBUG=1
|
VITE_I18N_DEBUG=0
|
||||||
VITE_PORT=8000
|
VITE_PORT=8000
|
||||||
|
38
.github/CODEOWNERS
vendored
@ -5,41 +5,3 @@
|
|||||||
|
|
||||||
# github actions/templates etc. - Dev Leads
|
# github actions/templates etc. - Dev Leads
|
||||||
/.github @pagefaultgames/dev-leads
|
/.github @pagefaultgames/dev-leads
|
||||||
|
|
||||||
# --- Translations ---
|
|
||||||
|
|
||||||
# all translations - Translation Leads
|
|
||||||
/src/locales @pagefaultgames/translation-leads
|
|
||||||
|
|
||||||
# Catalan (Spain/Spanish)
|
|
||||||
/src/locales/ca_ES @pagefaultgames/catalan-translation-team
|
|
||||||
|
|
||||||
# German
|
|
||||||
/src/locales/de @pagefaultgames/german-translation-team
|
|
||||||
|
|
||||||
# English
|
|
||||||
/src/locales/en @pagefaultgames/english-translation-team
|
|
||||||
|
|
||||||
# Spanish
|
|
||||||
/src/locales/es @pagefaultgames/spanish-translation-team
|
|
||||||
|
|
||||||
# French
|
|
||||||
/src/locales/fr @pagefaultgames/french-translation-team
|
|
||||||
|
|
||||||
# Italian
|
|
||||||
/src/locales/it @pagefaultgames/italian-translation-team
|
|
||||||
|
|
||||||
# Japenese
|
|
||||||
/src/locales/ja @pagefaultgames/japanese-translation-team
|
|
||||||
|
|
||||||
# Korean
|
|
||||||
/src/locales/ko @pagefaultgames/korean-translation-team
|
|
||||||
|
|
||||||
# Brasilian (Brasil/Portuguese)
|
|
||||||
/src/locales/pt_BR @pagefaultgames/portuguese_br-translation-team
|
|
||||||
|
|
||||||
# Chinese (simplified)
|
|
||||||
/src/locales/zh_CN @pagefaultgames/chinese_simplified-translation-team
|
|
||||||
|
|
||||||
# Chinese (traditional)
|
|
||||||
/src/locales/zh_TW @pagefaultgames/chinese_traditional-translation-team
|
|
||||||
|
2
.github/FUNDING.yml
vendored
@ -1 +1 @@
|
|||||||
github: patapancakes
|
github: pagefaultgames
|
||||||
|
81
.github/pull_request_template.md
vendored
@ -1,37 +1,76 @@
|
|||||||
<!-- Make sure the title includes categorization (i.e. [Bug], [QoL], [Localization]) -->
|
<!-- (Once you have read these comments, you are free to remove them) -->
|
||||||
<!-- Make sure that this PR is not overlapping with someone else's work -->
|
<!-- Feel free to look at other PRs for examples -->
|
||||||
<!-- Please try to keep the PR self-contained (and small) -->
|
<!--
|
||||||
|
Make sure the title includes categorization (choose the one that best fits):
|
||||||
|
- [Bug]: If the PR is primarily a bug fix
|
||||||
|
- [Move]: If a move has new or changed functionality
|
||||||
|
- [Ability]: If an ability has new or changed functionality
|
||||||
|
- [Item]: For new or modified items
|
||||||
|
- [Mystery]: For new or modified Mystery Encounters
|
||||||
|
- [Test]: If the PR is primarily adding or modifying tests
|
||||||
|
- [UI/UX]: If the PR is changing UI/UX elements
|
||||||
|
- [Audio]: If the PR is adding or changing music/sfx
|
||||||
|
- [Sprite]: If the PR is adding or changing sprites
|
||||||
|
- [Balance]: If the PR is related to game balance
|
||||||
|
- [Challenge]: If the PR is adding or modifying challenges
|
||||||
|
- [Refactor]: If the PR is primarily rewriting existing code
|
||||||
|
- [Docs]: If the PR is just adding or modifying documentation (such as tsdocs/code comments)
|
||||||
|
- [GitHub]: For changes to GitHub workflows/templates/etc
|
||||||
|
- [Misc]: If no other category fits the PR
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Make sure that this PR is not overlapping with someone else's work
|
||||||
|
Please try to keep the PR self-contained (and small)
|
||||||
|
-->
|
||||||
|
|
||||||
## What are the changes the user will see?
|
## What are the changes the user will see?
|
||||||
<!-- Summarize what are the changes from a user perspective on the application -->
|
<!-- Summarize what are the changes from a user perspective on the application -->
|
||||||
|
|
||||||
## Why am I making these changes?
|
## Why am I making these changes?
|
||||||
<!-- Explain why you decided to introduce these changes -->
|
<!--
|
||||||
<!-- Does it come from an issue or another PR? Please link it -->
|
Explain why you decided to introduce these changes
|
||||||
<!-- Explain why you believe this can enhance user experience -->
|
Does it come from an issue or another PR? Please link it
|
||||||
|
Explain why you believe this can enhance user experience
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
If there are existing GitHub issues related to the PR that would be fixed,
|
||||||
|
you can add "Fixes #[issue number]" (ie: "Fixes #1234") to link an issue to your PR
|
||||||
|
so that it will automatically be closed when the PR is merged.
|
||||||
|
-->
|
||||||
|
|
||||||
## What are the changes from a developer perspective?
|
## What are the changes from a developer perspective?
|
||||||
<!-- Explicitly state what are the changes introduced by the PR -->
|
<!--
|
||||||
<!-- You can make use of a comparison between what was the state before and after your PR changes -->
|
Explicitly state what are the changes introduced by the PR
|
||||||
|
You can make use of a comparison between what was the state before and after your PR changes
|
||||||
|
Ex: What files have been changed? What classes/functions/variables/etc have been added or changed?
|
||||||
|
-->
|
||||||
|
|
||||||
### Screenshots/Videos
|
## Screenshots/Videos
|
||||||
<!-- If your change is changing anything on the user experience, please provide visual proofs of it -->
|
<!--
|
||||||
<!-- Please take screenshots/videos before and after your changes, to show what is brought by this PR -->
|
If your changes are changing anything on the user experience, please provide visual proofs of it
|
||||||
|
Please take screenshots/videos before and after your changes, to show what is brought by this PR
|
||||||
|
-->
|
||||||
|
|
||||||
## How to test the changes?
|
## How to test the changes?
|
||||||
<!-- How can a reviewer test your changes once they check out on your branch? -->
|
<!--
|
||||||
<!-- Did you just make use of the `src/overrides.ts` file? -->
|
How can a reviewer test your changes once they check out on your branch?
|
||||||
<!-- Did you introduce any automated tests? -->
|
Did you make use of the `src/overrides.ts` file?
|
||||||
<!-- Do the reviewer need to do something special in order to test your change? -->
|
Did you introduce any automated tests?
|
||||||
|
Do the reviewers need to do something special in order to test your changes?
|
||||||
|
-->
|
||||||
|
|
||||||
## Checklist
|
## Checklist
|
||||||
- [ ] **I'm using `beta` as my base branch**
|
- [ ] **I'm using `beta` as my base branch**
|
||||||
- [ ] There is no overlap with another PR?
|
- [ ] There is no overlap with another PR?
|
||||||
- [ ] The PR is self-contained and cannot be split into smaller PRs?
|
- [ ] The PR is self-contained and cannot be split into smaller PRs?
|
||||||
- [ ] Have I provided a clear explanation of the changes?
|
- [ ] Have I provided a clear explanation of the changes?
|
||||||
- [ ] Have I considered writing automated tests for the issue?
|
- [ ] Have I tested the changes manually?
|
||||||
- [ ] If I have text, did I make it translatable and add a key in the English locale file(s)?
|
- [ ] Are all unit tests still passing? (`npm run test`)
|
||||||
- [ ] Have I tested the changes (manually)?
|
- [ ] Have I created new automated tests (`npm run create-test`) or updated existing tests related to the PR's changes?
|
||||||
- [ ] Are all unit tests still passing? (`npm run test`)
|
- [ ] Have I provided screenshots/videos of the changes (if applicable)?
|
||||||
- [ ] Are the changes visual?
|
- [ ] Have I made sure that any UI change works for both UI themes (default and legacy)?
|
||||||
- [ ] Have I provided screenshots/videos of the changes?
|
|
||||||
|
Are there any localization additions or changes? If so:
|
||||||
|
- [ ] Has a locales PR been created on the [locales](https://github.com/pagefaultgames/pokerogue-locales) repo?
|
||||||
|
- [ ] If so, please leave a link to it here:
|
||||||
|
- [ ] Has the translation team been contacted for proofreading/translation?
|
2
.github/workflows/deploy-beta.yml
vendored
@ -11,6 +11,8 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "20"
|
node-version: "20"
|
||||||
|
18
.github/workflows/deploy.yml
vendored
@ -1,8 +1,12 @@
|
|||||||
name: Deploy
|
name: Deploy Main
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push: {}
|
push:
|
||||||
pull_request: {}
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
@ -10,6 +14,8 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "20"
|
node-version: "20"
|
||||||
@ -20,7 +26,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
- name: Set up SSH
|
- name: Set up SSH
|
||||||
if: github.event_name == 'push' && github.ref_name == github.event.repository.default_branch
|
if: github.event_name == 'push' && github.ref_name == 'main'
|
||||||
run: |
|
run: |
|
||||||
mkdir ~/.ssh
|
mkdir ~/.ssh
|
||||||
echo "${{ secrets.SSH_PUBLIC_KEY }}" > ~/.ssh/id_ed25519.pub
|
echo "${{ secrets.SSH_PUBLIC_KEY }}" > ~/.ssh/id_ed25519.pub
|
||||||
@ -28,12 +34,12 @@ jobs:
|
|||||||
chmod 600 ~/.ssh/*
|
chmod 600 ~/.ssh/*
|
||||||
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
|
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
|
||||||
- name: Deploy build on server
|
- name: Deploy build on server
|
||||||
if: github.event_name == 'push' && github.ref_name == github.event.repository.default_branch
|
if: github.event_name == 'push' && github.ref_name == 'main'
|
||||||
run: |
|
run: |
|
||||||
rsync --del --no-times --checksum -vrm dist/* ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:${{ secrets.DESTINATION_DIR }}
|
rsync --del --no-times --checksum -vrm dist/* ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:${{ secrets.DESTINATION_DIR }}
|
||||||
ssh -t ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "~/prmanifest --inpath ${{ secrets.DESTINATION_DIR }} --outpath ${{ secrets.DESTINATION_DIR }}/manifest.json"
|
ssh -t ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "~/prmanifest --inpath ${{ secrets.DESTINATION_DIR }} --outpath ${{ secrets.DESTINATION_DIR }}/manifest.json"
|
||||||
- name: Purge Cloudflare Cache
|
- name: Purge Cloudflare Cache
|
||||||
if: github.event_name == 'push' && github.ref_name == github.event.repository.default_branch
|
if: github.event_name == 'push' && github.ref_name == 'main'
|
||||||
id: purge-cache
|
id: purge-cache
|
||||||
uses: NathanVaughn/actions-cloudflare-purge@v3.1.0
|
uses: NathanVaughn/actions-cloudflare-purge@v3.1.0
|
||||||
with:
|
with:
|
||||||
|
2
.github/workflows/eslint.yml
vendored
@ -22,6 +22,8 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Check out Git repository # Step to check out the repository
|
- name: Check out Git repository # Step to check out the repository
|
||||||
uses: actions/checkout@v4 # Use the checkout action version 4
|
uses: actions/checkout@v4 # Use the checkout action version 4
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
|
||||||
- name: Set up Node.js # Step to set up Node.js environment
|
- name: Set up Node.js # Step to set up Node.js environment
|
||||||
uses: actions/setup-node@v4 # Use the setup-node action version 4
|
uses: actions/setup-node@v4 # Use the setup-node action version 4
|
||||||
|
1
.github/workflows/github-pages.yml
vendored
@ -26,6 +26,7 @@ jobs:
|
|||||||
- name: Checkout repository for Typedoc
|
- name: Checkout repository for Typedoc
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
path: pokerogue_docs
|
path: pokerogue_docs
|
||||||
|
|
||||||
- name: Install OS package
|
- name: Install OS package
|
||||||
|
2
.github/workflows/test-shard-template.yml
vendored
@ -20,6 +20,8 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Check out Git repository
|
- name: Check out Git repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
|
1
.github/workflows/tests.yml
vendored
@ -22,6 +22,7 @@ jobs:
|
|||||||
- name: Check out Git repository
|
- name: Check out Git repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
path: tests-action
|
path: tests-action
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
|
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "public/locales"]
|
||||||
|
path = public/locales
|
||||||
|
url = https://github.com/pagefaultgames/pokerogue-locales
|
622
CREDITS.md
Normal file
@ -0,0 +1,622 @@
|
|||||||
|
# 🎵 Music
|
||||||
|
|
||||||
|
## BGM
|
||||||
|
- Pokémon Mystery Dungeon: Explorers of Sky
|
||||||
|
- Arata Iiyoshi
|
||||||
|
- Hideki Sakamoto
|
||||||
|
- Keisuke Ito
|
||||||
|
- Ken-ichi Saito
|
||||||
|
- Yoshihiro Maeda
|
||||||
|
- Pokémon Black/White
|
||||||
|
- Go Ichinose
|
||||||
|
- Hitomi Sato
|
||||||
|
- Shota Kageyama
|
||||||
|
- Pokémon Mystery Dungeon: Rescue Team DX
|
||||||
|
- Keisuke Ito
|
||||||
|
- Arata Iiyoshi
|
||||||
|
- Atsuhiro Ishizuna
|
||||||
|
- Pokémon HeartGold/SoulSilver
|
||||||
|
- Pokémon Black/White 2
|
||||||
|
- Pokémon X/Y
|
||||||
|
- Pokémon Omega Ruby/Alpha Sapphire
|
||||||
|
- Pokémon Sun/Moon
|
||||||
|
- Pokémon Ultra Sun/Ultra Moon
|
||||||
|
- 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)
|
||||||
|
- Lmz (Custom Ancient Ruins, Jungle, and Lake biome music)
|
||||||
|
- Andr06 (Custom Forest, Slum and Sea biome music)
|
||||||
|
- _tresnoir
|
||||||
|
- unveiler
|
||||||
|
|
||||||
|
## Sound Effects
|
||||||
|
- Pokémon Emerald
|
||||||
|
- Pokémon Black/White
|
||||||
|
|
||||||
|
|
||||||
|
# 🎨 Art
|
||||||
|
|
||||||
|
## Backgrounds
|
||||||
|
- Squip (Paid Commissions)
|
||||||
|
- Contributions by Someonealive-QN
|
||||||
|
|
||||||
|
## UI
|
||||||
|
- GAMEFREAK
|
||||||
|
- LJ Birdman
|
||||||
|
|
||||||
|
## Pagefault Games Intro
|
||||||
|
- Spectremint
|
||||||
|
|
||||||
|
## Game Logo
|
||||||
|
- Gonstar (Paid Commission)
|
||||||
|
|
||||||
|
## Trainer Sprites
|
||||||
|
- GAMEFREAK (Pokémon Black/White 2, Pokémon Diamond/Pearl)
|
||||||
|
- kyledove
|
||||||
|
- Brumirage
|
||||||
|
- pkmn_realidea (Paid Commissions)
|
||||||
|
- IceJkai
|
||||||
|
- Leparagon
|
||||||
|
- wormhood
|
||||||
|
|
||||||
|
## Mystery Event Sprites
|
||||||
|
- chrysomelinae
|
||||||
|
- koda_want_to_sleep
|
||||||
|
- “🐺Kieran/YJ 🐍” rival_kieran aka thedreadedden
|
||||||
|
- ImperialSympathizer
|
||||||
|
- wormhood
|
||||||
|
- gerolau
|
||||||
|
- otterwatch
|
||||||
|
|
||||||
|
## Trainer Portraits
|
||||||
|
- pkmn_realidea (Paid Commissions)
|
||||||
|
|
||||||
|
## Pokémon Sprites and Animation
|
||||||
|
In addition to the lists below, please check [the PokéRogue wiki](https://wiki.pokerogue.net/credits:credits) for a more detailed list of Pokémon Sprite credits.
|
||||||
|
|
||||||
|
- GAMEFREAK (Pokémon Black/White 2)
|
||||||
|
- Smogon Sprite Project (Various Artists)
|
||||||
|
- Skyflyer
|
||||||
|
- Nolo33
|
||||||
|
- Ebaru
|
||||||
|
- EricLostie
|
||||||
|
- kiriaura
|
||||||
|
- Caruban
|
||||||
|
- Sopita_Yorita
|
||||||
|
- Azrita
|
||||||
|
- AshnixsLaw
|
||||||
|
- Hellfire0raptor
|
||||||
|
- RetroNC
|
||||||
|
- Franark122k
|
||||||
|
- OldSoulja
|
||||||
|
- PKMarioG
|
||||||
|
- ItsYugen
|
||||||
|
- lucasomi
|
||||||
|
- Pkm Sinfonia
|
||||||
|
- Poki Papillon
|
||||||
|
- Fleimer_
|
||||||
|
- bizcoeindoloro
|
||||||
|
- mangalos810
|
||||||
|
- selstar
|
||||||
|
|
||||||
|
### Static Sprites and Base Shiny Replacements Credits
|
||||||
|
- AMVictory
|
||||||
|
- Antiant
|
||||||
|
- Arhops
|
||||||
|
- arinoelle
|
||||||
|
- Arkeis
|
||||||
|
- aXl
|
||||||
|
- BananaToast
|
||||||
|
- Basic Vanillite
|
||||||
|
- BlackWhiteRobin
|
||||||
|
- Blaquaza
|
||||||
|
- Branflakes325
|
||||||
|
- Brylark
|
||||||
|
- Buna
|
||||||
|
- Bynine
|
||||||
|
- Corson
|
||||||
|
- Cynda
|
||||||
|
- “Diashi” diazhi
|
||||||
|
- Dleep
|
||||||
|
- doomchaos
|
||||||
|
- Espeon Scientist
|
||||||
|
- Farriella
|
||||||
|
- fishbowlsoul90
|
||||||
|
- “Follower” rulerofthesea11
|
||||||
|
- Galifia
|
||||||
|
- GeoisEvil
|
||||||
|
- G.E.Z.
|
||||||
|
- Glustora
|
||||||
|
- Harrie
|
||||||
|
- HealnDeal
|
||||||
|
- Hematite
|
||||||
|
- HM100
|
||||||
|
- Ice-cold Claws
|
||||||
|
- Involuntary Twitch
|
||||||
|
- “Jay” itsamejay
|
||||||
|
- KattenK
|
||||||
|
- KingOfThe-X-Roads
|
||||||
|
- KyleDove
|
||||||
|
- Kyleo
|
||||||
|
- Kyuzeth
|
||||||
|
- Larryturbo
|
||||||
|
- Layell
|
||||||
|
- Legitimate Username
|
||||||
|
- leParagon
|
||||||
|
- “LJ” lj_birdman
|
||||||
|
- Luigi Player
|
||||||
|
- Madmadness65
|
||||||
|
- Mega-Pokebattlerz
|
||||||
|
- Mintly
|
||||||
|
- mjco
|
||||||
|
- “Momo” sphinx_sage
|
||||||
|
- MrDollSteak
|
||||||
|
- MyMarshlands
|
||||||
|
- N-Kin
|
||||||
|
- Noscium
|
||||||
|
- “Nova” fabunova
|
||||||
|
- “Omniv” omniv
|
||||||
|
- paintseagull
|
||||||
|
- princessofmusic
|
||||||
|
- PumpkinPastel
|
||||||
|
- Quanyails
|
||||||
|
- RadicalCharizard
|
||||||
|
- RedRooster
|
||||||
|
- “♂ROMEO⚧” gerolau
|
||||||
|
- ruleroftheseas11
|
||||||
|
- SelenaArmorclaw
|
||||||
|
- “serif” serifaizawa
|
||||||
|
- Siiilver
|
||||||
|
- Sleet
|
||||||
|
- Snivy101
|
||||||
|
- Speed-X
|
||||||
|
- Sphex
|
||||||
|
- Spook
|
||||||
|
- Squip
|
||||||
|
- TeraVolt
|
||||||
|
- TheAetherPlayer
|
||||||
|
- TheCynicalPoet
|
||||||
|
- Tooni
|
||||||
|
- TrainerSplash
|
||||||
|
- Travis
|
||||||
|
- Turtleye
|
||||||
|
- Tyrell D. Barnes
|
||||||
|
- “Vari” \_vari\_
|
||||||
|
- Wobblebuns
|
||||||
|
- WolfPP
|
||||||
|
- WPS
|
||||||
|
- Wyverii
|
||||||
|
- “zan” smtif
|
||||||
|
- Zerudez
|
||||||
|
- Z-nogyroP
|
||||||
|
|
||||||
|
### Animated Sprites Credits
|
||||||
|
- Antiant
|
||||||
|
- arinoelle
|
||||||
|
- Blaquaza
|
||||||
|
- Claire Starsword
|
||||||
|
- Coyotango
|
||||||
|
- DanEx
|
||||||
|
- “Diashi” diazhi
|
||||||
|
- GalacticArtistMuffin
|
||||||
|
- G.E.Z.
|
||||||
|
- hexagonereal
|
||||||
|
- HM100
|
||||||
|
- Katten
|
||||||
|
- LeParagon
|
||||||
|
- localghost
|
||||||
|
- MallowOut
|
||||||
|
- mattiwarden
|
||||||
|
- “Momo” sphinx_sage
|
||||||
|
- N-Kin
|
||||||
|
- NoelleMBrooks
|
||||||
|
- Nyx
|
||||||
|
- “Omniv” omniv
|
||||||
|
- princessofmusic
|
||||||
|
- PumpkinPastel
|
||||||
|
- RadicalCharizard
|
||||||
|
- seleccion
|
||||||
|
- SelenaArmorclaw
|
||||||
|
- TheAetherPlayer
|
||||||
|
- Tinkatooni
|
||||||
|
- Typhlito
|
||||||
|
- uppa
|
||||||
|
- “Vari” \_vari\_
|
||||||
|
|
||||||
|
### Rare/Epic Shiny Variants Credits
|
||||||
|
- “Andr06” andr06
|
||||||
|
- “Appo” appo
|
||||||
|
- “Ashhawk” k_redacted
|
||||||
|
- “Auralite” _auralite
|
||||||
|
- “Awesome_Soul” awesome_soul
|
||||||
|
- “Bagon” bagonganda
|
||||||
|
- “Bibble” nuts_.
|
||||||
|
- “BloomOfWoods” bloomofwoods
|
||||||
|
- “Buge” buge
|
||||||
|
- “bun” bunove
|
||||||
|
- “bukie” bukie
|
||||||
|
- cameranian
|
||||||
|
- “Caramel” saltedcarriemel
|
||||||
|
- “Chocolate Niblets” choconibs
|
||||||
|
- “CKC” ckc_
|
||||||
|
- “ClawsHDi” clawshdi
|
||||||
|
- “Clown Princess” clown_princess
|
||||||
|
- “Cmac2173” cmac2173
|
||||||
|
- “Corsola” corsola_bandit
|
||||||
|
- “Criminon” criminon
|
||||||
|
- “Cryptican Gogoat Enthusiast” crypticanexe
|
||||||
|
- “Diashi” diazhi
|
||||||
|
- “deviant.daffodil, bug enthusiast” deviant.daffodil
|
||||||
|
- “DigitalVaporeon” digitalvaporeon
|
||||||
|
- dingosig
|
||||||
|
- “Eku” ekusas00
|
||||||
|
- “Elefante”
|
||||||
|
- “Esca” colossalsquid
|
||||||
|
- “Folf” folf.
|
||||||
|
- “Follower” ruleroftheseas11
|
||||||
|
- “Fontbane” fontbane
|
||||||
|
- “Gallow” gallowhound
|
||||||
|
- “Giojoe” giojoe10
|
||||||
|
- “Gonfold” gonfold
|
||||||
|
- greenninja757
|
||||||
|
- “Grassy_Storm” grassy_storm
|
||||||
|
- “GreenMegaMan” greenmegaman
|
||||||
|
- “GROWL” myflixer.to
|
||||||
|
- “guy claiming to work on a guide” 7thatlas
|
||||||
|
- “h. 🍄” letterh.
|
||||||
|
- “hamez” .hamez
|
||||||
|
- “Hanniel” hanniel.15
|
||||||
|
- “ImaginaryNeon” imaginaryneon
|
||||||
|
- “Jay” itsamejay
|
||||||
|
- “Jelke” jelke
|
||||||
|
- kalikimothy
|
||||||
|
- “🐺Kieran/YJ 🐍” rival_kieran aka thedreadedden
|
||||||
|
- “Koda” Koda_want_to_sleep
|
||||||
|
- “Lana” smogonian
|
||||||
|
- “LJ” lj_birdman
|
||||||
|
- “Long Girl” docamakesart
|
||||||
|
- “Lucky” luckyluckylucky
|
||||||
|
- “MissingNo.” clickonflareblitz
|
||||||
|
- “Momo” sphinx_sage
|
||||||
|
- monkehestman
|
||||||
|
- “Nexxus” nexxus_
|
||||||
|
- “Nik :3” realniktrustme
|
||||||
|
- “Nikolatsu”
|
||||||
|
- “nora” ora.n
|
||||||
|
- “NOVA” fabunova
|
||||||
|
- officerporkchops
|
||||||
|
- “Omniv” omniv
|
||||||
|
- “Otterwatch” otterwatch_
|
||||||
|
- “Pandoraz” pandoraz
|
||||||
|
- “Papa Pepsm An” papapepsman
|
||||||
|
- “Penguin” peng06
|
||||||
|
- “Prodigy” lorekeeperprodigy
|
||||||
|
- “Purpenigma” purpenigma
|
||||||
|
- “Rage” ragerevival
|
||||||
|
- “♂ROMEO⚧” gerolau
|
||||||
|
- “Sagrell D'Arcadia” coffeerequired
|
||||||
|
- “serif” serifaizawa
|
||||||
|
- “SillyTopplingGoose” sillytopplinggoose
|
||||||
|
- “Splash Damage” splashceles
|
||||||
|
- “Sweg1b01” sweg1b01
|
||||||
|
- “SyntheGrim” synthegrim
|
||||||
|
- “TaMenace” tamariontherestless
|
||||||
|
- “TheTRUEgge” thetruegge
|
||||||
|
- “Thorn” crownofthorns
|
||||||
|
- “Togepi” togepimax
|
||||||
|
- “Toopy” .toopy
|
||||||
|
- “Tristan” tristan.w
|
||||||
|
- “Umbreon” umbreon\_.\_
|
||||||
|
- “Vari” \_vari\_
|
||||||
|
- “Waasephi”
|
||||||
|
- wormhood
|
||||||
|
- “Yep, it's Caio” yepitscaio
|
||||||
|
- “Ymri” ymri
|
||||||
|
- “zaccie” zaccie
|
||||||
|
- “zan” smtif
|
||||||
|
|
||||||
|
## Move Animations
|
||||||
|
- Pokémon Reborn
|
||||||
|
|
||||||
|
|
||||||
|
# ⚖️ Balance
|
||||||
|
|
||||||
|
## Balance Team
|
||||||
|
- damocleas
|
||||||
|
- Blitzy aka Kazapple
|
||||||
|
- Cynthia_calliope
|
||||||
|
- Esca
|
||||||
|
- Fontbane
|
||||||
|
- Plasto
|
||||||
|
- Sethcurry
|
||||||
|
- Starkrieg
|
||||||
|
|
||||||
|
## Past Members
|
||||||
|
- Swizzo
|
||||||
|
- Zaccie
|
||||||
|
|
||||||
|
## Past Contributors
|
||||||
|
- chrysomelinae (Mystery Events)
|
||||||
|
- AsdarDevelops (Mystery Events)
|
||||||
|
|
||||||
|
|
||||||
|
# 💻 Development
|
||||||
|
|
||||||
|
## Server Developers
|
||||||
|
- pancakes aka patapancakes
|
||||||
|
|
||||||
|
## Current and former Development Team members
|
||||||
|
- bennybroseph
|
||||||
|
- Brain Frog
|
||||||
|
- CodeTappert
|
||||||
|
- Dakurei
|
||||||
|
- flx-sta
|
||||||
|
- frutescens
|
||||||
|
- Greenlamp
|
||||||
|
- ImperialSympathizer
|
||||||
|
- innerthunder
|
||||||
|
- KimJeongSun
|
||||||
|
- Madmadness65
|
||||||
|
- Moka
|
||||||
|
- Navori
|
||||||
|
- NightKev
|
||||||
|
- Opaquer
|
||||||
|
- OrangeRed
|
||||||
|
- Sam aka Flashfyre (initial developer, started PokéRogue)
|
||||||
|
- sirzento
|
||||||
|
- SN34KZ
|
||||||
|
- Swain aka torranx
|
||||||
|
- Temp aka Tempo-anon
|
||||||
|
- Walker
|
||||||
|
- Xavion
|
||||||
|
|
||||||
|
## Bug/Issue Managers
|
||||||
|
- Daleks
|
||||||
|
- Lily
|
||||||
|
- PigeonBar
|
||||||
|
- Snailman
|
||||||
|
|
||||||
|
## Other Code Contributors
|
||||||
|
- Admiral-Billy
|
||||||
|
- allen925
|
||||||
|
- arColm
|
||||||
|
- Arxalc
|
||||||
|
- AsdarDevelops
|
||||||
|
- Corrade
|
||||||
|
- DustinLin
|
||||||
|
- ElizaAlex
|
||||||
|
- EmberCM
|
||||||
|
- EmoUsedHM01
|
||||||
|
- EvasiveAce
|
||||||
|
- Fontbane
|
||||||
|
- francktrouillez
|
||||||
|
- FredeX
|
||||||
|
- geeilhan
|
||||||
|
- happinyz
|
||||||
|
- hayuna
|
||||||
|
- InfernoVulpix
|
||||||
|
- j-diefenbach
|
||||||
|
- jaimefd
|
||||||
|
- JakubHanko
|
||||||
|
- JonStudders
|
||||||
|
- karl-police
|
||||||
|
- lucfd
|
||||||
|
- Lugiadrien
|
||||||
|
- madibye
|
||||||
|
- mattrossdev
|
||||||
|
- mcmontag
|
||||||
|
- meepen
|
||||||
|
- Mewtwo2387
|
||||||
|
- muscode
|
||||||
|
- Neverblade
|
||||||
|
- NxKarim
|
||||||
|
- okimin
|
||||||
|
- PigeonBar
|
||||||
|
- PrabbyDD
|
||||||
|
- prateau
|
||||||
|
- prime-dialga
|
||||||
|
- PyGaVS
|
||||||
|
- rationality6
|
||||||
|
- RedstonewolfX
|
||||||
|
- ReneGV
|
||||||
|
- rnicar245
|
||||||
|
- schmidtc1
|
||||||
|
- shayebeadling
|
||||||
|
- snoozbuster
|
||||||
|
- sodaMelon
|
||||||
|
- td76099
|
||||||
|
- Vassiat
|
||||||
|
- Xiaphear
|
||||||
|
- zaccie
|
||||||
|
- zacharied
|
||||||
|
- Zé Ricardo
|
||||||
|
|
||||||
|
|
||||||
|
# 🌎 Translation
|
||||||
|
|
||||||
|
## In-Game Translators
|
||||||
|
|
||||||
|
### 🇩🇪 German (de)
|
||||||
|
- CodeTappert
|
||||||
|
|
||||||
|
### 🇪🇸 Spanish (es-ES)
|
||||||
|
- Dan Stevenson
|
||||||
|
- Javi
|
||||||
|
- Lily Alterni
|
||||||
|
- Qyxgames
|
||||||
|
|
||||||
|
### 🇫🇷 French (fr)
|
||||||
|
- Lugiadrien
|
||||||
|
|
||||||
|
### 🇮🇹 Italian (it)
|
||||||
|
- Nicus
|
||||||
|
|
||||||
|
### 🇯🇵 Japanese (ja)
|
||||||
|
- 6mozuke9
|
||||||
|
- Chapybara
|
||||||
|
- PeachFresca
|
||||||
|
|
||||||
|
### 🇰🇷 Korean (ko)
|
||||||
|
- Enoch
|
||||||
|
- KimJeongSun
|
||||||
|
- Returntoice
|
||||||
|
- sodamelon
|
||||||
|
|
||||||
|
### 🇧🇷 Portuguese (pt-BR)
|
||||||
|
- Zé Ricardo
|
||||||
|
|
||||||
|
### 🇨🇳 Chinese (zh-CN)
|
||||||
|
- dddsenic
|
||||||
|
- mercurius
|
||||||
|
- VittorioVeneto
|
||||||
|
- Yonmaru
|
||||||
|
|
||||||
|
### 🇹🇼 Chinese (zh-TW)
|
||||||
|
- mercurius
|
||||||
|
- Seagull
|
||||||
|
|
||||||
|
### Past contributors
|
||||||
|
- Asdar (es-ES)
|
||||||
|
- Rafa (es-ES)
|
||||||
|
- GINK-SS (ko)
|
||||||
|
- prostagma (pt-BR)
|
||||||
|
- Ei (zh-TW)
|
||||||
|
|
||||||
|
## Wiki Translators
|
||||||
|
|
||||||
|
### 🇪🇸 Spanish (es-ES)
|
||||||
|
- victorcooler
|
||||||
|
|
||||||
|
### 🇫🇷 French (fr)
|
||||||
|
- Evan
|
||||||
|
- Mitsue
|
||||||
|
- Papier
|
||||||
|
- Sangara
|
||||||
|
- Voltarix
|
||||||
|
|
||||||
|
### 🇮🇹 Italian (it)
|
||||||
|
- Purce
|
||||||
|
- T-reds
|
||||||
|
|
||||||
|
### 🇰🇷 Korean (ko)
|
||||||
|
- LeKaaN
|
||||||
|
- Returntoice
|
||||||
|
- sodamelon
|
||||||
|
|
||||||
|
### 🇵🇱 Polish (pl)
|
||||||
|
- Talo
|
||||||
|
|
||||||
|
### 🇧🇷 Portuguese (pt-BR)
|
||||||
|
- Beast
|
||||||
|
- Sushi
|
||||||
|
- Zé Ricardo
|
||||||
|
|
||||||
|
### 🇨🇳 Chinese (zh-CN)
|
||||||
|
- jw-0-
|
||||||
|
|
||||||
|
### Past contributors
|
||||||
|
- Dietaube (de)
|
||||||
|
- Gnorpelltroll (de)
|
||||||
|
- xRegix (de)
|
||||||
|
- Broly Ikari (fr)
|
||||||
|
- Leo Edgar_Zimmer (fr)
|
||||||
|
- Telor (fr)
|
||||||
|
- dorri (ko)
|
||||||
|
- Little Moder_eldenring (ko)
|
||||||
|
- Andy (zh-CN)
|
||||||
|
- Black Feather (zh-CN)
|
||||||
|
- itschili (zh-CN)
|
||||||
|
- RimKnight (zh-CN)
|
||||||
|
- Yubari (zh-CN)
|
||||||
|
|
||||||
|
## 🇺🇸 English Proofreaders
|
||||||
|
- Cheyu
|
||||||
|
- Faust
|
||||||
|
- HaywiredUp
|
||||||
|
- Irridescence
|
||||||
|
- Ke'ahi
|
||||||
|
- Louie
|
||||||
|
- Nully
|
||||||
|
- PeD
|
||||||
|
- The Programmer
|
||||||
|
|
||||||
|
### Past contributors
|
||||||
|
- I...
|
||||||
|
|
||||||
|
|
||||||
|
# 📰 Wiki
|
||||||
|
|
||||||
|
## Wiki Head
|
||||||
|
- H.A.R.V.
|
||||||
|
|
||||||
|
## Wiki Lead
|
||||||
|
- Sangara
|
||||||
|
- Zac
|
||||||
|
- Smew
|
||||||
|
- Brain Frog
|
||||||
|
- Hannah
|
||||||
|
|
||||||
|
## Editor
|
||||||
|
- Prodigy
|
||||||
|
- Akuma
|
||||||
|
- Dan Gioia
|
||||||
|
- Shimizoki
|
||||||
|
- Stave
|
||||||
|
- NalysArbur
|
||||||
|
- Ceimir
|
||||||
|
- Solanum Tuberosum
|
||||||
|
- Pom
|
||||||
|
|
||||||
|
## Artist
|
||||||
|
- dub
|
||||||
|
- SmashMania
|
||||||
|
- Wren
|
||||||
|
- Lugiadrien
|
||||||
|
|
||||||
|
## Contributor
|
||||||
|
- Daleks <3
|
||||||
|
- Inferno Vulpix
|
||||||
|
- Embri
|
||||||
|
- Nekod
|
||||||
|
- P0kemonY
|
||||||
|
- Scoom
|
||||||
|
- BlueVaron
|
||||||
|
|
||||||
|
|
||||||
|
# ☎️ Discord
|
||||||
|
|
||||||
|
## Head Moderator
|
||||||
|
- leah
|
||||||
|
|
||||||
|
## Senior Moderators
|
||||||
|
- Solanum Tuberosum
|
||||||
|
- Madmadness65
|
||||||
|
- Necrowmancer
|
||||||
|
- lana
|
||||||
|
|
||||||
|
## Moderators
|
||||||
|
- Sethcurry
|
||||||
|
|
||||||
|
## Junior Moderators
|
||||||
|
- chacolah
|
||||||
|
- ChaosGrimmon
|
||||||
|
- Cynthia
|
||||||
|
- Kat
|
||||||
|
- lyn
|
||||||
|
- Pom
|
||||||
|
|
||||||
|
|
||||||
|
# ✨ Special Thanks
|
||||||
|
|
||||||
|
## Reddit Moderators
|
||||||
|
- TheZigglez
|
||||||
|
- Vicksin
|
||||||
|
- Sapphire
|
||||||
|
- Javi
|
||||||
|
- roi
|
||||||
|
|
||||||
|
## External Tools
|
||||||
|
- Ydarissep (creator of the now defunct "Yda's Dex")
|
||||||
|
- Admiral-Billy (Offline App - Desktop)
|
||||||
|
- Red aka StonedModder (iOS App)
|
100
README.md
@ -17,104 +17,26 @@ If you have the motivation and experience with Typescript/Javascript (or are wil
|
|||||||
2. Run `npm run start:dev` to locally run the project in `localhost:8000`
|
2. Run `npm run start:dev` to locally run the project in `localhost:8000`
|
||||||
|
|
||||||
#### Linting
|
#### Linting
|
||||||
We're using ESLint as our common linter and formatter. It will run automatically during the pre-commit hook but if you would like to manually run it, use the `npm run eslint` script.
|
We're using ESLint as our common linter and formatter. It will run automatically during the pre-commit hook but if you would like to manually run it, use the `npm run eslint` script. To view the complete rules, check out the [eslint.config.js](./eslint.config.js) file.
|
||||||
|
|
||||||
|
### 📚 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.
|
||||||
|
|
||||||
### ❔ FAQ
|
### ❔ FAQ
|
||||||
|
|
||||||
**How do I test a new _______?**
|
**How do I test a new _______?**
|
||||||
- In the `src/overrides.ts` file there are overrides for most values you'll need to change for testing
|
- In the `src/overrides.ts` file there are overrides for most values you'll need to change for testing
|
||||||
|
|
||||||
|
**How do I retrieve the translations?**
|
||||||
|
- The translations were moved to the [dedicated translation repository](https://github.com/pagefaultgames/pokerogue-locales) and are now applied as a submodule in this project.
|
||||||
|
- The command to retrieve the translations is `git submodule update --init --recursive`. If you still struggle to get it working, please reach out to #dev-corner channel in Discord.
|
||||||
|
|
||||||
## 🪧 To Do
|
## 🪧 To Do
|
||||||
Check out [Github Issues](https://github.com/pagefaultgames/pokerogue/issues) to see how can you help us!
|
Check out [Github Issues](https://github.com/pagefaultgames/pokerogue/issues) to see how can you help us!
|
||||||
|
|
||||||
# 📝 Credits
|
# 📝 Credits
|
||||||
> If this project contains assets you have produced and you do not see your name here, **please** reach out.
|
> If this project contains assets you have produced and you do not see your name, **please** reach out, either [here on GitHub](https://github.com/pagefaultgames/pokerogue/issues/new) or via [Discord](https://discord.gg/pokerogue).
|
||||||
|
|
||||||
### 🎵 BGM
|
Thank you to all the wonderful people that have contributed to the PokéRogue project! You can find the credits [here](./CREDITS.md).
|
||||||
- Pokémon Mystery Dungeon: Explorers of Sky
|
|
||||||
- Arata Iiyoshi
|
|
||||||
- Hideki Sakamoto
|
|
||||||
- Keisuke Ito
|
|
||||||
- Ken-ichi Saito
|
|
||||||
- Yoshihiro Maeda
|
|
||||||
- Pokémon Black/White
|
|
||||||
- Go Ichinose
|
|
||||||
- Hitomi Sato
|
|
||||||
- Shota Kageyama
|
|
||||||
- Pokémon Mystery Dungeon: Rescue Team DX
|
|
||||||
- Keisuke Ito
|
|
||||||
- Arata Iiyoshi
|
|
||||||
- Atsuhiro Ishizuna
|
|
||||||
- Pokémon HeartGold/SoulSilver
|
|
||||||
- Pokémon Black/White 2
|
|
||||||
- Pokémon X/Y
|
|
||||||
- Pokémon Omega Ruby/Alpha Sapphire
|
|
||||||
- Pokémon Sun/Moon
|
|
||||||
- Pokémon Ultra Sun/Ultra Moon
|
|
||||||
- Pokémon Sword/Shield
|
|
||||||
- Pokémon Legends: Arceus
|
|
||||||
- Pokémon Scarlet/Violet
|
|
||||||
- Firel (Custom Ice Cave, Laboratory, Metropolis, Plains, Power Plant, Seabed, Space, and Volcano biome music)
|
|
||||||
- Lmz (Custom Ancient Ruins, Jungle, and Lake biome music)
|
|
||||||
- Andr06 (Custom Slum and Sea biome music)
|
|
||||||
|
|
||||||
### 🎵 Sound Effects
|
|
||||||
- Pokémon Emerald
|
|
||||||
- Pokémon Black/White
|
|
||||||
|
|
||||||
### 🎨 Backgrounds
|
|
||||||
- Squip (Paid Commissions)
|
|
||||||
- Contributions by Someonealive-QN
|
|
||||||
|
|
||||||
### 🎨 UI
|
|
||||||
- GAMEFREAK
|
|
||||||
- LJ Birdman
|
|
||||||
|
|
||||||
### 🎨 Pagefault Games Intro
|
|
||||||
- Spectremint
|
|
||||||
|
|
||||||
### 🎨 Game Logo
|
|
||||||
- Gonstar (Paid Commission)
|
|
||||||
|
|
||||||
### 🎨 Trainer Sprites
|
|
||||||
- GAMEFREAK (Pokémon Black/White 2, Pokémon Diamond/Pearl)
|
|
||||||
- kyledove
|
|
||||||
- Brumirage
|
|
||||||
- pkmn_realidea (Paid Commissions)
|
|
||||||
- IceJkai
|
|
||||||
|
|
||||||
### 🎨 Trainer Portraits
|
|
||||||
- pkmn_realidea (Paid Commissions)
|
|
||||||
|
|
||||||
### 🎨 Pokemon Sprites and Animation
|
|
||||||
- GAMEFREAK (Pokémon Black/White 2)
|
|
||||||
- Smogon Sprite Project (Various Artists)
|
|
||||||
- Skyflyer
|
|
||||||
- Nolo33
|
|
||||||
- Ebaru
|
|
||||||
- EricLostie
|
|
||||||
- KingOfThe-X-Roads
|
|
||||||
- kiriaura
|
|
||||||
- Caruban
|
|
||||||
- Sopita_Yorita
|
|
||||||
- Azrita
|
|
||||||
- AshnixsLaw
|
|
||||||
- Hellfire0raptor
|
|
||||||
- RetroNC
|
|
||||||
- Franark122k
|
|
||||||
- OldSoulja
|
|
||||||
- PKMarioG
|
|
||||||
- ItsYugen
|
|
||||||
- lucasomi
|
|
||||||
- Pkm Sinfonia
|
|
||||||
- Poki Papillon
|
|
||||||
- Fleimer_
|
|
||||||
- bizcoeindoloro
|
|
||||||
- mangalos810
|
|
||||||
- Involuntary-Twitch
|
|
||||||
- selstar
|
|
||||||
- koda_want_to_sleep
|
|
||||||
|
|
||||||
### 🎨 Move Animations
|
|
||||||
- Pokémon Reborn
|
|
||||||
|
@ -1,82 +1,120 @@
|
|||||||
import fs from 'fs';
|
|
||||||
import path from 'path';
|
|
||||||
import { fileURLToPath } from 'url';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This script creates a test boilerplate file for a move or ability.
|
* This script creates a test boilerplate file in the appropriate
|
||||||
* @param {string} type - The type of test to create. Either "move", "ability",
|
* directory based on the type selected.
|
||||||
* or "item".
|
* @example npm run create-test
|
||||||
* @param {string} fileName - The name of the file to create.
|
|
||||||
* @example npm run create-test move tackle
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import fs from "fs";
|
||||||
|
import inquirer from "inquirer";
|
||||||
|
import path from "path";
|
||||||
|
import { fileURLToPath } from "url";
|
||||||
|
|
||||||
// Get the directory name of the current module file
|
// Get the directory name of the current module file
|
||||||
const __filename = fileURLToPath(import.meta.url);
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
const __dirname = path.dirname(__filename);
|
const __dirname = path.dirname(__filename);
|
||||||
|
const typeChoices = ["Move", "Ability", "Item", "Mystery Encounter"];
|
||||||
|
|
||||||
// Get the arguments from the command line
|
/**
|
||||||
const args = process.argv.slice(2);
|
* Prompts the user to select a type via list.
|
||||||
const type = args[0]; // "move" or "ability"
|
* @returns {Promise<{selectedOption: string}>} the selected type
|
||||||
let fileName = args[1]; // The file name
|
*/
|
||||||
|
async function promptTestType() {
|
||||||
|
const typeAnswer = await inquirer.prompt([
|
||||||
|
{
|
||||||
|
type: "list",
|
||||||
|
name: "selectedOption",
|
||||||
|
message: "What type of test would you like to create:",
|
||||||
|
choices: [...typeChoices, "EXIT"],
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
if (!type || !fileName) {
|
if (typeAnswer.selectedOption === "EXIT") {
|
||||||
console.error('Please provide a type ("move", "ability", or "item") and a file name.');
|
console.log("Exiting...");
|
||||||
process.exit(1);
|
return process.exit();
|
||||||
|
} else if (!typeChoices.includes(typeAnswer.selectedOption)) {
|
||||||
|
console.error(`Please provide a valid type (${typeChoices.join(", ")})!`);
|
||||||
|
return await promptTestType();
|
||||||
|
}
|
||||||
|
|
||||||
|
return typeAnswer;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert fileName from kebab-case or camelCase to snake_case
|
/**
|
||||||
fileName = fileName
|
* Prompts the user to provide a file name.
|
||||||
.replace(/-+/g, '_') // Convert kebab-case (dashes) to underscores
|
* @param {string} selectedType
|
||||||
.replace(/([a-z])([A-Z])/g, '$1_$2') // Convert camelCase to snake_case
|
* @returns {Promise<{userInput: string}>} the selected file name
|
||||||
.toLowerCase(); // Ensure all lowercase
|
*/
|
||||||
|
async function promptFileName(selectedType) {
|
||||||
|
const fileNameAnswer = await inquirer.prompt([
|
||||||
|
{
|
||||||
|
type: "input",
|
||||||
|
name: "userInput",
|
||||||
|
message: `Please provide the name of the ${selectedType}:`,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
// Format the description for the test case
|
if (!fileNameAnswer.userInput || fileNameAnswer.userInput.trim().length === 0) {
|
||||||
const formattedName = fileName
|
console.error("Please provide a valid file name!");
|
||||||
.replace(/_/g, ' ')
|
return await promptFileName(selectedType);
|
||||||
.replace(/\b\w/g, char => char.toUpperCase());
|
}
|
||||||
|
|
||||||
// Determine the directory based on the type
|
return fileNameAnswer;
|
||||||
let dir;
|
|
||||||
let description;
|
|
||||||
if (type === 'move') {
|
|
||||||
dir = path.join(__dirname, 'src', 'test', 'moves');
|
|
||||||
description = `Moves - ${formattedName}`;
|
|
||||||
} else if (type === 'ability') {
|
|
||||||
dir = path.join(__dirname, 'src', 'test', 'abilities');
|
|
||||||
description = `Abilities - ${formattedName}`;
|
|
||||||
} else if (type === "item") {
|
|
||||||
dir = path.join(__dirname, 'src', 'test', 'items');
|
|
||||||
description = `Items - ${formattedName}`;
|
|
||||||
} else {
|
|
||||||
console.error('Invalid type. Please use "move", "ability", or "item".');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure the directory exists
|
/**
|
||||||
if (!fs.existsSync(dir)) {
|
* Runs the interactive create-test "CLI"
|
||||||
fs.mkdirSync(dir, { recursive: true });
|
* @returns {Promise<void>}
|
||||||
}
|
*/
|
||||||
|
async function runInteractive() {
|
||||||
|
const typeAnswer = await promptTestType();
|
||||||
|
const fileNameAnswer = await promptFileName(typeAnswer.selectedOption);
|
||||||
|
|
||||||
// Create the file with the given name
|
const type = typeAnswer.selectedOption.toLowerCase();
|
||||||
const filePath = path.join(dir, `${fileName}.test.ts`);
|
// Convert fileName from kebab-case or camelCase to snake_case
|
||||||
|
const fileName = fileNameAnswer.userInput
|
||||||
|
.replace(/-+/g, "_") // Convert kebab-case (dashes) to underscores
|
||||||
|
.replace(/([a-z])([A-Z])/g, "$1_$2") // Convert camelCase to snake_case
|
||||||
|
.replace(/\s+/g, '_') // Replace spaces with underscores
|
||||||
|
.toLowerCase(); // Ensure all lowercase
|
||||||
|
// Format the description for the test case
|
||||||
|
|
||||||
if (fs.existsSync(filePath)) {
|
const formattedName = fileName.replace(/_/g, " ").replace(/\b\w/g, (char) => char.toUpperCase());
|
||||||
console.error(`File "${fileName}.test.ts" already exists.`);
|
// Determine the directory based on the type
|
||||||
process.exit(1);
|
let dir;
|
||||||
}
|
let description;
|
||||||
|
switch (type) {
|
||||||
|
case "move":
|
||||||
|
dir = path.join(__dirname, "src", "test", "moves");
|
||||||
|
description = `Moves - ${formattedName}`;
|
||||||
|
break;
|
||||||
|
case "ability":
|
||||||
|
dir = path.join(__dirname, "src", "test", "abilities");
|
||||||
|
description = `Abilities - ${formattedName}`;
|
||||||
|
break;
|
||||||
|
case "item":
|
||||||
|
dir = path.join(__dirname, "src", "test", "items");
|
||||||
|
description = `Items - ${formattedName}`;
|
||||||
|
break;
|
||||||
|
case "mystery encounter":
|
||||||
|
dir = path.join(__dirname, "src", "test", "mystery-encounter", "encounters");
|
||||||
|
description = `Mystery Encounter - ${formattedName}`;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.error(`Invalid type. Please use one of the following: ${typeChoices.join(", ")}.`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
// Define the content template
|
// Define the content template
|
||||||
const content = `import { Abilities } from "#enums/abilities";
|
const content = `import { Abilities } from "#enums/abilities";
|
||||||
import { Moves } from "#enums/moves";
|
import { Moves } from "#enums/moves";
|
||||||
import { Species } from "#enums/species";
|
import { Species } from "#enums/species";
|
||||||
import GameManager from "#test/utils/gameManager";
|
import GameManager from "#test/utils/gameManager";
|
||||||
import Phaser from "phaser";
|
import Phaser from "phaser";
|
||||||
import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest";
|
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||||
|
|
||||||
describe("${description}", () => {
|
describe("${description}", () => {
|
||||||
let phaserGame: Phaser.Game;
|
let phaserGame: Phaser.Game;
|
||||||
let game: GameManager;
|
let game: GameManager;
|
||||||
const TIMEOUT = 20 * 1000;
|
|
||||||
|
|
||||||
beforeAll(() => {
|
beforeAll(() => {
|
||||||
phaserGame = new Phaser.Game({
|
phaserGame = new Phaser.Game({
|
||||||
@ -91,20 +129,43 @@ describe("${description}", () => {
|
|||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
game = new GameManager(phaserGame);
|
game = new GameManager(phaserGame);
|
||||||
game.override
|
game.override
|
||||||
.moveset([Moves.SPLASH])
|
.moveset([ Moves.SPLASH ])
|
||||||
|
.ability(Abilities.BALL_FETCH)
|
||||||
.battleType("single")
|
.battleType("single")
|
||||||
|
.disableCrits()
|
||||||
|
.enemySpecies(Species.MAGIKARP)
|
||||||
.enemyAbility(Abilities.BALL_FETCH)
|
.enemyAbility(Abilities.BALL_FETCH)
|
||||||
.enemyMoveset(Moves.SPLASH);
|
.enemyMoveset(Moves.SPLASH);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("test case", async () => {
|
it("should do X", async () => {
|
||||||
// await game.classicMode.startBattle([Species.MAGIKARP]);
|
await game.classicMode.startBattle([ Species.FEEBAS ]);
|
||||||
// game.move.select(Moves.SPLASH);
|
|
||||||
}, TIMEOUT);
|
game.move.select(Moves.SPLASH);
|
||||||
|
await game.phaseInterceptor.to("BerryPhase");
|
||||||
|
|
||||||
|
expect(true).toBe(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
`;
|
`;
|
||||||
|
|
||||||
// Write the template content to the file
|
// Ensure the directory exists
|
||||||
fs.writeFileSync(filePath, content, 'utf8');
|
if (!fs.existsSync(dir)) {
|
||||||
|
fs.mkdirSync(dir, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
console.log(`File created at: ${filePath}`);
|
// Create the file with the given name
|
||||||
|
const filePath = path.join(dir, `${fileName}.test.ts`);
|
||||||
|
|
||||||
|
if (fs.existsSync(filePath)) {
|
||||||
|
console.error(`File "${fileName}.test.ts" already exists.`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write the template content to the file
|
||||||
|
fs.writeFileSync(filePath, content, "utf8");
|
||||||
|
|
||||||
|
console.log(`File created at: ${filePath}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
runInteractive();
|
||||||
|
@ -80,8 +80,8 @@ As part of the move selection process, the enemy Pokémon must compute a **targe
|
|||||||
A move's UBS and TBS are computed with the respective functions in the `Move` class:
|
A move's UBS and TBS are computed with the respective functions in the `Move` class:
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer;
|
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): number;
|
||||||
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer;
|
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): number;
|
||||||
```
|
```
|
||||||
|
|
||||||
Logically, these functions are very similar – they add up their respective benefit scores from each of the move's attributes (as determined by `attr.getUserBenefitScore`, and `attr.getTargetBenefitScore`, respectively) and return the total benefit score. However, there are two key functional differences in how the UBS and TBS of a move are handled:
|
Logically, these functions are very similar – they add up their respective benefit scores from each of the move's attributes (as determined by `attr.getUserBenefitScore`, and `attr.getTargetBenefitScore`, respectively) and return the total benefit score. However, there are two key functional differences in how the UBS and TBS of a move are handled:
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import tseslint from '@typescript-eslint/eslint-plugin';
|
import tseslint from '@typescript-eslint/eslint-plugin';
|
||||||
import stylisticTs from '@stylistic/eslint-plugin-ts'
|
import stylisticTs from '@stylistic/eslint-plugin-ts';
|
||||||
import parser from '@typescript-eslint/parser';
|
import parser from '@typescript-eslint/parser';
|
||||||
import importX from 'eslint-plugin-import-x';
|
import importX from 'eslint-plugin-import-x';
|
||||||
|
|
||||||
export default [
|
export default [
|
||||||
{
|
{
|
||||||
|
name: "eslint-config",
|
||||||
files: ["src/**/*.{ts,tsx,js,jsx}"],
|
files: ["src/**/*.{ts,tsx,js,jsx}"],
|
||||||
ignores: ["dist/*", "build/*", "coverage/*", "public/*", ".github/*", "node_modules/*", ".vscode/*"],
|
ignores: ["dist/*", "build/*", "coverage/*", "public/*", ".github/*", "node_modules/*", ".vscode/*"],
|
||||||
languageOptions: {
|
languageOptions: {
|
||||||
@ -16,15 +17,15 @@ export default [
|
|||||||
'@typescript-eslint': tseslint
|
'@typescript-eslint': tseslint
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
"eqeqeq": ["error", "always"], // Enforces the use of === and !== instead of == and !=
|
"eqeqeq": ["error", "always"], // Enforces the use of `===` and `!==` instead of `==` and `!=`
|
||||||
"indent": ["error", 2], // Enforces a 2-space indentation
|
"indent": ["error", 2, { "SwitchCase": 1 }], // Enforces a 2-space indentation, enforces indentation of `case ...:` statements
|
||||||
"quotes": ["error", "double"], // Enforces the use of double quotes for strings
|
"quotes": ["error", "double"], // Enforces the use of double quotes for strings
|
||||||
"no-var": "error", // Disallows the use of var, enforcing let or const instead
|
"no-var": "error", // Disallows the use of `var`, enforcing `let` or `const` instead
|
||||||
"prefer-const": "error", // Prefers the use of const for variables that are never reassigned
|
"prefer-const": "error", // Enforces the use of `const` for variables that are never reassigned
|
||||||
"no-undef": "off", // Disables the rule that disallows the use of undeclared variables (TypeScript handles this)
|
"no-undef": "off", // Disables the rule that disallows the use of undeclared variables (TypeScript handles this)
|
||||||
"@typescript-eslint/no-unused-vars": [ "error", {
|
"@typescript-eslint/no-unused-vars": [ "error", {
|
||||||
"args": "none", // Allows unused function parameters. Useful for functions with specific signatures where not all parameters are always used.
|
"args": "none", // Allows unused function parameters. Useful for functions with specific signatures where not all parameters are always used.
|
||||||
"ignoreRestSiblings": true // Allows unused variables that are part of a rest property in object destructuring. Useful for excluding certain properties from an object while using the rest.
|
"ignoreRestSiblings": true // Allows unused variables that are part of a rest property in object destructuring. Useful for excluding certain properties from an object while using the others.
|
||||||
}],
|
}],
|
||||||
"eol-last": ["error", "always"], // Enforces at least one newline at the end of files
|
"eol-last": ["error", "always"], // Enforces at least one newline at the end of files
|
||||||
"@stylistic/ts/semi": ["error", "always"], // Requires semicolons for TypeScript-specific syntax
|
"@stylistic/ts/semi": ["error", "always"], // Requires semicolons for TypeScript-specific syntax
|
||||||
@ -32,15 +33,38 @@ export default [
|
|||||||
"no-extra-semi": ["error"], // Disallows unnecessary semicolons for TypeScript-specific syntax
|
"no-extra-semi": ["error"], // Disallows unnecessary semicolons for TypeScript-specific syntax
|
||||||
"brace-style": "off", // Note: you must disable the base rule as it can report incorrect errors
|
"brace-style": "off", // Note: you must disable the base rule as it can report incorrect errors
|
||||||
"curly": ["error", "all"], // Enforces the use of curly braces for all control statements
|
"curly": ["error", "all"], // Enforces the use of curly braces for all control statements
|
||||||
"@stylistic/ts/brace-style": ["error", "1tbs"],
|
"@stylistic/ts/brace-style": ["error", "1tbs"], // Enforces the following brace style: https://eslint.style/rules/js/brace-style#_1tbs
|
||||||
"no-trailing-spaces": ["error", { // Disallows trailing whitespace at the end of lines
|
"no-trailing-spaces": ["error", { // Disallows trailing whitespace at the end of lines
|
||||||
"skipBlankLines": false, // Enforces the rule even on blank lines
|
"skipBlankLines": false, // Enforces the rule even on blank lines
|
||||||
"ignoreComments": false // Enforces the rule on lines containing comments
|
"ignoreComments": false // Enforces the rule on lines containing comments
|
||||||
}],
|
}],
|
||||||
"space-before-blocks": ["error", "always"], // Enforces a space before blocks
|
"space-before-blocks": ["error", "always"], // Enforces a space before blocks
|
||||||
"keyword-spacing": ["error", { "before": true, "after": true }], // Enforces spacing before and after keywords
|
"keyword-spacing": ["error", { "before": true, "after": true }], // Enforces spacing before and after keywords
|
||||||
"comma-spacing": ["error", { "before": false, "after": true }], // Enforces spacing after comma
|
"comma-spacing": ["error", { "before": false, "after": true }], // Enforces spacing after commas
|
||||||
"import-x/extensions": ["error", "never", { "json": "always" }], // Enforces no extension for imports unless json
|
"import-x/extensions": ["error", "never", { "json": "always" }], // Enforces no extension for imports unless json
|
||||||
|
"array-bracket-spacing": ["error", "always", { "objectsInArrays": false, "arraysInArrays": false }], // Enforces consistent spacing inside array brackets
|
||||||
|
"object-curly-spacing": ["error", "always", { "arraysInObjects": false, "objectsInObjects": false }], // Enforces consistent spacing inside braces of object literals, destructuring assignments, and import/export specifiers
|
||||||
|
"computed-property-spacing": ["error", "never" ], // Enforces consistent spacing inside computed property brackets
|
||||||
|
"space-infix-ops": ["error", { "int32Hint": false }], // Enforces spacing around infix operators
|
||||||
|
"no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }], // Disallows multiple empty lines
|
||||||
|
"@typescript-eslint/consistent-type-imports": "error", // Enforces type-only imports wherever possible
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "eslint-tests",
|
||||||
|
files: ["src/test/**/**.test.ts"],
|
||||||
|
languageOptions: {
|
||||||
|
parser: parser,
|
||||||
|
parserOptions: {
|
||||||
|
"project": ["./tsconfig.json"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: {
|
||||||
|
"@typescript-eslint": tseslint
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
"@typescript-eslint/no-floating-promises": "error", // Require Promise-like statements to be handled appropriately. - https://typescript-eslint.io/rules/no-floating-promises/
|
||||||
|
"@typescript-eslint/no-misused-promises": "error", // Disallow Promises in places not designed to handle them. - https://typescript-eslint.io/rules/no-misused-promises/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
14
global.d.ts
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import type { SetupServerApi } from "msw/node";
|
||||||
|
|
||||||
|
export {};
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
/**
|
||||||
|
* Only used in testing.
|
||||||
|
* Can technically be undefined/null but for ease of use we are going to assume it is always defined.
|
||||||
|
* Used to load i18n files exclusively.
|
||||||
|
*
|
||||||
|
* To set up your own server in a test see `game_data.test.ts`
|
||||||
|
*/
|
||||||
|
var server: SetupServerApi;
|
||||||
|
}
|
12
index.css
@ -164,13 +164,13 @@ input:-internal-autofill-selected {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Show cycle buttons only on STARTER_SELECT and on touch configuration panel */
|
/* Show cycle buttons only on STARTER_SELECT and on touch configuration panel */
|
||||||
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadOpenFilters,
|
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX'], [data-ui-mode='POKEDEX_PAGE']) #apadOpenFilters,
|
||||||
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='RUN_INFO']) #apadCycleForm,
|
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX'], [data-ui-mode='POKEDEX_PAGE'], [data-ui-mode='RUN_INFO']) #apadCycleForm,
|
||||||
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='RUN_INFO']) #apadCycleShiny,
|
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX'], [data-ui-mode='POKEDEX_PAGE'], [data-ui-mode='RUN_INFO']) #apadCycleShiny,
|
||||||
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleNature,
|
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleNature,
|
||||||
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='RUN_INFO']) #apadCycleAbility,
|
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX_PAGE'], [data-ui-mode='RUN_INFO']) #apadCycleAbility,
|
||||||
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleGender,
|
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX_PAGE']) #apadCycleGender,
|
||||||
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleVariant {
|
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='POKEDEX']) #apadCycleTera {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@
|
|||||||
<div id="apadCycleNature" class="apad-button apad-square apad-small" data-key="CYCLE_NATURE">
|
<div id="apadCycleNature" class="apad-button apad-square apad-small" data-key="CYCLE_NATURE">
|
||||||
<span class="apad-label">N</span>
|
<span class="apad-label">N</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="apadCycleVariant" class="apad-button apad-square apad-small" data-key="V">
|
<div id="apadCycleTera" class="apad-button apad-square apad-small" data-key="CYCLE_TERA">
|
||||||
<span class="apad-label">V</span>
|
<span class="apad-label">V</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- buttons to display battle-specific information -->
|
<!-- buttons to display battle-specific information -->
|
||||||
|
@ -14,3 +14,8 @@ pre-push:
|
|||||||
eslint:
|
eslint:
|
||||||
glob: "*.{js,ts,jsx,tsx}"
|
glob: "*.{js,ts,jsx,tsx}"
|
||||||
run: npx eslint --fix {push_files}
|
run: npx eslint --fix {push_files}
|
||||||
|
|
||||||
|
post-merge:
|
||||||
|
commands:
|
||||||
|
update-submodules:
|
||||||
|
run: git submodule update --init --recursive
|
1393
package-lock.json
generated
24
package.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "pokemon-rogue-battle",
|
"name": "pokemon-rogue-battle",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.0.4",
|
"version": "1.7.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "vite",
|
"start": "vite",
|
||||||
@ -19,7 +19,11 @@
|
|||||||
"docs": "typedoc",
|
"docs": "typedoc",
|
||||||
"depcruise": "depcruise src",
|
"depcruise": "depcruise src",
|
||||||
"depcruise:graph": "depcruise src --output-type dot | node dependency-graph.js > dependency-graph.svg",
|
"depcruise:graph": "depcruise src --output-type dot | node dependency-graph.js > dependency-graph.svg",
|
||||||
"create-test": "node ./create-test-boilerplate.js"
|
"create-test": "node ./create-test-boilerplate.js",
|
||||||
|
"postinstall": "npx lefthook install && npx lefthook run post-merge",
|
||||||
|
"update-version:patch": "npm version patch --force --no-git-tag-version",
|
||||||
|
"update-version:minor": "npm version minor --force --no-git-tag-version",
|
||||||
|
"update-locales:remote": "git submodule update --progress --init --recursive --force --remote"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.3.0",
|
"@eslint/js": "^9.3.0",
|
||||||
@ -29,19 +33,21 @@
|
|||||||
"@types/node": "^20.12.13",
|
"@types/node": "^20.12.13",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.0.0-alpha.54",
|
"@typescript-eslint/eslint-plugin": "^8.0.0-alpha.54",
|
||||||
"@typescript-eslint/parser": "^8.0.0-alpha.54",
|
"@typescript-eslint/parser": "^8.0.0-alpha.54",
|
||||||
"@vitest/coverage-istanbul": "^2.0.4",
|
"@vitest/coverage-istanbul": "^2.1.9",
|
||||||
"dependency-cruiser": "^16.3.10",
|
"dependency-cruiser": "^16.3.10",
|
||||||
"eslint": "^9.7.0",
|
"eslint": "^9.7.0",
|
||||||
"eslint-plugin-import-x": "^4.2.1",
|
"eslint-plugin-import-x": "^4.2.1",
|
||||||
|
"inquirer": "^11.0.2",
|
||||||
"jsdom": "^24.0.0",
|
"jsdom": "^24.0.0",
|
||||||
"lefthook": "^1.6.12",
|
"lefthook": "^1.6.12",
|
||||||
|
"msw": "^2.4.9",
|
||||||
"phaser3spectorjs": "^0.0.8",
|
"phaser3spectorjs": "^0.0.8",
|
||||||
"typedoc": "^0.26.4",
|
"typedoc": "^0.26.4",
|
||||||
"typescript": "^5.5.3",
|
"typescript": "^5.5.3",
|
||||||
"typescript-eslint": "^8.0.0-alpha.54",
|
"typescript-eslint": "^8.0.0-alpha.54",
|
||||||
"vite": "^5.3.5",
|
"vite": "^5.4.14",
|
||||||
"vite-tsconfig-paths": "^4.3.2",
|
"vite-tsconfig-paths": "^4.3.2",
|
||||||
"vitest": "^2.0.4",
|
"vitest": "^2.1.9",
|
||||||
"vitest-canvas-mock": "^0.3.3"
|
"vitest-canvas-mock": "^0.3.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -49,18 +55,14 @@
|
|||||||
"crypto-js": "^4.2.0",
|
"crypto-js": "^4.2.0",
|
||||||
"i18next": "^23.11.1",
|
"i18next": "^23.11.1",
|
||||||
"i18next-browser-languagedetector": "^7.2.1",
|
"i18next-browser-languagedetector": "^7.2.1",
|
||||||
|
"i18next-http-backend": "^2.6.1",
|
||||||
"i18next-korean-postposition-processor": "^1.0.0",
|
"i18next-korean-postposition-processor": "^1.0.0",
|
||||||
"json-stable-stringify": "^1.1.0",
|
"json-stable-stringify": "^1.1.0",
|
||||||
|
"jszip": "^3.10.1",
|
||||||
"phaser": "^3.70.0",
|
"phaser": "^3.70.0",
|
||||||
"phaser3-rex-plugins": "^1.1.84"
|
"phaser3-rex-plugins": "^1.1.84"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20.0.0"
|
"node": ">=20.0.0"
|
||||||
},
|
|
||||||
"imports": {
|
|
||||||
"#enums/*": "./enums/*",
|
|
||||||
"#app": "./src/main.js",
|
|
||||||
"#app/*": "./src/*",
|
|
||||||
"#test/*": "./src/test/*"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
public/audio/bgm/battle_champion_kukui.mp3
Normal file
BIN
public/audio/bgm/battle_colress.mp3
Normal file
BIN
public/audio/bgm/battle_mustard.mp3
Normal file
BIN
public/audio/bgm/battle_star_admin.mp3
Normal file
BIN
public/audio/bgm/battle_star_boss.mp3
Normal file
BIN
public/audio/bgm/battle_star_grunt.mp3
Normal file
BIN
public/audio/cry/718-10-complete.m4a
Normal file
BIN
public/audio/se/crit_throw.wav
Normal file
2496
public/battle-anims/common-powder.json
Normal file
774
public/battle-anims/common-terastallize.json
Normal file
@ -0,0 +1,774 @@
|
|||||||
|
{
|
||||||
|
"graphic": "terastallize",
|
||||||
|
"frames": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 150,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 225,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 70,
|
||||||
|
"zoomY": 70,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 255,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 70,
|
||||||
|
"zoomY": 70,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 255,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 90,
|
||||||
|
"zoomY": 90,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 255,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 90,
|
||||||
|
"zoomY": 90,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 255,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 255,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 255,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 255,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 200,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"tone": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 100,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"tone": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 100,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"tone": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 60,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"tone": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 60,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"tone": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": -20,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 2,
|
||||||
|
"graphicFrame": 1,
|
||||||
|
"opacity": 60,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"tone": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"tone": [
|
||||||
|
255,
|
||||||
|
255,
|
||||||
|
255,
|
||||||
|
255
|
||||||
|
],
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"tone": [
|
||||||
|
255,
|
||||||
|
255,
|
||||||
|
255,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 0,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"tone": [
|
||||||
|
255,
|
||||||
|
255,
|
||||||
|
255,
|
||||||
|
255
|
||||||
|
],
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 128,
|
||||||
|
"y": -64,
|
||||||
|
"zoomX": 100,
|
||||||
|
"zoomY": 100,
|
||||||
|
"visible": true,
|
||||||
|
"target": 1,
|
||||||
|
"graphicFrame": 0,
|
||||||
|
"opacity": 255,
|
||||||
|
"locked": true,
|
||||||
|
"priority": 1,
|
||||||
|
"focus": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"frameTimedEvents": {},
|
||||||
|
"position": 4,
|
||||||
|
"hue": 0
|
||||||
|
}
|
@ -201,6 +201,8 @@
|
|||||||
"6211",
|
"6211",
|
||||||
"6215",
|
"6215",
|
||||||
"6215",
|
"6215",
|
||||||
|
"6215f",
|
||||||
|
"6215f",
|
||||||
"65-mega",
|
"65-mega",
|
||||||
"65-mega",
|
"65-mega",
|
||||||
"650",
|
"650",
|
||||||
@ -291,8 +293,8 @@
|
|||||||
"666-tundra",
|
"666-tundra",
|
||||||
"667",
|
"667",
|
||||||
"667",
|
"667",
|
||||||
"668-female",
|
"668f",
|
||||||
"668-female",
|
"668f",
|
||||||
"668",
|
"668",
|
||||||
"668",
|
"668",
|
||||||
"669-blue",
|
"669-blue",
|
||||||
@ -337,8 +339,7 @@
|
|||||||
"6724",
|
"6724",
|
||||||
"673",
|
"673",
|
||||||
"673",
|
"673",
|
||||||
"674",
|
|
||||||
"674",
|
|
||||||
"675",
|
"675",
|
||||||
"675",
|
"675",
|
||||||
"676",
|
"676",
|
||||||
@ -381,16 +382,14 @@
|
|||||||
"692",
|
"692",
|
||||||
"693",
|
"693",
|
||||||
"693",
|
"693",
|
||||||
"694",
|
|
||||||
"694",
|
|
||||||
"695",
|
"695",
|
||||||
"695",
|
"695",
|
||||||
"696",
|
"696",
|
||||||
"696",
|
"696",
|
||||||
"697",
|
"697",
|
||||||
"697",
|
"697",
|
||||||
"698",
|
|
||||||
"698",
|
|
||||||
"699",
|
"699",
|
||||||
"699",
|
"699",
|
||||||
"700",
|
"700",
|
||||||
@ -399,18 +398,13 @@
|
|||||||
"701",
|
"701",
|
||||||
"702",
|
"702",
|
||||||
"702",
|
"702",
|
||||||
"703",
|
|
||||||
"703",
|
|
||||||
"704",
|
"704",
|
||||||
"704",
|
"704",
|
||||||
"705",
|
"705",
|
||||||
"705",
|
"705",
|
||||||
"706",
|
"706",
|
||||||
"706",
|
"706",
|
||||||
"707",
|
|
||||||
"707",
|
|
||||||
"708",
|
|
||||||
"708",
|
|
||||||
"709",
|
"709",
|
||||||
"709",
|
"709",
|
||||||
"710",
|
"710",
|
||||||
@ -421,8 +415,6 @@
|
|||||||
"712",
|
"712",
|
||||||
"713",
|
"713",
|
||||||
"713",
|
"713",
|
||||||
"714",
|
|
||||||
"714",
|
|
||||||
"715",
|
"715",
|
||||||
"715",
|
"715",
|
||||||
"716-active",
|
"716-active",
|
||||||
@ -431,16 +423,10 @@
|
|||||||
"716-neutral",
|
"716-neutral",
|
||||||
"717",
|
"717",
|
||||||
"717",
|
"717",
|
||||||
"718-10",
|
|
||||||
"718-10",
|
|
||||||
"718-complete",
|
"718-complete",
|
||||||
"718-complete",
|
"718-complete",
|
||||||
"718",
|
|
||||||
"718",
|
|
||||||
"719-mega",
|
"719-mega",
|
||||||
"719-mega",
|
"719-mega",
|
||||||
"719",
|
|
||||||
"719",
|
|
||||||
"720-unbound",
|
"720-unbound",
|
||||||
"720-unbound",
|
"720-unbound",
|
||||||
"720",
|
"720",
|
||||||
@ -1333,6 +1319,8 @@
|
|||||||
"6211b",
|
"6211b",
|
||||||
"6215b",
|
"6215b",
|
||||||
"6215b",
|
"6215b",
|
||||||
|
"6215bf",
|
||||||
|
"6215bf",
|
||||||
"65b-mega",
|
"65b-mega",
|
||||||
"65b-mega",
|
"65b-mega",
|
||||||
"650b",
|
"650b",
|
||||||
@ -1423,8 +1411,8 @@
|
|||||||
"666b-tundra",
|
"666b-tundra",
|
||||||
"667b",
|
"667b",
|
||||||
"667b",
|
"667b",
|
||||||
"668b-female",
|
"668bf",
|
||||||
"668b-female",
|
"668bf",
|
||||||
"668b",
|
"668b",
|
||||||
"668b",
|
"668b",
|
||||||
"669b-blue",
|
"669b-blue",
|
||||||
@ -1469,8 +1457,7 @@
|
|||||||
"6724b",
|
"6724b",
|
||||||
"673b",
|
"673b",
|
||||||
"673b",
|
"673b",
|
||||||
"674b",
|
|
||||||
"674b",
|
|
||||||
"675b",
|
"675b",
|
||||||
"675b",
|
"675b",
|
||||||
"676b",
|
"676b",
|
||||||
@ -1513,16 +1500,14 @@
|
|||||||
"692b",
|
"692b",
|
||||||
"693b",
|
"693b",
|
||||||
"693b",
|
"693b",
|
||||||
"694b",
|
|
||||||
"694b",
|
|
||||||
"695b",
|
"695b",
|
||||||
"695b",
|
"695b",
|
||||||
"696b",
|
"696b",
|
||||||
"696b",
|
"696b",
|
||||||
"697b",
|
"697b",
|
||||||
"697b",
|
"697b",
|
||||||
"698b",
|
|
||||||
"698b",
|
|
||||||
"699b",
|
"699b",
|
||||||
"699b",
|
"699b",
|
||||||
"700b",
|
"700b",
|
||||||
@ -1531,18 +1516,13 @@
|
|||||||
"701b",
|
"701b",
|
||||||
"702b",
|
"702b",
|
||||||
"702b",
|
"702b",
|
||||||
"703b",
|
|
||||||
"703b",
|
|
||||||
"704b",
|
"704b",
|
||||||
"704b",
|
"704b",
|
||||||
"705b",
|
"705b",
|
||||||
"705b",
|
"705b",
|
||||||
"706b",
|
"706b",
|
||||||
"706b",
|
"706b",
|
||||||
"707b",
|
|
||||||
"707b",
|
|
||||||
"708b",
|
|
||||||
"708b",
|
|
||||||
"709b",
|
"709b",
|
||||||
"709b",
|
"709b",
|
||||||
"710b",
|
"710b",
|
||||||
@ -1553,8 +1533,6 @@
|
|||||||
"712b",
|
"712b",
|
||||||
"713b",
|
"713b",
|
||||||
"713b",
|
"713b",
|
||||||
"714b",
|
|
||||||
"714b",
|
|
||||||
"715b",
|
"715b",
|
||||||
"715b",
|
"715b",
|
||||||
"716b-active",
|
"716b-active",
|
||||||
@ -1563,16 +1541,10 @@
|
|||||||
"716b-neutral",
|
"716b-neutral",
|
||||||
"717b",
|
"717b",
|
||||||
"717b",
|
"717b",
|
||||||
"718b-10",
|
|
||||||
"718b-10",
|
|
||||||
"718b-complete",
|
"718b-complete",
|
||||||
"718b-complete",
|
"718b-complete",
|
||||||
"718b",
|
|
||||||
"718b",
|
|
||||||
"719b-mega",
|
"719b-mega",
|
||||||
"719b-mega",
|
"719b-mega",
|
||||||
"719b",
|
|
||||||
"719b",
|
|
||||||
"720b-unbound",
|
"720b-unbound",
|
||||||
"720b-unbound",
|
"720b-unbound",
|
||||||
"720b",
|
"720b",
|
||||||
@ -2467,6 +2439,8 @@
|
|||||||
"6211sb",
|
"6211sb",
|
||||||
"6215sb",
|
"6215sb",
|
||||||
"6215sb",
|
"6215sb",
|
||||||
|
"6215sbf",
|
||||||
|
"6215sbf",
|
||||||
"65sb-mega",
|
"65sb-mega",
|
||||||
"65sb-mega",
|
"65sb-mega",
|
||||||
"650sb",
|
"650sb",
|
||||||
@ -2559,6 +2533,8 @@
|
|||||||
"667sb",
|
"667sb",
|
||||||
"668sb",
|
"668sb",
|
||||||
"668sb",
|
"668sb",
|
||||||
|
"668sbf",
|
||||||
|
"668sbf",
|
||||||
"669sb-blue",
|
"669sb-blue",
|
||||||
"669sb-blue",
|
"669sb-blue",
|
||||||
"669sb-orange",
|
"669sb-orange",
|
||||||
@ -2601,8 +2577,7 @@
|
|||||||
"6724sb",
|
"6724sb",
|
||||||
"673sb",
|
"673sb",
|
||||||
"673sb",
|
"673sb",
|
||||||
"674sb",
|
|
||||||
"674sb",
|
|
||||||
"675sb",
|
"675sb",
|
||||||
"675sb",
|
"675sb",
|
||||||
"676sb",
|
"676sb",
|
||||||
@ -2645,16 +2620,14 @@
|
|||||||
"692sb",
|
"692sb",
|
||||||
"693sb",
|
"693sb",
|
||||||
"693sb",
|
"693sb",
|
||||||
"694sb",
|
|
||||||
"694sb",
|
|
||||||
"695sb",
|
"695sb",
|
||||||
"695sb",
|
"695sb",
|
||||||
"696sb",
|
"696sb",
|
||||||
"696sb",
|
"696sb",
|
||||||
"697sb",
|
"697sb",
|
||||||
"697sb",
|
"697sb",
|
||||||
"698sb",
|
|
||||||
"698sb",
|
|
||||||
"699sb",
|
"699sb",
|
||||||
"699sb",
|
"699sb",
|
||||||
"700sb",
|
"700sb",
|
||||||
@ -2663,18 +2636,13 @@
|
|||||||
"701sb",
|
"701sb",
|
||||||
"702sb",
|
"702sb",
|
||||||
"702sb",
|
"702sb",
|
||||||
"703sb",
|
|
||||||
"703sb",
|
|
||||||
"704sb",
|
"704sb",
|
||||||
"704sb",
|
"704sb",
|
||||||
"705sb",
|
"705sb",
|
||||||
"705sb",
|
"705sb",
|
||||||
"706sb",
|
"706sb",
|
||||||
"706sb",
|
"706sb",
|
||||||
"707sb",
|
|
||||||
"707sb",
|
|
||||||
"708sb",
|
|
||||||
"708sb",
|
|
||||||
"709sb",
|
"709sb",
|
||||||
"709sb",
|
"709sb",
|
||||||
"710sb",
|
"710sb",
|
||||||
@ -2685,8 +2653,6 @@
|
|||||||
"712sb",
|
"712sb",
|
||||||
"713sb",
|
"713sb",
|
||||||
"713sb",
|
"713sb",
|
||||||
"714sb",
|
|
||||||
"714sb",
|
|
||||||
"715sb",
|
"715sb",
|
||||||
"715sb",
|
"715sb",
|
||||||
"716sb-active",
|
"716sb-active",
|
||||||
@ -2695,16 +2661,10 @@
|
|||||||
"716sb-neutral",
|
"716sb-neutral",
|
||||||
"717sb",
|
"717sb",
|
||||||
"717sb",
|
"717sb",
|
||||||
"718sb-10",
|
|
||||||
"718sb-10",
|
|
||||||
"718sb-complete",
|
"718sb-complete",
|
||||||
"718sb-complete",
|
"718sb-complete",
|
||||||
"718sb",
|
|
||||||
"718sb",
|
|
||||||
"719sb-mega",
|
"719sb-mega",
|
||||||
"719sb-mega",
|
"719sb-mega",
|
||||||
"719sb",
|
|
||||||
"719sb",
|
|
||||||
"720sb-unbound",
|
"720sb-unbound",
|
||||||
"720sb-unbound",
|
"720sb-unbound",
|
||||||
"720sb",
|
"720sb",
|
||||||
@ -3604,6 +3564,8 @@
|
|||||||
"6211s",
|
"6211s",
|
||||||
"6215s",
|
"6215s",
|
||||||
"6215s",
|
"6215s",
|
||||||
|
"6215sf",
|
||||||
|
"6215sf",
|
||||||
"65s-mega",
|
"65s-mega",
|
||||||
"65s-mega",
|
"65s-mega",
|
||||||
"650s",
|
"650s",
|
||||||
@ -3694,8 +3656,8 @@
|
|||||||
"666s-tundra",
|
"666s-tundra",
|
||||||
"667s",
|
"667s",
|
||||||
"667s",
|
"667s",
|
||||||
"668s-female",
|
"668sf",
|
||||||
"668s-female",
|
"668sf",
|
||||||
"668s",
|
"668s",
|
||||||
"668s",
|
"668s",
|
||||||
"669s-blue",
|
"669s-blue",
|
||||||
@ -3740,8 +3702,7 @@
|
|||||||
"6724s",
|
"6724s",
|
||||||
"673s",
|
"673s",
|
||||||
"673s",
|
"673s",
|
||||||
"674s",
|
|
||||||
"674s",
|
|
||||||
"675s",
|
"675s",
|
||||||
"675s",
|
"675s",
|
||||||
"676s",
|
"676s",
|
||||||
@ -3784,16 +3745,14 @@
|
|||||||
"692s",
|
"692s",
|
||||||
"693s",
|
"693s",
|
||||||
"693s",
|
"693s",
|
||||||
"694s",
|
|
||||||
"694s",
|
|
||||||
"695s",
|
"695s",
|
||||||
"695s",
|
"695s",
|
||||||
"696s",
|
"696s",
|
||||||
"696s",
|
"696s",
|
||||||
"697s",
|
"697s",
|
||||||
"697s",
|
"697s",
|
||||||
"698s",
|
|
||||||
"698s",
|
|
||||||
"699s",
|
"699s",
|
||||||
"699s",
|
"699s",
|
||||||
"700s",
|
"700s",
|
||||||
@ -3802,18 +3761,13 @@
|
|||||||
"701s",
|
"701s",
|
||||||
"702s",
|
"702s",
|
||||||
"702s",
|
"702s",
|
||||||
"703s",
|
|
||||||
"703s",
|
|
||||||
"704s",
|
"704s",
|
||||||
"704s",
|
"704s",
|
||||||
"705s",
|
"705s",
|
||||||
"705s",
|
"705s",
|
||||||
"706s",
|
"706s",
|
||||||
"706s",
|
"706s",
|
||||||
"707s",
|
|
||||||
"707s",
|
|
||||||
"708s",
|
|
||||||
"708s",
|
|
||||||
"709s",
|
"709s",
|
||||||
"709s",
|
"709s",
|
||||||
"710s",
|
"710s",
|
||||||
@ -3824,8 +3778,6 @@
|
|||||||
"712s",
|
"712s",
|
||||||
"713s",
|
"713s",
|
||||||
"713s",
|
"713s",
|
||||||
"714s",
|
|
||||||
"714s",
|
|
||||||
"715s",
|
"715s",
|
||||||
"715s",
|
"715s",
|
||||||
"716s-active",
|
"716s-active",
|
||||||
@ -3834,16 +3786,10 @@
|
|||||||
"716s-neutral",
|
"716s-neutral",
|
||||||
"717s",
|
"717s",
|
||||||
"717s",
|
"717s",
|
||||||
"718s-10",
|
|
||||||
"718s-10",
|
|
||||||
"718s-complete",
|
"718s-complete",
|
||||||
"718s-complete",
|
"718s-complete",
|
||||||
"718s",
|
|
||||||
"718s",
|
|
||||||
"719s-mega",
|
"719s-mega",
|
||||||
"719s-mega",
|
"719s-mega",
|
||||||
"719s",
|
|
||||||
"719s",
|
|
||||||
"720s-unbound",
|
"720s-unbound",
|
||||||
"720s-unbound",
|
"720s-unbound",
|
||||||
"720s",
|
"720s",
|
||||||
@ -4587,6 +4533,7 @@
|
|||||||
"475-mega_3",
|
"475-mega_3",
|
||||||
"475-mega_3",
|
"475-mega_3",
|
||||||
"6215",
|
"6215",
|
||||||
|
"6215f",
|
||||||
"653",
|
"653",
|
||||||
"654",
|
"654",
|
||||||
"6549",
|
"6549",
|
||||||
@ -4633,11 +4580,7 @@
|
|||||||
"690",
|
"690",
|
||||||
"691",
|
"691",
|
||||||
"696",
|
"696",
|
||||||
"696_3",
|
|
||||||
"696_3",
|
|
||||||
"697",
|
"697",
|
||||||
"697_3",
|
|
||||||
"697_3",
|
|
||||||
"700",
|
"700",
|
||||||
"704",
|
"704",
|
||||||
"705_2",
|
"705_2",
|
||||||
@ -4645,7 +4588,6 @@
|
|||||||
"705_3",
|
"705_3",
|
||||||
"705_3",
|
"705_3",
|
||||||
"706",
|
"706",
|
||||||
"708",
|
|
||||||
"709",
|
"709",
|
||||||
"710",
|
"710",
|
||||||
"711",
|
"711",
|
||||||
@ -4830,6 +4772,10 @@
|
|||||||
"150b-mega",
|
"150b-mega",
|
||||||
"181b-mega",
|
"181b-mega",
|
||||||
"212b-mega",
|
"212b-mega",
|
||||||
|
"248b-mega",
|
||||||
|
"248b-mega",
|
||||||
|
"257b-mega",
|
||||||
|
"257b-mega",
|
||||||
"282b-mega",
|
"282b-mega",
|
||||||
"3b-mega_2",
|
"3b-mega_2",
|
||||||
"3b-mega_2",
|
"3b-mega_2",
|
||||||
@ -4860,6 +4806,7 @@
|
|||||||
"475b-mega_3",
|
"475b-mega_3",
|
||||||
"475b-mega_3",
|
"475b-mega_3",
|
||||||
"6215b",
|
"6215b",
|
||||||
|
"6215bf",
|
||||||
"653b",
|
"653b",
|
||||||
"654b",
|
"654b",
|
||||||
"6549b",
|
"6549b",
|
||||||
@ -4961,7 +4908,6 @@
|
|||||||
"704b",
|
"704b",
|
||||||
"705b",
|
"705b",
|
||||||
"706b",
|
"706b",
|
||||||
"708b",
|
|
||||||
"709b",
|
"709b",
|
||||||
"710b",
|
"710b",
|
||||||
"711b",
|
"711b",
|
||||||
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
BIN
public/images/battle_anims/terastallize.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
public/images/events/halloween2024-event-de.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
public/images/events/halloween2024-event-en.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/images/events/halloween2024-event-es-ES.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/images/events/halloween2024-event-fr.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
public/images/events/halloween2024-event-it.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/images/events/halloween2024-event-ja.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
public/images/events/halloween2024-event-ko.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
public/images/events/halloween2024-event-pt-BR.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
public/images/events/halloween2024-event-zh-CN.png
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
public/images/events/valentines2025event-de.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
public/images/events/valentines2025event-en.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
public/images/events/valentines2025event-es-ES.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
public/images/events/valentines2025event-fr.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
public/images/events/valentines2025event-it.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
public/images/events/valentines2025event-ja.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
public/images/events/valentines2025event-ko.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
public/images/events/valentines2025event-pt-BR.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
public/images/events/valentines2025event-zh-CN.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
public/images/events/winter_holidays2024-event-de.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
public/images/events/winter_holidays2024-event-en.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
public/images/events/winter_holidays2024-event-es-ES.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
public/images/events/winter_holidays2024-event-fr.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
public/images/events/winter_holidays2024-event-it.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
public/images/events/winter_holidays2024-event-ja.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
public/images/events/winter_holidays2024-event-ko.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
public/images/events/winter_holidays2024-event-pt-BR.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
public/images/events/winter_holidays2024-event-zh-CN.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
public/images/events/yearofthesnakeevent-de.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
public/images/events/yearofthesnakeevent-en.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/images/events/yearofthesnakeevent-es-ES.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/images/events/yearofthesnakeevent-fr.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/images/events/yearofthesnakeevent-it.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/images/events/yearofthesnakeevent-ja.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/images/events/yearofthesnakeevent-ko.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/images/events/yearofthesnakeevent-pt-BR.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/images/events/yearofthesnakeevent-zh-CN.png
Normal file
After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 390 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 285 B |
Before Width: | Height: | Size: 454 B After Width: | Height: | Size: 322 B |
BIN
public/images/items/pb_silver.png
Normal file
After Width: | Height: | Size: 556 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "berry_bush.png",
|
"image": "berries_abound_bush.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 49,
|
"w": 49,
|
Before Width: | Height: | Size: 719 B After Width: | Height: | Size: 719 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "mad_scientist_m.png",
|
"image": "dark_deal_scientist.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 46,
|
"w": 46,
|
Before Width: | Height: | Size: 920 B After Width: | Height: | Size: 920 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "b2w2_lady.png",
|
"image": "department_store_sale_lady.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 399,
|
"w": 399,
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 378 B After Width: | Height: | Size: 378 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "teacher.png",
|
"image": "field_trip_teacher.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 43,
|
"w": 43,
|
Before Width: | Height: | Size: 727 B After Width: | Height: | Size: 727 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "carnival_game.png",
|
"image": "fun_and_games_game.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 38,
|
"w": 38,
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 517 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "carnival_man.png",
|
"image": "fun_and_games_man.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 50,
|
"w": 50,
|
Before Width: | Height: | Size: 833 B After Width: | Height: | Size: 833 B |