Compare commits

...

41 Commits

Author SHA1 Message Date
NightKev
c20f37bcf9
[P3 Bug] Add dialog lines for Rood (#3970) 2024-09-02 01:39:52 -04:00
AJ Fontaine
39cfe69cd9
[Bug] Fix affix used when enemy trainer switches Pokemon (#3899) 2024-09-02 01:25:45 -04:00
chaosgrimmon
634bfb7900
[Sprite] Pelipper variant cleanup (#3969)
* [Sprite] Sprite fix Pelipper front

* [Sprite] Map epic Pelipper front

* Delete public/images/pokemon/variant/279_1.png

* Delete public/images/pokemon/variant/279_2.png

* Delete public/images/pokemon/variant/279_3.png

* Delete public/images/pokemon/variant/279_1.json

* Delete public/images/pokemon/variant/279_2.json

* Delete public/images/pokemon/variant/279_3.json

* [Sprite] Use epic Pelipper palette

* [Sprite] Index base shiny Pelipper front
2024-09-02 01:16:47 -04:00
Madmadness65
434b823112
[Enhancement/Item] Separate form change items into non-rare and rare (#3957)
* Separate form change items into non-rare and rare

* Remove unnecessary !!
2024-09-02 01:15:52 -04:00
NightKev
744c8f8845
[Test] Update/modernize/fix some tests (#3968) 2024-09-02 01:06:20 -04:00
Mumble
0cbdaab28e
[UI][Misc] Force users to have an active challenge (#3953)
* I hope this is good enough

* renamed variable to better name

* Remove random newline

* When player is ready cool box

* Fixed cancel behavior

* standardized action/cancel behavior

* Added comments

---------

Co-authored-by: frutescens <info@laptop>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2024-09-02 00:32:22 -04:00
NightKev
84ef7f0683
[Balance] Double base shiny odds, adjusted Shiny Charm to match (#3964)
* Double shiny odds

"anyone wanna double the base shiny odds for me" - damo, 2024

* Adjust Shiny Charm to compensate for increased base odds

* Remove magic number

* Update tsdoc and remove unneeded `console.log()`

* Clarify tsdoc
2024-09-02 00:26:47 -04:00
Mumble
1e432fc74b
[Bug] Fixed pre-set volume oversight (#3963)
Co-authored-by: frutescens <info@laptop>
2024-09-02 00:26:35 -04:00
NightKev
f54846f735
[Move] Implement Safeguard (#3447)
* Implemented safeguard and tests

* Update tests

* Add i18n placeholders

* Implement Safeguard for non-volatile statuses

* Implement protection from confusion and Yawn

* Replace `target instanceof EnemyPokemon` with `target.isPlayer()`

* Minor capitalization change

* First batch of i18n

Adds fr, pt_BR, zh_CN, zh_TW

Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>
Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br>
Co-authored-by: mercurius-00 <80205689+mercurius-00@users.noreply.github.com>

* Add more translations

+ de, es, ko

Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
Co-authored-by: Asdar <asdargmng@gmail.com>
Co-authored-by: sodam <66295123+sodaMelon@users.noreply.github.com>

* Fix broken character in es translation

* Update test with new function definition

* Add Italian translation

Co-authored-by: Niccolò <123510358+NicusPulcis@users.noreply.github.com>

* Add move category check for message display

Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>

* Update phase imports in Safeguard test

* Fix test imports

* Update tests

---------

Co-authored-by: Joshua Keegan <keeganjosh@vuw.ac.nz>
Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>
Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br>
Co-authored-by: mercurius-00 <80205689+mercurius-00@users.noreply.github.com>
Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
Co-authored-by: Asdar <asdargmng@gmail.com>
Co-authored-by: sodam <66295123+sodaMelon@users.noreply.github.com>
Co-authored-by: Niccolò <123510358+NicusPulcis@users.noreply.github.com>
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
2024-09-02 00:26:20 -04:00
gitlocalize-app[bot]
2d5bd57c44
[Localization] [FR] pokemon-info.json and dialogue-misc.json completion (#3761)
* Translate pokemon-info.json via GitLocalize

* Update dialogue-misc.json

---------

Co-authored-by: Lugiad <adrien.grivel@hotmail.fr>
2024-09-02 00:25:07 -04:00
NightKev
f3c41edf5e
[Bug] Don't reset turn count or used moves array at the start of a new wave (fakeout and gigaton hammer) (#3606)
* Don't reset turn count or used moves array at the start of a new wave

* Add tests
2024-09-02 00:24:12 -04:00
NightKev
69a9916b4c
[Bug] Moves copied by Dancer should not consume PP (#3623)
* Moves copied by Dancer should not consume PP

* Add test for Dancer (unfinished)

* Delete src/test/abilities/dancer.test.ts

This test is not finished lol

* Add test
2024-09-02 00:21:56 -04:00
PrabbyDD
4553c1c34f
[Bug] Fix Octolock Ignores Clear Body, White Smoke, Big Pecks #3876
Pecks, Clear Body, and White Smoke

Adding tests for octolock
2024-09-02 00:20:16 -04:00
gitlocalize-app[bot]
22d31bc704
[Localisation] [ES] Review and finished pokemon-form and pokemon-form-battle (#3903)
* Translate pokemon-form.json via GitLocalize

* Translate pokemon-form.json via GitLocalize

* Translate pokemon-form-battle.json via GitLocalize

* Translate pokemon-form-battle.json via GitLocalize

* Update src/locales/es/pokemon-form.json

Co-authored-by: Asdar <asdargmng@gmail.com>

---------

Co-authored-by: Rafa <rhijano@hotmail.com>
Co-authored-by: LilyAlternis <tias.a2002@gmail.com>
Co-authored-by: Asdar <asdargmng@gmail.com>
Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
2024-09-02 00:19:02 -04:00
gitlocalize-app[bot]
a894438e24
[Localisation] [JA] Several files translated (#3916)
* Translate ability-trigger.json via GitLocalize

* Translate game-stats-ui-handler.json via GitLocalize

* Translate modifier-select-ui-handler.json via GitLocalize

* Translate pokemon-form-battle.json via GitLocalize

* Translate battle-info.json via GitLocalize

* Translate menu.json via GitLocalize

* Translate battler-tags.json via GitLocalize

* Translate pokemon-info.json via GitLocalize

* Translate achv.json via GitLocalize

* Translate berry.json via GitLocalize

* Translate achv-female.json via GitLocalize

* Translate challenges.json via GitLocalize

* Translate menu-ui-handler.json via GitLocalize

* Translate egg.json via GitLocalize

* Translate pokemon.json via GitLocalize

* Translate pokemon.json via GitLocalize

* Translate starter-select-ui-handler.json via GitLocalize

* Translate command-ui-handler.json via GitLocalize

* Translate settings.json via GitLocalize

* Update achv-female.json

* Update menu-ui-handler.json

* Update settings.json

* Update achv.json

* Update achv.json

* Update achv.json

* Delete src/locales/ja/achv-female.json

* Update achv.json

Compared in-game, with these changes it should all look good.

* Update challenges.json

* Update game-mode.json

* Update menu.json

* Update settings.json

* Translate game-stats-ui-handler.json via GitLocalize

* Update game-stats-ui-handler.json

* Update settings.json

---------

Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Enoch <enoch.jwsong@gmail.com>
Co-authored-by: Chapybara-jp <charlie.beer@hotmail.com>
2024-09-02 00:18:49 -04:00
gitlocalize-app[bot]
dd033f4ec1
[Localization] [pt_BR] Updated many translations (#3917)
* Translate tutorial.json via GitLocalize

* Translate challenges.json via GitLocalize

* Translate menu-ui-handler.json via GitLocalize

---------

Co-authored-by: José Ricardo <josefleury@discente.ufg.br>
2024-09-02 00:17:05 -04:00
gitlocalize-app[bot]
0671a244a8
[Localisation] [ES] Reviewed and finished ability.json and bgm-name.json (#3920)
* Translate ability.json via GitLocalize

* Translate ability.json via GitLocalize

* Translate bgm-name.json via GitLocalize

---------

Co-authored-by: Asdar <asdargmng@gmail.com>
Co-authored-by: LilyAlternis <tias.a2002@gmail.com>
2024-09-02 00:16:54 -04:00
Mumble
c4c9cf939e
[Bug] Moved RNG call if the Pokemon's ability hasn't been determined (#3966)
Co-authored-by: frutescens <info@laptop>
2024-09-02 00:09:46 -04:00
gitlocalize-app[bot]
8edb9ca65b
[Localizaiton(pt_br)] Translate pokemon-summary.json via GitLocalize (#3868)
Co-authored-by: José Ricardo <josefleury@discente.ufg.br>
2024-09-01 23:57:48 -04:00
gitlocalize-app[bot]
08fe9e1e21
[Localization(fr)] Translate trainer-classes.json (#3882)
Co-authored-by: Lugiad <adrien.grivel@hotmail.fr>
2024-09-01 23:57:28 -04:00
gitlocalize-app[bot]
781bfd831f
[Localization] pokemon names, party-ui-handler, pokemon-info and pokemon-info-container localizations for italian (#3836)
* Translate pokemon-info-container.json via GitLocalize

* Translate pokemon-info.json via GitLocalize

* Translate party-ui-handler.json via GitLocalize

* Translate pokemon.json via GitLocalize

---------

Co-authored-by: Niccolò <niccolo.pulcini.07@gmail.com>
2024-09-01 23:55:07 -04:00
innerthunder
e29f1fe5fd
[Bug] Fix some trapping moves' interactions with Ghost-type Pokemon (#3936)
* Fix secondary effects to trapping moves not applying to Ghost types

* Docs for `isTrapped`

* more `isTrapped` cleanup

* Remove .js from imports
2024-09-01 23:39:26 -04:00
NightKev
1fd662111e
[Test] Tests now default to using "Set" battle style (#3728)
* Tests now default to using "Set" battle style

* Fix typo
2024-09-01 23:32:31 -04:00
Adrian T.
56b39032b9
[Dev] add script to create test boilerplate file (#3954)
* add script to create test boilerplate file

* add more docs

* add timeout to template
2024-09-01 23:30:27 -04:00
gitlocalize-app[bot]
80828359e2
[Localization(en)] Fix Roark Dialouge (#3873)
* Translate dialogue-male.json via GitLocalize

* Added female

* !

* Update src/locales/en/dialogue-male.json

* Remove empty files

* Added missing comma

---------

Co-authored-by: Jannik Tappert <tappertjannik@googlemail.com>
Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
2024-09-01 23:28:10 -04:00
NightKev
709066bd1a
[Move] Finish Alluring Voice, Burning Jealousy and Lash Out (#3508)
* Implement Alluring Voice and Burning Jealousy

* Fix Alluring Voice and add tests

* Replace `BattlerTag.STATS_BOOSTED` with `PokemonTurnData` field

* Work around bug with turn data

* Remove unused variable

* Replace nearby instances of `integer` with `number`

* Fix imports

* Implement Lash Out

* Rename `battleStats(In|De)crease` -> `battleStats(In|De)creased`

* Fix copy/paste error

Co-authored-by: schmidtc1 <62030095+schmidtc1@users.noreply.github.com>

* Update tests

---------

Co-authored-by: ElliottSimmonds <simmonds.elliott@yahoo.co.uk>
Co-authored-by: schmidtc1 <62030095+schmidtc1@users.noreply.github.com>
Co-authored-by: Mumble <171087428+frutescens@users.noreply.github.com>
2024-09-01 22:57:07 -04:00
MokaStitcher
dcb03f4ee9
[Test] Add test for final boss fight phase switch (#3847)
* implement test for final boss encounter phase switch

* Update Eternatus tests & helper function

* fix endless_boss test following GameManager update

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2024-09-01 22:47:22 -04:00
gitlocalize-app[bot]
14e0c66ed9
[Localisation] [ES] Finished and reviewed terrain, modifier, trainer-names, splash messages (#3848)
* Translate splash-messages.json via GitLocalize

* Translate splash-messages.json via GitLocalize

* Translate trainer-names.json via GitLocalize

* Translate modifier.json via GitLocalize

* Translate modifier.json via GitLocalize

* Translate modifier.json via GitLocalize

* Translate terrain.json via GitLocalize

* Update src/locales/es/trainer-names.json

Co-authored-by: Asdar <asdargmng@gmail.com>

---------

Co-authored-by: LilyAlternis <tias.a2002@gmail.com>
Co-authored-by: Asdar <asdargmng@gmail.com>
Co-authored-by: Rafa <rhijano@hotmail.com>
Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2024-09-01 22:46:53 -04:00
gitlocalize-app[bot]
49c3158fd1
[Localization(ko)] Change ghost type challenge acv for achv-female (#3866)
Co-authored-by: sodam <sodamlee315@gmail.com>
Co-authored-by: Enoch <enoch.jwsong@gmail.com>
Co-authored-by: KimJeongSun <leo@atlaslabs.ai>
2024-09-01 22:45:42 -04:00
gitlocalize-app[bot]
c070f110e5
[Localization(fr)] Additional nature entries in pokemon-summary (#3869)
Co-authored-by: Lugiad <adrien.grivel@hotmail.fr>
2024-09-01 22:44:58 -04:00
flx-sta
0c28da75b4
[Bug] Fix Opponent pokemon sprite disappears after using Roar and Dragon Tail #481 (#3927) 2024-09-01 22:42:23 -04:00
Adrian T.
64368b62bc
[Ability] Add form change support for Flower Gift (#3941)
* add form change support for flower gift

* fix nits
2024-09-01 22:39:42 -04:00
Adrian T.
3bcee779e2
[Move] Fully implement dragon cheer (#3959) 2024-09-01 22:39:12 -04:00
chaosgrimmon
97e3250f62
[Sprite] Chien-Pao sprite cleanup (#3961)
* Delete public/images/pokemon/exp/shiny/1002b.png

* Delete public/images/pokemon/exp/shiny/1002s.png

* Delete public/images/pokemon/exp/shiny/1002sb.png
2024-09-01 22:31:25 -04:00
innerthunder
7755f798fd
[Ability] Implement Tera Shell (#3856)
* Implement Tera Shell

* Apply suggestions from code review

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: Adrian T. <68144167+torranx@users.noreply.github.com>

* Add comments and fixed damage condition to `applyPreDefend`

* Fix speed tie breaking things in tera shell test

* Change deprecated `startBattle` calls

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: Adrian T. <68144167+torranx@users.noreply.github.com>
2024-09-02 02:21:11 +01:00
cadi
a41133a55a
blocking inputs while showing texts to prevent moveing cursor (#2371)
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2024-09-01 15:26:45 -07:00
AJ Fontaine
335d32e0d7
[UI] [QoL] [Enhancement] Exclude redundant species from certain filters in starter select (#3910)
* Exclude species without HA from HA filters in starter select

* Remove candyless starters from passive/cost reduction filters
2024-09-01 15:24:37 -07:00
Mumble
55e0d65ac8
[Refactor] Improvements on getOrder() (#3547)
* Moved getOrder() into TurnStartPhase

* Cleaned up bypass speed checks

* Revert "Cleaned up bypass speed checks"

This reverts commit 11150254f5.

* Added comments.

* Fixed up some inconsistencies

* changed isSameBracket check

* changed isSameBracket check p2

* changed isSameBracket check p3

* changed isSameBracket check p3

* Fixed up conditionals + stall/M.m

* Seems OK

* Update battle-spec.ts

* Updated tests to use new functions introduced. Less intuitive, but faster.

* Update src/phases.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Moved getOrder() into TurnStartPhase

* Cleaned up bypass speed checks

* Revert "Cleaned up bypass speed checks"

This reverts commit 11150254f5.

* Added comments.

* Fixed up some inconsistencies

* changed isSameBracket check

* changed isSameBracket check p2

* changed isSameBracket check p3

* changed isSameBracket check p3

* Fixed up conditionals + stall/M.m

* Seems OK

* Update battle-spec.ts

* Updated tests to use new functions introduced. Less intuitive, but faster.

* Removed import

* i hate git

* Moved getOrder() into TurnStartPhase

* Seems OK

* missing import

* Added Snooze's review

* Added test fixes and removed unwanted edit.

* fixed dynamax cannon test

* typedocs fixes

* Updating battle-order.test.ts

* merge fixes

* ughhh

* Update src/test/abilities/mycelium_might.test.ts

Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>

* tsdocs :)

* Fixed tests

* Update src/phases/turn-start-phase.ts

Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>

* Update src/phases/turn-start-phase.ts

Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>

* innerthunder's fixes

* commas

* Mocked stats instead of directly changing them

---------

Co-authored-by: Frutescens <info@laptop>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
2024-09-01 15:23:25 -07:00
flx-sta
69a9e6a365
Localization: remove all "<key>_female": null entries in /en (#3918) 2024-09-02 00:21:48 +02:00
Frederico Santos
55acf0eeac
Merge branch 'main' into beta 2024-09-01 23:10:40 +01:00
NightKev
762aa9e49b
Update the GitHub pull request template (#3755) 2024-08-25 17:28:29 +01:00
140 changed files with 4972 additions and 14231 deletions

View File

@ -30,7 +30,7 @@
- [ ] 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 considered writing automated tests for the issue?
- [ ] If I have text, did I add make it translatable and added a key in the English language? - [ ] If I have text, did I make it translatable and add a key in the English locale file(s)?
- [ ] Have I tested the changes (manually)? - [ ] Have I tested the changes (manually)?
- [ ] Are all unit tests still passing? (`npm run test`) - [ ] Are all unit tests still passing? (`npm run test`)
- [ ] Are the changes visual? - [ ] Are the changes visual?

101
create-test-boilerplate.js Normal file
View File

@ -0,0 +1,101 @@
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
/**
* This script creates a test boilerplate file for a move or ability.
* @param {string} type - The type of test to create. Either "move" or "ability".
* @param {string} fileName - The name of the file to create.
* @example npm run create-test move tackle
*/
// Get the directory name of the current module file
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Get the arguments from the command line
const args = process.argv.slice(2);
const type = args[0]; // "move" or "ability"
let fileName = args[1]; // The file name
if (!type || !fileName) {
console.error('Please provide both a type ("move" or "ability") and a file name.');
process.exit(1);
}
// Convert fileName from to snake_case if camelCase is given
fileName = fileName.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();
// Format the description for the test case
const formattedName = fileName
.replace(/_/g, ' ')
.replace(/\b\w/g, char => char.toUpperCase());
// Determine the directory based on the type
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 {
console.error('Invalid type. Please use "move" or "ability".');
process.exit(1);
}
// Ensure the directory exists
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
// 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);
}
// Define the content template
const content = `import { Abilities } from "#enums/abilities";
import GameManager from "#test/utils/gameManager";
import { SPLASH_ONLY } from "#test/utils/testUtils";
import Phaser from "phaser";
import { afterEach, beforeAll, beforeEach, describe, it } from "vitest";
describe("${description}", () => {
let phaserGame: Phaser.Game;
let game: GameManager;
const TIMEOUT = 20 * 1000;
beforeAll(() => {
phaserGame = new Phaser.Game({
type: Phaser.HEADLESS,
});
});
afterEach(() => {
game.phaseInterceptor.restoreOg();
});
beforeEach(() => {
game = new GameManager(phaserGame);
game.override
.battleType("single")
.enemyAbility(Abilities.BALL_FETCH)
.enemyMoveset(SPLASH_ONLY);
});
it("test case", async () => {
// await game.classicMode.startBattle();
// game.move.select();
}, TIMEOUT);
});
`;
// Write the template content to the file
fs.writeFileSync(filePath, content, 'utf8');
console.log(`File created at: ${filePath}`);

View File

@ -18,7 +18,8 @@
"eslint-ci": "eslint .", "eslint-ci": "eslint .",
"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"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.3.0", "@eslint/js": "^9.3.0",

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

Before

Width:  |  Height:  |  Size: 405 B

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,38 +1,49 @@
{ {
"0": { "0": {
"bc4524": "af5457",
"31638c": "324a26", "31638c": "324a26",
"101010": "101010",
"5aa5ce": "40683c", "5aa5ce": "40683c",
"a5e6ff": "b6d9ac", "ce4252": "af2c4f",
"7bceef": "789c6e",
"ced6ef": "c09e99",
"737384": "774644",
"ffffff": "f1dcd8", "ffffff": "f1dcd8",
"8c4231": "420b0c", "8c4231": "420b0c",
"ffde4a": "c66f68",
"c57b31": "551917",
"ffffad": "f4bfb6", "ffffad": "f4bfb6",
"ffde4a": "c66f68",
"7bceef": "789c6e",
"a5e6ff": "b6d9ac",
"737384": "774644",
"f7b531": "af5457", "f7b531": "af5457",
"ce4252": "af2c4f", "c57b31": "551917",
"bc4524": "af5457", "ced6ef": "c09e99"
"00e5e7": "00e5e7"
}, },
"1": { "1": {
"bc4524": "3d325e",
"31638c": "143a72", "31638c": "143a72",
"101010": "101010",
"5aa5ce": "4060bc", "5aa5ce": "4060bc",
"a5e6ff": "b4b3ff", "ce4252": "b75558",
"7bceef": "657ddf",
"ced6ef": "a8b5dd",
"737384": "737384",
"ffffff": "e5ecff", "ffffff": "e5ecff",
"8c4231": "17103f", "8c4231": "17103f",
"ffde4a": "534e72",
"c57b31": "2a1f50",
"ffffad": "87879b", "ffffad": "87879b",
"ffde4a": "534e72",
"7bceef": "657ddf",
"a5e6ff": "b4b3ff",
"f7b531": "3d325e", "f7b531": "3d325e",
"ce4252": "b75558", "c57b31": "2a1f50",
"bc4524": "3d325e", "ced6ef": "a8b5dd"
"00e5e7": "00e5e7" },
"2": {
"ce4252": "215991",
"ffde4a": "f16f40",
"ffffad": "ffb274",
"737384": "884c43",
"c57b31": "761c03",
"7bceef": "be3d2f",
"8c4231": "5a0700",
"5aa5ce": "892722",
"8c4232": "761c03",
"ffffff": "f5e1d1",
"a5e6ff": "dd533a",
"f7b531": "bc4524",
"ced6ef": "d19e92",
"31638c": "610f0e"
} }
} }

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@ -1017,7 +1017,7 @@
"279": [ "279": [
1, 1,
1, 1,
2 1
], ],
"280": [ "280": [
0, 0,

View File

@ -1791,6 +1791,7 @@ export default class BattleScene extends SceneBase {
config = config ?? {}; config = config ?? {};
try { try {
const keyDetails = key.split("/"); const keyDetails = key.split("/");
config["volume"] = config["volume"] ?? 1;
switch (keyDetails[0]) { switch (keyDetails[0]) {
case "level_up_fanfare": case "level_up_fanfare":
case "item_fanfare": case "item_fanfare":
@ -1800,11 +1801,11 @@ export default class BattleScene extends SceneBase {
case "evolution_fanfare": case "evolution_fanfare":
// These sounds are loaded in as BGM, but played as sound effects // These sounds are loaded in as BGM, but played as sound effects
// When these sounds are updated in updateVolume(), they are treated as BGM however because they are placed in the BGM Cache through being called by playSoundWithoutBGM() // When these sounds are updated in updateVolume(), they are treated as BGM however because they are placed in the BGM Cache through being called by playSoundWithoutBGM()
config["volume"] = this.masterVolume * this.bgmVolume; config["volume"] *= (this.masterVolume * this.bgmVolume);
break; break;
case "battle_anims": case "battle_anims":
case "cry": case "cry":
config["volume"] = this.masterVolume * this.fieldVolume; config["volume"] *= (this.masterVolume * this.fieldVolume);
//PRSFX sound files are unusually loud //PRSFX sound files are unusually loud
if (keyDetails[1].startsWith("PRSFX- ")) { if (keyDetails[1].startsWith("PRSFX- ")) {
config["volume"] *= 0.5; config["volume"] *= 0.5;
@ -1812,10 +1813,10 @@ export default class BattleScene extends SceneBase {
break; break;
case "ui": case "ui":
//As of, right now this applies to the "select", "menu_open", "error" sound effects //As of, right now this applies to the "select", "menu_open", "error" sound effects
config["volume"] = this.masterVolume * this.uiVolume; config["volume"] *= (this.masterVolume * this.uiVolume);
break; break;
case "se": case "se":
config["volume"] = this.masterVolume * this.seVolume; config["volume"] *= (this.masterVolume * this.seVolume);
break; break;
} }
this.sound.play(key, config); this.sound.play(key, config);

View File

@ -8,7 +8,7 @@ import { Weather, WeatherType } from "./weather";
import { BattlerTag, GroundedTag, GulpMissileTag, SemiInvulnerableTag } from "./battler-tags"; import { BattlerTag, GroundedTag, GulpMissileTag, SemiInvulnerableTag } from "./battler-tags";
import { StatusEffect, getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect"; import { StatusEffect, getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect";
import { Gender } from "./gender"; import { Gender } from "./gender";
import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, FlinchAttr, OneHitKOAttr, HitHealAttr, allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, applyMoveAttrs, IncrementMovePriorityAttr, VariableMoveTypeAttr, RandomMovesetMoveAttr, RandomMoveAttr, NaturePowerAttr, CopyMoveAttr, MoveAttr, MultiHitAttr, ChargeAttr, SacrificialAttr, SacrificialAttrOnHit, NeutralDamageAgainstFlyingTypeMultiplierAttr } from "./move"; import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, FlinchAttr, OneHitKOAttr, HitHealAttr, allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, applyMoveAttrs, IncrementMovePriorityAttr, VariableMoveTypeAttr, RandomMovesetMoveAttr, RandomMoveAttr, NaturePowerAttr, CopyMoveAttr, MoveAttr, MultiHitAttr, ChargeAttr, SacrificialAttr, SacrificialAttrOnHit, NeutralDamageAgainstFlyingTypeMultiplierAttr, FixedDamageAttr } from "./move";
import { ArenaTagSide, ArenaTrapTag } from "./arena-tag"; import { ArenaTagSide, ArenaTrapTag } from "./arena-tag";
import { Stat, getStatName } from "./pokemon-stat"; import { Stat, getStatName } from "./pokemon-stat";
import { BerryModifier, PokemonHeldItemModifier } from "../modifier/modifier"; import { BerryModifier, PokemonHeldItemModifier } from "../modifier/modifier";
@ -475,6 +475,47 @@ export class NonSuperEffectiveImmunityAbAttr extends TypeImmunityAbAttr {
} }
} }
/**
* Attribute implementing the effects of {@link https://bulbapedia.bulbagarden.net/wiki/Tera_Shell_(Ability) | Tera Shell}
* When the source is at full HP, incoming attacks will have a maximum 0.5x type effectiveness multiplier.
* @extends PreDefendAbAttr
*/
export class FullHpResistTypeAbAttr extends PreDefendAbAttr {
/**
* Reduces a type multiplier to 0.5 if the source is at full HP.
* @param pokemon {@linkcode Pokemon} the Pokemon with this ability
* @param passive n/a
* @param simulated n/a (this doesn't change game state)
* @param attacker n/a
* @param move {@linkcode Move} the move being used on the source
* @param cancelled n/a
* @param args `[0]` a container for the move's current type effectiveness multiplier
* @returns `true` if the move's effectiveness is reduced; `false` otherwise
*/
applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move | null, cancelled: Utils.BooleanHolder | null, args: any[]): boolean | Promise<boolean> {
const typeMultiplier = args[0];
if (!(typeMultiplier && typeMultiplier instanceof Utils.NumberHolder)) {
return false;
}
if (move && move.hasAttr(FixedDamageAttr)) {
return false;
}
if (pokemon.isFullHp() && typeMultiplier.value > 0.5) {
typeMultiplier.value = 0.5;
return true;
}
return false;
}
getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string {
return i18next.t("abilityTriggers:fullHpResistType", {
pokemonNameWithAffix: getPokemonNameWithAffix(pokemon)
});
}
}
export class PostDefendAbAttr extends AbAttr { export class PostDefendAbAttr extends AbAttr {
applyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean | Promise<boolean> { applyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult | null, args: any[]): boolean | Promise<boolean> {
return false; return false;
@ -809,7 +850,7 @@ export class PostDefendTerrainChangeAbAttr extends PostDefendAbAttr {
} }
export class PostDefendContactApplyStatusEffectAbAttr extends PostDefendAbAttr { export class PostDefendContactApplyStatusEffectAbAttr extends PostDefendAbAttr {
private chance: integer; public chance: integer;
private effects: StatusEffect[]; private effects: StatusEffect[];
constructor(chance: integer, ...effects: StatusEffect[]) { constructor(chance: integer, ...effects: StatusEffect[]) {
@ -2387,7 +2428,7 @@ export class PostSummonWeatherSuppressedFormChangeAbAttr extends PostSummonAbAtt
/** /**
* Triggers weather-based form change when summoned into an active weather. * Triggers weather-based form change when summoned into an active weather.
* Used by Forecast. * Used by Forecast and Flower Gift.
* @extends PostSummonAbAttr * @extends PostSummonAbAttr
*/ */
export class PostSummonFormChangeByWeatherAbAttr extends PostSummonAbAttr { export class PostSummonFormChangeByWeatherAbAttr extends PostSummonAbAttr {
@ -2410,7 +2451,10 @@ export class PostSummonFormChangeByWeatherAbAttr extends PostSummonAbAttr {
* @returns whether the form change was triggered * @returns whether the form change was triggered
*/ */
applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean {
if (pokemon.species.speciesId === Species.CASTFORM && this.ability === Abilities.FORECAST) { const isCastformWithForecast = (pokemon.species.speciesId === Species.CASTFORM && this.ability === Abilities.FORECAST);
const isCherrimWithFlowerGift = (pokemon.species.speciesId === Species.CHERRIM && this.ability === Abilities.FLOWER_GIFT);
if (isCastformWithForecast || isCherrimWithFlowerGift) {
if (simulated) { if (simulated) {
return simulated; return simulated;
} }
@ -3083,37 +3127,41 @@ export class PostWeatherChangeAbAttr extends AbAttr {
/** /**
* Triggers weather-based form change when weather changes. * Triggers weather-based form change when weather changes.
* Used by Forecast. * Used by Forecast and Flower Gift.
* @extends PostWeatherChangeAbAttr * @extends PostWeatherChangeAbAttr
*/ */
export class PostWeatherChangeFormChangeAbAttr extends PostWeatherChangeAbAttr { export class PostWeatherChangeFormChangeAbAttr extends PostWeatherChangeAbAttr {
private ability: Abilities; private ability: Abilities;
private formRevertingWeathers: WeatherType[];
constructor(ability: Abilities) { constructor(ability: Abilities, formRevertingWeathers: WeatherType[]) {
super(false); super(false);
this.ability = ability; this.ability = ability;
this.formRevertingWeathers = formRevertingWeathers;
} }
/** /**
* Calls {@linkcode Arena.triggerWeatherBasedFormChangesToNormal | triggerWeatherBasedFormChangesToNormal} when the * Calls {@linkcode Arena.triggerWeatherBasedFormChangesToNormal | triggerWeatherBasedFormChangesToNormal} when the
* weather changed to form-reverting weather, otherwise calls {@linkcode Arena.triggerWeatherBasedFormChanges | triggerWeatherBasedFormChanges} * weather changed to form-reverting weather, otherwise calls {@linkcode Arena.triggerWeatherBasedFormChanges | triggerWeatherBasedFormChanges}
* @param {Pokemon} pokemon the Pokemon that changed the weather * @param {Pokemon} pokemon the Pokemon with this ability
* @param passive n/a * @param passive n/a
* @param weather n/a * @param weather n/a
* @param args n/a * @param args n/a
* @returns whether the form change was triggered * @returns whether the form change was triggered
*/ */
applyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): boolean { applyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): boolean {
if (pokemon.species.speciesId === Species.CASTFORM && this.ability === Abilities.FORECAST) { const isCastformWithForecast = (pokemon.species.speciesId === Species.CASTFORM && this.ability === Abilities.FORECAST);
const isCherrimWithFlowerGift = (pokemon.species.speciesId === Species.CHERRIM && this.ability === Abilities.FLOWER_GIFT);
if (isCastformWithForecast || isCherrimWithFlowerGift) {
if (simulated) { if (simulated) {
return simulated; return simulated;
} }
const formRevertingWeathers: WeatherType[] = [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ];
const weatherType = pokemon.scene.arena.weather?.weatherType; const weatherType = pokemon.scene.arena.weather?.weatherType;
if (weatherType && formRevertingWeathers.includes(weatherType)) { if (weatherType && this.formRevertingWeathers.includes(weatherType)) {
pokemon.scene.arena.triggerWeatherBasedFormChangesToNormal(); pokemon.scene.arena.triggerWeatherBasedFormChangesToNormal();
} else { } else {
pokemon.scene.arena.triggerWeatherBasedFormChanges(); pokemon.scene.arena.triggerWeatherBasedFormChanges();
@ -3647,10 +3695,10 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr {
// If the move is an AttackMove or a StatusMove the Dancer must replicate the move on the source of the Dance // If the move is an AttackMove or a StatusMove the Dancer must replicate the move on the source of the Dance
if (move.getMove() instanceof AttackMove || move.getMove() instanceof StatusMove) { if (move.getMove() instanceof AttackMove || move.getMove() instanceof StatusMove) {
const target = this.getTarget(dancer, source, targets); const target = this.getTarget(dancer, source, targets);
dancer.scene.unshiftPhase(new MovePhase(dancer.scene, dancer, target, move, true)); dancer.scene.unshiftPhase(new MovePhase(dancer.scene, dancer, target, move, true, true));
} else if (move.getMove() instanceof SelfStatusMove) { } else if (move.getMove() instanceof SelfStatusMove) {
// If the move is a SelfStatusMove (ie. Swords Dance) the Dancer should replicate it on itself // If the move is a SelfStatusMove (ie. Swords Dance) the Dancer should replicate it on itself
dancer.scene.unshiftPhase(new MovePhase(dancer.scene, dancer, [dancer.getBattlerIndex()], move, true)); dancer.scene.unshiftPhase(new MovePhase(dancer.scene, dancer, [dancer.getBattlerIndex()], move, true, true));
} }
} }
return true; return true;
@ -4703,7 +4751,8 @@ function setAbilityRevealed(pokemon: Pokemon): void {
*/ */
function getPokemonWithWeatherBasedForms(scene: BattleScene) { function getPokemonWithWeatherBasedForms(scene: BattleScene) {
return scene.getField(true).filter(p => return scene.getField(true).filter(p =>
p.hasAbility(Abilities.FORECAST) && p.species.speciesId === Species.CASTFORM (p.hasAbility(Abilities.FORECAST) && p.species.speciesId === Species.CASTFORM)
|| (p.hasAbility(Abilities.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM)
); );
} }
@ -4902,7 +4951,7 @@ export function initAbilities() {
.attr(UncopiableAbilityAbAttr) .attr(UncopiableAbilityAbAttr)
.attr(NoFusionAbilityAbAttr) .attr(NoFusionAbilityAbAttr)
.attr(PostSummonFormChangeByWeatherAbAttr, Abilities.FORECAST) .attr(PostSummonFormChangeByWeatherAbAttr, Abilities.FORECAST)
.attr(PostWeatherChangeFormChangeAbAttr, Abilities.FORECAST), .attr(PostWeatherChangeFormChangeAbAttr, Abilities.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]),
new Ability(Abilities.STICKY_HOLD, 3) new Ability(Abilities.STICKY_HOLD, 3)
.attr(BlockItemTheftAbAttr) .attr(BlockItemTheftAbAttr)
.bypassFaint() .bypassFaint()
@ -5025,7 +5074,7 @@ export function initAbilities() {
.attr(AlwaysHitAbAttr) .attr(AlwaysHitAbAttr)
.attr(DoubleBattleChanceAbAttr), .attr(DoubleBattleChanceAbAttr),
new Ability(Abilities.STALL, 4) new Ability(Abilities.STALL, 4)
.attr(ChangeMovePriorityAbAttr, (pokemon, move: Move) => true, -0.5), .attr(ChangeMovePriorityAbAttr, (pokemon, move: Move) => true, -0.2),
new Ability(Abilities.TECHNICIAN, 4) new Ability(Abilities.TECHNICIAN, 4)
.attr(MovePowerBoostAbAttr, (user, target, move) => { .attr(MovePowerBoostAbAttr, (user, target, move) => {
const power = new Utils.NumberHolder(move.power); const power = new Utils.NumberHolder(move.power);
@ -5095,8 +5144,10 @@ export function initAbilities() {
.conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.SPDEF, 1.5) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.SPDEF, 1.5)
.attr(UncopiableAbilityAbAttr) .attr(UncopiableAbilityAbAttr)
.attr(NoFusionAbilityAbAttr) .attr(NoFusionAbilityAbAttr)
.ignorable() .attr(PostSummonFormChangeByWeatherAbAttr, Abilities.FLOWER_GIFT)
.partial(), .attr(PostWeatherChangeFormChangeAbAttr, Abilities.FLOWER_GIFT, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG, WeatherType.HAIL, WeatherType.HEAVY_RAIN, WeatherType.SNOW, WeatherType.RAIN ])
.partial() // Should also boosts stats of ally
.ignorable(),
new Ability(Abilities.BAD_DREAMS, 4) new Ability(Abilities.BAD_DREAMS, 4)
.attr(PostTurnHurtIfSleepingAbAttr), .attr(PostTurnHurtIfSleepingAbAttr),
new Ability(Abilities.PICKPOCKET, 5) new Ability(Abilities.PICKPOCKET, 5)
@ -5713,7 +5764,7 @@ export function initAbilities() {
.partial() // Healing not blocked by Heal Block .partial() // Healing not blocked by Heal Block
.ignorable(), .ignorable(),
new Ability(Abilities.MYCELIUM_MIGHT, 9) new Ability(Abilities.MYCELIUM_MIGHT, 9)
.attr(ChangeMovePriorityAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS, -0.5) .attr(ChangeMovePriorityAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS, -0.2)
.attr(PreventBypassSpeedChanceAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS) .attr(PreventBypassSpeedChanceAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS)
.attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS), .attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS),
new Ability(Abilities.MINDS_EYE, 9) new Ability(Abilities.MINDS_EYE, 9)
@ -5761,10 +5812,10 @@ export function initAbilities() {
.attr(NoTransformAbilityAbAttr) .attr(NoTransformAbilityAbAttr)
.attr(NoFusionAbilityAbAttr), .attr(NoFusionAbilityAbAttr),
new Ability(Abilities.TERA_SHELL, 9) new Ability(Abilities.TERA_SHELL, 9)
.attr(FullHpResistTypeAbAttr)
.attr(UncopiableAbilityAbAttr) .attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr) .attr(UnswappableAbilityAbAttr)
.ignorable() .ignorable(),
.unimplemented(),
new Ability(Abilities.TERAFORM_ZERO, 9) new Ability(Abilities.TERAFORM_ZERO, 9)
.attr(UncopiableAbilityAbAttr) .attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr) .attr(UnswappableAbilityAbAttr)

View File

@ -905,6 +905,21 @@ class HappyHourTag extends ArenaTag {
} }
} }
class SafeguardTag extends ArenaTag {
constructor(turnCount: integer, sourceId: integer, side: ArenaTagSide) {
super(ArenaTagType.SAFEGUARD, turnCount, Moves.SAFEGUARD, sourceId, side);
}
onAdd(arena: Arena): void {
arena.scene.queueMessage(i18next.t(`arenaTag:safeguardOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`));
}
onRemove(arena: Arena): void {
arena.scene.queueMessage(i18next.t(`arenaTag:safeguardOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`));
}
}
export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves | undefined, sourceId: integer, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH): ArenaTag | null { export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves | undefined, sourceId: integer, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH): ArenaTag | null {
switch (tagType) { switch (tagType) {
case ArenaTagType.MIST: case ArenaTagType.MIST:
@ -950,6 +965,8 @@ export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMov
return new TailwindTag(turnCount, sourceId, side); return new TailwindTag(turnCount, sourceId, side);
case ArenaTagType.HAPPY_HOUR: case ArenaTagType.HAPPY_HOUR:
return new HappyHourTag(turnCount, sourceId, side); return new HappyHourTag(turnCount, sourceId, side);
case ArenaTagType.SAFEGUARD:
return new SafeguardTag(turnCount, sourceId, side);
default: default:
return null; return null;
} }

View File

@ -788,10 +788,10 @@ export abstract class BattleAnim {
targetSprite.pipelineData["tone"] = [ 0.0, 0.0, 0.0, 0.0 ]; targetSprite.pipelineData["tone"] = [ 0.0, 0.0, 0.0, 0.0 ];
targetSprite.setAngle(0); targetSprite.setAngle(0);
if (!this.isHideUser() && userSprite) { if (!this.isHideUser() && userSprite) {
userSprite.setVisible(true); this.user?.getSprite().setVisible(true); // using this.user to fix context loss due to isOppAnim swap (#481)
} }
if (!this.isHideTarget() && (targetSprite !== userSprite || !this.isHideUser())) { if (!this.isHideTarget() && (targetSprite !== userSprite || !this.isHideUser())) {
targetSprite.setVisible(true); this.target?.getSprite().setVisible(true); // using this.target to fix context loss due to isOppAnim swap (#481)
} }
for (const ms of Object.values(spriteCache).flat()) { for (const ms of Object.values(spriteCache).flat()) {
if (ms) { if (ms) {

View File

@ -212,7 +212,7 @@ export class TrappedTag extends BattlerTag {
canAdd(pokemon: Pokemon): boolean { canAdd(pokemon: Pokemon): boolean {
const isGhost = pokemon.isOfType(Type.GHOST); const isGhost = pokemon.isOfType(Type.GHOST);
const isTrapped = pokemon.getTag(BattlerTagType.TRAPPED); const isTrapped = pokemon.getTag(TrappedTag);
return !isTrapped && !isGhost; return !isTrapped && !isGhost;
} }
@ -245,6 +245,23 @@ export class TrappedTag extends BattlerTag {
} }
} }
/**
* BattlerTag implementing No Retreat's trapping effect.
* This is treated separately from other trapping effects to prevent
* Ghost-type Pokemon from being able to reuse the move.
* @extends TrappedTag
*/
class NoRetreatTag extends TrappedTag {
constructor(sourceId: number) {
super(BattlerTagType.NO_RETREAT, BattlerTagLapseType.CUSTOM, 0, Moves.NO_RETREAT, sourceId);
}
/** overrides {@linkcode TrappedTag.apply}, removing the Ghost-type condition */
canAdd(pokemon: Pokemon): boolean {
return !pokemon.getTag(TrappedTag);
}
}
/** /**
* BattlerTag that represents the {@link https://bulbapedia.bulbagarden.net/wiki/Flinch Flinch} status condition * BattlerTag that represents the {@link https://bulbapedia.bulbagarden.net/wiki/Flinch Flinch} status condition
*/ */
@ -750,7 +767,7 @@ export class OctolockTag extends TrappedTag {
const shouldLapse = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); const shouldLapse = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType);
if (shouldLapse) { if (shouldLapse) {
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [BattleStat.DEF, BattleStat.SPDEF], -1)); pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), false, [BattleStat.DEF, BattleStat.SPDEF], -1));
return true; return true;
} }
@ -864,7 +881,7 @@ export abstract class DamagingTrapTag extends TrappedTag {
} }
canAdd(pokemon: Pokemon): boolean { canAdd(pokemon: Pokemon): boolean {
return !pokemon.isOfType(Type.GHOST) && !pokemon.findTag(t => t instanceof DamagingTrapTag); return !pokemon.getTag(TrappedTag);
} }
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
@ -1507,6 +1524,25 @@ export class CritBoostTag extends BattlerTag {
} }
} }
/**
* Tag for the effects of Dragon Cheer, which boosts the critical hit ratio of the user's allies.
* @extends {CritBoostTag}
*/
export class DragonCheerTag extends CritBoostTag {
/** The types of the user's ally when the tag is added */
public typesOnAdd: Type[];
constructor() {
super(BattlerTagType.CRIT_BOOST, Moves.DRAGON_CHEER);
}
onAdd(pokemon: Pokemon): void {
super.onAdd(pokemon);
this.typesOnAdd = pokemon.getTypes(true);
}
}
export class SaltCuredTag extends BattlerTag { export class SaltCuredTag extends BattlerTag {
private sourceIndex: number; private sourceIndex: number;
@ -1864,6 +1900,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: number, source
return new DrowsyTag(); return new DrowsyTag();
case BattlerTagType.TRAPPED: case BattlerTagType.TRAPPED:
return new TrappedTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); return new TrappedTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);
case BattlerTagType.NO_RETREAT:
return new NoRetreatTag(sourceId);
case BattlerTagType.BIND: case BattlerTagType.BIND:
return new BindTag(turnCount, sourceId); return new BindTag(turnCount, sourceId);
case BattlerTagType.WRAP: case BattlerTagType.WRAP:
@ -1923,6 +1961,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: number, source
return new TypeBoostTag(tagType, sourceMove, Type.FIRE, 1.5, false); return new TypeBoostTag(tagType, sourceMove, Type.FIRE, 1.5, false);
case BattlerTagType.CRIT_BOOST: case BattlerTagType.CRIT_BOOST:
return new CritBoostTag(tagType, sourceMove); return new CritBoostTag(tagType, sourceMove);
case BattlerTagType.DRAGON_CHEER:
return new DragonCheerTag();
case BattlerTagType.ALWAYS_CRIT: case BattlerTagType.ALWAYS_CRIT:
case BattlerTagType.IGNORE_ACCURACY: case BattlerTagType.IGNORE_ACCURACY:
return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, 2, sourceMove); return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, 2, sourceMove);

View File

@ -1,6 +1,6 @@
import { BattleSpec } from "#enums/battle-spec"; import { BattleSpec } from "#enums/battle-spec";
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
import {trainerConfigs} from "./trainer-config"; import { trainerConfigs } from "./trainer-config";
export interface TrainerTypeMessages { export interface TrainerTypeMessages {
encounter?: string | string[], encounter?: string | string[],
@ -707,6 +707,20 @@ export const trainerTypeDialogue: TrainerTypeDialogue = {
] ]
} }
], ],
[TrainerType.ROOD]: [
{
encounter: [
"dialogue:rood.encounter.1",
"dialogue:rood.encounter.2",
"dialogue:rood.encounter.3",
],
victory: [
"dialogue:rood.victory.1",
"dialogue:rood.victory.2",
"dialogue:rood.victory.3",
]
}
],
[TrainerType.FLARE_GRUNT]: [ [TrainerType.FLARE_GRUNT]: [
{ {
encounter: [ encounter: [

View File

@ -1953,6 +1953,13 @@ export class StatusEffectAttr extends MoveEffectAttr {
return false; return false;
} }
} }
if (user !== target && target.scene.arena.getTagOnSide(ArenaTagType.SAFEGUARD, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY)) {
if (move.category === MoveCategory.STATUS) {
user.scene.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(target)}));
}
return false;
}
if ((!pokemon.status || (pokemon.status.effect === this.effect && moveChance < 0)) if ((!pokemon.status || (pokemon.status.effect === this.effect && moveChance < 0))
&& pokemon.trySetStatus(this.effect, true, user, this.cureTurn)) { && pokemon.trySetStatus(this.effect, true, user, this.cureTurn)) {
applyPostAttackAbAttrs(ConfusionOnStatusEffectAbAttr, user, target, move, null, false, this.effect); applyPostAttackAbAttrs(ConfusionOnStatusEffectAbAttr, user, target, move, null, false, this.effect);
@ -4659,6 +4666,17 @@ export class ConfuseAttr extends AddBattlerTagAttr {
constructor(selfTarget?: boolean) { constructor(selfTarget?: boolean) {
super(BattlerTagType.CONFUSED, selfTarget, false, 2, 5); super(BattlerTagType.CONFUSED, selfTarget, false, 2, 5);
} }
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if (!this.selfTarget && target.scene.arena.getTagOnSide(ArenaTagType.SAFEGUARD, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY)) {
if (move.category === MoveCategory.STATUS) {
user.scene.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(target)}));
}
return false;
}
return super.apply(user, target, move, args);
}
} }
export class RechargeAttr extends AddBattlerTagAttr { export class RechargeAttr extends AddBattlerTagAttr {
@ -5888,9 +5906,9 @@ export class SwitchAbilitiesAttr extends MoveEffectAttr {
target.summonData.ability = tempAbilityId; target.summonData.ability = tempAbilityId;
user.scene.queueMessage(i18next.t("moveTriggers:swappedAbilitiesWithTarget", {pokemonName: getPokemonNameWithAffix(user)})); user.scene.queueMessage(i18next.t("moveTriggers:swappedAbilitiesWithTarget", {pokemonName: getPokemonNameWithAffix(user)}));
// Swaps Forecast from Castform // Swaps Forecast/Flower Gift from Castform/Cherrim
user.scene.arena.triggerWeatherBasedFormChangesToNormal(); user.scene.arena.triggerWeatherBasedFormChangesToNormal();
// Swaps Forecast to Castform (edge case) // Swaps Forecast/Flower Gift to Castform/Cherrim (edge case)
user.scene.arena.triggerWeatherBasedFormChanges(); user.scene.arena.triggerWeatherBasedFormChanges();
return true; return true;
@ -6037,6 +6055,57 @@ export class DestinyBondAttr extends MoveEffectAttr {
} }
} }
/**
* Attribute to apply a battler tag to the target if they have had their stats boosted this turn.
* @extends AddBattlerTagAttr
*/
export class AddBattlerTagIfBoostedAttr extends AddBattlerTagAttr {
constructor(tag: BattlerTagType) {
super(tag, false, false, 2, 5);
}
/**
* @param user {@linkcode Pokemon} using this move
* @param target {@linkcode Pokemon} target of this move
* @param move {@linkcode Move} being used
* @param {any[]} args N/A
* @returns true
*/
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if (target.turnData.battleStatsIncreased) {
super.apply(user, target, move, args);
}
return true;
}
}
/**
* Attribute to apply a status effect to the target if they have had their stats boosted this turn.
* @extends MoveEffectAttr
*/
export class StatusIfBoostedAttr extends MoveEffectAttr {
public effect: StatusEffect;
constructor(effect: StatusEffect) {
super(true, MoveEffectTrigger.HIT);
this.effect = effect;
}
/**
* @param user {@linkcode Pokemon} using this move
* @param target {@linkcode Pokemon} target of this move
* @param move {@linkcode Move} N/A
* @param {any[]} args N/A
* @returns true
*/
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if (target.turnData.battleStatsIncreased) {
target.trySetStatus(this.effect, true, user);
}
return true;
}
}
export class LastResortAttr extends MoveAttr { export class LastResortAttr extends MoveAttr {
getCondition(): MoveConditionFunc { getCondition(): MoveConditionFunc {
return (user: Pokemon, target: Pokemon, move: Move) => { return (user: Pokemon, target: Pokemon, move: Move) => {
@ -6963,7 +7032,7 @@ export function initMoves() {
.attr(FriendshipPowerAttr, true), .attr(FriendshipPowerAttr, true),
new StatusMove(Moves.SAFEGUARD, Type.NORMAL, -1, 25, -1, 0, 2) new StatusMove(Moves.SAFEGUARD, Type.NORMAL, -1, 25, -1, 0, 2)
.target(MoveTarget.USER_SIDE) .target(MoveTarget.USER_SIDE)
.unimplemented(), .attr(AddArenaTagAttr, ArenaTagType.SAFEGUARD, 5, true, true),
new StatusMove(Moves.PAIN_SPLIT, Type.NORMAL, -1, 20, -1, 0, 2) new StatusMove(Moves.PAIN_SPLIT, Type.NORMAL, -1, 20, -1, 0, 2)
.attr(HpSplitAttr) .attr(HpSplitAttr)
.condition(failOnBossCondition), .condition(failOnBossCondition),
@ -7152,7 +7221,7 @@ export function initMoves() {
.attr(RemoveScreensAttr), .attr(RemoveScreensAttr),
new StatusMove(Moves.YAWN, Type.NORMAL, -1, 10, -1, 0, 3) new StatusMove(Moves.YAWN, Type.NORMAL, -1, 10, -1, 0, 3)
.attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true) .attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true)
.condition((user, target, move) => !target.status), .condition((user, target, move) => !target.status && !target.scene.arena.getTagOnSide(ArenaTagType.SAFEGUARD, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY)),
new AttackMove(Moves.KNOCK_OFF, Type.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3) new AttackMove(Moves.KNOCK_OFF, Type.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3)
.attr(MovePowerMultiplierAttr, (user, target, move) => target.getHeldItems().filter(i => i.isTransferrable).length > 0 ? 1.5 : 1) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getHeldItems().filter(i => i.isTransferrable).length > 0 ? 1.5 : 1)
.attr(RemoveHeldItemAttr, false), .attr(RemoveHeldItemAttr, false),
@ -8502,7 +8571,7 @@ export function initMoves() {
.partial(), .partial(),
new SelfStatusMove(Moves.NO_RETREAT, Type.FIGHTING, -1, 5, -1, 0, 8) new SelfStatusMove(Moves.NO_RETREAT, Type.FIGHTING, -1, 5, -1, 0, 8)
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 1, true) .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 1, true)
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, true, false, 1) .attr(AddBattlerTagAttr, BattlerTagType.NO_RETREAT, true, false)
.condition((user, target, move) => user.getTag(TrappedTag)?.sourceMove !== Moves.NO_RETREAT), // fails if the user is currently trapped by No Retreat .condition((user, target, move) => user.getTag(TrappedTag)?.sourceMove !== Moves.NO_RETREAT), // fails if the user is currently trapped by No Retreat
new StatusMove(Moves.TAR_SHOT, Type.ROCK, 100, 15, -1, 0, 8) new StatusMove(Moves.TAR_SHOT, Type.ROCK, 100, 15, -1, 0, 8)
.attr(StatChangeAttr, BattleStat.SPD, -1) .attr(StatChangeAttr, BattleStat.SPD, -1)
@ -8694,10 +8763,10 @@ export function initMoves() {
new AttackMove(Moves.SKITTER_SMACK, Type.BUG, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) new AttackMove(Moves.SKITTER_SMACK, Type.BUG, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8)
.attr(StatChangeAttr, BattleStat.SPATK, -1), .attr(StatChangeAttr, BattleStat.SPATK, -1),
new AttackMove(Moves.BURNING_JEALOUSY, Type.FIRE, MoveCategory.SPECIAL, 70, 100, 5, 100, 0, 8) new AttackMove(Moves.BURNING_JEALOUSY, Type.FIRE, MoveCategory.SPECIAL, 70, 100, 5, 100, 0, 8)
.target(MoveTarget.ALL_NEAR_ENEMIES) .attr(StatusIfBoostedAttr, StatusEffect.BURN)
.partial(), .target(MoveTarget.ALL_NEAR_ENEMIES),
new AttackMove(Moves.LASH_OUT, Type.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) new AttackMove(Moves.LASH_OUT, Type.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8)
.partial(), .attr(MovePowerMultiplierAttr, (user, target, move) => user.turnData.battleStatsDecreased ? 2 : 1),
new AttackMove(Moves.POLTERGEIST, Type.GHOST, MoveCategory.PHYSICAL, 110, 90, 5, -1, 0, 8) new AttackMove(Moves.POLTERGEIST, Type.GHOST, MoveCategory.PHYSICAL, 110, 90, 5, -1, 0, 8)
.attr(AttackedByItemAttr) .attr(AttackedByItemAttr)
.makesContact(false), .makesContact(false),
@ -9143,12 +9212,11 @@ export function initMoves() {
new AttackMove(Moves.HARD_PRESS, Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9) new AttackMove(Moves.HARD_PRESS, Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9)
.attr(OpponentHighHpPowerAttr, 100), .attr(OpponentHighHpPowerAttr, 100),
new StatusMove(Moves.DRAGON_CHEER, Type.DRAGON, -1, 15, -1, 0, 9) new StatusMove(Moves.DRAGON_CHEER, Type.DRAGON, -1, 15, -1, 0, 9)
.attr(AddBattlerTagAttr, BattlerTagType.CRIT_BOOST, false, true) .attr(AddBattlerTagAttr, BattlerTagType.DRAGON_CHEER, false, true)
.target(MoveTarget.NEAR_ALLY) .target(MoveTarget.NEAR_ALLY),
.partial(),
new AttackMove(Moves.ALLURING_VOICE, Type.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 9) new AttackMove(Moves.ALLURING_VOICE, Type.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 9)
.soundBased() .attr(AddBattlerTagIfBoostedAttr, BattlerTagType.CONFUSED)
.partial(), .soundBased(),
new AttackMove(Moves.TEMPER_FLARE, Type.FIRE, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 9) new AttackMove(Moves.TEMPER_FLARE, Type.FIRE, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 9)
.attr(MovePowerMultiplierAttr, (user, target, move) => user.getLastXMoves(2)[1]?.result === MoveResult.MISS || user.getLastXMoves(2)[1]?.result === MoveResult.FAIL ? 2 : 1), .attr(MovePowerMultiplierAttr, (user, target, move) => user.getLastXMoves(2)[1]?.result === MoveResult.MISS || user.getLastXMoves(2)[1]?.result === MoveResult.FAIL ? 2 : 1),
new AttackMove(Moves.SUPERCELL_SLAM, Type.ELECTRIC, MoveCategory.PHYSICAL, 100, 95, 15, -1, 0, 9) new AttackMove(Moves.SUPERCELL_SLAM, Type.ELECTRIC, MoveCategory.PHYSICAL, 100, 95, 15, -1, 0, 9)

View File

@ -66,34 +66,34 @@ export enum FormChangeItem {
BLUE_ORB = 50, BLUE_ORB = 50,
RED_ORB, RED_ORB,
SHARP_METEORITE,
HARD_METEORITE,
SMOOTH_METEORITE,
ADAMANT_CRYSTAL, ADAMANT_CRYSTAL,
LUSTROUS_GLOBE, LUSTROUS_GLOBE,
GRISEOUS_CORE, GRISEOUS_CORE,
REVEAL_GLASS, REVEAL_GLASS,
GRACIDEA,
MAX_MUSHROOMS, MAX_MUSHROOMS,
DARK_STONE, DARK_STONE,
LIGHT_STONE, LIGHT_STONE,
PRISON_BOTTLE, PRISON_BOTTLE,
N_LUNARIZER,
N_SOLARIZER,
RUSTED_SWORD, RUSTED_SWORD,
RUSTED_SHIELD, RUSTED_SHIELD,
ICY_REINS_OF_UNITY, ICY_REINS_OF_UNITY,
SHADOW_REINS_OF_UNITY, SHADOW_REINS_OF_UNITY,
WELLSPRING_MASK, ULTRANECROZIUM_Z,
HEARTHFLAME_MASK,
CORNERSTONE_MASK, SHARP_METEORITE = 100,
HARD_METEORITE,
SMOOTH_METEORITE,
GRACIDEA,
SHOCK_DRIVE, SHOCK_DRIVE,
BURN_DRIVE, BURN_DRIVE,
CHILL_DRIVE, CHILL_DRIVE,
DOUSE_DRIVE, DOUSE_DRIVE,
ULTRANECROZIUM_Z, N_SOLARIZER,
N_LUNARIZER,
FIST_PLATE = 100, WELLSPRING_MASK,
HEARTHFLAME_MASK,
CORNERSTONE_MASK,
FIST_PLATE,
SKY_PLATE, SKY_PLATE,
TOXIC_PLATE, TOXIC_PLATE,
EARTH_PLATE, EARTH_PLATE,
@ -129,7 +129,7 @@ export enum FormChangeItem {
DRAGON_MEMORY, DRAGON_MEMORY,
DARK_MEMORY, DARK_MEMORY,
FAIRY_MEMORY, FAIRY_MEMORY,
BLANK_MEMORY // TODO: Find a potential use for this NORMAL_MEMORY // TODO: Find a potential use for this
} }
export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean; export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean;
@ -359,7 +359,7 @@ export class SpeciesDefaultFormMatchTrigger extends SpeciesFormChangeTrigger {
/** /**
* Class used for triggering form changes based on weather. * Class used for triggering form changes based on weather.
* Used by Castform. * Used by Castform and Cherrim.
* @extends SpeciesFormChangeTrigger * @extends SpeciesFormChangeTrigger
*/ */
export class SpeciesFormChangeWeatherTrigger extends SpeciesFormChangeTrigger { export class SpeciesFormChangeWeatherTrigger extends SpeciesFormChangeTrigger {
@ -392,7 +392,7 @@ export class SpeciesFormChangeWeatherTrigger extends SpeciesFormChangeTrigger {
/** /**
* Class used for reverting to the original form when the weather runs out * Class used for reverting to the original form when the weather runs out
* or when the user loses the ability/is suppressed. * or when the user loses the ability/is suppressed.
* Used by Castform. * Used by Castform and Cherrim.
* @extends SpeciesFormChangeTrigger * @extends SpeciesFormChangeTrigger
*/ */
export class SpeciesFormChangeRevertWeatherFormTrigger extends SpeciesFormChangeTrigger { export class SpeciesFormChangeRevertWeatherFormTrigger extends SpeciesFormChangeTrigger {
@ -930,6 +930,11 @@ export const pokemonFormChanges: PokemonFormChanges = {
new SpeciesFormChange(Species.CASTFORM, "rainy", "", new SpeciesFormChangeActiveTrigger(), true), new SpeciesFormChange(Species.CASTFORM, "rainy", "", new SpeciesFormChangeActiveTrigger(), true),
new SpeciesFormChange(Species.CASTFORM, "snowy", "", new SpeciesFormChangeActiveTrigger(), true), new SpeciesFormChange(Species.CASTFORM, "snowy", "", new SpeciesFormChangeActiveTrigger(), true),
], ],
[Species.CHERRIM]: [
new SpeciesFormChange(Species.CHERRIM, "overcast", "sunshine", new SpeciesFormChangeWeatherTrigger(Abilities.FLOWER_GIFT, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true),
new SpeciesFormChange(Species.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeRevertWeatherFormTrigger(Abilities.FLOWER_GIFT, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG, WeatherType.HAIL, WeatherType.HEAVY_RAIN, WeatherType.SNOW, WeatherType.RAIN ]), true),
new SpeciesFormChange(Species.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeActiveTrigger(), true),
],
}; };
export function initPokemonForms() { export function initPokemonForms() {

View File

@ -22,5 +22,6 @@ export enum ArenaTagType {
CRAFTY_SHIELD = "CRAFTY_SHIELD", CRAFTY_SHIELD = "CRAFTY_SHIELD",
TAILWIND = "TAILWIND", TAILWIND = "TAILWIND",
HAPPY_HOUR = "HAPPY_HOUR", HAPPY_HOUR = "HAPPY_HOUR",
SAFEGUARD = "SAFEGUARD",
NO_CRIT = "NO_CRIT" NO_CRIT = "NO_CRIT"
} }

View File

@ -69,5 +69,7 @@ export enum BattlerTagType {
GULP_MISSILE_ARROKUDA = "GULP_MISSILE_ARROKUDA", GULP_MISSILE_ARROKUDA = "GULP_MISSILE_ARROKUDA",
GULP_MISSILE_PIKACHU = "GULP_MISSILE_PIKACHU", GULP_MISSILE_PIKACHU = "GULP_MISSILE_PIKACHU",
BEAK_BLAST_CHARGING = "BEAK_BLAST_CHARGING", BEAK_BLAST_CHARGING = "BEAK_BLAST_CHARGING",
SHELL_TRAP = "SHELL_TRAP" SHELL_TRAP = "SHELL_TRAP",
DRAGON_CHEER = "DRAGON_CHEER",
NO_RETREAT = "NO_RETREAT",
} }

View File

@ -339,7 +339,10 @@ export class Arena {
*/ */
triggerWeatherBasedFormChanges(): void { triggerWeatherBasedFormChanges(): void {
this.scene.getField(true).forEach( p => { this.scene.getField(true).forEach( p => {
if (p.hasAbility(Abilities.FORECAST) && p.species.speciesId === Species.CASTFORM) { const isCastformWithForecast = (p.hasAbility(Abilities.FORECAST) && p.species.speciesId === Species.CASTFORM);
const isCherrimWithFlowerGift = (p.hasAbility(Abilities.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM);
if (isCastformWithForecast || isCherrimWithFlowerGift) {
new ShowAbilityPhase(this.scene, p.getBattlerIndex()); new ShowAbilityPhase(this.scene, p.getBattlerIndex());
this.scene.triggerPokemonFormChange(p, SpeciesFormChangeWeatherTrigger); this.scene.triggerPokemonFormChange(p, SpeciesFormChangeWeatherTrigger);
} }
@ -351,7 +354,10 @@ export class Arena {
*/ */
triggerWeatherBasedFormChangesToNormal(): void { triggerWeatherBasedFormChangesToNormal(): void {
this.scene.getField(true).forEach( p => { this.scene.getField(true).forEach( p => {
if (p.hasAbility(Abilities.FORECAST, false, true) && p.species.speciesId === Species.CASTFORM) { const isCastformWithForecast = (p.hasAbility(Abilities.FORECAST, false, true) && p.species.speciesId === Species.CASTFORM);
const isCherrimWithFlowerGift = (p.hasAbility(Abilities.FLOWER_GIFT, false, true) && p.species.speciesId === Species.CHERRIM);
if (isCastformWithForecast || isCherrimWithFlowerGift) {
new ShowAbilityPhase(this.scene, p.getBattlerIndex()); new ShowAbilityPhase(this.scene, p.getBattlerIndex());
return this.scene.triggerPokemonFormChange(p, SpeciesFormChangeRevertWeatherFormTrigger); return this.scene.triggerPokemonFormChange(p, SpeciesFormChangeRevertWeatherFormTrigger);
} }

View File

@ -18,11 +18,11 @@ import { Status, StatusEffect, getRandomStatus } from "../data/status-effect";
import { pokemonEvolutions, pokemonPrevolutions, SpeciesFormEvolution, SpeciesEvolutionCondition, FusionSpeciesFormEvolution } from "../data/pokemon-evolutions"; import { pokemonEvolutions, pokemonPrevolutions, SpeciesFormEvolution, SpeciesEvolutionCondition, FusionSpeciesFormEvolution } from "../data/pokemon-evolutions";
import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "../data/tms"; import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "../data/tms";
import { BattleStat } from "../data/battle-stat"; import { BattleStat } from "../data/battle-stat";
import { BattlerTag, BattlerTagLapseType, EncoreTag, GroundedTag, HighestStatBoostTag, TypeImmuneTag, getBattlerTag, SemiInvulnerableTag, TypeBoostTag, ExposedTag } from "../data/battler-tags"; import { BattlerTag, BattlerTagLapseType, EncoreTag, GroundedTag, HighestStatBoostTag, TypeImmuneTag, getBattlerTag, SemiInvulnerableTag, TypeBoostTag, ExposedTag, DragonCheerTag, CritBoostTag, TrappedTag } from "../data/battler-tags";
import { WeatherType } from "../data/weather"; import { WeatherType } from "../data/weather";
import { TempBattleStat } from "../data/temp-battle-stat"; import { TempBattleStat } from "../data/temp-battle-stat";
import { ArenaTagSide, NoCritTag, WeakenMoveScreenTag } from "../data/arena-tag"; import { ArenaTagSide, NoCritTag, WeakenMoveScreenTag } from "../data/arena-tag";
import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr, DamageBoostAbAttr, IgnoreTypeStatusEffectImmunityAbAttr, ConditionalCritAbAttr, applyFieldBattleStatMultiplierAbAttrs, FieldMultiplyBattleStatAbAttr, AddSecondStrikeAbAttr, IgnoreOpponentEvasionAbAttr, UserFieldStatusEffectImmunityAbAttr, UserFieldBattlerTagImmunityAbAttr, BattlerTagImmunityAbAttr, MoveTypeChangeAbAttr } from "../data/ability"; import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr, DamageBoostAbAttr, IgnoreTypeStatusEffectImmunityAbAttr, ConditionalCritAbAttr, applyFieldBattleStatMultiplierAbAttrs, FieldMultiplyBattleStatAbAttr, AddSecondStrikeAbAttr, IgnoreOpponentEvasionAbAttr, UserFieldStatusEffectImmunityAbAttr, UserFieldBattlerTagImmunityAbAttr, BattlerTagImmunityAbAttr, MoveTypeChangeAbAttr, FullHpResistTypeAbAttr, applyCheckTrappedAbAttrs, CheckTrappedAbAttr } from "../data/ability";
import PokemonData from "../system/pokemon-data"; import PokemonData from "../system/pokemon-data";
import { BattlerIndex } from "../battle"; import { BattlerIndex } from "../battle";
import { Mode } from "../ui/ui"; import { Mode } from "../ui/ui";
@ -133,9 +133,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
this.scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); this.scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance);
} }
const hasHiddenAbility = !Utils.randSeedInt(hiddenAbilityChance.value);
const randAbilityIndex = Utils.randSeedInt(2);
this.species = species; this.species = species;
this.pokeball = dataSource?.pokeball || PokeballType.POKEBALL; this.pokeball = dataSource?.pokeball || PokeballType.POKEBALL;
this.level = level; this.level = level;
@ -146,6 +143,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
this.abilityIndex = abilityIndex; // Use the provided ability index if it is defined this.abilityIndex = abilityIndex; // Use the provided ability index if it is defined
} else { } else {
// If abilityIndex is not provided, determine it based on species and hidden ability // If abilityIndex is not provided, determine it based on species and hidden ability
const hasHiddenAbility = !Utils.randSeedInt(hiddenAbilityChance.value);
const randAbilityIndex = Utils.randSeedInt(2);
if (species.abilityHidden && hasHiddenAbility) { if (species.abilityHidden && hasHiddenAbility) {
// If the species has a hidden ability and the hidden ability is present // If the species has a hidden ability and the hidden ability is present
this.abilityIndex = 2; this.abilityIndex = 2;
@ -1210,6 +1209,28 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
return !!this.getTag(GroundedTag) || (!this.isOfType(Type.FLYING, true, true) && !this.hasAbility(Abilities.LEVITATE) && !this.getTag(BattlerTagType.MAGNET_RISEN) && !this.getTag(SemiInvulnerableTag)); return !!this.getTag(GroundedTag) || (!this.isOfType(Type.FLYING, true, true) && !this.hasAbility(Abilities.LEVITATE) && !this.getTag(BattlerTagType.MAGNET_RISEN) && !this.getTag(SemiInvulnerableTag));
} }
/**
* Determines whether this Pokemon is prevented from running or switching due
* to effects from moves and/or abilities.
* @param trappedAbMessages `string[]` If defined, ability trigger messages
* (e.g. from Shadow Tag) are forwarded through this array.
* @param simulated `boolean` if `true`, applies abilities via simulated calls.
* @returns
*/
isTrapped(trappedAbMessages: string[] = [], simulated: boolean = true): boolean {
if (this.isOfType(Type.GHOST)) {
return false;
}
const trappedByAbility = new Utils.BooleanHolder(false);
this.scene.getEnemyField()!.forEach(enemyPokemon =>
applyCheckTrappedAbAttrs(CheckTrappedAbAttr, enemyPokemon, trappedByAbility, this, trappedAbMessages, simulated)
);
return (trappedByAbility.value || !!this.getTag(TrappedTag));
}
/** /**
* Calculates the type of a move when used by this Pokemon after * Calculates the type of a move when used by this Pokemon after
* type-changing move and ability attributes have applied. * type-changing move and ability attributes have applied.
@ -1276,6 +1297,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
} }
} }
// Apply Tera Shell's effect to attacks after all immunities are accounted for
if (!ignoreAbility && move.category !== MoveCategory.STATUS) {
applyPreDefendAbAttrs(FullHpResistTypeAbAttr, this, source, move, cancelledHolder, simulated, typeMultiplier);
}
return (!cancelledHolder.value ? typeMultiplier.value : 0) as TypeDamageMultiplier; return (!cancelledHolder.value ? typeMultiplier.value : 0) as TypeDamageMultiplier;
} }
@ -1501,13 +1527,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
} }
/** /**
* Function that tries to set a Pokemon shiny based on the trainer's trainer ID and secret ID * Function that tries to set a Pokemon shiny based on the trainer's trainer ID and secret ID.
* Endless Pokemon in the end biome are unable to be set to shiny * Endless Pokemon in the end biome are unable to be set to shiny
* *
* The exact mechanic is that it calculates E as the XOR of the player's trainer ID and secret ID * The exact mechanic is that it calculates E as the XOR of the player's trainer ID and secret ID.
* F is calculated as the XOR of the first 16 bits of the Pokemon's ID with the last 16 bits * F is calculated as the XOR of the first 16 bits of the Pokemon's ID with the last 16 bits.
* The XOR of E and F are then compared to the thresholdOverride (default case 32) to see whether or not to generate a shiny * The XOR of E and F are then compared to the {@linkcode shinyThreshold} (or {@linkcode thresholdOverride} if set) to see whether or not to generate a shiny.
* @param thresholdOverride number that is divided by 2^16 (65536) to get the shiny chance * The base shiny odds are {@linkcode baseShinyChance} / 65536
* @param thresholdOverride number that is divided by 2^16 (65536) to get the shiny chance, overrides {@linkcode shinyThreshold} if set (bypassing shiny rate modifiers such as Shiny Charm)
* @returns true if the Pokemon has been set as a shiny, false otherwise * @returns true if the Pokemon has been set as a shiny, false otherwise
*/ */
trySetShiny(thresholdOverride?: integer): boolean { trySetShiny(thresholdOverride?: integer): boolean {
@ -1522,7 +1549,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const E = this.scene.gameData.trainerId ^ this.scene.gameData.secretId; const E = this.scene.gameData.trainerId ^ this.scene.gameData.secretId;
const F = rand1 ^ rand2; const F = rand1 ^ rand2;
const shinyThreshold = new Utils.IntegerHolder(32); /** `64/65536 -> 1/1024` */
const baseShinyChance = 64;
const shinyThreshold = new Utils.IntegerHolder(baseShinyChance);
if (thresholdOverride === undefined) { if (thresholdOverride === undefined) {
if (this.scene.eventManager.isEventActive()) { if (this.scene.eventManager.isEventActive()) {
shinyThreshold.value *= this.scene.eventManager.getShinyMultiplier(); shinyThreshold.value *= this.scene.eventManager.getShinyMultiplier();
@ -1535,9 +1564,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
} }
this.shiny = (E ^ F) < shinyThreshold.value; this.shiny = (E ^ F) < shinyThreshold.value;
if ((E ^ F) < 32) {
console.log("REAL SHINY!!");
}
if (this.shiny) { if (this.shiny) {
this.initShinySparkle(); this.initShinySparkle();
@ -2064,9 +2090,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
critLevel.value += 1; critLevel.value += 1;
} }
} }
if (source.getTag(BattlerTagType.CRIT_BOOST)) {
critLevel.value += 2; const critBoostTag = source.getTag(CritBoostTag);
if (critBoostTag) {
if (critBoostTag instanceof DragonCheerTag) {
critLevel.value += critBoostTag.typesOnAdd.includes(Type.DRAGON) ? 2 : 1;
} else {
critLevel.value += 2;
}
} }
console.log(`crit stage: +${critLevel.value}`); console.log(`crit stage: +${critLevel.value}`);
const critChance = [24, 8, 2, 1][Math.max(0, Math.min(critLevel.value, 3))]; const critChance = [24, 8, 2, 1][Math.max(0, Math.min(critLevel.value, 3))];
isCritical = critChance === 1 || !this.scene.randBattleSeedInt(critChance); isCritical = critChance === 1 || !this.scene.randBattleSeedInt(critChance);
@ -2754,6 +2787,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const types = this.getTypes(true, true); const types = this.getTypes(true, true);
const defendingSide = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY;
if (sourcePokemon && sourcePokemon !== this && this.scene.arena.getTagOnSide(ArenaTagType.SAFEGUARD, defendingSide)) {
return false;
}
switch (effect) { switch (effect) {
case StatusEffect.POISON: case StatusEffect.POISON:
case StatusEffect.TOXIC: case StatusEffect.TOXIC:
@ -4274,7 +4312,7 @@ export interface TurnMove {
targets?: BattlerIndex[]; targets?: BattlerIndex[];
result: MoveResult; result: MoveResult;
virtual?: boolean; virtual?: boolean;
turn?: integer; turn?: number;
} }
export interface QueuedMove { export interface QueuedMove {
@ -4286,17 +4324,17 @@ export interface QueuedMove {
export interface AttackMoveResult { export interface AttackMoveResult {
move: Moves; move: Moves;
result: DamageResult; result: DamageResult;
damage: integer; damage: number;
critical: boolean; critical: boolean;
sourceId: integer; sourceId: number;
sourceBattlerIndex: BattlerIndex; sourceBattlerIndex: BattlerIndex;
} }
export class PokemonSummonData { export class PokemonSummonData {
public battleStats: integer[] = [ 0, 0, 0, 0, 0, 0, 0 ]; public battleStats: number[] = [ 0, 0, 0, 0, 0, 0, 0 ];
public moveQueue: QueuedMove[] = []; public moveQueue: QueuedMove[] = [];
public disabledMove: Moves = Moves.NONE; public disabledMove: Moves = Moves.NONE;
public disabledTurns: integer = 0; public disabledTurns: number = 0;
public tags: BattlerTag[] = []; public tags: BattlerTag[] = [];
public abilitySuppressed: boolean = false; public abilitySuppressed: boolean = false;
public abilitiesApplied: Abilities[] = []; public abilitiesApplied: Abilities[] = [];
@ -4306,14 +4344,14 @@ export class PokemonSummonData {
public ability: Abilities = Abilities.NONE; public ability: Abilities = Abilities.NONE;
public gender: Gender; public gender: Gender;
public fusionGender: Gender; public fusionGender: Gender;
public stats: integer[]; public stats: number[];
public moveset: (PokemonMove | null)[]; public moveset: (PokemonMove | null)[];
// If not initialized this value will not be populated from save data. // If not initialized this value will not be populated from save data.
public types: Type[] = []; public types: Type[] = [];
} }
export class PokemonBattleData { export class PokemonBattleData {
public hitCount: integer = 0; public hitCount: number = 0;
public endured: boolean = false; public endured: boolean = false;
public berriesEaten: BerryType[] = []; public berriesEaten: BerryType[] = [];
public abilitiesApplied: Abilities[] = []; public abilitiesApplied: Abilities[] = [];
@ -4322,21 +4360,23 @@ export class PokemonBattleData {
export class PokemonBattleSummonData { export class PokemonBattleSummonData {
/** The number of turns the pokemon has passed since entering the battle */ /** The number of turns the pokemon has passed since entering the battle */
public turnCount: integer = 1; public turnCount: number = 1;
/** The list of moves the pokemon has used since entering the battle */ /** The list of moves the pokemon has used since entering the battle */
public moveHistory: TurnMove[] = []; public moveHistory: TurnMove[] = [];
} }
export class PokemonTurnData { export class PokemonTurnData {
public flinched: boolean; public flinched: boolean = false;
public acted: boolean; public acted: boolean = false;
public hitCount: integer; public hitCount: number;
public hitsLeft: integer; public hitsLeft: number;
public damageDealt: integer = 0; public damageDealt: number = 0;
public currDamageDealt: integer = 0; public currDamageDealt: number = 0;
public damageTaken: integer = 0; public damageTaken: number = 0;
public attacksReceived: AttackMoveResult[] = []; public attacksReceived: AttackMoveResult[] = [];
public order: number; public order: number;
public battleStatsIncreased: boolean = false;
public battleStatsDecreased: boolean = false;
} }
export enum AiType { export enum AiType {

View File

@ -47,5 +47,11 @@
"tailwindOnRemovePlayer": "Der Rückenwind auf deiner Seite hat sich gelegt!", "tailwindOnRemovePlayer": "Der Rückenwind auf deiner Seite hat sich gelegt!",
"tailwindOnRemoveEnemy": "Der Rückenwind auf gegnerischer Seite hat sich gelegt!", "tailwindOnRemoveEnemy": "Der Rückenwind auf gegnerischer Seite hat sich gelegt!",
"happyHourOnAdd": "Goldene Zeiten sind angebrochen!", "happyHourOnAdd": "Goldene Zeiten sind angebrochen!",
"happyHourOnRemove": "Die goldenen Zeiten sind vorbei!" "happyHourOnRemove": "Die goldenen Zeiten sind vorbei!",
"safeguardOnAdd": "Das ganze Feld wird von einem Schleier umhüllt!",
"safeguardOnAddPlayer": "Das Team des Anwenders wird von einem Schleier umhüllt!",
"safeguardOnAddEnemy": "Das gegnerische Team wird von einem Schleier umhüllt!",
"safeguardOnRemove": "Der mystische Schleier, der das ganze Feld umgab, hat sich gelüftet!",
"safeguardOnRemovePlayer": "Der mystische Schleier, der dein Team umgab, hat sich gelüftet!",
"safeguardOnRemoveEnemy": "Der mystische Schleier, der das gegnerische Team umgab, hat sich gelüftet!"
} }

View File

@ -1403,19 +1403,19 @@
"1": "Ich muss dein Potenzial als Trainer und die Stärke der Pokémon sehen, die mit dir kämpfen!", "1": "Ich muss dein Potenzial als Trainer und die Stärke der Pokémon sehen, die mit dir kämpfen!",
"2": "Los geht's! Dies sind meine Gesteins-Pokémon, mein ganzer Stolz!", "2": "Los geht's! Dies sind meine Gesteins-Pokémon, mein ganzer Stolz!",
"3": "Gesteins-Pokémon sind einfach die besten!", "3": "Gesteins-Pokémon sind einfach die besten!",
"4": "Ich muss dein Potenzial als Trainer und die Stärke der Pokémon sehen, die mit dir kämpfen!" "4": "Tag für Tag grabe ich hier nach Fossilien.\n$Die viele Arbeit hat meine Pokémon felsenfest gemacht\nund das wirst du jetzt im Kampf zu spüren bekommen!"
}, },
"victory": { "victory": {
"1": "W-was? Das kann nicht sein! Meine total tranierten Pokémon!", "1": "W-was? Das kann nicht sein! Meine total tranierten Pokémon!",
"2": "…Wir haben die Kontrolle verloren. Beim nächsten Mal fordere ich dich\n$zu einem Fossilien-Ausgrabungswettbewerb heraus.", "2": "…Wir haben die Kontrolle verloren. Beim nächsten Mal fordere ich dich\n$zu einem Fossilien-Ausgrabungswettbewerb heraus.",
"3": "Mit deinem Können ist es nur natürlich, dass du gewinnst.", "3": "Mit deinem Können ist es nur natürlich, dass du gewinnst.",
"4": "W-was?! Das kann nicht sein! Selbst das war nicht genug?", "4": "W-was?! Das kann nicht sein! Selbst das war nicht genug?"
"5": "Ich habe es vermasselt."
}, },
"defeat": { "defeat": {
"1": "Siehst du? Ich bin stolz auf meinen steinigen Kampfstil!", "1": "Siehst du? Ich bin stolz auf meinen steinigen Kampfstil!",
"2": "Danke! Der Kampf hat mir Vertrauen gegeben, dass ich vielleicht meinen Vater besiegen kann!", "2": "Danke! Der Kampf hat mir Vertrauen gegeben, dass ich vielleicht meinen Vater besiegen kann!",
"3": "Ich fühle mich, als hätte ich gerade einen wirklich hartnäckigen Felsen durchbrochen!" "3": "Na, was sagst du jetzt? Meine felsenfesten Pokémon waren hart genug für dich, was?",
"4": "Ich wusste, dass ich gewinnen würde!"
} }
}, },
"morty": { "morty": {

View File

@ -604,6 +604,6 @@
"DRAGON_MEMORY": "Drachen-Disc", "DRAGON_MEMORY": "Drachen-Disc",
"DARK_MEMORY": "Unlicht-Disc", "DARK_MEMORY": "Unlicht-Disc",
"FAIRY_MEMORY": "Feen-Disc", "FAIRY_MEMORY": "Feen-Disc",
"BLANK_MEMORY": "Leere-Disc" "NORMAL_MEMORY": "Normal-Disc"
} }
} }

View File

@ -61,5 +61,6 @@
"suppressAbilities": "Die Fähigkeit von {{pokemonName}} wirkt nicht mehr!", "suppressAbilities": "Die Fähigkeit von {{pokemonName}} wirkt nicht mehr!",
"revivalBlessing": "{{pokemonName}} ist wieder fit und kampfbereit!", "revivalBlessing": "{{pokemonName}} ist wieder fit und kampfbereit!",
"swapArenaTags": "{{pokemonName}} hat die Effekte, die auf den beiden Seiten des Kampffeldes wirken, miteinander getauscht!", "swapArenaTags": "{{pokemonName}} hat die Effekte, die auf den beiden Seiten des Kampffeldes wirken, miteinander getauscht!",
"exposedMove": "{{pokemonName}} erkennt {{targetPokemonName}}!" "exposedMove": "{{pokemonName}} erkennt {{targetPokemonName}}!",
"safeguard": "{{targetName}} wird durch Bodyguard geschützt!"
} }

View File

@ -12,6 +12,7 @@
"blockItemTheft": "{{pokemonNameWithAffix}}'s {{abilityName}}\nprevents item theft!", "blockItemTheft": "{{pokemonNameWithAffix}}'s {{abilityName}}\nprevents item theft!",
"typeImmunityHeal": "{{pokemonNameWithAffix}}'s {{abilityName}}\nrestored its HP a little!", "typeImmunityHeal": "{{pokemonNameWithAffix}}'s {{abilityName}}\nrestored its HP a little!",
"nonSuperEffectiveImmunity": "{{pokemonNameWithAffix}} avoided damage\nwith {{abilityName}}!", "nonSuperEffectiveImmunity": "{{pokemonNameWithAffix}} avoided damage\nwith {{abilityName}}!",
"fullHpResistType": "{{pokemonNameWithAffix}} made its shell gleam!\nIt's distorting type matchups!",
"moveImmunity": "It doesn't affect {{pokemonNameWithAffix}}!", "moveImmunity": "It doesn't affect {{pokemonNameWithAffix}}!",
"reverseDrain": "{{pokemonNameWithAffix}} sucked up the liquid ooze!", "reverseDrain": "{{pokemonNameWithAffix}} sucked up the liquid ooze!",
"postDefendTypeChange": "{{pokemonNameWithAffix}}'s {{abilityName}}\nmade it the {{typeName}} type!", "postDefendTypeChange": "{{pokemonNameWithAffix}}'s {{abilityName}}\nmade it the {{typeName}} type!",

View File

@ -10,19 +10,19 @@
}, },
"10K_MONEY": { "10K_MONEY": {
"name": "Money Haver", "name": "Money Haver",
"name_female": null "name_female": "Money Haver"
}, },
"100K_MONEY": { "100K_MONEY": {
"name": "Rich", "name": "Rich",
"name_female": null "name_female": "Rich"
}, },
"1M_MONEY": { "1M_MONEY": {
"name": "Millionaire", "name": "Millionaire",
"name_female": null "name_female": "Millionaire"
}, },
"10M_MONEY": { "10M_MONEY": {
"name": "One Percenter", "name": "One Percenter",
"name_female": null "name_female": "One Percenter"
}, },
"DamageAchv": { "DamageAchv": {
"description": "Inflict {{damageAmount}} damage in one hit" "description": "Inflict {{damageAmount}} damage in one hit"
@ -32,11 +32,11 @@
}, },
"1000_DMG": { "1000_DMG": {
"name": "Harder Hitter", "name": "Harder Hitter",
"name_female": null "name_female": "Harder Hitter"
}, },
"2500_DMG": { "2500_DMG": {
"name": "That's a Lotta Damage!", "name": "That's a Lotta Damage!",
"name_female": null "name_female": "That's a Lotta Damage!"
}, },
"10000_DMG": { "10000_DMG": {
"name": "One Punch Man", "name": "One Punch Man",
@ -47,19 +47,19 @@
}, },
"250_HEAL": { "250_HEAL": {
"name": "Novice Healer", "name": "Novice Healer",
"name_female": null "name_female": "Novice Healer"
}, },
"1000_HEAL": { "1000_HEAL": {
"name": "Big Healer", "name": "Big Healer",
"name_female": null "name_female": "Big Healer"
}, },
"2500_HEAL": { "2500_HEAL": {
"name": "Cleric", "name": "Cleric",
"name_female": null "name_female": "Cleric"
}, },
"10000_HEAL": { "10000_HEAL": {
"name": "Recovery Master", "name": "Recovery Master",
"name_female": null "name_female": "Recovery Master"
}, },
"LevelAchv": { "LevelAchv": {
"description": "Level up a Pokémon to Lv{{level}}" "description": "Level up a Pokémon to Lv{{level}}"
@ -69,7 +69,7 @@
}, },
"LV_250": { "LV_250": {
"name": "Elite", "name": "Elite",
"name_female": null "name_female": "Elite"
}, },
"LV_1000": { "LV_1000": {
"name": "To Go Even Further Beyond" "name": "To Go Even Further Beyond"
@ -79,23 +79,23 @@
}, },
"10_RIBBONS": { "10_RIBBONS": {
"name": "Pokémon League Champion", "name": "Pokémon League Champion",
"name_female": null "name_female": "Pokémon League Champion"
}, },
"25_RIBBONS": { "25_RIBBONS": {
"name": "Great League Champion", "name": "Great League Champion",
"name_female": null "name_female": "Great League Champion"
}, },
"50_RIBBONS": { "50_RIBBONS": {
"name": "Ultra League Champion", "name": "Ultra League Champion",
"name_female": null "name_female": "Ultra League Champion"
}, },
"75_RIBBONS": { "75_RIBBONS": {
"name": "Rogue League Champion", "name": "Rogue League Champion",
"name_female": null "name_female": "Rogue League Champion"
}, },
"100_RIBBONS": { "100_RIBBONS": {
"name": "Master League Champion", "name": "Master League Champion",
"name_female": null "name_female": "Master League Champion"
}, },
"TRANSFER_MAX_BATTLE_STAT": { "TRANSFER_MAX_BATTLE_STAT": {
"name": "Teamwork", "name": "Teamwork",
@ -147,7 +147,7 @@
}, },
"SHINY_PARTY": { "SHINY_PARTY": {
"name": "That's Dedication", "name": "That's Dedication",
"name_female": null, "name_female": "That's Dedication",
"description": "Have a full party of shiny Pokémon" "description": "Have a full party of shiny Pokémon"
}, },
"HATCH_MYTHICAL": { "HATCH_MYTHICAL": {
@ -176,7 +176,7 @@
}, },
"CLASSIC_VICTORY": { "CLASSIC_VICTORY": {
"name": "Undefeated", "name": "Undefeated",
"name_female": null, "name_female": "Undefeated",
"description": "Beat the game in classic mode" "description": "Beat the game in classic mode"
}, },
"UNEVOLVED_CLASSIC_VICTORY": { "UNEVOLVED_CLASSIC_VICTORY": {

View File

@ -1,6 +1,7 @@
{ {
"title": "Challenge Modifiers", "title": "Challenge Modifiers",
"illegalEvolution": "{{pokemon}} changed into an ineligble pokémon\nfor this challenge!", "illegalEvolution": "{{pokemon}} changed into an ineligble pokémon\nfor this challenge!",
"noneSelected": "None Selected",
"singleGeneration": { "singleGeneration": {
"name": "Mono Gen", "name": "Mono Gen",
"desc": "You can only use Pokémon from Generation {{gen}}.", "desc": "You can only use Pokémon from Generation {{gen}}.",

View File

@ -58,7 +58,7 @@
"iris_alder_double": { "iris_alder_double": {
"encounter": { "encounter": {
"1": "Iris: Welcome Challenger! I am THE Unova Champion!\n$Alder: Iris, aren't you a bit too excited?", "1": "Iris: Welcome Challenger! I am THE Unova Champion!\n$Alder: Iris, aren't you a bit too excited?",
"1_female": null "1_female": "Iris: Welcome Challenger! I am THE Unova Champion!\n$Alder: Iris, aren't you a bit too excited?"
}, },
"victory": { "victory": {
"1": "Iris: A loss like this is not easy to take...\n$Alder: But we will only get stronger with every loss!" "1": "Iris: A loss like this is not easy to take...\n$Alder: But we will only get stronger with every loss!"
@ -75,7 +75,7 @@
"marnie_piers_double": { "marnie_piers_double": {
"encounter": { "encounter": {
"1": "Piers: Ready for a concert?\n$Marnie: Brother... They are here to fight, not to sing...", "1": "Piers: Ready for a concert?\n$Marnie: Brother... They are here to fight, not to sing...",
"1_female": null "1_female": "Piers: Ready for a concert?\n$Marnie: Brother... They are here to fight, not to sing..."
}, },
"victory": { "victory": {
"1": "Piers: Now that was a great concert!\n$Marnie: Brother..." "1": "Piers: Now that was a great concert!\n$Marnie: Brother..."

View File

@ -1,6 +1,6 @@
{ {
"encounter": "It appears the time has finally come once again.\nYou know why you have come here, do you not?\n$You were drawn here, because you have been here before.\nCountless times.\n$Though, perhaps it can be counted.\nTo be precise, this is in fact your {{cycleCount}} cycle.\n$Each cycle your mind reverts to its former state.\nEven so, somehow, remnants of your former selves remain.\n$Until now you have yet to succeed, but I sense a different presence in you this time.\n\n$You are the only one here, though it is as if there is… another.\n$Will you finally prove a formidable challenge to me?\nThe challenge I have longed after for millennia?\n$We begin.", "encounter": "It appears the time has finally come once again.\nYou know why you have come here, do you not?\n$You were drawn here, because you have been here before.\nCountless times.\n$Though, perhaps it can be counted.\nTo be precise, this is in fact your {{cycleCount}} cycle.\n$Each cycle your mind reverts to its former state.\nEven so, somehow, remnants of your former selves remain.\n$Until now you have yet to succeed, but I sense a different presence in you this time.\n\n$You are the only one here, though it is as if there is… another.\n$Will you finally prove a formidable challenge to me?\nThe challenge I have longed after for millennia?\n$We begin.",
"encounter_female": null, "encounter_female": "It appears the time has finally come once again.\nYou know why you have come here, do you not?\n$You were drawn here, because you have been here before.\nCountless times.\n$Though, perhaps it can be counted.\nTo be precise, this is in fact your {{cycleCount}} cycle.\n$Each cycle your mind reverts to its former state.\nEven so, somehow, remnants of your former selves remain.\n$Until now you have yet to succeed, but I sense a different presence in you this time.\n\n$You are the only one here, though it is as if there is… another.\n$Will you finally prove a formidable challenge to me?\nThe challenge I have longed after for millennia?\n$We begin.",
"firstStageWin": "I see. The presence I felt was indeed real.\nIt appears I no longer need to hold back.\n$Do not disappoint me.", "firstStageWin": "I see. The presence I felt was indeed real.\nIt appears I no longer need to hold back.\n$Do not disappoint me.",
"secondStageWin": "…Magnificent.", "secondStageWin": "…Magnificent.",
"key_ordinal_one": "st", "key_ordinal_one": "st",

View File

@ -3,31 +3,31 @@
"encounter": { "encounter": {
"1": "Hey, wanna battle?", "1": "Hey, wanna battle?",
"2": "Are you a new trainer too?", "2": "Are you a new trainer too?",
"2_female": null, "2_female": "Are you a new trainer too?",
"3": "Hey, I haven't seen you before. Let's battle!", "3": "Hey, I haven't seen you before. Let's battle!",
"4": "I just lost, so I'm trying to find more Pokémon.\nWait! You look weak! Come on, let's battle!", "4": "I just lost, so I'm trying to find more Pokémon.\nWait! You look weak! Come on, let's battle!",
"4_female": null, "4_female": "I just lost, so I'm trying to find more Pokémon.\nWait! You look weak! Come on, let's battle!",
"5": "Have we met or not? I don't really remember. Well, I guess it's nice to meet you anyway!", "5": "Have we met or not? I don't really remember. Well, I guess it's nice to meet you anyway!",
"6": "All right! Let's go!", "6": "All right! Let's go!",
"7": "All right! Here I come! I'll show you my power!", "7": "All right! Here I come! I'll show you my power!",
"8": "Haw haw haw... I'll show you how hawesome my Pokémon are!", "8": "Haw haw haw... I'll show you how hawesome my Pokémon are!",
"9": "No need to waste time saying hello. Bring it on whenever you're ready!", "9": "No need to waste time saying hello. Bring it on whenever you're ready!",
"9_female": null, "9_female": "No need to waste time saying hello. Bring it on whenever you're ready!",
"10": "Don't let your guard down, or you may be crying when a kid beats you.", "10": "Don't let your guard down, or you may be crying when a kid beats you.",
"11": "I've raised my Pokémon with great care. You're not allowed to hurt them!", "11": "I've raised my Pokémon with great care. You're not allowed to hurt them!",
"12": "Glad you made it! It won't be an easy job from here.", "12": "Glad you made it! It won't be an easy job from here.",
"12_female": null, "12_female": "Glad you made it! It won't be an easy job from here.",
"13": "The battles continue forever! Welcome to the world with no end!", "13": "The battles continue forever! Welcome to the world with no end!",
"13_female": null "13_female": "The battles continue forever! Welcome to the world with no end!"
}, },
"victory": { "victory": {
"1": "Wow! You're strong!", "1": "Wow! You're strong!",
"1_female": null, "1_female": "Wow! You're strong!",
"2": "I didn't stand a chance, huh?", "2": "I didn't stand a chance, huh?",
"3": "I'll find you again when I'm older and beat you!", "3": "I'll find you again when I'm older and beat you!",
"4": "Ugh. I don't have any more Pokémon.", "4": "Ugh. I don't have any more Pokémon.",
"5": "No way… NO WAY! How could I lose again…", "5": "No way… NO WAY! How could I lose again…",
"5_female": null, "5_female": "No way… NO WAY! How could I lose again…",
"6": "No! I lost!", "6": "No! I lost!",
"7": "Whoa! You are incredible! I'm amazed and surprised!", "7": "Whoa! You are incredible! I'm amazed and surprised!",
"8": "Could it be… How… My Pokémon and I are the strongest, though…", "8": "Could it be… How… My Pokémon and I are the strongest, though…",
@ -42,12 +42,12 @@
"encounter": { "encounter": {
"1": "Let's have a battle, shall we?", "1": "Let's have a battle, shall we?",
"2": "You look like a new trainer. Let's have a battle!", "2": "You look like a new trainer. Let's have a battle!",
"2_female": null, "2_female": "You look like a new trainer. Let's have a battle!",
"3": "I don't recognize you. How about a battle?", "3": "I don't recognize you. How about a battle?",
"4": "Let's have a fun Pokémon battle!", "4": "Let's have a fun Pokémon battle!",
"5": "I'll show you the ropes of how to really use Pokémon!", "5": "I'll show you the ropes of how to really use Pokémon!",
"6": "A serious battle starts from a serious beginning! Are you sure you're ready?", "6": "A serious battle starts from a serious beginning! Are you sure you're ready?",
"6_female": null, "6_female": "A serious battle starts from a serious beginning! Are you sure you're ready?",
"7": "You're only young once. And you only get one shot at a given battle. Soon, you'll be nothing but a memory.", "7": "You're only young once. And you only get one shot at a given battle. Soon, you'll be nothing but a memory.",
"8": "You'd better go easy on me, OK? Though I'll be seriously fighting!", "8": "You'd better go easy on me, OK? Though I'll be seriously fighting!",
"9": "School is boring. I've got nothing to do. Yawn. I'm only battling to kill the time." "9": "School is boring. I've got nothing to do. Yawn. I'm only battling to kill the time."
@ -55,15 +55,15 @@
"victory": { "victory": {
"1": "That was impressive! I've got a lot to learn.", "1": "That was impressive! I've got a lot to learn.",
"2": "I didn't think you'd beat me that bad…", "2": "I didn't think you'd beat me that bad…",
"2_female": null, "2_female": "I didn't think you'd beat me that bad…",
"3": "I hope we get to have a rematch some day.", "3": "I hope we get to have a rematch some day.",
"4": "That was pretty amazingly fun! You've totally exhausted me…", "4": "That was pretty amazingly fun! You've totally exhausted me…",
"5": "You actually taught me a lesson! You're pretty amazing!", "5": "You actually taught me a lesson! You're pretty amazing!",
"6": "Seriously, I lost. That is, like, seriously depressing, but you were seriously cool.", "6": "Seriously, I lost. That is, like, seriously depressing, but you were seriously cool.",
"6_female": null, "6_female": "Seriously, I lost. That is, like, seriously depressing, but you were seriously cool.",
"7": "I don't need memories like this. Deleting memory…", "7": "I don't need memories like this. Deleting memory…",
"8": "Hey! I told you to go easy on me! Still, you're pretty cool when you're serious.", "8": "Hey! I told you to go easy on me! Still, you're pretty cool when you're serious.",
"8_female": null, "8_female": "Hey! I told you to go easy on me! Still, you're pretty cool when you're serious.",
"9": "I'm actually getting tired of battling… There's gotta be something new to do…" "9": "I'm actually getting tired of battling… There's gotta be something new to do…"
} }
}, },
@ -154,7 +154,7 @@
"ace_trainer": { "ace_trainer": {
"encounter": { "encounter": {
"1": "You seem quite confident.", "1": "You seem quite confident.",
"1_female": null, "1_female": "You seem quite confident.",
"2": "Your Pokémon… Show them to me…", "2": "Your Pokémon… Show them to me…",
"3": "Because I'm an Ace Trainer, people think I'm strong.", "3": "Because I'm an Ace Trainer, people think I'm strong.",
"4": "Are you aware of what it takes to be an Ace Trainer?" "4": "Are you aware of what it takes to be an Ace Trainer?"
@ -163,9 +163,9 @@
"1": "Yes… You have good Pokémon…", "1": "Yes… You have good Pokémon…",
"2": "What?! But I'm a battling genius!", "2": "What?! But I'm a battling genius!",
"3": "Of course, you are the main character!", "3": "Of course, you are the main character!",
"3_female": null, "3_female": "Of course, you are the main character!",
"4": "OK! OK! You could be an Ace Trainer!", "4": "OK! OK! You could be an Ace Trainer!",
"4_female": null "4_female": "OK! OK! You could be an Ace Trainer!"
}, },
"defeat": { "defeat": {
"1": "I am devoting my body and soul to Pokémon battles!", "1": "I am devoting my body and soul to Pokémon battles!",
@ -187,7 +187,7 @@
"1": "Get ready, because when we team up, it's double the trouble!", "1": "Get ready, because when we team up, it's double the trouble!",
"2": "Two hearts, one strategy let's see if you can keep up with our twin power!", "2": "Two hearts, one strategy let's see if you can keep up with our twin power!",
"3": "Hope you're ready for double trouble, because we're about to bring the heat!", "3": "Hope you're ready for double trouble, because we're about to bring the heat!",
"3_female": null "3_female": "Hope you're ready for double trouble, because we're about to bring the heat!"
}, },
"victory": { "victory": {
"1": "We may have lost this round, but our bond remains unbreakable!", "1": "We may have lost this round, but our bond remains unbreakable!",
@ -216,7 +216,7 @@
"encounter": { "encounter": {
"1": "I praise your courage in challenging me! For I am the one with the strongest kick!", "1": "I praise your courage in challenging me! For I am the one with the strongest kick!",
"2": "Oh, I see. Would you like to be cut to pieces? Or do you prefer the role of punching bag?", "2": "Oh, I see. Would you like to be cut to pieces? Or do you prefer the role of punching bag?",
"2_female": null "2_female": "Oh, I see. Would you like to be cut to pieces? Or do you prefer the role of punching bag?"
}, },
"victory": { "victory": {
"1": "Oh. The Pokémon did the fighting. My strong kick didn't help a bit.", "1": "Oh. The Pokémon did the fighting. My strong kick didn't help a bit.",
@ -328,7 +328,7 @@
"defeat": { "defeat": {
"1": "New age simply refers to twentieth century classical composers, right?", "1": "New age simply refers to twentieth century classical composers, right?",
"2": "Don't get hung up on sadness or frustration. You can use your grudges to motivate yourself.", "2": "Don't get hung up on sadness or frustration. You can use your grudges to motivate yourself.",
"2_female": null "2_female": "Don't get hung up on sadness or frustration. You can use your grudges to motivate yourself."
} }
}, },
"psychic": { "psychic": {
@ -360,7 +360,7 @@
"baker": { "baker": {
"encounter": { "encounter": {
"1": "Hope you're ready to taste defeat!", "1": "Hope you're ready to taste defeat!",
"1_female": null "1_female": "Hope you're ready to taste defeat!"
}, },
"victory": { "victory": {
"1": "I'll bake a comeback." "1": "I'll bake a comeback."
@ -391,7 +391,7 @@
"1": "Matey, you're walking the plank if you lose!", "1": "Matey, you're walking the plank if you lose!",
"2": "Come on then! My sailor's pride is at stake!", "2": "Come on then! My sailor's pride is at stake!",
"3": "Ahoy there! Are you seasick?", "3": "Ahoy there! Are you seasick?",
"3_female": null "3_female": "Ahoy there! Are you seasick?"
}, },
"victory": { "victory": {
"1": "Argh! Beaten by a kid!", "1": "Argh! Beaten by a kid!",
@ -419,7 +419,7 @@
}, },
"victory": { "victory": {
"1": "Tch, you really are strong. It's too bad.\n$If you were to join Team Rocket, you could become an Executive.", "1": "Tch, you really are strong. It's too bad.\n$If you were to join Team Rocket, you could become an Executive.",
"1_female": null, "1_female": "Tch, you really are strong. It's too bad.\n$If you were to join Team Rocket, you could become an Executive.",
"2": "I... I'm shattered...", "2": "I... I'm shattered...",
"3": "Aaaieeeee! This can't be happening! I fought hard, but I still lost…" "3": "Aaaieeeee! This can't be happening! I fought hard, but I still lost…"
} }
@ -458,7 +458,7 @@
"1": "Hehehe! You might have beaten me, but you don't stand a chance against the boss!\n$If you get lost now, you won't have to face a sound whipping!", "1": "Hehehe! You might have beaten me, but you don't stand a chance against the boss!\n$If you get lost now, you won't have to face a sound whipping!",
"2": "Hehehe... So, I lost, too...", "2": "Hehehe... So, I lost, too...",
"3": "Ahya! How could this be? For an Admin like me to lose to some random trainer...", "3": "Ahya! How could this be? For an Admin like me to lose to some random trainer...",
"3_female": null "3_female": "Ahya! How could this be? For an Admin like me to lose to some random trainer..."
} }
}, },
"courtney": { "courtney": {
@ -478,13 +478,13 @@
"1": "Ahahahaha! You're going to meddle in Team Aqua's affairs?\n$You're either absolutely fearless, simply ignorant, or both!\n$You're so cute, you're disgusting! I'll put you down", "1": "Ahahahaha! You're going to meddle in Team Aqua's affairs?\n$You're either absolutely fearless, simply ignorant, or both!\n$You're so cute, you're disgusting! I'll put you down",
"2": "What's this? Who's this spoiled brat?", "2": "What's this? Who's this spoiled brat?",
"3": "Cool your jets. Be patient. I'll crush you shortly.", "3": "Cool your jets. Be patient. I'll crush you shortly.",
"3_female": null "3_female": "Cool your jets. Be patient. I'll crush you shortly."
}, },
"victory": { "victory": {
"1": "Ahahahaha! We got meddled with unexpectedly! We're out of options.\n$We'll have to pull out. But this isn't the last you'll see of Team Aqua!\n$We have other plans! Don't you forget it!", "1": "Ahahahaha! We got meddled with unexpectedly! We're out of options.\n$We'll have to pull out. But this isn't the last you'll see of Team Aqua!\n$We have other plans! Don't you forget it!",
"2": "Ahhh?! Did I go too easy on you?!", "2": "Ahhh?! Did I go too easy on you?!",
"3": "Uh. Are you telling me you've upped your game even more during the fight?\n$You're a brat with a bright future… My Pokémon and I don't have any strength left to fight…\n$Go on… Go and be destroyed by Archie.", "3": "Uh. Are you telling me you've upped your game even more during the fight?\n$You're a brat with a bright future… My Pokémon and I don't have any strength left to fight…\n$Go on… Go and be destroyed by Archie.",
"3_female": null "3_female": "Uh. Are you telling me you've upped your game even more during the fight?\n$You're a brat with a bright future… My Pokémon and I don't have any strength left to fight…\n$Go on… Go and be destroyed by Archie."
} }
}, },
"matt": { "matt": {
@ -497,7 +497,7 @@
"1": "Muwuhahaha! That battle was fun even though I lost!", "1": "Muwuhahaha! That battle was fun even though I lost!",
"2": "I can feel it! I can feel it, all right! The strength coming offa you!\n$More! I still want more! But looks like we're outta time...", "2": "I can feel it! I can feel it, all right! The strength coming offa you!\n$More! I still want more! But looks like we're outta time...",
"3": "Oho! That's a loss I can be proud of!", "3": "Oho! That's a loss I can be proud of!",
"3_female": null "3_female": "Oho! That's a loss I can be proud of!"
} }
}, },
"mars": { "mars": {
@ -505,7 +505,7 @@
"1": "I'm Mars, one of Team Galactic's top Commanders.", "1": "I'm Mars, one of Team Galactic's top Commanders.",
"2": "Team Galactic's vision for the future is unwavering. Opposition will be crushed without mercy!", "2": "Team Galactic's vision for the future is unwavering. Opposition will be crushed without mercy!",
"3": "Feeling nervous? You should be!", "3": "Feeling nervous? You should be!",
"3_female": null "3_female": "Feeling nervous? You should be!"
}, },
"victory": { "victory": {
"1": "This can't be happening! How did I lose?!", "1": "This can't be happening! How did I lose?!",
@ -540,25 +540,25 @@
"zinzolin": { "zinzolin": {
"encounter": { "encounter": {
"1": "You could become a threat to Team Plasma, so we will eliminate you here and now!", "1": "You could become a threat to Team Plasma, so we will eliminate you here and now!",
"1_female": null, "1_female": "You could become a threat to Team Plasma, so we will eliminate you here and now!",
"2": "You don't have the sense to know when to quit, it seems. It's an act of mercy on my part to bring an end to this now!", "2": "You don't have the sense to know when to quit, it seems. It's an act of mercy on my part to bring an end to this now!",
"3": "You're an impressive Trainer to have made it this far. But it ends here.", "3": "You're an impressive Trainer to have made it this far. But it ends here.",
"3_female": null "3_female": "You're an impressive Trainer to have made it this far. But it ends here."
}, },
"victory": { "victory": {
"1": "Ghetsis... I have failed you...", "1": "Ghetsis... I have failed you...",
"2": "It's bitter cold. I'm shivering. I'm suffering. Yet, we will stand victorious.", "2": "It's bitter cold. I'm shivering. I'm suffering. Yet, we will stand victorious.",
"3": "Hmph. You're a smarter Trainer than I expected, but not smart enough.", "3": "Hmph. You're a smarter Trainer than I expected, but not smart enough.",
"3_female": null "3_female": "Hmph. You're a smarter Trainer than I expected, but not smart enough."
} }
}, },
"rood": { "rood": {
"encounter": { "encounter": {
"1": "You are a threat to Team Plasma. We cannot let you walk away from here and now!", "1": "You are a threat to Team Plasma. We cannot let you walk away from here and now!",
"1_female": null, "1_female": "You are a threat to Team Plasma. We cannot let you walk away from here and now!",
"2": "It seems you don't know when to give up. I'll make sure no one interferes with our plans!", "2": "It seems you don't know when to give up. I'll make sure no one interferes with our plans!",
"3": "You are a remarkable Trainer to have made it this far. But this is where it ends.", "3": "You are a remarkable Trainer to have made it this far. But this is where it ends.",
"3_female": null "3_female": "You are a remarkable Trainer to have made it this far. But this is where it ends."
}, },
"victory": { "victory": {
"1": "Ghetsis... I have failed my mission...", "1": "Ghetsis... I have failed my mission...",
@ -569,15 +569,15 @@
"xerosic": { "xerosic": {
"encounter": { "encounter": {
"1": "Ah ha ha! It would be my pleasure. Come on, little Trainer! Let's see what you've got!", "1": "Ah ha ha! It would be my pleasure. Come on, little Trainer! Let's see what you've got!",
"1_female": null, "1_female": "Ah ha ha! It would be my pleasure. Come on, little Trainer! Let's see what you've got!",
"2": "Hmm... You're more powerful than you look. I wonder how much energy there is inside you.", "2": "Hmm... You're more powerful than you look. I wonder how much energy there is inside you.",
"2_female": null, "2_female": "Hmm... You're more powerful than you look. I wonder how much energy there is inside you.",
"3": "I've been waiting for you! I need to do a little research on you! Come, let us begin!" "3": "I've been waiting for you! I need to do a little research on you! Come, let us begin!"
}, },
"victory": { "victory": {
"1": "Ah, you're quite strong. Oh yes—very strong, indeed.", "1": "Ah, you're quite strong. Oh yes—very strong, indeed.",
"2": "Ding-ding-ding! You did it! To the victor go the spoils!", "2": "Ding-ding-ding! You did it! To the victor go the spoils!",
"2_female": null, "2_female": "Ding-ding-ding! You did it! To the victor go the spoils!",
"3": "Wonderful! Amazing! You have tremendous skill and bravery!" "3": "Wonderful! Amazing! You have tremendous skill and bravery!"
} }
}, },
@ -585,7 +585,7 @@
"encounter": { "encounter": {
"1": "I am Bryony, and it would be my pleasure to battle you. Show me what you've got.", "1": "I am Bryony, and it would be my pleasure to battle you. Show me what you've got.",
"2": "Impressive... You're more powerful than you appear. Let's see the true extent of your energy.", "2": "Impressive... You're more powerful than you appear. Let's see the true extent of your energy.",
"2_female": null, "2_female": "Impressive... You're more powerful than you appear. Let's see the true extent of your energy.",
"3": "I've anticipated your arrival. It's time for a little test. Shall we begin?" "3": "I've anticipated your arrival. It's time for a little test. Shall we begin?"
}, },
"victory": { "victory": {
@ -598,11 +598,11 @@
"encounter": { "encounter": {
"1": "Prepare for trouble!", "1": "Prepare for trouble!",
"2": "We're pulling a big job here! Get lost, kid!", "2": "We're pulling a big job here! Get lost, kid!",
"2_female": null, "2_female": "We're pulling a big job here! Get lost, kid!",
"3": "Hand over your Pokémon, or face the wrath of Team Rocket!", "3": "Hand over your Pokémon, or face the wrath of Team Rocket!",
"4": "You're about to experience the true terror of Team Rocket!", "4": "You're about to experience the true terror of Team Rocket!",
"5": "Hey, kid! Me am a Team Rocket member kind of guy!", "5": "Hey, kid! Me am a Team Rocket member kind of guy!",
"5_female": null "5_female": "Hey, kid! Me am a Team Rocket member kind of guy!"
}, },
"victory": { "victory": {
"1": "Team Rocket blasting off again!", "1": "Team Rocket blasting off again!",
@ -624,7 +624,7 @@
"1": "Huh? I lost?!", "1": "Huh? I lost?!",
"2": "I can't believe I lost! I even skipped lunch for this", "2": "I can't believe I lost! I even skipped lunch for this",
"3": "No way! You're just a kid!", "3": "No way! You're just a kid!",
"3_female": null, "3_female": "No way! You're just a kid!",
"4": "Urrrgh... I should've ducked into our hideout right away...", "4": "Urrrgh... I should've ducked into our hideout right away...",
"5": "You beat me... Do you think the boss will dock my pay for this?" "5": "You beat me... Do you think the boss will dock my pay for this?"
} }
@ -652,7 +652,7 @@
"3": "In the name of Team Galactic, I'll eliminate anyone who stands in our way!", "3": "In the name of Team Galactic, I'll eliminate anyone who stands in our way!",
"4": "Get ready to lose!", "4": "Get ready to lose!",
"5": "Hope you're ready for a cosmic beatdown!", "5": "Hope you're ready for a cosmic beatdown!",
"5_female": null "5_female": "Hope you're ready for a cosmic beatdown!"
}, },
"victory": { "victory": {
"1": "Shut down...", "1": "Shut down...",
@ -682,7 +682,7 @@
"encounter": { "encounter": {
"1": "Your Pokémon are no match for the elegance of Team Flare.", "1": "Your Pokémon are no match for the elegance of Team Flare.",
"2": "Hope you brought your sunglasses, because things are about to get bright!", "2": "Hope you brought your sunglasses, because things are about to get bright!",
"2_female": null, "2_female": "Hope you brought your sunglasses, because things are about to get bright!",
"3": "Team Flare will cleanse the world of imperfection!", "3": "Team Flare will cleanse the world of imperfection!",
"4": "Prepare to face the brilliance of Team Flare!", "4": "Prepare to face the brilliance of Team Flare!",
"5": "Fashion is most important to us!" "5": "Fashion is most important to us!"
@ -742,7 +742,7 @@
"plumeria": { "plumeria": {
"encounter": { "encounter": {
"1": " ...Hmph. You don't look like anything special to me.", "1": " ...Hmph. You don't look like anything special to me.",
"2": "It takes these dumb Grunts way too long to deal with you kids..", "2": "It takes these dumb Grunts way too long to deal with you kids...",
"3": "Mess with anyone in Team Skull, and I'll show you how serious I can get." "3": "Mess with anyone in Team Skull, and I'll show you how serious I can get."
}, },
"victory": { "victory": {
@ -784,7 +784,7 @@
}, },
"defeat": { "defeat": {
"1": "Mark my words. Not being able to measure your own strength shows that you are still a child.", "1": "Mark my words. Not being able to measure your own strength shows that you are still a child.",
"1_female": null "1_female": "Mark my words. Not being able to measure your own strength shows that you are still a child."
} }
}, },
"rocket_boss_giovanni_2": { "rocket_boss_giovanni_2": {
@ -845,7 +845,7 @@
"galactic_boss_cyrus_1": { "galactic_boss_cyrus_1": {
"encounter": { "encounter": {
"1": "You were compelled to come here by such vacuous sentimentality.\n$I will make you regret paying heed to your heart!", "1": "You were compelled to come here by such vacuous sentimentality.\n$I will make you regret paying heed to your heart!",
"1_female": null "1_female": "You were compelled to come here by such vacuous sentimentality.\n$I will make you regret paying heed to your heart!"
}, },
"victory": { "victory": {
"1": "Interesting. And quite curious." "1": "Interesting. And quite curious."
@ -995,7 +995,7 @@
"misty": { "misty": {
"encounter": { "encounter": {
"1": "My policy is an all out offensive with Water-type Pokémon!", "1": "My policy is an all out offensive with Water-type Pokémon!",
"1_female": null, "1_female": "My policy is an all out offensive with Water-type Pokémon!",
"2": "Hiya, I'll show you the strength of my aquatic Pokémon!", "2": "Hiya, I'll show you the strength of my aquatic Pokémon!",
"3": "My dream was to go on a journey and battle powerful trainers…\nWill you be a sufficient challenge?" "3": "My dream was to go on a journey and battle powerful trainers…\nWill you be a sufficient challenge?"
}, },
@ -1013,14 +1013,14 @@
"lt_surge": { "lt_surge": {
"encounter": { "encounter": {
"1": "My Electric Pokémon saved me during the war! I'll show you how!", "1": "My Electric Pokémon saved me during the war! I'll show you how!",
"1_female": null, "1_female": "My Electric Pokémon saved me during the war! I'll show you how!",
"2": "Ten-hut! I'll shock you into surrender!", "2": "Ten-hut! I'll shock you into surrender!",
"3": "I'll zap you just like I do to all my enemies in battle!" "3": "I'll zap you just like I do to all my enemies in battle!"
}, },
"victory": { "victory": {
"1": "Whoa! Your team's the real deal, kid!", "1": "Whoa! Your team's the real deal, kid!",
"2": "Aaargh, you're strong! Even my electric tricks lost against you.", "2": "Aaargh, you're strong! Even my electric tricks lost against you.",
"2_female": null, "2_female": "Aaargh, you're strong! Even my electric tricks lost against you.",
"3": "That was an absolutely shocking loss!" "3": "That was an absolutely shocking loss!"
}, },
"defeat": { "defeat": {
@ -1045,7 +1045,7 @@
"defeat": { "defeat": {
"1": "I was afraid I would doze off…", "1": "I was afraid I would doze off…",
"2": "Oh my, it seems my Grass Pokémon overwhelmed you.", "2": "Oh my, it seems my Grass Pokémon overwhelmed you.",
"2_female": null, "2_female": "Oh my, it seems my Grass Pokémon overwhelmed you.",
"3": "That battle was such a soothing experience.", "3": "That battle was such a soothing experience.",
"4": "Oh… Is that all?" "4": "Oh… Is that all?"
} }
@ -1106,7 +1106,7 @@
"1": "I, the leader of Team Rocket, will make you feel a world of pain!", "1": "I, the leader of Team Rocket, will make you feel a world of pain!",
"2": "My training here will be vital before I am to face my old associates again.", "2": "My training here will be vital before I am to face my old associates again.",
"3": "I do not think you are prepared for the level of failure you are about to experience!", "3": "I do not think you are prepared for the level of failure you are about to experience!",
"3_female": null "3_female": "I do not think you are prepared for the level of failure you are about to experience!"
}, },
"victory": { "victory": {
"1": "WHAT! Me, lose?! There is nothing I wish to say to you!", "1": "WHAT! Me, lose?! There is nothing I wish to say to you!",
@ -1139,7 +1139,7 @@
"brawly": { "brawly": {
"encounter": { "encounter": {
"1": "Oh man, a challenger!\nLet's see what you can do!", "1": "Oh man, a challenger!\nLet's see what you can do!",
"1_female": null, "1_female": "Oh man, a challenger!\nLet's see what you can do!",
"2": "You seem like a big splash.\nLet's battle!", "2": "You seem like a big splash.\nLet's battle!",
"3": "Time to create a storm!\nLet's go!" "3": "Time to create a storm!\nLet's go!"
}, },
@ -1167,7 +1167,7 @@
}, },
"defeat": { "defeat": {
"1": "Recharge your batteries and challenge me again sometime!\nWahahahaha!", "1": "Recharge your batteries and challenge me again sometime!\nWahahahaha!",
"1_female": null, "1_female": "Recharge your batteries and challenge me again sometime!\nWahahahaha!",
"2": "I hope you found our battle electrifying!\nWahahahaha!", "2": "I hope you found our battle electrifying!\nWahahahaha!",
"3": "Aren't you shocked I won?\nWahahahaha!" "3": "Aren't you shocked I won?\nWahahahaha!"
} }
@ -1214,7 +1214,7 @@
}, },
"victory": { "victory": {
"1": "You're the first Trainer I've seen with more grace than I.\nExcellently played.", "1": "You're the first Trainer I've seen with more grace than I.\nExcellently played.",
"1_female": null, "1_female": "You're the first Trainer I've seen with more grace than I.\nExcellently played.",
"2": "Oh, my Flying Pokémon have plummeted!\nVery well.", "2": "Oh, my Flying Pokémon have plummeted!\nVery well.",
"3": "Though I may have fallen, my Pokémon will continue to fly!" "3": "Though I may have fallen, my Pokémon will continue to fly!"
}, },
@ -1227,7 +1227,7 @@
"tate": { "tate": {
"encounter": { "encounter": {
"1": "Hehehe…\nWere you surprised to see me without my sister?", "1": "Hehehe…\nWere you surprised to see me without my sister?",
"1_female": null, "1_female": "Hehehe…\nWere you surprised to see me without my sister?",
"2": "I can see what you're thinking…\nYou want to battle!", "2": "I can see what you're thinking…\nYou want to battle!",
"3": "How can you defeat someone…\nWho knows your every move?" "3": "How can you defeat someone…\nWho knows your every move?"
}, },
@ -1245,7 +1245,7 @@
"liza": { "liza": {
"encounter": { "encounter": {
"1": "Fufufu…\nWere you surprised to see me without my brother?", "1": "Fufufu…\nWere you surprised to see me without my brother?",
"1_female": null, "1_female": "Fufufu…\nWere you surprised to see me without my brother?",
"2": "I can determine what you desire…\nYou want to battle, don't you?", "2": "I can determine what you desire…\nYou want to battle, don't you?",
"3": "How can you defeat someone…\nWho's one with their Pokémon?" "3": "How can you defeat someone…\nWho's one with their Pokémon?"
}, },
@ -1317,10 +1317,10 @@
"nessa": { "nessa": {
"encounter": { "encounter": {
"1": "No matter what kind of plan your refined mind may be plotting, my partner and I will be sure to sink it.", "1": "No matter what kind of plan your refined mind may be plotting, my partner and I will be sure to sink it.",
"1_female": null, "1_female": "No matter what kind of plan your refined mind may be plotting, my partner and I will be sure to sink it.",
"2": "I'm not here to chat. I'm here to win!", "2": "I'm not here to chat. I'm here to win!",
"3": "This is a little gift from my Pokémon… I hope you can take it!", "3": "This is a little gift from my Pokémon… I hope you can take it!",
"3_female": null "3_female": "This is a little gift from my Pokémon… I hope you can take it!"
}, },
"victory": { "victory": {
"1": "You and your Pokémon are just too much…", "1": "You and your Pokémon are just too much…",
@ -1341,7 +1341,7 @@
}, },
"victory": { "victory": {
"1": "You… You're pretty good, huh?", "1": "You… You're pretty good, huh?",
"1_female": null, "1_female": "You… You're pretty good, huh?",
"2": "If you find Gordie around, be sure to give him a right trashing, would you?", "2": "If you find Gordie around, be sure to give him a right trashing, would you?",
"3": "I think you took breaking the ice a little too literally…" "3": "I think you took breaking the ice a little too literally…"
}, },
@ -1355,12 +1355,12 @@
"encounter": { "encounter": {
"1": "You look strong! Shoots! Let's start!", "1": "You look strong! Shoots! Let's start!",
"2": "I'm strong like the ocean's wide. You're gonna get swept away, fo' sho'.", "2": "I'm strong like the ocean's wide. You're gonna get swept away, fo' sho'.",
"2_female": null, "2_female": "I'm strong like the ocean's wide. You're gonna get swept away, fo' sho'.",
"3": "Oh ho, so I'm facing you! That's off the wall." "3": "Oh ho, so I'm facing you! That's off the wall."
}, },
"victory": { "victory": {
"1": "You totally rocked that! You're raising some wicked Pokémon. You got this Trainer thing down!", "1": "You totally rocked that! You're raising some wicked Pokémon. You got this Trainer thing down!",
"1_female": null, "1_female": "You totally rocked that! You're raising some wicked Pokémon. You got this Trainer thing down!",
"2": "You don't just look strong, you're strong fo' reals! Eh, I was swept away, too!", "2": "You don't just look strong, you're strong fo' reals! Eh, I was swept away, too!",
"3": "You're strong as a gnarly wave!" "3": "You're strong as a gnarly wave!"
}, },
@ -1373,7 +1373,7 @@
"shauntal": { "shauntal": {
"encounter": { "encounter": {
"1": "Excuse me. You're a challenger, right?\nI'm the Elite Four's Ghost-type Pokémon user, Shauntal, and I shall be your opponent.", "1": "Excuse me. You're a challenger, right?\nI'm the Elite Four's Ghost-type Pokémon user, Shauntal, and I shall be your opponent.",
"1_female": null, "1_female": "Excuse me. You're a challenger, right?\nI'm the Elite Four's Ghost-type Pokémon user, Shauntal, and I shall be your opponent.",
"2": "I absolutely love writing about Trainers who come here and the Pokémon they train.\nCould I use you and your Pokémon as a subject?", "2": "I absolutely love writing about Trainers who come here and the Pokémon they train.\nCould I use you and your Pokémon as a subject?",
"3": "Every person who works with Pokémon has a story to tell.\nWhat story is about to be told?" "3": "Every person who works with Pokémon has a story to tell.\nWhat story is about to be told?"
}, },
@ -1391,7 +1391,7 @@
"marshal": { "marshal": {
"encounter": { "encounter": {
"1": "My mentor, Alder, sees your potential as a Trainer and is taking an interest in you.\nIt is my intention to test you--to take you to the limits of your strength. Kiai!", "1": "My mentor, Alder, sees your potential as a Trainer and is taking an interest in you.\nIt is my intention to test you--to take you to the limits of your strength. Kiai!",
"1_female": null, "1_female": "My mentor, Alder, sees your potential as a Trainer and is taking an interest in you.\nIt is my intention to test you--to take you to the limits of your strength. Kiai!",
"2": "Victory, decisive victory, is my intention! Challenger, here I come!", "2": "Victory, decisive victory, is my intention! Challenger, here I come!",
"3": "In myself, I seek to develop the strength of a fighter and shatter any weakness in myself!\nPrevailing with the force of my convictions!" "3": "In myself, I seek to develop the strength of a fighter and shatter any weakness in myself!\nPrevailing with the force of my convictions!"
}, },
@ -1411,7 +1411,7 @@
"1": "You remind me of an old friend. That makes me excited about this Pokémon battle!", "1": "You remind me of an old friend. That makes me excited about this Pokémon battle!",
"2": "Pokémon battles have no meaning if you don't think why you battle.\n$Or better said, it makes battling together with Pokémon meaningless.", "2": "Pokémon battles have no meaning if you don't think why you battle.\n$Or better said, it makes battling together with Pokémon meaningless.",
"3": "My name's Cheren! I'm a Gym Leader and a teacher! Pleasure to meet you.", "3": "My name's Cheren! I'm a Gym Leader and a teacher! Pleasure to meet you.",
"3_female": null "3_female": "My name's Cheren! I'm a Gym Leader and a teacher! Pleasure to meet you."
}, },
"victory": { "victory": {
"1": "Thank you! I saw what was missing in me.", "1": "Thank you! I saw what was missing in me.",
@ -1427,73 +1427,73 @@
"chili": { "chili": {
"encounter": { "encounter": {
"1": "Yeeeeooow! Time to play with FIRE!! I'm the strongest of us brothers!", "1": "Yeeeeooow! Time to play with FIRE!! I'm the strongest of us brothers!",
"1_female": null, "1_female": "Yeeeeooow! Time to play with FIRE!! I'm the strongest of us brothers!",
"2": "Ta-da! The Fire-type scorcher Chili--that's me--will be your opponent!", "2": "Ta-da! The Fire-type scorcher Chili--that's me--will be your opponent!",
"2_female": null, "2_female": "Ta-da! The Fire-type scorcher Chili--that's me--will be your opponent!",
"3": "I'm going to show you what me and my blazing Fire types can do!", "3": "I'm going to show you what me and my blazing Fire types can do!",
"3_female": null "3_female": "I'm going to show you what me and my blazing Fire types can do!"
}, },
"victory": { "victory": {
"1": "You got me. I am… burned… out…", "1": "You got me. I am… burned… out…",
"1_female": null, "1_female": "You got me. I am… burned… out…",
"2": "Whoa ho! You're on fire!", "2": "Whoa ho! You're on fire!",
"2_female": null, "2_female": "Whoa ho! You're on fire!",
"3": "Augh! You got me!" "3": "Augh! You got me!"
}, },
"defeat": { "defeat": {
"1": "I'm on fire! Play with me, and you'll get burned!", "1": "I'm on fire! Play with me, and you'll get burned!",
"1_female": null, "1_female": "I'm on fire! Play with me, and you'll get burned!",
"2": "When you play with fire, you get burned!", "2": "When you play with fire, you get burned!",
"3": "I mean, c'mon, your opponent was me! You didn't have a chance!", "3": "I mean, c'mon, your opponent was me! You didn't have a chance!",
"3_female": null "3_female": "I mean, c'mon, your opponent was me! You didn't have a chance!"
} }
}, },
"cilan": { "cilan": {
"encounter": { "encounter": {
"1": "Nothing personal... No hard feelings... Me and my Grass-type Pokémon will...\n$Um... We're gonna battle come what may.", "1": "Nothing personal... No hard feelings... Me and my Grass-type Pokémon will...\n$Um... We're gonna battle come what may.",
"1_female": null, "1_female": "Nothing personal... No hard feelings... Me and my Grass-type Pokémon will...\n$Um... We're gonna battle come what may.",
"2": "So, um, if you're OK with me, I'll, um, put everything I've got into being, er, you know, your opponent.", "2": "So, um, if you're OK with me, I'll, um, put everything I've got into being, er, you know, your opponent.",
"2_female": null, "2_female": "So, um, if you're OK with me, I'll, um, put everything I've got into being, er, you know, your opponent.",
"3": "OK… So, um, I'm Cilan, I like Grass-type Pokémon.", "3": "OK… So, um, I'm Cilan, I like Grass-type Pokémon.",
"3_female": null "3_female": "OK… So, um, I'm Cilan, I like Grass-type Pokémon."
}, },
"victory": { "victory": {
"1": "Er… Is it over now?", "1": "Er… Is it over now?",
"1_female": null, "1_female": "Er… Is it over now?",
"2": "…What a surprise. You are very strong, aren't you? \n$I guess my brothers wouldn't have been able to defeat you either…", "2": "…What a surprise. You are very strong, aren't you? \n$I guess my brothers wouldn't have been able to defeat you either…",
"2_female": null, "2_female": "…What a surprise. You are very strong, aren't you? \n$I guess my brothers wouldn't have been able to defeat you either…",
"3": "…Huh. Looks like my timing was, um, off?" "3": "…Huh. Looks like my timing was, um, off?"
}, },
"defeat": { "defeat": {
"1": "Huh? Did I win?", "1": "Huh? Did I win?",
"1_female": null, "1_female": "Huh? Did I win?",
"2": "I guess… \n$I suppose I won, because I've been competing with my brothers Chili and Cress, and we all were able to get tougher.", "2": "I guess… \n$I suppose I won, because I've been competing with my brothers Chili and Cress, and we all were able to get tougher.",
"2_female": null, "2_female": "I guess… \n$I suppose I won, because I've been competing with my brothers Chili and Cress, and we all were able to get tougher.",
"3": "It…it was quite a thrilling experience…", "3": "It…it was quite a thrilling experience…",
"3_female": null "3_female": "It…it was quite a thrilling experience…"
} }
}, },
"roark": { "roark": {
"encounter": { "encounter": {
"1": "I need to see your potential as a Trainer. And, I'll need to see the toughness of the Pokémon that battle with you!", "1": "I need to see your potential as a Trainer. And, I'll need to see the toughness of the Pokémon that battle with you!",
"1_female": null, "1_female": "I need to see your potential as a Trainer. And, I'll need to see the toughness of the Pokémon that battle with you!",
"2": "Here goes! These are my rocking Pokémon, my pride and joy!", "2": "Here goes! These are my rocking Pokémon, my pride and joy!",
"3": "Rock-type Pokémon are simply the best!", "3": "Rock-type Pokémon are simply the best!",
"4": "I need to see your potential as a Trainer. And, I'll need to see the toughness of the Pokémon that battle with you!", "4": "Every day, I toughened up my Pokémon by digging up Fossils nonstop.\n$Could I show you how tough I made them in a battle?",
"4_female": null "4_female": "Every day, I toughened up my Pokémon by digging up Fossils nonstop.\n$Could I show you how tough I made them in a battle?"
}, },
"victory": { "victory": {
"1": "W-what? That can't be! My buffed-up Pokémon!", "1": "W-what? That can't be! My buffed-up Pokémon!",
"2": "…We lost control there. Next time I'd like to challenge you to a Fossil-digging race underground.", "2": "…We lost control there. Next time I'd like to challenge you to a Fossil-digging race underground.",
"2_female": null, "2_female": "…We lost control there. Next time I'd like to challenge you to a Fossil-digging race underground.",
"3": "With skill like yours, it's natural for you to win.", "3": "With skill like yours, it's natural for you to win.",
"4": "Wh-what?! It can't be! Even that wasn't enough?", "4": "Wh-what?! It can't be! Even that wasn't enough?"
"5": "I blew it."
}, },
"defeat": { "defeat": {
"1": "See? I'm proud of my rocking battle style!", "1": "See? I'm proud of my rocking battle style!",
"2": "Thanks! The battle gave me confidence that I may be able to beat my dad!", "2": "Thanks! The battle gave me confidence that I may be able to beat my dad!",
"3": "I feel like I just smashed through a really stubborn boulder!" "3": "See? These are my rocking Pokémon, my pride and joy!",
"4": "I knew I would win!"
} }
}, },
"morty": { "morty": {
@ -1508,7 +1508,7 @@
"victory": { "victory": {
"1": "I'm not good enough yet…", "1": "I'm not good enough yet…",
"2": "I see… Your journey has taken you to far-away places and you have witnessed much more than I.\n$I envy you for that…", "2": "I see… Your journey has taken you to far-away places and you have witnessed much more than I.\n$I envy you for that…",
"2_female": null, "2_female": "I see… Your journey has taken you to far-away places and you have witnessed much more than I.\n$I envy you for that…",
"3": "How is this possible…", "3": "How is this possible…",
"4": "I don't think our potentials are so different.\n$But you seem to have something more than that… So be it.", "4": "I don't think our potentials are so different.\n$But you seem to have something more than that… So be it.",
"5": "Guess I need more training.", "5": "Guess I need more training.",
@ -1568,13 +1568,13 @@
}, },
"defeat": { "defeat": {
"1": "Heh heh! Don't mind me, just scooping up a W over here. I get it if you're upset, but don't go full Kieran on me, OK?", "1": "Heh heh! Don't mind me, just scooping up a W over here. I get it if you're upset, but don't go full Kieran on me, OK?",
"1_female": null "1_female": "Heh heh! Don't mind me, just scooping up a W over here. I get it if you're upset, but don't go full Kieran on me, OK?"
} }
}, },
"ramos": { "ramos": {
"encounter": { "encounter": {
"1": "Did yeh enjoy the garden playground I made with all these sturdy plants o' mine?\n$Their strength is a sign o' my strength as a gardener and a Gym Leader! Yeh sure yer up to facing all that?", "1": "Did yeh enjoy the garden playground I made with all these sturdy plants o' mine?\n$Their strength is a sign o' my strength as a gardener and a Gym Leader! Yeh sure yer up to facing all that?",
"1_female": null "1_female": "Did yeh enjoy the garden playground I made with all these sturdy plants o' mine?\n$Their strength is a sign o' my strength as a gardener and a Gym Leader! Yeh sure yer up to facing all that?"
}, },
"victory": { "victory": {
"1": "Yeh believe in yer Pokémon… And they believe in yeh, too… It was a fine battle, sprout." "1": "Yeh believe in yer Pokémon… And they believe in yeh, too… It was a fine battle, sprout."
@ -1605,7 +1605,7 @@
"victory": { "victory": {
"1": "I must say, I'm warmed up to you! I might even admire you a little.", "1": "I must say, I'm warmed up to you! I might even admire you a little.",
"2": "Wow! You're great! You've earned my respect! \n$I think your focus and will bowled us over totally. ", "2": "Wow! You're great! You've earned my respect! \n$I think your focus and will bowled us over totally. ",
"2_female": null "2_female": "Wow! You're great! You've earned my respect! \n$I think your focus and will bowled us over totally. "
}, },
"defeat": { "defeat": {
"1": "I sensed your will to win, but I don't lose!", "1": "I sensed your will to win, but I don't lose!",
@ -1618,7 +1618,7 @@
}, },
"victory": { "victory": {
"1": "Amazing! You're very good, aren't you?", "1": "Amazing! You're very good, aren't you?",
"1_female": null "1_female": "Amazing! You're very good, aren't you?"
}, },
"defeat": { "defeat": {
"1": "Yes! My Pokémon and I are perfectly good!" "1": "Yes! My Pokémon and I are perfectly good!"
@ -1660,7 +1660,7 @@
"clay": { "clay": {
"encounter": { "encounter": {
"1": "Harrumph! Kept me waitin', didn't ya, kid? All right, time to see what ya can do!", "1": "Harrumph! Kept me waitin', didn't ya, kid? All right, time to see what ya can do!",
"1_female": null "1_female": "Harrumph! Kept me waitin', didn't ya, kid? All right, time to see what ya can do!"
}, },
"victory": { "victory": {
"1": "Man oh man… It feels good to go all out and still be defeated!" "1": "Man oh man… It feels good to go all out and still be defeated!"
@ -1675,7 +1675,7 @@
}, },
"victory": { "victory": {
"1": "Vaultin' Veluza! Yer a lively one, aren't ya! A little TOO lively, if I do say so myself!", "1": "Vaultin' Veluza! Yer a lively one, aren't ya! A little TOO lively, if I do say so myself!",
"1_female": null "1_female": "Vaultin' Veluza! Yer a lively one, aren't ya! A little TOO lively, if I do say so myself!"
}, },
"defeat": { "defeat": {
"1": "You come back to see me again now, ya hear?" "1": "You come back to see me again now, ya hear?"
@ -1742,7 +1742,7 @@
}, },
"victory": { "victory": {
"1": "Bravo. I realize now your authenticity and magnificence as a Pokémon Trainer. \n$I find much joy in having met you and your Pokémon. You have proven yourself worthy.", "1": "Bravo. I realize now your authenticity and magnificence as a Pokémon Trainer. \n$I find much joy in having met you and your Pokémon. You have proven yourself worthy.",
"1_female": null "1_female": "Bravo. I realize now your authenticity and magnificence as a Pokémon Trainer. \n$I find much joy in having met you and your Pokémon. You have proven yourself worthy."
}, },
"defeat": { "defeat": {
"1": "A grand illusion!" "1": "A grand illusion!"
@ -1751,14 +1751,14 @@
"lorelei": { "lorelei": {
"encounter": { "encounter": {
"1": "No one can best me when it comes to icy Pokémon! Freezing moves are powerful!\n$Your Pokémon will be at my mercy when they are frozen solid! Hahaha! Are you ready?", "1": "No one can best me when it comes to icy Pokémon! Freezing moves are powerful!\n$Your Pokémon will be at my mercy when they are frozen solid! Hahaha! Are you ready?",
"1_female": null "1_female": "No one can best me when it comes to icy Pokémon! Freezing moves are powerful!\n$Your Pokémon will be at my mercy when they are frozen solid! Hahaha! Are you ready?"
}, },
"victory": { "victory": {
"1": "How dare you!" "1": "How dare you!"
}, },
"defeat": { "defeat": {
"1": "There's nothing you can do once you're frozen.", "1": "There's nothing you can do once you're frozen.",
"1_female": null "1_female": "There's nothing you can do once you're frozen."
} }
}, },
"will": { "will": {
@ -1775,11 +1775,11 @@
"malva": { "malva": {
"encounter": { "encounter": {
"1": "I feel like my heart might just burst into flames. \n$I'm burning up with my hatred for you, runt!", "1": "I feel like my heart might just burst into flames. \n$I'm burning up with my hatred for you, runt!",
"1_female": null "1_female": "I feel like my heart might just burst into flames. \n$I'm burning up with my hatred for you, runt!"
}, },
"victory": { "victory": {
"1": "What news… So a new challenger has defeated Malva!", "1": "What news… So a new challenger has defeated Malva!",
"1_female": null "1_female": "What news… So a new challenger has defeated Malva!"
}, },
"defeat": { "defeat": {
"1": "I am delighted! Yes, delighted that I could squash you beneath my heel." "1": "I am delighted! Yes, delighted that I could squash you beneath my heel."
@ -1802,7 +1802,7 @@
}, },
"victory": { "victory": {
"1": "I certainly found an interesting Trainer to face!", "1": "I certainly found an interesting Trainer to face!",
"1_female": null "1_female": "I certainly found an interesting Trainer to face!"
}, },
"defeat": { "defeat": {
"1": "Ahaha. What an interesting battle." "1": "Ahaha. What an interesting battle."
@ -1814,11 +1814,11 @@
}, },
"victory": { "victory": {
"1": "Not bad, kiddo.", "1": "Not bad, kiddo.",
"1_female": null "1_female": "Not bad, kiddo."
}, },
"defeat": { "defeat": {
"1": "Nahahaha! You really are something else, kiddo!", "1": "Nahahaha! You really are something else, kiddo!",
"1_female": null "1_female": "Nahahaha! You really are something else, kiddo!"
} }
}, },
"bruno": { "bruno": {
@ -1838,7 +1838,7 @@
}, },
"victory": { "victory": {
"1": "Whoa, amazing! You're an expert on Pokémon!\nMy research isn't complete yet. OK, you win.", "1": "Whoa, amazing! You're an expert on Pokémon!\nMy research isn't complete yet. OK, you win.",
"1_female": null "1_female": "Whoa, amazing! You're an expert on Pokémon!\nMy research isn't complete yet. OK, you win."
}, },
"defeat": { "defeat": {
"1": "Thanks! Thanks to our battle, I was also able to make progress in my research!" "1": "Thanks! Thanks to our battle, I was also able to make progress in my research!"
@ -1869,11 +1869,11 @@
"lenora": { "lenora": {
"encounter": { "encounter": {
"1": "Well then, challenger, I'm going to research how you battle with the Pokémon you've so lovingly raised!", "1": "Well then, challenger, I'm going to research how you battle with the Pokémon you've so lovingly raised!",
"1_female": null "1_female": "Well then, challenger, I'm going to research how you battle with the Pokémon you've so lovingly raised!"
}, },
"victory": { "victory": {
"1": "My theory about you was correct. You're more than just talented… You're motivated! I salute you!", "1": "My theory about you was correct. You're more than just talented… You're motivated! I salute you!",
"1_female": null "1_female": "My theory about you was correct. You're more than just talented… You're motivated! I salute you!"
}, },
"defeat": { "defeat": {
"1": "Ah ha ha! If you lose, make sure to analyze why, and use that knowledge in your next battle!" "1": "Ah ha ha! If you lose, make sure to analyze why, and use that knowledge in your next battle!"
@ -1899,7 +1899,7 @@
}, },
"defeat": { "defeat": {
"1": "Hey, c'mon! Get serious! You gotta put more out there!", "1": "Hey, c'mon! Get serious! You gotta put more out there!",
"1_female": null "1_female": "Hey, c'mon! Get serious! You gotta put more out there!"
} }
}, },
"olivia": { "olivia": {
@ -1938,7 +1938,7 @@
"flint": { "flint": {
"encounter": { "encounter": {
"1": "Hope you're warmed up, cause here comes the Big Bang!", "1": "Hope you're warmed up, cause here comes the Big Bang!",
"1_female": null "1_female": "Hope you're warmed up, cause here comes the Big Bang!"
}, },
"victory": { "victory": {
"1": "Incredible! Your moves are so hot, they make mine look lukewarm!" "1": "Incredible! Your moves are so hot, they make mine look lukewarm!"
@ -1961,7 +1961,7 @@
"caitlin": { "caitlin": {
"encounter": { "encounter": {
"1": "It's me who appeared when the flower opened up. You who have been waiting…\n$You look like a Pokémon Trainer with refined strength and deepened kindness. \n$What I look for in my opponent is superb strength… \n$Please unleash your power to the fullest!", "1": "It's me who appeared when the flower opened up. You who have been waiting…\n$You look like a Pokémon Trainer with refined strength and deepened kindness. \n$What I look for in my opponent is superb strength… \n$Please unleash your power to the fullest!",
"1_female": null "1_female": "It's me who appeared when the flower opened up. You who have been waiting…\n$You look like a Pokémon Trainer with refined strength and deepened kindness. \n$What I look for in my opponent is superb strength… \n$Please unleash your power to the fullest!"
}, },
"victory": { "victory": {
"1": "My Pokémon and I learned so much! I offer you my thanks." "1": "My Pokémon and I learned so much! I offer you my thanks."
@ -1984,15 +1984,15 @@
"wikstrom": { "wikstrom": {
"encounter": { "encounter": {
"1": "Well met, young challenger! Verily am I the famed blade of hardened steel, Duke Wikstrom! \n$Let the battle begin! En garde!", "1": "Well met, young challenger! Verily am I the famed blade of hardened steel, Duke Wikstrom! \n$Let the battle begin! En garde!",
"1_female": null "1_female": "Well met, young challenger! Verily am I the famed blade of hardened steel, Duke Wikstrom! \n$Let the battle begin! En garde!"
}, },
"victory": { "victory": {
"1": "Glorious! The trust that you share with your honorable Pokémon surpasses even mine!", "1": "Glorious! The trust that you share with your honorable Pokémon surpasses even mine!",
"1_female": null "1_female": "Glorious! The trust that you share with your honorable Pokémon surpasses even mine!"
}, },
"defeat": { "defeat": {
"1": "What manner of magic is this? My heart, it doth hammer ceaselessly in my breast! \n$Winning against such a worthy opponent doth give my soul wings--thus do I soar!", "1": "What manner of magic is this? My heart, it doth hammer ceaselessly in my breast! \n$Winning against such a worthy opponent doth give my soul wings--thus do I soar!",
"1_female": null "1_female": "What manner of magic is this? My heart, it doth hammer ceaselessly in my breast! \n$Winning against such a worthy opponent doth give my soul wings--thus do I soar!"
} }
}, },
"acerola": { "acerola": {
@ -2024,14 +2024,14 @@
}, },
"victory": { "victory": {
"1": "You got me. You are magnificent!", "1": "You got me. You are magnificent!",
"1_female": null, "1_female": "You got me. You are magnificent!",
"2": "I never expected another trainer to beat me… I'm surprised.", "2": "I never expected another trainer to beat me… I'm surprised.",
"2_female": null "2_female": "I never expected another trainer to beat me… I'm surprised."
}, },
"defeat": { "defeat": {
"1": "That was close. Want to try again?", "1": "That was close. Want to try again?",
"2": "It's not that you are weak. Don't let it bother you.", "2": "It's not that you are weak. Don't let it bother you.",
"2_female": null "2_female": "It's not that you are weak. Don't let it bother you."
} }
}, },
"karen": { "karen": {
@ -2057,7 +2057,7 @@
}, },
"victory": { "victory": {
"1": "The power of Grass has wilted… What an incredible Challenger!", "1": "The power of Grass has wilted… What an incredible Challenger!",
"1_female": null "1_female": "The power of Grass has wilted… What an incredible Challenger!"
}, },
"defeat": { "defeat": {
"1": "This'll really leave you in shock and awe." "1": "This'll really leave you in shock and awe."
@ -2077,7 +2077,7 @@
"drasna": { "drasna": {
"encounter": { "encounter": {
"1": "You must be a strong Trainer. Yes, quite strong indeed…\n$That's just wonderful news! Facing opponents like you and your team will make my Pokémon grow like weeds!", "1": "You must be a strong Trainer. Yes, quite strong indeed…\n$That's just wonderful news! Facing opponents like you and your team will make my Pokémon grow like weeds!",
"1_female": null "1_female": "You must be a strong Trainer. Yes, quite strong indeed…\n$That's just wonderful news! Facing opponents like you and your team will make my Pokémon grow like weeds!"
}, },
"victory": { "victory": {
"1": "Oh, dear me. That sure was a quick battle… I do hope you'll come back again sometime!" "1": "Oh, dear me. That sure was a quick battle… I do hope you'll come back again sometime!"
@ -2111,7 +2111,7 @@
"blue": { "blue": {
"encounter": { "encounter": {
"1": "You must be pretty good to get this far.", "1": "You must be pretty good to get this far.",
"1_female": null "1_female": "You must be pretty good to get this far."
}, },
"victory": { "victory": {
"1": "I've only lost to him and now to you… Him? Hee, hee…" "1": "I've only lost to him and now to you… Him? Hee, hee…"
@ -2159,7 +2159,7 @@
}, },
"victory": { "victory": {
"1": "This is the emergence of a new Champion.", "1": "This is the emergence of a new Champion.",
"1_female": null "1_female": "This is the emergence of a new Champion."
}, },
"defeat": { "defeat": {
"1": "I successfully defended my Championship." "1": "I successfully defended my Championship."
@ -2248,7 +2248,7 @@
}, },
"victory": { "victory": {
"1": "Waaah! Waaah! You're so mean!", "1": "Waaah! Waaah! You're so mean!",
"1_female": null "1_female": "Waaah! Waaah! You're so mean!"
}, },
"defeat": { "defeat": {
"1": "And that's that!" "1": "And that's that!"
@ -2257,7 +2257,7 @@
"chuck": { "chuck": {
"encounter": { "encounter": {
"1": "Hah! You want to challenge me? Are you brave or just ignorant?", "1": "Hah! You want to challenge me? Are you brave or just ignorant?",
"1_female": null "1_female": "Hah! You want to challenge me? Are you brave or just ignorant?"
}, },
"victory": { "victory": {
"1": "You're strong! Would you please make me your apprentice?" "1": "You're strong! Would you please make me your apprentice?"
@ -2269,7 +2269,7 @@
"katy": { "katy": {
"encounter": { "encounter": {
"1": "Don't let your guard down unless you would like to find yourself knocked off your feet!", "1": "Don't let your guard down unless you would like to find yourself knocked off your feet!",
"1_female": null "1_female": "Don't let your guard down unless you would like to find yourself knocked off your feet!"
}, },
"victory": { "victory": {
"1": "All of my sweet little Pokémon dropped like flies!" "1": "All of my sweet little Pokémon dropped like flies!"
@ -2303,7 +2303,7 @@
"maylene": { "maylene": {
"encounter": { "encounter": {
"1": "I've come to challenge you now, and I won't hold anything back. \n$Please prepare yourself for battle!", "1": "I've come to challenge you now, and I won't hold anything back. \n$Please prepare yourself for battle!",
"1_female": null "1_female": "I've come to challenge you now, and I won't hold anything back. \n$Please prepare yourself for battle!"
}, },
"victory": { "victory": {
"1": "I admit defeat…" "1": "I admit defeat…"
@ -2326,7 +2326,7 @@
"byron": { "byron": {
"encounter": { "encounter": {
"1": "Trainer! You're young, just like my son, Roark. \n$With more young Trainers taking charge, the future of Pokémon is bright! \n$So, as a wall for young people, I'll take your challenge!", "1": "Trainer! You're young, just like my son, Roark. \n$With more young Trainers taking charge, the future of Pokémon is bright! \n$So, as a wall for young people, I'll take your challenge!",
"1_female": null "1_female": "Trainer! You're young, just like my son, Roark. \n$With more young Trainers taking charge, the future of Pokémon is bright! \n$So, as a wall for young people, I'll take your challenge!"
}, },
"victory": { "victory": {
"1": "Hmm! My sturdy Pokémon--defeated!" "1": "Hmm! My sturdy Pokémon--defeated!"
@ -2349,7 +2349,7 @@
"volkner": { "volkner": {
"encounter": { "encounter": {
"1": "Since you've come this far, you must be quite strong…\n$I hope you're the Trainer who'll make me remember how fun it is to battle!", "1": "Since you've come this far, you must be quite strong…\n$I hope you're the Trainer who'll make me remember how fun it is to battle!",
"1_female": null "1_female": "Since you've come this far, you must be quite strong…\n$I hope you're the Trainer who'll make me remember how fun it is to battle!"
}, },
"victory": { "victory": {
"1": "You've got me beat…\n$Your desire and the noble way your Pokémon battled for you… \n$I even felt thrilled during our match. That was a very good battle." "1": "You've got me beat…\n$Your desire and the noble way your Pokémon battled for you… \n$I even felt thrilled during our match. That was a very good battle."
@ -2452,7 +2452,7 @@
"valerie": { "valerie": {
"encounter": { "encounter": {
"1": "Oh, if it isn't a young Trainer… It is lovely to get to meet you like this. \n$Then I suppose you have earned yourself the right to a battle, as a reward for your efforts. \n$The elusive Fairy may appear frail as the breeze and delicate as a bloom, but it is strong.", "1": "Oh, if it isn't a young Trainer… It is lovely to get to meet you like this. \n$Then I suppose you have earned yourself the right to a battle, as a reward for your efforts. \n$The elusive Fairy may appear frail as the breeze and delicate as a bloom, but it is strong.",
"1_female": null "1_female": "Oh, if it isn't a young Trainer… It is lovely to get to meet you like this. \n$Then I suppose you have earned yourself the right to a battle, as a reward for your efforts. \n$The elusive Fairy may appear frail as the breeze and delicate as a bloom, but it is strong."
}, },
"victory": { "victory": {
"1": "I hope that you will find things worth smiling about tomorrow…" "1": "I hope that you will find things worth smiling about tomorrow…"
@ -2500,7 +2500,7 @@
}, },
"victory": { "victory": {
"1": "Your pink is still lacking, but you're an excellent Trainer with excellent Pokémon.", "1": "Your pink is still lacking, but you're an excellent Trainer with excellent Pokémon.",
"1_female": null "1_female": "Your pink is still lacking, but you're an excellent Trainer with excellent Pokémon."
}, },
"defeat": { "defeat": {
"1": "Too bad for you, I guess." "1": "Too bad for you, I guess."
@ -2509,7 +2509,7 @@
"bede": { "bede": {
"encounter": { "encounter": {
"1": "I suppose I should prove beyond doubt just how pathetic you are and how strong I am.", "1": "I suppose I should prove beyond doubt just how pathetic you are and how strong I am.",
"1_female": null "1_female": "I suppose I should prove beyond doubt just how pathetic you are and how strong I am."
}, },
"victory": { "victory": {
"1": "I see… Well, that's fine. I wasn't really trying all that hard anyway." "1": "I see… Well, that's fine. I wasn't really trying all that hard anyway."
@ -2554,7 +2554,7 @@
"brassius": { "brassius": {
"encounter": { "encounter": {
"1": "I assume you are ready? Let our collaborative work of art begin!", "1": "I assume you are ready? Let our collaborative work of art begin!",
"1_female": null "1_female": "I assume you are ready? Let our collaborative work of art begin!"
}, },
"victory": { "victory": {
"1": "Ahhh…vant-garde!" "1": "Ahhh…vant-garde!"
@ -2566,11 +2566,11 @@
"iono": { "iono": {
"encounter": { "encounter": {
"1": "How're ya feelin' about this battle?\n$...\n$Let's get this show on the road! How strong is our challenger? \n$I 'unno! Let's find out together!", "1": "How're ya feelin' about this battle?\n$...\n$Let's get this show on the road! How strong is our challenger? \n$I 'unno! Let's find out together!",
"1_female": null "1_female": "How're ya feelin' about this battle?\n$...\n$Let's get this show on the road! How strong is our challenger? \n$I 'unno! Let's find out together!"
}, },
"victory": { "victory": {
"1": "You're as flashy and bright as a 10,000,000-volt Thunderbolt, friendo!", "1": "You're as flashy and bright as a 10,000,000-volt Thunderbolt, friendo!",
"1_female": null "1_female": "You're as flashy and bright as a 10,000,000-volt Thunderbolt, friendo!"
}, },
"defeat": { "defeat": {
"1": "Your eyeballs are MINE!" "1": "Your eyeballs are MINE!"
@ -2593,7 +2593,7 @@
}, },
"victory": { "victory": {
"1": "You're cool, my friend—you move my SOUL!", "1": "You're cool, my friend—you move my SOUL!",
"1_female": null "1_female": "You're cool, my friend—you move my SOUL!"
}, },
"defeat": { "defeat": {
"1": "Later, baby!" "1": "Later, baby!"
@ -2627,9 +2627,9 @@
"nessa_elite": { "nessa_elite": {
"encounter": { "encounter": {
"1": "The tides are turning in my favor. Ready to get swept away?", "1": "The tides are turning in my favor. Ready to get swept away?",
"1_female": null, "1_female": "The tides are turning in my favor. Ready to get swept away?",
"2": "Let's make some waves with this battle! I hope you're prepared!", "2": "Let's make some waves with this battle! I hope you're prepared!",
"2_female": null "2_female": "Let's make some waves with this battle! I hope you're prepared!"
}, },
"victory": { "victory": {
"1": "You navigated those waters perfectly... Well done!", "1": "You navigated those waters perfectly... Well done!",
@ -2657,7 +2657,7 @@
"allister_elite": { "allister_elite": {
"encounter": { "encounter": {
"1": "Shadows fall... Are you ready to face your fears?", "1": "Shadows fall... Are you ready to face your fears?",
"1_female": null, "1_female": "Shadows fall... Are you ready to face your fears?",
"2": "Let's see if you can handle the darkness that I command." "2": "Let's see if you can handle the darkness that I command."
}, },
"victory": { "victory": {
@ -2681,7 +2681,7 @@
"defeat": { "defeat": {
"1": "Another storm weathered, another victory claimed! Well fought!", "1": "Another storm weathered, another victory claimed! Well fought!",
"2": "You got caught in my storm! Better luck next time!", "2": "You got caught in my storm! Better luck next time!",
"2_female": null "2_female": "You got caught in my storm! Better luck next time!"
} }
}, },
"alder": { "alder": {

View File

@ -450,6 +450,6 @@
"DRAGON_MEMORY": "Dragon Memory", "DRAGON_MEMORY": "Dragon Memory",
"DARK_MEMORY": "Dark Memory", "DARK_MEMORY": "Dark Memory",
"FAIRY_MEMORY": "Fairy Memory", "FAIRY_MEMORY": "Fairy Memory",
"BLANK_MEMORY": "Blank Memory" "NORMAL_MEMORY": "Normal Memory"
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -1 +1,8 @@
{} {
"safeguardOnAdd": "¡Todos los Pokémon están protegidos por Velo Sagrado!",
"safeguardOnAddPlayer": "¡Tu equipo se ha protegido con Velo Sagrado!",
"safeguardOnAddEnemy": "¡El equipo enemigo se ha protegido con Velo Sagrado!",
"safeguardOnRemove": "¡Velo Sagrado dejó de hacer efecto!",
"safeguardOnRemovePlayer": "El efecto de Velo Sagrado en tu equipo se ha disipado.",
"safeguardOnRemoveEnemy": "El efecto de Velo Sagrado en el equipo enemigo se ha disipado."
}

View File

@ -1,95 +1,99 @@
{ {
"music": "Música: ", "music": "Música: ",
"missing_entries": "{{name}}", "missing_entries": "{{name}}",
"battle_kanto_champion": "B2W2 - ¡Vs Campeón de Kanto!", "battle_kanto_champion": "B2W2 - ¡Vs. Campeón de Kanto!",
"battle_johto_champion": "B2W2 - ¡Vs Campeón de Johto!", "battle_johto_champion": "B2W2 - ¡Vs. Campeón de Johto!",
"battle_hoenn_champion_g5": "B2W2 - ¡Vs Campeón de Hoenn!", "battle_hoenn_champion_g5": "B2W2 - ¡Vs. Campeón de Hoenn!",
"battle_hoenn_champion_g6": "ORAS - ¡Vs Campeón de Hoenn!", "battle_hoenn_champion_g6": "ORAS - ¡Vs. Campeón de Hoenn!",
"battle_sinnoh_champion": "B2W2 - ¡Vs Campeón de Sinnoh!", "battle_sinnoh_champion": "B2W2 - ¡Vs. Campeón de Sinnoh!",
"battle_champion_alder": "BW - ¡Vs Campeón de Teselia!", "battle_champion_alder": "BW - ¡Vs. Campeón de Teselia!",
"battle_champion_iris": "B2W2 - ¡Vs Campeón de Teselia!", "battle_champion_iris": "B2W2 - ¡Vs. Campeón de Teselia!",
"battle_kalos_champion": "XY - ¡Vs Campeón de Kalos!", "battle_kalos_champion": "XY - ¡Vs. Campeón de Kalos!",
"battle_alola_champion": "USUM - ¡Vs Campeón de Alola!", "battle_alola_champion": "USUM - ¡Vs. Campeón de Alola!",
"battle_galar_champion": "SWSH - ¡Vs Campeón de Galar!", "battle_galar_champion": "SWSH - ¡Vs. Campeón de Galar!",
"battle_champion_geeta": "SV - ¡Vs Campeona Ságita!", "battle_champion_geeta": "SV - ¡Vs. Campeona Ságita!",
"battle_champion_nemona": "SV - ¡Vs Campeona Mencía!", "battle_champion_nemona": "SV - ¡Vs. Campeona Mencía!",
"battle_champion_kieran": "SV - ¡Vs Campeón Cass!", "battle_champion_kieran": "SV - ¡Vs. Campeón Cass!",
"battle_hoenn_elite": "ORAS - ¡Vs Alto Mando!", "battle_hoenn_elite": "ORAS - ¡Vs. Alto Mando!",
"battle_unova_elite": "BW - ¡Vs Alto Mando!", "battle_unova_elite": "BW - ¡Vs. Alto Mando!",
"battle_kalos_elite": "XY - ¡Vs Alto Mando!", "battle_kalos_elite": "XY - ¡Vs. Alto Mando!",
"battle_alola_elite": "SM - ¡Vs Alto Mando!", "battle_alola_elite": "SM - ¡Vs. Alto Mando!",
"battle_galar_elite": "SWSH - Torneo de Finalistas", "battle_galar_elite": "SWSH - Torneo de finalistas",
"battle_paldea_elite": "SV - ¡Vs Alto Mando!", "battle_paldea_elite": "SV - ¡Vs. Alto Mando!",
"battle_bb_elite": "SV - ¡Vs Alto Mando de la Academia Arándano!", "battle_bb_elite": "SV - ¡Vs. Alto Mando de la Academia Arándano!",
"battle_final_encounter": "PMD RTDX - Dominio de Rayquaza", "battle_final_encounter": "PMD RTDX - Dominio de Rayquaza",
"battle_final": "BW - ¡Vs Ghechis!", "battle_final": "BW - ¡Vs. Ghechis!",
"battle_kanto_gym": "B2W2 - ¡Vs Líder de Kanto!", "battle_kanto_gym": "B2W2 - ¡Vs. Líder de Kanto!",
"battle_johto_gym": "B2W2 - ¡Vs Líder de Johto!", "battle_johto_gym": "B2W2 - ¡Vs. Líder de Johto!",
"battle_hoenn_gym": "B2W2 - ¡Vs Líder de Hoenn!", "battle_hoenn_gym": "B2W2 - ¡Vs. Líder de Hoenn!",
"battle_sinnoh_gym": "B2W2 - ¡Vs Líder de Sinnoh!", "battle_sinnoh_gym": "B2W2 - ¡Vs. Líder de Sinnoh!",
"battle_unova_gym": "BW - ¡Vs Líder de Teselia!", "battle_unova_gym": "BW - ¡Vs. Líder de Teselia!",
"battle_kalos_gym": "XY - ¡Vs Líder de Kalos!", "battle_kalos_gym": "XY - ¡Vs. Líder de Kalos!",
"battle_galar_gym": "SWSH - ¡Vs Líder de Galar!", "battle_galar_gym": "SWSH - ¡Vs. Líder de Galar!",
"battle_paldea_gym": "SV - ¡Vs Líder de Paldea!", "battle_paldea_gym": "SV - ¡Vs. Líder de Paldea!",
"battle_legendary_kanto": "XY - ¡Vs Legendarios de Kanto!", "battle_legendary_kanto": "XY - ¡Vs. Legendarios de Kanto!",
"battle_legendary_raikou": "HGSS - ¡Vs Raikou!", "battle_legendary_raikou": "HGSS - ¡Vs. Raikou!",
"battle_legendary_entei": "HGSS - ¡Vs Entei!", "battle_legendary_entei": "HGSS - ¡Vs. Entei!",
"battle_legendary_suicune": "HGSS - ¡Vs Suicune!", "battle_legendary_suicune": "HGSS - ¡Vs. Suicune!",
"battle_legendary_lugia": "HGSS - ¡Vs Lugia!", "battle_legendary_lugia": "HGSS - ¡Vs. Lugia!",
"battle_legendary_ho_oh": "HGSS - ¡Vs Ho-oh!", "battle_legendary_ho_oh": "HGSS - ¡Vs. Ho-oh!",
"battle_legendary_regis_g5": "B2W2 - ¡Vs Regis!", "battle_legendary_regis_g5": "B2W2 - ¡Vs. Regis!",
"battle_legendary_regis_g6": "ORAS - ¡Vs Regis!", "battle_legendary_regis_g6": "ORAS - ¡Vs. Regis!",
"battle_legendary_gro_kyo": "ORAS - ¡Vs Groudon/Kyogre!", "battle_legendary_gro_kyo": "ORAS - ¡Vs. Groudon/Kyogre!",
"battle_legendary_rayquaza": "ORAS - ¡Vs Rayquaza!", "battle_legendary_rayquaza": "ORAS - ¡Vs. Rayquaza!",
"battle_legendary_deoxys": "ORAS - ¡Vs Deoxys!", "battle_legendary_deoxys": "ORAS - ¡Vs. Deoxys!",
"battle_legendary_lake_trio": "ORAS - ¡Vs Trío del Lago!", "battle_legendary_lake_trio": "ORAS - ¡Vs. trío del Lago!",
"battle_legendary_sinnoh": "ORAS - ¡Vs Legendarios de Sinnoh!", "battle_legendary_sinnoh": "ORAS - ¡Vs. legendarios de Sinnoh!",
"battle_legendary_dia_pal": "ORAS - ¡Vs Dialga/Palkia!", "battle_legendary_dia_pal": "ORAS - ¡Vs. Dialga/Palkia!",
"battle_legendary_giratina": "ORAS - ¡Vs Giratina!", "battle_legendary_origin_forme": "LA - ¡Vs. Dialga & Palkia, Forma Origen!",
"battle_legendary_arceus": "HGSS - ¡Vs Arceus!", "battle_legendary_giratina": "ORAS - ¡Vs. Giratina!",
"battle_legendary_unova": "BW - ¡Vs Legendarios de Teselia!", "battle_legendary_arceus": "HGSS - ¡Vs. Arceus!",
"battle_legendary_kyurem": "BW - ¡Vs Kyurem!", "battle_legendary_unova": "BW - ¡Vs. legendarios de Teselia!",
"battle_legendary_res_zek": "BW - ¡Vs Reshiram/Zekrom!", "battle_legendary_kyurem": "BW - ¡Vs. Kyurem!",
"battle_legendary_xern_yvel": "XY - ¡Vs Xerneas/Yveltal!", "battle_legendary_res_zek": "BW - ¡Vs. Reshiram/Zekrom!",
"battle_legendary_tapu": "SM - ¡Vs Tapus!", "battle_legendary_xern_yvel": "XY - ¡Vs. Xerneas/Yveltal!",
"battle_legendary_sol_lun": "SM - ¡Vs Solgaleo/Lunala!", "battle_legendary_tapu": "SM - ¡Vs. Tapus!",
"battle_legendary_ub": "SM - ¡Vs Ultraentes!", "battle_legendary_sol_lun": "SM - ¡Vs. Solgaleo/Lunala!",
"battle_legendary_dusk_dawn": "USUM - ¡Vs Necrozma Melena Crepuscular/Alas del Alba!", "battle_legendary_ub": "SM - ¡Vs. Ultraentes!",
"battle_legendary_ultra_nec": "USUM - ¡Vs Ultra-Necrozma!", "battle_legendary_dusk_dawn": "USUM - ¡Vs. Necrozma Melena Crepuscular/Alas del Alba!",
"battle_legendary_zac_zam": "SWSH - ¡Vs Zacian/Zamazenta!", "battle_legendary_ultra_nec": "USUM - ¡Vs. Ultra-Necrozma!",
"battle_legendary_glas_spec": "SWSH - ¡Vs Glastrier/Spectrier!", "battle_legendary_zac_zam": "SWSH - ¡Vs. Zacian/Zamazenta!",
"battle_legendary_calyrex": "SWSH - ¡Vs Calyrex!", "battle_legendary_glas_spec": "SWSH - ¡Vs. Glastrier/Spectrier!",
"battle_legendary_birds_galar": "SWSH - ¡Vs Aves Legendarias de Galar!", "battle_legendary_calyrex": "SWSH - ¡Vs. Calyrex!",
"battle_legendary_ruinous": "SV - ¡Vs Tesoros Funestos!", "battle_legendary_riders": "SWSH - ¡Vs. Calyrex Jinete!",
"battle_legendary_kor_mir": "SV Depths of Area Zero Battle", "battle_legendary_birds_galar": "SWSH - ¡Vs. Aves Legendarias de Galar!",
"battle_legendary_loyal_three": "SV - ¡Vs Compatrones!", "battle_legendary_ruinous": "SV - ¡Vs. Tesoros Funestos!",
"battle_legendary_ogerpon": "SV - ¡Vs Ogerpon!", "battle_legendary_kor_mir": "SV - ¡Batalla en el área Zero!",
"battle_legendary_terapagos": "SV - ¡Vs Terapagos!", "battle_legendary_loyal_three": "SV - ¡Vs. Compatrones!",
"battle_legendary_pecharunt": "SV - ¡Vs Pecharunt!", "battle_legendary_ogerpon": "SV - ¡Vs. Ogerpon!",
"battle_rival": "BW - ¡Vs Rival!", "battle_legendary_terapagos": "SV - ¡Vs. Terapagos!",
"battle_legendary_pecharunt": "SV - ¡Vs. Pecharunt!",
"battle_rival": "BW - ¡Vs. Rival!",
"battle_rival_2": "BW - ¡Vs N!", "battle_rival_2": "BW - ¡Vs N!",
"battle_rival_3": "BW - ¡Vs N (Liga Pokémon)!", "battle_rival_3": "BW - ¡Vs. N (Liga Pokémon)!",
"battle_trainer": "BW - ¡Vs Entrenador!", "battle_trainer": "BW - ¡Vs. entrenador!",
"battle_wild": "BW - ¡Vs Pokémon Salvaje!", "battle_wild": "BW - ¡Vs. Pokémon salvaje!",
"battle_wild_strong": "BW - ¡Vs Pokémon Salvaje Raro!", "battle_wild_strong": "BW - ¡Vs. Pokémon salvaje raro!",
"end_summit": "PMD RTDX - Techo del Cielo", "end_summit": "PMD RTDX - Techo del cielo",
"battle_rocket_grunt": "HGSS Team Rocket Battle", "battle_rocket_grunt": "HGSS - ¡Vs. Team Rocket!",
"battle_aqua_magma_grunt": "ORAS Team Aqua & Magma Battle", "battle_aqua_magma_grunt": "ORAS - ¡Vs. Equipo Aqua & Magma!",
"battle_galactic_grunt": "BDSP Team Galactic Battle", "battle_galactic_grunt": "BDSP - ¡Vs. Equipo Galaxia!",
"battle_plasma_grunt": "BW - ¡Vs Equipo Plasma!", "battle_plasma_grunt": "BW - ¡Vs Equipo Plasma!",
"battle_flare_grunt": "XY Team Flare Battle", "battle_flare_grunt": "XY - ¡Vs. Team Flare!",
"battle_aether_grunt": "SM Aether Foundation Battle", "battle_aether_grunt": "SM - ¡Vs. Fundación Æther!",
"battle_skull_grunt": "SM Team Skull Battle", "battle_skull_grunt": "SM - ¡Vs. Team Skull!",
"battle_macro_grunt": "SWSH Trainer Battle", "battle_macro_grunt": "SWSH - ¡Vs. entrenador!",
"battle_galactic_admin": "BDSP Team Galactic Admin Battle", "battle_galactic_admin": "BDSP - ¡Vs. Comandante del Equipo Galaxia!",
"battle_skull_admin": "SM Team Skull Admin Battle", "battle_skull_admin": "SM - ¡Vs. Comandante del Team Skull!",
"battle_oleana": "SWSH Oleana Battle", "battle_oleana": "SWSH - ¡Vs. Olivia!",
"battle_rocket_boss": "USUM Giovanni Battle", "battle_rocket_boss": "USUM - ¡Vs. Giovanni!",
"battle_aqua_magma_boss": "ORAS Archie & Maxie Battle", "battle_aqua_magma_boss": "ORAS - ¡Vs. Aquiles & Magno!",
"battle_galactic_boss": "BDSP Cyrus Battle", "battle_galactic_boss": "BDSP - ¡Vs. Helio!",
"battle_plasma_boss": "B2W2 Ghetsis Battle", "battle_plasma_boss": "B2W2 - ¡Vs. Ghechis Armonia!",
"battle_flare_boss": "XY Lysandre Battle", "battle_flare_boss": "XY - ¡Vs. Lysson!",
"battle_aether_boss": "SM - ¡Vs. Samina!",
"battle_skull_boss": "SM - ¡Vs. Guzmán!",
"battle_macro_boss": "SWSH - ¡Vs. Rose!",
"abyss": "PMD EoS - Cráter Oscuro", "abyss": "PMD EoS - Cráter Oscuro",
"badlands": "PMD EoS - Valle Desolado", "badlands": "PMD EoS - Valle Desolado",
"beach": "PMD EoS - Risco Calado", "beach": "PMD EoS - Risco Calado",
@ -105,40 +109,40 @@
"graveyard": "PMD EoS - Bosque Misterio", "graveyard": "PMD EoS - Bosque Misterio",
"ice_cave": "PMD EoS - Gran Iceberg", "ice_cave": "PMD EoS - Gran Iceberg",
"island": "PMD EoS - Costa Escarpada", "island": "PMD EoS - Costa Escarpada",
"jungle": "Lmz - Jungle", "jungle": "Lmz - Jungla",
"laboratory": "Firel - Laboratory", "laboratory": "Firel - Laboratorio",
"lake": "PMD EoS - Cueva Cristal", "lake": "PMD EoS - Cueva Cristal",
"meadow": "PMD EoS - Bosque de la Cumbre del Cielo", "meadow": "PMD EoS - Bosque de la Cumbre del Cielo",
"metropolis": "Firel - Metropolis", "metropolis": "Firel - Metrópolis",
"mountain": "PMD EoS - Monte Cuerno", "mountain": "PMD EoS - Monte Cuerno",
"plains": "PMD EoS - Pradera de la Cumbre del Cielo", "plains": "PMD EoS - Pradera de la Cumbre del Cielo",
"power_plant": "PMD EoS - Pradera Destello", "power_plant": "PMD EoS - Pradera Destello",
"ruins": "PMD EoS - Sima Hermética", "ruins": "PMD EoS - Sima Hermética",
"sea": "Andr06 - Marine Mystique", "sea": "Andr06 - Misticismo marino",
"seabed": "Firel - Seabed", "seabed": "Firel - Lecho del mar",
"slum": "Andr06 - Sneaky Snom", "slum": "Andr06 - Snom sigiloso",
"snowy_forest": "PMD EoS - Campo nevado de la Cumbre del Cielo", "snowy_forest": "PMD EoS - Campo nevado de la Cumbre del Cielo",
"space": "Firel - Aether", "space": "Firel - Æther ",
"swamp": "PMD EoS - Mar Circundante", "swamp": "PMD EoS - Mar Circundante",
"tall_grass": "PMD EoS - Bosque Niebla", "tall_grass": "PMD EoS - Bosque Niebla",
"temple": "PMD EoS - Cueva Regia", "temple": "PMD EoS - Cueva Regia",
"town": "PMD EoS - Tema del territorio aleatorio 3", "town": "PMD EoS - Tema del territorio aleatorio 3",
"volcano": "PMD EoS - Cueva Vapor", "volcano": "PMD EoS - Cueva Vapor",
"wasteland": "PMD EoS - Corazón Tierra Oculta", "wasteland": "PMD EoS - Corazón Tierra Oculta",
"encounter_ace_trainer": "BW - Desafío Combate (Entrenador Guay)", "encounter_ace_trainer": "BW - ¡Vs. entrenador guay!",
"encounter_backpacker": "BW - Desafío Combate (Mochilero)", "encounter_backpacker": "BW - ¡Vs. mochilero!",
"encounter_clerk": "BW - Desafío Combate (Empresario)", "encounter_clerk": "BW - ¡Vs. empresario!",
"encounter_cyclist": "BW - Desafío Combate (Ciclista)", "encounter_cyclist": "BW - ¡Vs. ciclista!",
"encounter_lass": "BW - Desafío Combate (Chica)", "encounter_lass": "BW - ¡Vs. chica joven!",
"encounter_parasol_lady": "BW - Desafío Combate (Dama parasol)", "encounter_parasol_lady": "BW - ¡Vs. dama parasol!",
"encounter_pokefan": "BW - Desafío Combate (Pokéfan)", "encounter_pokefan": "BW - ¡Vs. poké-fan!",
"encounter_psychic": "BW - Desafío Combate (Médium)", "encounter_psychic": "BW -¡Vs. médium!",
"encounter_rich": "BW - Desafío Combate (Aristócrata)", "encounter_rich": "BW - ¡Vs. aristócrata!",
"encounter_rival": "BW - Desafío Combate (Cheren)", "encounter_rival": "BW - ¡Vs. Cheren!",
"encounter_roughneck": "BW - Desafío Combate (Calvo)", "encounter_roughneck": "BW - ¡Vs. tío chungo!",
"encounter_scientist": "BW - Desafío Combate (Científico)", "encounter_scientist": "BW - ¡Vs. científico!",
"encounter_twins": "BW - Desafío Combate (Gemelas)", "encounter_twins": "BW - ¡Vs. gemelas!",
"encounter_youngster": "BW - Desafío Combate (Joven)", "encounter_youngster": "BW - ¡Vs. chico joven!",
"heal": "BW - Cura Pokémon", "heal": "BW - Cura Pokémon",
"menu": "PMD EoS - ¡Bienvenidos al mundo de los Pokémon!", "menu": "PMD EoS - ¡Bienvenidos al mundo de los Pokémon!",
"title": "PMD EoS - Tema del menú principal" "title": "PMD EoS - Tema del menú principal"

View File

@ -604,6 +604,6 @@
"DRAGON_MEMORY": "Disco dragón", "DRAGON_MEMORY": "Disco dragón",
"DARK_MEMORY": "Disco siniestro", "DARK_MEMORY": "Disco siniestro",
"FAIRY_MEMORY": "Disco hada", "FAIRY_MEMORY": "Disco hada",
"BLANK_MEMORY": "Disco en blanco" "NORMAL_MEMORY": "Disco normal"
} }
} }

View File

@ -1,3 +1,12 @@
{ {
"bypassSpeedChanceApply": "¡Gracias {{itemName}} {{pokemonName}} puede tener prioridad!" "surviveDamageApply": "{{pokemonNameWithAffix}} ha usado {{typeName}} y ha logrado resistir!",
} "turnHealApply": "{{pokemonNameWithAffix}} ha recuperado unos pocos PS gracias a {{typeName}}!",
"hitHealApply": "{{pokemonNameWithAffix}} ha recuperado unos pocos PS gracias a {{typeName}}!",
"pokemonInstantReviveApply": "{{pokemonNameWithAffix}} ha sido revivido gracias a su {{typeName}}!",
"pokemonResetNegativeStatStageApply": "Las estadísticas bajadas de {{pokemonNameWithAffix}} fueron restauradas gracias a {{typeName}}!",
"moneyInterestApply": "Recibiste intereses de ₽{{moneyAmount}}\ngracias a {{typeName}}!",
"turnHeldItemTransferApply": "{{pokemonNameWithAffix}}'s {{itemName}} fue absorbido\npor {{pokemonName}}'s {{typeName}}!",
"contactHeldItemTransferApply": "{{pokemonNameWithAffix}}'s {{itemName}} fue robado por {{pokemonName}}'s {{typeName}}!",
"enemyTurnHealApply": "¡{{pokemonNameWithAffix}}\nrecuperó algunos PS!",
"bypassSpeedChanceApply": "¡Gracias a su {{itemName}}, {{pokemonName}} puede tener prioridad!"
}

View File

@ -7,5 +7,6 @@
"usedUpAllElectricity": "¡{{pokemonName}} ha descargado toda su electricidad!", "usedUpAllElectricity": "¡{{pokemonName}} ha descargado toda su electricidad!",
"stoleItem": "¡{{pokemonName}} robó el objeto\n{{itemName}} de {{targetName}}!", "stoleItem": "¡{{pokemonName}} robó el objeto\n{{itemName}} de {{targetName}}!",
"statEliminated": "¡Los cambios en estadísticas fueron eliminados!", "statEliminated": "¡Los cambios en estadísticas fueron eliminados!",
"revivalBlessing": "¡{{pokemonName}} ha revivido!" "revivalBlessing": "¡{{pokemonName}} ha revivido!",
"safeguard": "¡{{targetName}} está protegido por Velo Sagrado!"
} }

View File

@ -4,5 +4,11 @@
"mega-y": "Mega {{pokemonName}} Y", "mega-y": "Mega {{pokemonName}} Y",
"primal": "{{pokemonName}} Primigenio", "primal": "{{pokemonName}} Primigenio",
"gigantamax": "G-Max {{pokemonName}}", "gigantamax": "G-Max {{pokemonName}}",
"eternamax": "E-Max {{pokemonName}}" "eternamax": "E-Max {{pokemonName}}",
} "megaChange": "¡{{preName}} ha mega-evolucionado a {{pokemonName}}!",
"gigantamaxChange": "¡{{preName}} ha gigamaxizado a {{pokemonName}}!",
"eternamaxChange": "¡{{preName}} ha eternamaxizado a {{pokemonName}}!",
"revertChange": "¡{{pokemonName}} ha revertido a su forma original!",
"formChange": "¡{{preName}} ha cambiado de forma!",
"disguiseChange": "¡El disfraz ha actuado como señuelo!\t"
}

View File

@ -7,6 +7,7 @@
"pikachuToughCosplay": "Enmascarada", "pikachuToughCosplay": "Enmascarada",
"pikachuPartner": "Compañero", "pikachuPartner": "Compañero",
"eeveePartner": "Compañero", "eeveePartner": "Compañero",
"pichuSpiky": "Picoreja",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
"unownC": "C", "unownC": "C",
@ -49,6 +50,8 @@
"rotomFrost": "Frío", "rotomFrost": "Frío",
"rotomFan": "Ventilador", "rotomFan": "Ventilador",
"rotomMow": "Corte", "rotomMow": "Corte",
"giratinaAltered": "Modificada",
"shayminLand": "Tierra",
"basculinRedStriped": "Raya Roja", "basculinRedStriped": "Raya Roja",
"basculinBlueStriped": "Raya Azul", "basculinBlueStriped": "Raya Azul",
"basculinWhiteStriped": "Raya Blanca", "basculinWhiteStriped": "Raya Blanca",
@ -56,6 +59,10 @@
"deerlingSummer": "Verano", "deerlingSummer": "Verano",
"deerlingAutumn": "Otoño", "deerlingAutumn": "Otoño",
"deerlingWinter": "Invierno", "deerlingWinter": "Invierno",
"tornadusIncarnate": "Avatar",
"thundurusIncarnate": "Avatar",
"landorusIncarnate": "Avatar",
"keldeoOrdinary": "Habitual",
"meloettaAria": "Lírica", "meloettaAria": "Lírica",
"meloettaPirouette": "Danza", "meloettaPirouette": "Danza",
"froakieBattleBond": "Fuerte Afecto", "froakieBattleBond": "Fuerte Afecto",
@ -87,12 +94,12 @@
"furfrouHeart": "Corazón", "furfrouHeart": "Corazón",
"furfrouStar": "Estrella", "furfrouStar": "Estrella",
"furfrouDiamond": "Diamante", "furfrouDiamond": "Diamante",
"furfrouDebutante": "Debutante", "furfrouDebutante": "Señorita",
"furfrouMatron": "Matrón", "furfrouMatron": "Dama",
"furfrouDandy": "Dandi", "furfrouDandy": "Caballero",
"furfrouLaReine": "La Reine", "furfrouLaReine": "Aristócrata",
"furfrouKabuki": "Kabuki", "furfrouKabuki": "Kabuki",
"furfrouPharaoh": "Faraón", "furfrouPharaoh": "Faraónico",
"pumpkabooSmall": "Pequeño", "pumpkabooSmall": "Pequeño",
"pumpkabooLarge": "Grande", "pumpkabooLarge": "Grande",
"pumpkabooSuper": "Enorme", "pumpkabooSuper": "Enorme",
@ -127,11 +134,15 @@
"magearnaOriginal": "Vetusto", "magearnaOriginal": "Vetusto",
"marshadowZenith": "Cénit", "marshadowZenith": "Cénit",
"sinisteaPhony": "Falsificada", "sinisteaPhony": "Falsificada",
"sinisteaAntique": "Auténtica", "sinisteaAntique": "Genuina",
"eiscueNoIce": "Cara Deshielo", "eiscueNoIce": "Cara Deshielo",
"indeedeeMale": "Macho", "indeedeeMale": "Macho",
"indeedeeFemale": "Hembra", "indeedeeFemale": "Hembra",
"morpekoFullBelly": "Saciada",
"zacianHeroOfManyBattles": "Guerrero avezado",
"zamazentaHeroOfManyBattles": "Guerrero avezado",
"zarudeDada": "Papá", "zarudeDada": "Papá",
"enamorusIncarnate": "Avatar",
"squawkabillyGreenPlumage": "Plumaje Verde", "squawkabillyGreenPlumage": "Plumaje Verde",
"squawkabillyBluePlumage": "Plumaje Azul", "squawkabillyBluePlumage": "Plumaje Azul",
"squawkabillyYellowPlumage": "Plumaje Amarillo", "squawkabillyYellowPlumage": "Plumaje Amarillo",
@ -141,9 +152,19 @@
"tatsugiriStretchy": "Estirada", "tatsugiriStretchy": "Estirada",
"gimmighoulChest": "Cofre", "gimmighoulChest": "Cofre",
"gimmighoulRoaming": "Andante", "gimmighoulRoaming": "Andante",
"poltchageistCounterfeit": "Imitación", "koraidonApexBuild": "Forma Plena",
"poltchageistArtisan": "Original", "koraidonLimitedBuild": "Forma Limitada",
"koraidonSprintingBuild": "Forma Carrera",
"koraidonSwimmingBuild": "Forma Nado",
"koraidonGlidingBuild": "Forma Planeo",
"miraidonUltimateMode": "Modo Pleno",
"miraidonLowPowerMode": "Modo Limitado",
"miraidonDriveMode": "Modo Conducción",
"miraidonAquaticMode": "Modo Flote",
"miraidonGlideMode": "Modo Planeo",
"poltchageistCounterfeit": "Fraudulenta",
"poltchageistArtisan": "Opulenta",
"paldeaTaurosCombat": "Combatiente", "paldeaTaurosCombat": "Combatiente",
"paldeaTaurosBlaze": "Ardiente", "paldeaTaurosBlaze": "Ardiente",
"paldeaTaurosAqua": "Acuático" "paldeaTaurosAqua": "Acuático"
} }

View File

@ -3,12 +3,12 @@
"joinTheDiscord": "¡Únete al Discord!", "joinTheDiscord": "¡Únete al Discord!",
"infiniteLevels": "¡Niveles infinitos!", "infiniteLevels": "¡Niveles infinitos!",
"everythingStacks": "¡Todo se acumula!", "everythingStacks": "¡Todo se acumula!",
"optionalSaveScumming": "¡Trampas guardando opcionales!)!", "optionalSaveScumming": "¡Trampas de guardado opcionales!",
"biomes": "¡35 biomas!", "biomes": "¡35 biomas!",
"openSource": "¡Código abierto!", "openSource": "¡Código abierto!",
"playWithSpeed": "¡Juega a velocidad 5x!", "playWithSpeed": "¡Juega a velocidad 5x!",
"liveBugTesting": Arreglo de bugs sobre la marcha!", "liveBugTesting": Testeo de bugs en directo!",
"heavyInfluence": Influencia Alta en RoR2!", "heavyInfluence": Mucha Influencia de RoR2!",
"pokemonRiskAndPokemonRain": "¡Pokémon Risk y Pokémon Rain!", "pokemonRiskAndPokemonRain": "¡Pokémon Risk y Pokémon Rain!",
"nowWithMoreSalt": "¡Con un 33% más de polémica!", "nowWithMoreSalt": "¡Con un 33% más de polémica!",
"infiniteFusionAtHome": "¡Infinite Fusion en casa!", "infiniteFusionAtHome": "¡Infinite Fusion en casa!",
@ -17,16 +17,16 @@
"mubstitute": "¡Mubstituto!", "mubstitute": "¡Mubstituto!",
"thatsCrazy": "¡De locos!", "thatsCrazy": "¡De locos!",
"oranceJuice": "¡Zumo de narancia!", "oranceJuice": "¡Zumo de narancia!",
"questionableBalancing": Balance cuestionable!", "questionableBalancing": Cambios en balance cuestionables!",
"coolShaders": "¡Shaders impresionantes!", "coolShaders": "¡Shaders impresionantes!",
"aiFree": "¡Libre de IA!", "aiFree": "¡Libre de IA!",
"suddenDifficultySpikes": "¡Saltos de dificultad repentinos!", "suddenDifficultySpikes": "¡Saltos de dificultad repentinos!",
"basedOnAnUnfinishedFlashGame": "¡Basado en un juego Flash inacabado!", "basedOnAnUnfinishedFlashGame": "¡Basado en un juego Flash inacabado!",
"moreAddictiveThanIntended": "¡Más adictivo de la cuenta!", "moreAddictiveThanIntended": "¡Más adictivo de lo previsto!",
"mostlyConsistentSeeds": "¡Semillas CASI consistentes!", "mostlyConsistentSeeds": "¡Semillas CASI consistentes!",
"achievementPointsDontDoAnything": "¡Los Puntos de Logro no hacen nada!", "achievementPointsDontDoAnything": "¡Los Puntos de Logro no hacen nada!",
"youDoNotStartAtLevel": "¡No empiezas al nivel 2000!", "youDoNotStartAtLevel": "¡No empiezas al nivel 2000!",
"dontTalkAboutTheManaphyEggIncident": "¡No hablen del incidente del Huevo Manaphy!", "dontTalkAboutTheManaphyEggIncident": "¡No se habla del Incidente Manaphy!",
"alsoTryPokengine": "¡Prueba también Pokéngine!", "alsoTryPokengine": "¡Prueba también Pokéngine!",
"alsoTryEmeraldRogue": "¡Prueba también Emerald Rogue!", "alsoTryEmeraldRogue": "¡Prueba también Emerald Rogue!",
"alsoTryRadicalRed": "¡Prueba también Radical Red!", "alsoTryRadicalRed": "¡Prueba también Radical Red!",

View File

@ -1 +1,16 @@
{} {
"misty": "Niebla",
"mistyStartMessage": "¡La niebla ha envuelto el terreno de combate!",
"mistyClearMessage": "La niebla se ha disipado.",
"mistyBlockMessage": "¡El campo de niebla ha protegido a {{pokemonNameWithAffix}} ",
"electric": "Eléctrico",
"electricStartMessage": "¡Se ha formado un campo de corriente eléctrica en el terreno\nde combate!",
"electricClearMessage": "El campo de corriente eléctrica ha desaparecido.\t",
"grassy": "Hierba",
"grassyStartMessage": "¡El terreno de combate se ha cubierto de hierba!",
"grassyClearMessage": "La hierba ha desaparecido.",
"psychic": "Psíquico",
"psychicStartMessage": "¡El terreno de combate se ha vuelto muy extraño!",
"psychicClearMessage": "Ha desaparecido la extraña sensación que se percibía en el terreno\nde combate.",
"defaultBlockMessage": "¡El campo {{terrainName}} ha protegido a {{pokemonNameWithAffix}} "
}

View File

@ -1,7 +1,7 @@
{ {
"brock": "Brock", "brock": "Brock",
"misty": "Misty", "misty": "Misty",
"lt_surge": "Tt. Surge", "lt_surge": "Teniente Surge",
"erika": "Erika", "erika": "Erika",
"janine": "Sachiko", "janine": "Sachiko",
"sabrina": "Sabrina", "sabrina": "Sabrina",
@ -23,7 +23,7 @@
"winona": "Alana", "winona": "Alana",
"tate": "Vito", "tate": "Vito",
"liza": "Leti", "liza": "Leti",
"juan": "Galán", "juan": "Galano",
"roark": "Roco", "roark": "Roco",
"gardenia": "Gardenia", "gardenia": "Gardenia",
"maylene": "Brega", "maylene": "Brega",
@ -34,7 +34,7 @@
"volkner": "Lectro", "volkner": "Lectro",
"cilan": "Millo", "cilan": "Millo",
"chili": "Zeo", "chili": "Zeo",
"cress": "Maiz", "cress": "Maíz",
"cheren": "Cheren", "cheren": "Cheren",
"lenora": "Aloe", "lenora": "Aloe",
"roxie": "Hiedra", "roxie": "Hiedra",
@ -57,7 +57,7 @@
"nessa": "Cathy", "nessa": "Cathy",
"kabu": "Naboru", "kabu": "Naboru",
"bea": "Judith", "bea": "Judith",
"allister": "Allistair", "allister": "Alistair",
"opal": "Sally", "opal": "Sally",
"bede": "Berto", "bede": "Berto",
"gordie": "Morris", "gordie": "Morris",
@ -123,30 +123,28 @@
"leon": "Lionel", "leon": "Lionel",
"rival": "Finn", "rival": "Finn",
"rival_female": "Ivy", "rival_female": "Ivy",
"archer": "Archer", "archer": "Atlas",
"ariana": "Ariana", "ariana": "Atenea",
"proton": "Proton", "proton": "Protón",
"petrel": "Petrel", "petrel": "Petrel",
"tabitha": "Tabitha", "tabitha": "Tatiano",
"courtney": "Courtney", "courtney": "Carola",
"shelly": "Shelly", "shelly": "Silvina",
"matt": "Matt", "matt": "Matías",
"mars": "Mars", "mars": "Venus",
"jupiter": "Jupiter", "jupiter": "Ceres",
"saturn": "Saturn", "saturn": "Saturno",
"zinzolin": "Zinzolin", "zinzolin": "Menek",
"rood": "Rood", "rood": "Ruga",
"xerosic": "Xerosic", "xerosic": "Xero",
"bryony": "Bryony", "bryony": "Begonia",
"maxie": "Magno",
"archie": "Aquiles",
"cyrus": "Helio",
"ghetsis": "Ghechis",
"lysandre": "Lysson",
"faba": "Fabio", "faba": "Fabio",
"maxie": "Maxie",
"archie": "Archie",
"cyrus": "Cyrus",
"ghetsis": "Ghetsis",
"lysandre": "Lysandre",
"lusamine": "Samina", "lusamine": "Samina",
"blue_red_double": "Azul y Rojo", "blue_red_double": "Azul y Rojo",
"red_blue_double": "Rojo y Azul", "red_blue_double": "Rojo y Azul",
"tate_liza_double": "Vito y Leti", "tate_liza_double": "Vito y Leti",

View File

@ -47,5 +47,11 @@
"tailwindOnRemovePlayer": "Le vent arrière soufflant\nsur votre équipe sarrête !", "tailwindOnRemovePlayer": "Le vent arrière soufflant\nsur votre équipe sarrête !",
"tailwindOnRemoveEnemy": "Le vent arrière soufflant\nsur léquipe ennemie sarrête !", "tailwindOnRemoveEnemy": "Le vent arrière soufflant\nsur léquipe ennemie sarrête !",
"happyHourOnAdd": "Lambiance est euphorique !", "happyHourOnAdd": "Lambiance est euphorique !",
"happyHourOnRemove": "Lambiance se calme !" "happyHourOnRemove": "Lambiance se calme !",
"safeguardOnAdd": "Un voile mystérieux recouvre\ntout le terrain !",
"safeguardOnAddPlayer": "Un voile mystérieux recouvre\nvotre équipe !",
"safeguardOnAddEnemy": "Un voile mystérieux recouvre\nléquipe ennemie !",
"safeguardOnRemove": "Le terrain nest plus protégé\npar le voile mystérieux !",
"safeguardOnRemovePlayer": "Votre équipe nest plus protégée\npar le voile mystérieux !",
"safeguardOnRemoveEnemy": "Léquipe ennemie nest plus protégée\npar le voile mystérieux !"
} }

View File

@ -1,4 +1,6 @@
{ {
"ending": "@c{smile}Oh ? Tas gagné ?@d{96} @c{smile_eclosed}Jaurais dû le savoir.\nMais de voilà de retour.\n$@c{smile}Cest terminé.@d{64} Tas brisé ce cycle infernal.\n$@c{serious_smile_fists}Tas aussi accompli ton rêve non ?\nTu nas pas connu la moindre défaite.\n$@c{neutral}Je suis le seul à me souvenir de ce que tas fait.@d{96}\nJe pense que ça ira, non ?\n$@c{serious_smile_fists}Ta légende vivra à jamais dans nos cœurs.\n$@c{smile_eclosed}Bref, jen ai un peu marre de ce endroit, pas toi ? Rentrons à la maison.\n$@c{serious_smile_fists}On se fera un ptit combat une fois rentrés ?\nSi tes daccord.", "ending": "@c{smile}Oh ? Tas gagné ?@d{96} @c{smile_eclosed}Jaurais dû le savoir.\nMais de voilà de retour.\n$@c{smile}Cest terminé.@d{64} Tas brisé ce cycle infernal.\n$@c{serious_smile_fists}Tas aussi accompli ton rêve non ?\nTu nas pas connu la moindre défaite.\n$@c{neutral}Je suis le seul à me souvenir de ce que tas fait.@d{96}\nJe pense que ça ira, non ?\n$@c{serious_smile_fists}Ta légende vivra à jamais dans nos cœurs.\n$@c{smile_eclosed}Bref, jen ai un peu marre de ce endroit, pas toi ? Rentrons à la maison.\n$@c{serious_smile_fists}On se fera un ptit combat une fois rentrés ?\nSi tes daccord.",
"ending_female": "@c{shock}Tes revenu ?@d{32} Ça veut dire…@d{96} que tas gagné ?!\n@c{smile_ehalf}Jaurais dû le savoir.\n$@c{smile_eclosed}Bien sûr… Jai toujours eu ce sentiment.\n@c{smile}Cest fini maitenant hein ? Tas brisé ce cycle.\n$@c{smile_ehalf}Tas aussi accompli ton rêve non ?\nTu nas pas connu la moindre défaite.\n$Je serai la seule à me souvenir de ce que tas fait.\n@c{angry_mopen}Je tâcherai de ne pas oublier !\n$@c{smile_wave_wink}Jdéconne !@d{64} @c{smile}Jamais joublierai.@d{32}\nTa légende vivra à jamais dans nos cœurs.\n$@c{smile_wave}Bon,@d{64} il se fait tard…@d{96} je crois ?\nDifficile à dire ici.\n$Rentrons, @c{smile_wave_wink}et demain on se fera un ptit combat, comme au bon vieux temps ?" "ending_female": "@c{shock}Tes revenu ?@d{32} Ça veut dire…@d{96} que tas gagné ?!\n@c{smile_ehalf}Jaurais dû le savoir.\n$@c{smile_eclosed}Bien sûr… Jai toujours eu ce sentiment.\n@c{smile}Cest fini maitenant hein ? Tas brisé ce cycle.\n$@c{smile_ehalf}Tas aussi accompli ton rêve non ?\nTu nas pas connu la moindre défaite.\n$Je serai la seule à me souvenir de ce que tas fait.\n@c{angry_mopen}Je tâcherai de ne pas oublier !\n$@c{smile_wave_wink}Jdéconne !@d{64} @c{smile}Jamais joublierai.@d{32}\nTa légende vivra à jamais dans nos cœurs.\n$@c{smile_wave}Bon,@d{64} il se fait tard…@d{96} je crois ?\nDifficile à dire ici.\n$Rentrons, @c{smile_wave_wink}et demain on se fera un ptit combat, comme au bon vieux temps ?",
} "ending_endless": "Félicitations ! Vous avez atteint la fin actuelle.\nPlus de contenu à venir bientôt !",
"ending_name": "Les devs"
}

View File

@ -450,6 +450,6 @@
"DRAGON_MEMORY": "ROM Dragon", "DRAGON_MEMORY": "ROM Dragon",
"DARK_MEMORY": "ROM Ténèbres", "DARK_MEMORY": "ROM Ténèbres",
"FAIRY_MEMORY": "ROM Fée", "FAIRY_MEMORY": "ROM Fée",
"BLANK_MEMORY": "ROM Vierge" "NORMAL_MEMORY": "ROM Normal"
} }
} }

View File

@ -61,5 +61,6 @@
"suppressAbilities": "Le talent de {{pokemonName}}\na été rendu inactif !", "suppressAbilities": "Le talent de {{pokemonName}}\na été rendu inactif !",
"revivalBlessing": "{{pokemonName}} a repris connaissance\net est prêt à se battre de nouveau !", "revivalBlessing": "{{pokemonName}} a repris connaissance\net est prêt à se battre de nouveau !",
"swapArenaTags": "Les effets affectant chaque côté du terrain\nont été échangés par {{pokemonName}} !", "swapArenaTags": "Les effets affectant chaque côté du terrain\nont été échangés par {{pokemonName}} !",
"exposedMove": "{{targetPokemonName}} est identifié\npar {{pokemonName}} !" "exposedMove": "{{targetPokemonName}} est identifié\npar {{pokemonName}} !",
"safeguard": "{{targetName}} est protégé\npar la capacité Rune Protect !"
} }

View File

@ -13,7 +13,8 @@
"SPD": "Vitesse", "SPD": "Vitesse",
"SPDshortened": "Vit", "SPDshortened": "Vit",
"ACC": "Précison", "ACC": "Précison",
"EVA": "Esquive" "EVA": "Esquive",
"HPStat": "PV"
}, },
"Type": { "Type": {
"UNKNOWN": "Inconnu", "UNKNOWN": "Inconnu",
@ -37,4 +38,4 @@
"FAIRY": "Fée", "FAIRY": "Fée",
"STELLAR": "Stellaire" "STELLAR": "Stellaire"
} }
} }

View File

@ -13,5 +13,32 @@
"metFragment": { "metFragment": {
"normal": "rencontré au N.{{level}},\n{{biome}}.", "normal": "rencontré au N.{{level}},\n{{biome}}.",
"apparently": "apparemment rencontré au N.{{level}},\n{{biome}}." "apparently": "apparemment rencontré au N.{{level}},\n{{biome}}."
},
"natureFragment": {
"Hardy": "{{nature}}",
"Lonely": "{{nature}}",
"Brave": "{{nature}}",
"Adamant": "{{nature}}",
"Naughty": "{{nature}}",
"Bold": "{{nature}}",
"Docile": "{{nature}}",
"Relaxed": "{{nature}}",
"Impish": "{{nature}}",
"Lax": "{{nature}}",
"Timid": "{{nature}}",
"Hasty": "{{nature}}",
"Serious": "{{nature}}",
"Jolly": "{{nature}}",
"Naive": "{{nature}}",
"Modest": "{{nature}}",
"Mild": "{{nature}}",
"Quiet": "{{nature}}",
"Bashful": "{{nature}}",
"Rash": "{{nature}}",
"Calm": "{{nature}}",
"Gentle": "{{nature}}",
"Sassy": "{{nature}}",
"Careful": "{{nature}}",
"Quirky": "{{nature}}"
} }
} }

View File

@ -101,8 +101,8 @@
"workers": "Ouvriers", "workers": "Ouvriers",
"youngster": "Gamin", "youngster": "Gamin",
"rocket_grunt": "Sbire de la Team Rocket", "rocket_grunt": "Sbire de la Team Rocket",
"rocket_grunt_female": "Sbire de la Team Rocket",
"rocket_grunts": "Sbires de la Team Rocket", "rocket_grunts": "Sbires de la Team Rocket",
"rocket_grunt_female": "Sbire de la Team Rocket",
"magma_grunt": "Sbire de la Team Magma", "magma_grunt": "Sbire de la Team Magma",
"magma_grunt_female": "Sbire de la Team Magma", "magma_grunt_female": "Sbire de la Team Magma",
"magma_grunts": "Sbires de la Team Magma", "magma_grunts": "Sbires de la Team Magma",
@ -123,6 +123,7 @@
"aether_grunts": "Employés de la Fondation Æther", "aether_grunts": "Employés de la Fondation Æther",
"skull_grunt": "Sbire de la Team Skull", "skull_grunt": "Sbire de la Team Skull",
"skull_grunt_female": "Sbire de la Team Skull", "skull_grunt_female": "Sbire de la Team Skull",
"skull_grunts": "Sbires de la Team Skull",
"macro_grunt": "Employé de Macro Cosmos", "macro_grunt": "Employé de Macro Cosmos",
"macro_grunt_female": "Employée de Macro Cosmos", "macro_grunt_female": "Employée de Macro Cosmos",
"macro_grunts": "Employés de Macro Cosmos" "macro_grunts": "Employés de Macro Cosmos"

View File

@ -1 +1,8 @@
{} {
"safeguardOnAdd": "Un velo mistico ricopre il campo!",
"safeguardOnAddPlayer": "Un velo mistico ricopre la tua squadra!",
"safeguardOnAddEnemy": "Un velo mistico ricopre la squadra avversaria!",
"safeguardOnRemove": "Il campo non è più protetto da Salvaguardia!",
"safeguardOnRemovePlayer": "La tua squadra non è più protetta da Salvaguardia!",
"safeguardOnRemoveEnemy": "La squadra avversaria non è più protetta da Salvaguardia!"
}

View File

@ -604,6 +604,6 @@
"DRAGON_MEMORY": "ROM Drago", "DRAGON_MEMORY": "ROM Drago",
"DARK_MEMORY": "ROM Buio", "DARK_MEMORY": "ROM Buio",
"FAIRY_MEMORY": "ROM Folletto", "FAIRY_MEMORY": "ROM Folletto",
"BLANK_MEMORY": "ROM Vuota" "NORMAL_MEMORY": "ROM Normale"
} }
} }

View File

@ -61,5 +61,6 @@
"suppressAbilities": "Labilità di {{pokemonName}}\nperde ogni efficacia!", "suppressAbilities": "Labilità di {{pokemonName}}\nperde ogni efficacia!",
"revivalBlessing": "{{pokemonName}} torna in forze!", "revivalBlessing": "{{pokemonName}} torna in forze!",
"swapArenaTags": "{{pokemonName}} ha invertito gli effetti attivi\nnelle due metà del campo!", "swapArenaTags": "{{pokemonName}} ha invertito gli effetti attivi\nnelle due metà del campo!",
"exposedMove": "{{pokemonName}} ha identificato\n{{targetPokemonName}}!" "exposedMove": "{{pokemonName}} ha identificato\n{{targetPokemonName}}!",
"safeguard": "Salvaguardia protegge {{targetName}}!"
} }

View File

@ -1,42 +1,47 @@
{ {
"SEND_OUT": "Manda in campo", "SEND_OUT": "Manda in campo",
"SUMMARY": "Sommario", "SUMMARY": "Sommario",
"CANCEL": "Annulla", "CANCEL": "Annulla",
"RELEASE": "Rilascia", "RELEASE": "Rilascia",
"APPLY": "Applica", "APPLY": "Applica",
"TEACH": "Insegna", "TEACH": "Insegna",
"SPLICE": "Unisci", "SPLICE": "Unisci",
"UNSPLICE": "Dividi", "UNSPLICE": "Dividi",
"ACTIVATE": "Attiva", "ACTIVATE": "Attiva",
"DEACTIVATE": "Disattiva", "DEACTIVATE": "Disattiva",
"TRANSFER": "Trasferisci", "TRANSFER": "Trasferisci",
"ALL": "Tutto", "ALL": "Tutto",
"PASS_BATON": "Staffetta", "PASS_BATON": "Staffetta",
"UNPAUSE_EVOLUTION": "Consenti evoluzione", "UNPAUSE_EVOLUTION": "Consenti evoluzione",
"REVIVE": "Revitalizza", "REVIVE": "Revitalizza",
"RENAME": "Rinomina", "RENAME": "Rinomina",
"choosePokemon": "Scegli un Pokémon.", "choosePokemon": "Scegli un Pokémon.",
"doWhatWithThisPokemon": "Hai selezionato questo Pokémon.", "doWhatWithThisPokemon": "Hai selezionato questo Pokémon.",
"noEnergy": "{{pokemonName}} non ha più energie\nper lottare!", "noEnergy": "{{pokemonName}} non ha più energie\nper lottare!",
"hasEnergy": "{{pokemonName}} ha ancora energie\nper lottare!", "hasEnergy": "{{pokemonName}} ha ancora energie\nper lottare!",
"cantBeUsed": "{{pokemonName}} non può essere usato\nin questa sfida!", "cantBeUsed": "{{pokemonName}} non può essere usato\nin questa sfida!",
"tooManyItems": "{{pokemonName}} possiede già\nquest'oggetto in abbondanza!", "tooManyItems": "{{pokemonName}} possiede già\nquest'oggetto in abbondanza!",
"anyEffect": "Non avrebbe alcun effetto.", "anyEffect": "Non avrebbe alcun effetto.",
"unpausedEvolutions": "{{pokemonName}} può di nuovo evolversi.", "unpausedEvolutions": "{{pokemonName}} può di nuovo evolversi.",
"unspliceConfirmation": "Vuoi davvero dividere {{fusionName}}\nda {{pokemonName}}? {{fusionName}} andrà perduto.", "unspliceConfirmation": "Vuoi davvero dividere {{fusionName}}\nda {{pokemonName}}? {{fusionName}} andrà perduto.",
"wasReverted": "{{fusionName}} è tornato ad essere {{pokemonName}}.", "wasReverted": "{{fusionName}} è tornato ad essere {{pokemonName}}.",
"releaseConfirmation": "Vuoi davvero liberare {{pokemonName}}?", "releaseConfirmation": "Vuoi davvero liberare {{pokemonName}}?",
"releaseInBattle": "Non puoi liberare un Pokémon che sta combattendo!", "releaseInBattle": "Non puoi liberare un Pokémon che sta combattendo!",
"selectAMove": "Scegli una mossa.", "selectAMove": "Scegli una mossa.",
"changeQuantity": "Scegli un oggetto da trasferire.\nUsa < e > per cambiarne la quantità.", "changeQuantity": "Scegli un oggetto da trasferire.\nUsa < e > per cambiarne la quantità.",
"selectAnotherPokemonToSplice": "Scegli un altro Pokémon da unire.", "selectAnotherPokemonToSplice": "Scegli un altro Pokémon da unire.",
"cancel": "Annulla", "cancel": "Annulla",
"goodbye": "Addio, {{pokemonName}}!", "able": "Sì!",
"byebye": "Ciao ciao, {{pokemonName}}!", "notAble": "No!",
"farewell": "Arrivederci, {{pokemonName}}!", "learned": "La conosce!",
"soLong": "È stato bello, {{pokemonName}}!", "goodbye": "Addio, {{pokemonName}}!",
"thisIsWhereWePart": "Le nostre strade si dividono, {{pokemonName}}!", "byebye": "Ciao ciao, {{pokemonName}}!",
"illMissYou": "Mi mancherai, {{pokemonName}}!", "farewell": "Arrivederci, {{pokemonName}}!",
"illNeverForgetYou": "Non ti dimenticherò, {{pokemonName}}!", "soLong": "È stato bello, {{pokemonName}}!",
"untilWeMeetAgain": "Alla prossima, {{pokemonName}}!" "thisIsWhereWePart": "Le nostre strade si dividono, {{pokemonName}}!",
} "illMissYou": "Mi mancherai, {{pokemonName}}!",
"illNeverForgetYou": "Non ti dimenticherò, {{pokemonName}}!",
"untilWeMeetAgain": "Alla prossima, {{pokemonName}}!",
"sayonara": "Sayonara, {{pokemonName}}!",
"smellYaLater": "Ci becchiamo, {{pokemonName}}!"
}

View File

@ -2,5 +2,6 @@
"moveset": "Set di mosse", "moveset": "Set di mosse",
"gender": "Genere:", "gender": "Genere:",
"ability": "Abilità:", "ability": "Abilità:",
"nature": "Natura:" "nature": "Natura:",
} "form": "Forma:"
}

View File

@ -1 +1,23 @@
{} {
"type_null": "Tipo Zero",
"great_tusk": "Grandizanne",
"scream_tail": "Codaurlante",
"brute_bonnet": "Fungofurioso",
"flutter_mane": "Crinealato",
"slither_wing": "Alirasenti",
"sandy_shocks": "Peldisabbia",
"iron_treads": "Solcoferreo",
"iron_bundle": "Saccoferreo",
"iron_hands": "Manoferrea",
"iron_jugulis": "Colloferreo",
"iron_moth": "Falenaferrea",
"iron_thorns": "Spineferree",
"roaring_moon": "Lunaruggente",
"iron_valiant": "Eroeferreo",
"walking_wake": "Acquecrespe",
"iron_leaves": "Fogliaferrea",
"gouging_fire": "Vampeaguzze",
"raging_bolt": "Furiatonante",
"iron_boulder": "Massoferreo",
"iron_crown": "Capoferreo"
}

View File

@ -12,7 +12,6 @@
"blockItemTheft": "{{pokemonNameWithAffix}}の {{abilityName}}で\n道具を うばわれない", "blockItemTheft": "{{pokemonNameWithAffix}}の {{abilityName}}で\n道具を うばわれない",
"typeImmunityHeal": "{{pokemonNameWithAffix}}は {{abilityName}}で\n体力を 回復した", "typeImmunityHeal": "{{pokemonNameWithAffix}}は {{abilityName}}で\n体力を 回復した",
"nonSuperEffectiveImmunity": "{{pokemonNameWithAffix}}は {{abilityName}}で\nダメージを 受けない。", "nonSuperEffectiveImmunity": "{{pokemonNameWithAffix}}は {{abilityName}}で\nダメージを 受けない。",
"postDefendDisguise": "{{pokemonNameWithAffix}}の\nばけのかわが はがれた",
"moveImmunity": "{{pokemonNameWithAffix}}には\n効果が ないようだ…", "moveImmunity": "{{pokemonNameWithAffix}}には\n効果が ないようだ…",
"reverseDrain": "{{pokemonNameWithAffix}}は\nヘドロえきを 吸い取った", "reverseDrain": "{{pokemonNameWithAffix}}は\nヘドロえきを 吸い取った",
"postDefendTypeChange": "{{pokemonNameWithAffix}}は {{abilityName}}で\n{{typeName}}タイプに なった!", "postDefendTypeChange": "{{pokemonNameWithAffix}}は {{abilityName}}で\n{{typeName}}タイプに なった!",
@ -60,4 +59,4 @@
"postSummonTabletsOfRuin": "{{pokemonNameWithAffix}}の わざわいのおふだ\nまわりの {{statName}}が 弱まった!", "postSummonTabletsOfRuin": "{{pokemonNameWithAffix}}の わざわいのおふだ\nまわりの {{statName}}が 弱まった!",
"postSummonBeadsOfRuin": "{{pokemonNameWithAffix}}の わざわいのたまで\nまわりの {{statName}}が 弱まった!", "postSummonBeadsOfRuin": "{{pokemonNameWithAffix}}の わざわいのたまで\nまわりの {{statName}}が 弱まった!",
"preventBerryUse": "{{pokemonNameWithAffix}}は 緊張して\nきのみが 食べられなくなった" "preventBerryUse": "{{pokemonNameWithAffix}}は 緊張して\nきのみが 食べられなくなった"
} }

View File

@ -6,7 +6,7 @@
"name": "なし" "name": "なし"
}, },
"MoneyAchv": { "MoneyAchv": {
"description": "一回の ランで {{moneyAmount}}を 稼ぐ" "description": "一回の ランで {{moneyAmount}}を 稼ぐ"
}, },
"10K_MONEY": { "10K_MONEY": {
"name": "お金を持つ人" "name": "お金を持つ人"
@ -21,7 +21,7 @@
"name": "超富裕層" "name": "超富裕層"
}, },
"DamageAchv": { "DamageAchv": {
"description": "一撃で {{damageAmount}}ダメージを 与える" "description": "一撃で HP{{damageAmount}}の ダメージを 与える"
}, },
"250_DMG": { "250_DMG": {
"name": "力持ち" "name": "力持ち"
@ -33,10 +33,11 @@
"name": "カカロット" "name": "カカロット"
}, },
"10000_DMG": { "10000_DMG": {
"name": "ワンパンマン" "name": "ワンパンマン",
"name_female": "ワンパンウーマン"
}, },
"HealAchv": { "HealAchv": {
"description": "一つの 技や 特性や 持っているアイテムで {{healAmount}}{{HP}}を 一気に 回復する" "description": "一つの 技や 特性や 持っているアイテムで\n{{healAmount}}{{HP}}を 一気に 回復する"
}, },
"250_HEAL": { "250_HEAL": {
"name": "回復発見者" "name": "回復発見者"
@ -82,7 +83,7 @@
}, },
"TRANSFER_MAX_BATTLE_STAT": { "TRANSFER_MAX_BATTLE_STAT": {
"name": "同力", "name": "同力",
"description": "少なくとも 一つの 能力を 最大まで あげて 他の 手持ちポケモンに バトンタッチする" "description": "少なくとも 一つの 能力を 最大まで あげて\n他の 手持ちポケモンに バトンタッチする"
}, },
"MAX_FRIENDSHIP": { "MAX_FRIENDSHIP": {
"name": "マブ達", "name": "マブ達",
@ -106,7 +107,7 @@
}, },
"SPLICE": { "SPLICE": {
"name": "インフィニット・フュジョン", "name": "インフィニット・フュジョン",
"description": "いでんしのくさびで 二つの ポケモンを 吸収合体させる" "description": "遺伝子のくさびで 二つの ポケモンを 吸収合体させる"
}, },
"MINI_BLACK_HOLE": { "MINI_BLACK_HOLE": {
"name": "アイテムホーリック", "name": "アイテムホーリック",
@ -161,8 +162,8 @@
"description": "クラシックモードを クリアする" "description": "クラシックモードを クリアする"
}, },
"UNEVOLVED_CLASSIC_VICTORY": { "UNEVOLVED_CLASSIC_VICTORY": {
"name": "Bring Your Child To Work Day", "name": "はじめてのおつかい",
"description": "Beat the game in Classic Mode with at least one unevolved party member." "description": "少なくとも 一つの 進化していない 手持ちポケモンで\nクラシックモードを クリアする"
}, },
"MONO_GEN_ONE": { "MONO_GEN_ONE": {
"name": "原始", "name": "原始",
@ -260,5 +261,9 @@
"FRESH_START": { "FRESH_START": {
"name": "一発で!", "name": "一発で!",
"description": "出直しチャレンジを クリアする" "description": "出直しチャレンジを クリアする"
},
"INVERSE_BATTLE": {
"name": "カガミよミガカ",
"description": "反転バトルチャレンジを クリアする\nるすアリク をジンレャチルトバ転反"
} }
} }

View File

@ -1,4 +1,12 @@
{ {
"trappedDesc": "捕らわれること",
"flinchedDesc": "ひるむこと",
"confusedDesc": "混乱",
"infatuatedDesc": "メロメロ",
"seedDesc": "種を植えつくこと",
"nightmareDesc": "あくむ",
"ingrainDesc": "根",
"drowsyDesc": "ねむけ",
"rechargingLapse": "{{pokemonNameWithAffix}}は 攻撃の 反動で 動けない!", "rechargingLapse": "{{pokemonNameWithAffix}}は 攻撃の 反動で 動けない!",
"trappedOnAdd": "{{pokemonNameWithAffix}}は もう 逃げられない!", "trappedOnAdd": "{{pokemonNameWithAffix}}は もう 逃げられない!",
"trappedOnRemove": "{{pokemonNameWithAffix}}は\n{{moveName}}の 効果が 解けた!", "trappedOnRemove": "{{pokemonNameWithAffix}}は\n{{moveName}}の 効果が 解けた!",
@ -13,9 +21,9 @@
"infatuatedOnAdd": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に メロメロに なった!", "infatuatedOnAdd": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に メロメロに なった!",
"infatuatedOnOverlap": "{{pokemonNameWithAffix}}は すでに メロメロだ!", "infatuatedOnOverlap": "{{pokemonNameWithAffix}}は すでに メロメロだ!",
"infatuatedLapse": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に メロメロだ!", "infatuatedLapse": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に メロメロだ!",
"infatuatedLapseImmobilize": "{{pokemonNameWithAffix}}は\nメロメロで わざが 出せなかった!", "infatuatedLapseImmobilize": "{{pokemonNameWithAffix}}は メロメロで 技が出せなかった!",
"infatuatedOnRemove": "{{pokemonNameWithAffix}}は メロメロ状態が 治った!", "infatuatedOnRemove": "{{pokemonNameWithAffix}}は メロメロ状態が 治った!",
"seededOnAdd": "{{pokemonNameWithAffix}}に 種を 植(う)えつけた!", "seededOnAdd": "{{pokemonNameWithAffix}}に 種を 植えつけた!",
"seededLapse": "やどりぎが {{pokemonNameWithAffix}}の 体力を うばう!", "seededLapse": "やどりぎが {{pokemonNameWithAffix}}の 体力を うばう!",
"seededLapseShed": "{{pokemonNameWithAffix}}は ヘドロえきを 吸い取った!", "seededLapseShed": "{{pokemonNameWithAffix}}は ヘドロえきを 吸い取った!",
"nightmareOnAdd": "{{pokemonNameWithAffix}}は あくむを 見始めた!", "nightmareOnAdd": "{{pokemonNameWithAffix}}は あくむを 見始めた!",
@ -60,4 +68,4 @@
"cursedOnAdd": "{{pokemonNameWithAffix}}は 自分の 体力を 削って\n{{pokemonName}}に のろいを かけた!", "cursedOnAdd": "{{pokemonNameWithAffix}}は 自分の 体力を 削って\n{{pokemonName}}に のろいを かけた!",
"cursedLapse": "{{pokemonNameWithAffix}}は のろわれている!", "cursedLapse": "{{pokemonNameWithAffix}}は のろわれている!",
"stockpilingOnAdd": "{{pokemonNameWithAffix}}は {{stockpiledCount}}つ たくわえた!" "stockpilingOnAdd": "{{pokemonNameWithAffix}}は {{stockpiledCount}}つ たくわえた!"
} }

View File

@ -1,46 +1,46 @@
{ {
"SITRUS": { "SITRUS": {
"name": "オボンのみ", "name": "オボンのみ",
"effect": "HP 50%いかのとき HPを 25パーセント かいふくする" "effect": "持たせると HPが 50以下になるとき HPを 25 回復する"
}, },
"LUM": { "LUM": {
"name": "ラムのみ", "name": "ラムのみ",
"effect": "すべての じょうたい いじょうと こんらんを かいふくする" "effect": "持たせると 状態異常や 混乱になるとき 回復する\n"
}, },
"ENIGMA": { "ENIGMA": {
"name": "ナゾのみ", "name": "ナゾのみ",
"effect": "こうかばつぐんの わざを うけたとき HPを 25パーセント かいふくする" "effect": "持たせると 効果バツグンの 技を 受けたとき HPを 25%回復する"
}, },
"LIECHI": { "LIECHI": {
"name": "チイラのみ", "name": "チイラのみ",
"effect": "HP 25%いかのとき こうげきが あがる" "effect": "持たせると HPが 25%以下に なるとき 攻撃が あがる"
}, },
"GANLON": { "GANLON": {
"name": "リュガのみ", "name": "リュガのみ",
"effect": "HP 25%いかのとき ぼうぎょが あがる" "effect": "持たせると HPが 25%以下に なるとき 防御が あがる\n"
}, },
"PETAYA": { "PETAYA": {
"name": "ヤタピのみ", "name": "ヤタピのみ",
"effect": "HP 25%いかのとき とくこうが あがる" "effect": "持たせると HPが 25%以下に なるとき 特攻が あがる\n"
}, },
"APICOT": { "APICOT": {
"name": "ズアのみ", "name": "ズアのみ",
"effect": "HP 25%いかのとき とくぼうが あがる" "effect": "持たせると HPが 25%以下に なるとき 特防が あがる\n"
}, },
"SALAC": { "SALAC": {
"name": "カムラのみ", "name": "カムラのみ",
"effect": "HP 25%いかのとき すばやさが あがる" "effect": "持たせると HPが 25%以下に なるとき 素早さが あがる"
}, },
"LANSAT": { "LANSAT": {
"name": "サンのみ", "name": "サンのみ",
"effect": "HP 25%いかのとき こうげきが きゅうしょに あたりやすくなる" "effect": "持たせると HPが 25%以下に なるとき 攻撃が 急所に 当たりやすくなる"
}, },
"STARF": { "STARF": {
"name": "スターのみ", "name": "スターのみ",
"effect": "HP 25%いかのとき のうりょくの どれか 1つが ぐーんと あがる" "effect": "持たせると HPが 25%以下に なるとき どれか 1つの 能力が ぐーんと あがる"
}, },
"LEPPA": { "LEPPA": {
"name": "ヒメリのみ", "name": "ヒメリのみ",
"effect": "PPが 0に なった わざの PPを 10だけ かいふくする" "effect": "持たせると PPが 0になる 技のPPを 10回復する"
} }
} }

View File

@ -1,10 +1,10 @@
{ {
"title": "チャレンジを 設定", "title": "チャレンジを 設定",
"illegalEvolution": "{{pokemon}}は このチャレンジで\n対象外の ポケモンに なってしまった", "illegalEvolution": "{{pokemon}}は このチャレンジで\n対象外の ポケモンに なってしまった",
"singleGeneration": { "singleGeneration": {
"name": "単一世代", "name": "単一世代",
"desc": "{{gen}}世代からの ポケモンしか 使えません", "desc": "{{gen}}世代からの ポケモンしか 使えません",
"desc_default": "選んだ 世代からの ポケモンしか 使えません", "desc_default": "選んだ 世代からの ポケモンしか 使えません",
"gen_1": "1", "gen_1": "1",
"gen_2": "2", "gen_2": "2",
"gen_3": "3", "gen_3": "3",
@ -17,14 +17,20 @@
}, },
"singleType": { "singleType": {
"name": "単一タイプ", "name": "単一タイプ",
"desc": "{{type}}タイプの ポケモンしか 使えません", "desc": "{{type}}タイプの ポケモンしか 使えません",
"desc_default": "選んだ タイプの ポケモンしか 使えません" "desc_default": "選んだ タイプの ポケモンしか 使えません"
}, },
"freshStart": { "freshStart": {
"name": "出直し", "name": "出直し",
"shortName": "出直し", "desc": "ポケローグを 始めた ばかりの ような ままで ゲーム開始の スターターしか 使えません",
"desc": "ポケローグを 始めた ばかりの ような ままで ゲーム開始の 最初のパートナーしか 使えません", "value.0": "オフ",
"value.1": "オン"
},
"inverseBattle": {
"name": "反転バトル",
"shortName": "反バ",
"desc": "タイプ相性が 反転で、なんの タイプも 「効果はなし」が ありません\n他の チャレンジの 実績が 無効に されます",
"value.0": "オフ", "value.0": "オフ",
"value.1": "オン" "value.1": "オン"
} }
} }

View File

@ -3,5 +3,5 @@
"ball": "ボール", "ball": "ボール",
"pokemon": "ポケモン", "pokemon": "ポケモン",
"run": "にげる", "run": "にげる",
"actionMessage": "{{pokemonName}}は どうする?" "actionMessage": "{{pokemonName}}は どうする?"
} }

View File

@ -4,23 +4,23 @@
"ultraTier": "超レア", "ultraTier": "超レア",
"masterTier": "伝説", "masterTier": "伝説",
"defaultTier": "ふつう", "defaultTier": "ふつう",
"hatchWavesMessageSoon": "なかから おとが きこえてくる! もうすぐ うまれそう!", "hatchWavesMessageSoon": "中から 音が 聞こえてくる! もうすぐ 生まれそう!",
"hatchWavesMessageClose": "ときどき うごいている みたい。 うまれるまで もう ちょっとかな?", "hatchWavesMessageClose": "時々 動いている みたい。生まれるまで もう ちょっとかな?",
"hatchWavesMessageNotClose": "なにが うまれてくるのかな? うまれるまで まだまだ じかんが かかりそう。", "hatchWavesMessageNotClose": "なにが 生まれてくるのかな? 生まれるまで まだまだ 時間が かかりそう。",
"hatchWavesMessageLongTime": "この タマゴは うまれるまで かなり じかんが かかりそう。", "hatchWavesMessageLongTime": "この タマゴは 生まれるまで かなり 時間が かかりそう。",
"gachaTypeLegendary": "伝説確率アップ", "gachaTypeLegendary": "伝説確率アップ",
"gachaTypeMove": "レアなタマゴわざ確率アップ", "gachaTypeMove": "レアなタマゴ確率アップ",
"gachaTypeShiny": "色違い確率アップ", "gachaTypeShiny": "色違い確率アップ",
"selectMachine": "ガチャマシンを選択", "selectMachine": "ガチャマシンを選択",
"notEnoughVouchers": "タマゴクーポンが足りません!", "notEnoughVouchers": "タマゴクーポンが足りません!",
"tooManyEggs": "タマゴが一杯です!", "tooManyEggs": "タマゴが一杯です!",
"pull": "回引く", "pull": "回引く",
"pulls": "回引く", "pulls": "回引く",
"sameSpeciesEgg": "{{species}}は このタマゴから まれる!", "sameSpeciesEgg": "{{species}}は このタマゴから まれる!",
"hatchFromTheEgg": "{{pokemonName}}は タマゴから まれた!", "hatchFromTheEgg": "{{pokemonName}}は タマゴから まれた!",
"eggMoveUnlock": "タマゴわざ {{moveName}}を おぼえた!", "eggMoveUnlock": "タマゴ技: {{moveName}}を 覚えた!",
"rareEggMoveUnlock": "レアなタマゴわざ {{moveName}}を おぼえた!!", "rareEggMoveUnlock": "レアなタマゴ技: {{moveName}}を 覚えた!!",
"moveUPGacha": "わざ UP!", "moveUPGacha": " UP!",
"shinyUPGacha": "色違い UP!", "shinyUPGacha": "色違い UP!",
"legendaryUPGacha": "UP!" "legendaryUPGacha": "UP!"
} }

View File

@ -1,8 +1,8 @@
{ {
"classic": "クラシック", "classic": "クラシック",
"endless": "エンドレス", "endless": "エンドレス",
"endlessSpliced": "エンドレス (Spliced)", "endlessSpliced": "エンドレス(吸収合体)",
"dailyRun": "デイリーラン", "dailyRun": "デイリーラン",
"unknown": "Unknown", "unknown": "",
"challenge": "チャレンジ" "challenge": "チャレンジ"
} }

View File

@ -1,6 +1,6 @@
{ {
"stats": "統計", "stats": "統計",
"playTime": "プレ時間", "playTime": "プレ時間",
"totalBattles": "合計バトル数", "totalBattles": "合計バトル数",
"starters": "スターター数", "starters": "スターター数",
"shinyStarters": "色違いスターター数", "shinyStarters": "色違いスターター数",
@ -12,31 +12,31 @@
"dailyRunAttempts": "デイリーラン", "dailyRunAttempts": "デイリーラン",
"dailyRunWins": "デイリーラン勝利", "dailyRunWins": "デイリーラン勝利",
"endlessRuns": "エンドレスラン", "endlessRuns": "エンドレスラン",
"highestWaveEndless": "エンドレス最高ウェーブ", "highestWaveEndless": "エンドレス最高",
"highestMoney": "最大貯金", "highestMoney": "最大貯金",
"highestDamage": "最大ダメージ", "highestDamage": "最大ダメージ",
"highestHPHealed": "最大HP回復", "highestHPHealed": "最大HP回復",
"pokemonEncountered": "遭遇したポケモン", "pokemonEncountered": "遭遇したポケモン",
"pokemonDefeated": "倒したポケモン", "pokemonDefeated": "倒したポケモン",
"pokemonCaught": "捕まえたポケモン", "pokemonCaught": "捕まえたポケモン",
"eggsHatched": "ふかしたタマゴ", "eggsHatched": "孵化したタマゴ",
"subLegendsSeen": "見つけた順伝説", "subLegendsSeen": "見つけた順伝説ポケモン",
"subLegendsCaught": "捕まえた順伝説", "subLegendsCaught": "捕まえた準伝説ポケモン",
"subLegendsHatched": "ふかした順伝説", "subLegendsHatched": "孵化した準伝説ポケモン",
"legendsSeen": "見つけた伝説", "legendsSeen": "見つけた伝説ポケモン",
"legendsCaught": "捕まえた伝説", "legendsCaught": "捕まえた伝説ポケモン",
"legendsHatched": "ふかした伝説", "legendsHatched": "孵化した伝説ポケモン",
"mythicalsSeen": "見つけた幻ポケモン", "mythicalsSeen": "見つけた幻ポケモン",
"mythicalsCaught": "捕まえた幻ポケモン", "mythicalsCaught": "捕まえた幻ポケモン",
"mythicalsHatched": "ふかした幻ポケモン", "mythicalsHatched": "孵化した幻ポケモン",
"shiniesSeen": "見つけた色違い", "shiniesSeen": "見つけた色違いポケモン",
"shiniesCaught": "捕まえた色違い", "shiniesCaught": "捕まえた色違いポケモン",
"shiniesHatched": "ふかした色違い", "shiniesHatched": "孵化した色違いポケモン",
"pokemonFused": "合体したポケモン", "pokemonFused": "吸収合体したポケモン",
"trainersDefeated": "倒したトレーナー", "trainersDefeated": "倒したトレーナー",
"eggsPulled": "引いたタマゴ", "eggsPulled": "引いたタマゴ",
"rareEggsPulled": "引いたレアタマゴ", "rareEggsPulled": "引いたレアタマゴ",
"epicEggsPulled": "引いた超レアタマゴ", "epicEggsPulled": "引いた超レアタマゴ",
"legendaryEggsPulled": "引いた伝説タマゴ", "legendaryEggsPulled": "引いた伝説タマゴ",
"manaphyEggsPulled": "引いたマナフィタマゴ" "manaphyEggsPulled": "引いたマナフィタマゴ"
} }

View File

@ -2,19 +2,22 @@
"GAME_SETTINGS": "設定", "GAME_SETTINGS": "設定",
"ACHIEVEMENTS": "実績", "ACHIEVEMENTS": "実績",
"STATS": "統計", "STATS": "統計",
"RUN_HISTORY": "ラン歴",
"EGG_LIST": "タマゴリスト", "EGG_LIST": "タマゴリスト",
"EGG_GACHA": "タマゴガチャ", "EGG_GACHA": "タマゴガチャ",
"MANAGE_DATA": "データ管理", "MANAGE_DATA": "データ管理",
"COMMUNITY": "コミュニティ", "COMMUNITY": "コミュニティ",
"SAVE_AND_QUIT": "保存して終了", "SAVE_AND_QUIT": "セーブして終了",
"LOG_OUT": "ログアウト", "LOG_OUT": "ログアウト",
"slot": "スロット {{slotNumber}}", "slot": "スロット {{slotNumber}}",
"importSession": "セッションインポート", "importSession": "セッションインポート",
"importSlotSelect": "インポート先の スロットを 選んでください", "importSlotSelect": "インポート先の スロットを 選んでください",
"exportSession": "セッションエクスポート", "exportSession": "セッションエクスポート",
"exportSlotSelect": "エクスポート元の スロットを 選んでください", "exportSlotSelect": "エクスポート元の スロットを 選んでください",
"importData": "データのインポート", "importRunHistory": "ラン歴をインポート",
"exportData": "データのエクスポート", "exportRunHistory": "ラン歴をエクスポート",
"importData": "データをインポート",
"exportData": "データをエクスポート",
"consentPreferences": "同意設定", "consentPreferences": "同意設定",
"linkDiscord": "Discord連携", "linkDiscord": "Discord連携",
"unlinkDiscord": "Discord連携解除", "unlinkDiscord": "Discord連携解除",
@ -22,5 +25,5 @@
"unlinkGoogle": "Google連携解除", "unlinkGoogle": "Google連携解除",
"cancel": "キャンセル", "cancel": "キャンセル",
"losingProgressionWarning": "戦闘開始からの データが 保存されません。\nよろしいですか", "losingProgressionWarning": "戦闘開始からの データが 保存されません。\nよろしいですか",
"noEggs": "現在 タマゴを ふかしていません!" "noEggs": "現在は タマゴを 孵化していません!"
} }

View File

@ -1,38 +1,55 @@
{ {
"cancel": "キャンセル", "cancel": "キャンセル",
"continue": "つづきから", "continue": "つづきから",
"loadGame": "ロードセーブ", "dailyRun": "日替わりラン(ベータ版)",
"loadGame": "セーブを読み込む",
"newGame": "はじめから", "newGame": "はじめから",
"username": "ユーザーめい", "settings": "設定",
"selectGameMode": "ゲームモードを 選んでください。",
"logInOrCreateAccount": "始めるには、ログイン、または 登録して ください。\nメールアドレスは 必要が ありません",
"username": "ユーザー名",
"password": "パスワード", "password": "パスワード",
"login": "ログイン", "login": "ログイン",
"orUse": "Or use", "orUse": "他の\nログイン方法",
"register": "かいいん とうろく", "register": "登録",
"emptyUsername": "ユーザー名は空にできません", "emptyUsername": "ユーザー名を 空にする ことは できません",
"invalidLoginUsername": "入力たユーザー名は無効です", "invalidLoginUsername": "入力されたユーザー名は無効です",
"invalidRegisterUsername": "ユーザー名には英文字、数字、アンダースコアのみを含める必要があります", "invalidRegisterUsername": "ユーザー名には 英文字、 数字、 アンダースコアのみを 含くむ必要が あります",
"invalidLoginPassword": "入力したパスワードは無効です", "invalidLoginPassword": "入力したパスワードは無効です",
"invalidRegisterPassword": "パスワードは6文字以上でなければなりません", "invalidRegisterPassword": "パスワードは 6文字以上 でなければなりません",
"usernameAlreadyUsed": "ユーザー名は既に使用されています", "usernameAlreadyUsed": "入力したユーザー名は すでに 使用されています",
"accountNonExistent": "ユーザーは存在しません", "accountNonExistent": "入力したユーザーは 存在しません",
"unmatchingPassword": "パスワードが一致しません", "unmatchingPassword": "入力したパスワードが 一致しません",
"passwordNotMatchingConfirmPassword": "パスワードは確認パスワードと一致する必要があります", "passwordNotMatchingConfirmPassword": "パスワードは パスワード確認と 一致する 必要があります",
"confirmPassword": "パスワード確認", "confirmPassword": "パスワード確認",
"registrationAgeWarning": "登録することで、あなたが13歳以上であることを確認します。", "registrationAgeWarning": "登録では 13歳以上 であることを 確認します。",
"backToLogin": "ログインへ", "backToLogin": "ログインへ",
"failedToLoadSaveData": "保存データの読み込みに失敗しました。ページを再読み込みしてください。\nこれが続く場合は、管理者に連絡してください。", "failedToLoadSaveData": "セーブデータの 読み込みは 不可能でした。ページを 再読み込み してください。\n長い間に続く 場合は 管理者に 連絡してください。",
"sessionSuccess": "セッションが正常に読み込まれました。", "sessionSuccess": "セッションが 正常に 読み込まれました。",
"failedToLoadSession": "セッションデータを読み込むことができませんでした。\nデータが破損している可能性があります。", "failedToLoadSession": "セッションデータを 読み込むことが できませんでした。\nデータが 破損している 可能性が あります。",
"boyOrGirl": "おとこのこ?\nそれとも おんなのこ?", "boyOrGirl": "男の子?\nそれとも 女の子",
"evolving": "…おや!?\n{{pokemonName}}のようすが…!", "evolving": "…おや!?\n{{pokemonName}}の 様子が…!",
"stoppedEvolving": "{{pokemonName}}のへんかがとまった", "stoppedEvolving": "あれ…? {{pokemonName}}の 変化が 止まった!",
"evolutionDone": "おめでとう!\n{{pokemonName}}は{{evolvedPokemonName}}にしんかした!", "pauseEvolutionsQuestion": "{{pokemonName}}の 進化を 休止しますか?\n後で 手持ち画面から 進化を また 可能にできます。",
"dailyRankings": "ほんじつのランキング", "evolutionsPaused": "{{pokemonName}}の 進化を 休止しました。",
"weeklyRankings": "しゅうのランキング", "evolutionDone": "おめでとう!\n{{pokemonName}}は {{evolvedPokemonName}}に 進化した!",
"dailyRankings": "今日のランキング",
"weeklyRankings": "今週のランキング",
"noRankings": "ランキングなし", "noRankings": "ランキングなし",
"positionIcon": "#", "positionIcon": "#",
"loading": "よみこみちゅう…", "usernameScoreboard": "ユーザー名",
"score": "スコア",
"wave": "波",
"loading": "読み込み中…",
"loadingAsset": "読み込み中:{{assetName}}",
"playersOnline": "オンラインのプレイヤー", "playersOnline": "オンラインのプレイヤー",
"yes": "はい", "yes": "はい",
"no": "いいえ" "no": "いいえ",
} "disclaimer": "免責",
"disclaimerDescription": "このゲームは 未完成作品です。\nセーブデータの 損失を含める ゲーム性に関する 問題が 起きる可能性が あります。\nなお、ゲームは 予告なく変更される 可能性もあり、さらに更新され、完成されるとも 限りません。",
"choosePokemon": "ポケモンを選ぶ",
"renamePokemon": "ニックネームを変える",
"rename": "変える",
"nickname": "ニックネーム",
"errorServerDown": "おや!\nサーバーとの 接続中に 問題が 発生しました。\nゲームは 自動的に 再接続されます から\nウィンドウは 開いたままに しておいても よろしいです。"
}

View File

@ -1,12 +1,12 @@
{ {
"transfer": "アイテム移行", "transfer": "アイテム移行",
"reroll": "選択肢変更", "reroll": "選択肢変更",
"lockRarities": "レア度固定", "lockRarities": "レア度固定",
"checkTeam": "チームを確認", "checkTeam": "手持ちを確認",
"transferDesc": "ポケモンの 手持ちアイテムを 移行する", "transferDesc": "手持ちポケモンの 持たせるアイテムを 移行する",
"rerollDesc": "お金を 使って アイテムの 選択肢を 変更する", "rerollDesc": "お金を 使って アイテムの 選択肢を 変更する",
"lockRaritiesDesc": "選択肢を 変更するときの レア度を 固定する\n選択肢変更金額を影響する)", "lockRaritiesDesc": "選択肢を 変更するときの レア度を 固定する\n選択肢変更の価格は変わる)",
"checkTeamDesc": "チームの 状態を 確認する\nフォルムチェンジアイテムを 有効・無効にする", "checkTeamDesc": "手持ちポケモンの 状態を 確認する\nフォルムチェンジアイテムを 有効・無効にする",
"rerollCost": "{{formattedMoney}}円", "rerollCost": "{{formattedMoney}}円",
"itemCost": "{{formattedMoney}}円" "itemCost": "{{formattedMoney}}円"
} }

View File

@ -2,21 +2,22 @@
"Stat": { "Stat": {
"HP": "HP", "HP": "HP",
"HPshortened": "HP", "HPshortened": "HP",
"ATK": "こうげき", "ATK": "攻撃",
"ATKshortened": "こうげき", "ATKshortened": "攻撃",
"DEF": "ぼうぎょ", "DEF": "防御",
"DEFshortened": "ぼうぎょ", "DEFshortened": "防御",
"SPATK": "とくこう", "SPATK": "特攻",
"SPATKshortened": "とくこう", "SPATKshortened": "特攻",
"SPDEF": "とくぼう", "SPDEF": "特防",
"SPDEFshortened": "とくぼう", "SPDEFshortened": "特防",
"SPD": "すばやさ", "SPD": "素早さ",
"SPDshortened": "すばやさ", "SPDshortened": "素早さ",
"ACC": "めいちゅう", "ACC": "命中",
"EVA": "かいひ" "EVA": "回避",
"HPStat": "HP"
}, },
"Type": { "Type": {
"UNKNOWN": "Unknown", "UNKNOWN": "",
"NORMAL": "ノーマル", "NORMAL": "ノーマル",
"FIGHTING": "かくとう", "FIGHTING": "かくとう",
"FLYING": "ひこう", "FLYING": "ひこう",
@ -37,4 +38,4 @@
"FAIRY": "フェアリー", "FAIRY": "フェアリー",
"STELLAR": "ステラ" "STELLAR": "ステラ"
} }
} }

View File

@ -437,7 +437,7 @@
"bronzor": "ドーミラー", "bronzor": "ドーミラー",
"bronzong": "ドータクン", "bronzong": "ドータクン",
"bonsly": "ウソハチ", "bonsly": "ウソハチ",
"mime_jr.": "マネネ", "mime_jr": "マネネ",
"happiny": "ピンプク", "happiny": "ピンプク",
"chatot": "ペラップ", "chatot": "ペラップ",
"spiritomb": "ミカルゲ", "spiritomb": "ミカルゲ",
@ -770,7 +770,7 @@
"sandygast": "スナバァ", "sandygast": "スナバァ",
"palossand": "シロデスナ", "palossand": "シロデスナ",
"pyukumuku": "ナマコブシ", "pyukumuku": "ナマコブシ",
"type:_null": "タイプ:ヌル", "type_null": "タイプ:ヌル",
"silvally": "シルヴァディ", "silvally": "シルヴァディ",
"minior": "メテノ", "minior": "メテノ",
"komala": "ネッコアラ", "komala": "ネッコアラ",
@ -863,7 +863,7 @@
"obstagoon": "タチフサグマ", "obstagoon": "タチフサグマ",
"perrserker": "ニャイキング", "perrserker": "ニャイキング",
"cursola": "サニゴーン", "cursola": "サニゴーン",
"sirfetch_d": "ネギガナイト", "sirfetchd": "ネギガナイト",
"mr_rime": "バリコオル", "mr_rime": "バリコオル",
"runerigus": "デスバーン", "runerigus": "デスバーン",
"milcery": "マホミル", "milcery": "マホミル",
@ -1081,4 +1081,4 @@
"paldea_tauros": "ケンタロス", "paldea_tauros": "ケンタロス",
"paldea_wooper": "ウパー", "paldea_wooper": "ウパー",
"bloodmoon_ursaluna": "ガチグマ" "bloodmoon_ursaluna": "ガチグマ"
} }

View File

@ -6,12 +6,14 @@
"audio": "音声", "audio": "音声",
"gamepad": "コントローラー", "gamepad": "コントローラー",
"keyboard": "キーボード", "keyboard": "キーボード",
"gameSpeed": "ゲームスピード", "gameSpeed": "ゲームの速さ",
"hpBarSpeed": "HPバーの増減スピード", "hpBarSpeed": "HPバー増減の速さ",
"expGainsSpeed": "EXPバーの増加スピード", "expGainsSpeed": "経験値バー増加の速さ",
"expPartyDisplay": "パーティの経験値取得表示", "expPartyDisplay": "手持ちの経験値取得表示",
"skipSeenDialogues": "もう見た話をスキップ",
"battleStyle": "試合のルール", "battleStyle": "試合のルール",
"enableRetries": "リトライを有効にする", "enableRetries": "再挑戦を有効にする",
"hideIvs": "個体値スキャナーを隠す",
"tutorials": "チュートリアル", "tutorials": "チュートリアル",
"touchControls": "タッチ操作", "touchControls": "タッチ操作",
"vibrations": "振動", "vibrations": "振動",
@ -35,33 +37,71 @@
"moneyFormat": "お金の表示形式", "moneyFormat": "お金の表示形式",
"damageNumbers": "ダメージ表示", "damageNumbers": "ダメージ表示",
"simple": "シンプル", "simple": "シンプル",
"fancy": "Fancy", "fancy": "オシャレ",
"abbreviated": "省略", "abbreviated": "省略",
"moveAnimations": "戦闘アニメ", "moveAnimations": "戦闘アニメーション",
"showStatsOnLevelUp": "レベルアップ時のステータス表示", "showStatsOnLevelUp": "レベルアップ時のステータス表示",
"candyUpgradeNotification": "飴アプグレ通知",
"passivesOnly": "パッシブのみ", "passivesOnly": "パッシブのみ",
"candyUpgradeDisplay": "飴アプグレ表示",
"icon": "アイコン", "icon": "アイコン",
"animation": "アニメーション", "animation": "アニメーション",
"moveInfo": "技の情報表示", "moveInfo": "技情報",
"showMovesetFlyout": "技情報表示",
"showArenaFlyout": "戦場情報表示",
"showTimeOfDayWidget": "時刻指標",
"timeOfDayAnimation": "時刻指標アニメーション",
"bounce": "跳ねる",
"timeOfDay_back": "跳ね返る",
"spriteSet": "スプライト設定",
"consistent": "一貫",
"mixedAnimated": "アニメーションミックス",
"fusionPaletteSwaps": "吸収合体ポケモンの色違い",
"playerGender": "プレイヤーの性別", "playerGender": "プレイヤーの性別",
"typeHints": "相性のヒント", "typeHints": "タイプ相性ヒント",
"masterVolume": "マスターボリューム", "masterVolume": "マスターボリューム",
"bgmVolume": "BGMのボリューム", "bgmVolume": "BGMボリューム",
"seVolume": "SEのボリューム", "fieldVolume": "フィールドボリューム",
"seVolume": "SEボリューム",
"uiVolume": "UIボリューム",
"musicPreference": "BGM設定",
"mixed": "ミックス",
"gamepadPleasePlug": "コントローラーを 接続してください\nまたは、ボタンを 押してください",
"delete": "削除",
"keyboardPleasePress": "キーを押してください",
"reset": "リセット", "reset": "リセット",
"requireReload": "再読み込みが必要", "requireReload": "再読み込みが必要",
"action": "決定", "action": "決定",
"back": "戻る", "back": "戻る",
"pressToBind": "押下でキーバインド",
"pressButton": "ボタンを押してください",
"buttonUp": "上", "buttonUp": "上",
"buttonDown": "下", "buttonDown": "下",
"buttonLeft": "左", "buttonLeft": "左",
"buttonRight": "右", "buttonRight": "右",
"buttonAction": "決定", "buttonAction": "決定",
"buttonMenu": "メニュー", "buttonMenu": "メニュー",
"buttonSubmit": "Submit", "buttonSubmit": "提出",
"buttonCancel": "キャンセル", "buttonCancel": "キャンセル",
"alt": " (代替)", "buttonStats": "能力変化表示",
"buttonCycleForm": "フォルム変更",
"buttonCycleShiny": "色違い変更",
"buttonCycleGender": "性別変更",
"buttonCycleAbility": "特性変更",
"buttonCycleNature": "性格変更",
"buttonCycleVariant": "色変更",
"buttonSpeedUp": "速さを上げる",
"buttonSlowDown": "速さを下げる",
"alt": "(代替)",
"mute": "ミュート", "mute": "ミュート",
"controller": "コントローラー", "controller": "コントローラー",
"gamepadSupport": "コントローラーサポート" "gamepadSupport": "コントローラーサポート",
"showBgmBar": "BGMの名前を表示",
"moveTouchControls": "タッチ移動操作",
"shopOverlayOpacity": "ショップオーバレイ不透明度",
"shopCursorTarget": "ショップカーソル初位置",
"items": "アイテム",
"reroll": "選択肢変更",
"shop": "ショップ",
"checkTeam": "手持ちを確認"
} }

View File

@ -1,5 +1,5 @@
{ {
"confirmStartTeam": "この条件で チャレンジを 始めますか?", "confirmStartTeam": "この手持ちで 始めますか?",
"confirmExit": "終了しますか?", "confirmExit": "終了しますか?",
"invalidParty": "手持ちは チャレンジの 条件で 認められない!", "invalidParty": "手持ちは チャレンジの 条件で 認められない!",
"gen1": "1世代", "gen1": "1世代",
@ -16,8 +16,8 @@
"passive": "パッシブ:", "passive": "パッシブ:",
"nature": "性格:", "nature": "性格:",
"eggMoves": "タマゴ技", "eggMoves": "タマゴ技",
"start": "始める",
"addToParty": "手持ちに入れる", "addToParty": "手持ちに入れる",
"removeFromParty": "手持ちから除く",
"toggleIVs": "個体値を表示", "toggleIVs": "個体値を表示",
"manageMoves": "技を並び替える", "manageMoves": "技を並び替える",
"manageNature": "性格を変える", "manageNature": "性格を変える",
@ -36,9 +36,10 @@
"cycleAbility": ": 特性変更", "cycleAbility": ": 特性変更",
"cycleNature": ": 性格変更", "cycleNature": ": 性格変更",
"cycleVariant": ": 色変更", "cycleVariant": ": 色変更",
"goFilter": ": フィルタ へ ",
"enablePassive": "パッシブ - オン", "enablePassive": "パッシブ - オン",
"disablePassive": "パッシブ - オフ", "disablePassive": "パッシブ - オフ",
"locked": "開放されていない", "locked": "開放",
"disabled": "無効", "disabled": "無効",
"uncaught": "捕まっていない" "uncaught": "捕まっていない"
} }

View File

@ -225,7 +225,7 @@
"name": "독침붕처럼 쏴라" "name": "독침붕처럼 쏴라"
}, },
"MONO_GHOST": { "MONO_GHOST": {
"name": "누굴 부를 거야?" "name": "무서운 게 딱 좋아!"
}, },
"MONO_STEEL": { "MONO_STEEL": {
"name": "강철 심장" "name": "강철 심장"
@ -265,4 +265,4 @@
"name": "상성 전문가(였던 것)", "name": "상성 전문가(였던 것)",
"description": "거꾸로 배틀 챌린지 모드 클리어." "description": "거꾸로 배틀 챌린지 모드 클리어."
} }
} }

View File

@ -47,5 +47,11 @@
"tailwindOnRemovePlayer": "우리 편의\n순풍이 멈췄다!", "tailwindOnRemovePlayer": "우리 편의\n순풍이 멈췄다!",
"tailwindOnRemoveEnemy": "상대의\n순풍이 멈췄다!", "tailwindOnRemoveEnemy": "상대의\n순풍이 멈췄다!",
"happyHourOnAdd": "모두 행복한 기분에\n휩싸였다!", "happyHourOnAdd": "모두 행복한 기분에\n휩싸였다!",
"happyHourOnRemove": "기분이 원래대로 돌아왔다." "happyHourOnRemove": "기분이 원래대로 돌아왔다.",
"safeguardOnAdd": "필드 전체가 신비의 베일에 둘러싸였다!",
"safeguardOnAddPlayer": "우리 편은 신비의 베일에 둘러싸였다!",
"safeguardOnAddEnemy": "상대 편은 신비의 베일에 둘러싸였다!",
"safeguardOnRemove": "필드를 감싸던 신비의 베일이 없어졌다!",
"safeguardOnRemovePlayer": "우리 편을 감싸던 신비의 베일이 없어졌다!",
"safeguardOnRemoveEnemy": "상대 편을 감싸던 신비의 베일이 없어졌다!"
} }

View File

@ -604,6 +604,6 @@
"DRAGON_MEMORY": "드래곤메모리", "DRAGON_MEMORY": "드래곤메모리",
"DARK_MEMORY": "다크메모리", "DARK_MEMORY": "다크메모리",
"FAIRY_MEMORY": "페어리메모리", "FAIRY_MEMORY": "페어리메모리",
"BLANK_MEMORY": "빈메모리" "NORMAL_MEMORY": "일반메모리"
} }
} }

View File

@ -61,5 +61,6 @@
"suppressAbilities": "{{pokemonName}}의\n특성이 효과를 발휘하지 못하게 되었다!", "suppressAbilities": "{{pokemonName}}의\n특성이 효과를 발휘하지 못하게 되었다!",
"revivalBlessing": "{{pokemonName}}[[는]]\n정신을 차려 싸울 수 있게 되었다!", "revivalBlessing": "{{pokemonName}}[[는]]\n정신을 차려 싸울 수 있게 되었다!",
"swapArenaTags": "{{pokemonName}}[[는]]\n서로의 필드 효과를 교체했다!", "swapArenaTags": "{{pokemonName}}[[는]]\n서로의 필드 효과를 교체했다!",
"exposedMove": "{{pokemonName}}[[는]]\n{{targetPokemonName}}의 정체를 꿰뚫어 보았다!" "exposedMove": "{{pokemonName}}[[는]]\n{{targetPokemonName}}의 정체를 꿰뚫어 보았다!",
"safeguard": "{{targetName}}[[는]] 신비의 베일이 지켜 주고 있다!"
} }

View File

@ -47,5 +47,11 @@
"tailwindOnRemovePlayer": "O Tailwind de sua equipe acabou!", "tailwindOnRemovePlayer": "O Tailwind de sua equipe acabou!",
"tailwindOnRemoveEnemy": "O Tailwind da equipe adversária acabou!", "tailwindOnRemoveEnemy": "O Tailwind da equipe adversária acabou!",
"happyHourOnAdd": "Todos foram envolvidos por uma atmosfera alegre!", "happyHourOnAdd": "Todos foram envolvidos por uma atmosfera alegre!",
"happyHourOnRemove": "A atmosfera retornou ao normal." "happyHourOnRemove": "A atmosfera retornou ao normal.",
"safeguardOnAdd": "O campo de batalha está envolto num véu místico!",
"safeguardOnAddPlayer": "Sua equipe se envolveu num véu místico!",
"safeguardOnAddEnemy": "A equipe adversária se envolveu num véu místico!",
"safeguardOnRemove": "O campo não está mais protegido por Safeguard!",
"safeguardOnRemovePlayer": "Sua equipe não está mais protegido por Safeguard!",
"safeguardOnRemoveEnemy": "A equipe adversária não está mais protegido por Safeguard!"
} }

View File

@ -33,4 +33,4 @@
"value.0": "Desligado", "value.0": "Desligado",
"value.1": "Ligado" "value.1": "Ligado"
} }
} }

View File

@ -14,8 +14,8 @@
"importSlotSelect": "Selecione um slot para importar.", "importSlotSelect": "Selecione um slot para importar.",
"exportSession": "Exportar sessão", "exportSession": "Exportar sessão",
"exportSlotSelect": "Selecione um slot para exportar.", "exportSlotSelect": "Selecione um slot para exportar.",
"importRunHistory":"Importar Histórico de Jogos", "importRunHistory": "Importar Histórico de Jogos",
"exportRunHistory":"Exportar Histórico de Jogos", "exportRunHistory": "Exportar Histórico de Jogos",
"importData": "Importar dados", "importData": "Importar dados",
"exportData": "Exportar dados", "exportData": "Exportar dados",
"consentPreferences": "Opções de Privacidade", "consentPreferences": "Opções de Privacidade",
@ -25,5 +25,5 @@
"unlinkGoogle": "Desconectar Google", "unlinkGoogle": "Desconectar Google",
"cancel": "Cancelar", "cancel": "Cancelar",
"losingProgressionWarning": "Você vai perder todo o progresso desde o início da batalha. Confirmar?", "losingProgressionWarning": "Você vai perder todo o progresso desde o início da batalha. Confirmar?",
"noEggs": "Você não está chocando\nnenhum ovo no momento!" "noEggs": "Você não está chocando nenhum ovo\nno momento!"
} }

View File

@ -604,6 +604,6 @@
"DRAGON_MEMORY": "Memória do Dragão", "DRAGON_MEMORY": "Memória do Dragão",
"DARK_MEMORY": "Memória Sombria", "DARK_MEMORY": "Memória Sombria",
"FAIRY_MEMORY": "Memória de Fada", "FAIRY_MEMORY": "Memória de Fada",
"BLANK_MEMORY": "Memória Vazia" "NORMAL_MEMORY": "Memória Normal"
} }
} }

View File

@ -61,5 +61,6 @@
"suppressAbilities": "A habilidade de {{pokemonName}}\nfoi suprimida!", "suppressAbilities": "A habilidade de {{pokemonName}}\nfoi suprimida!",
"revivalBlessing": "{{pokemonName}} foi reanimado!", "revivalBlessing": "{{pokemonName}} foi reanimado!",
"swapArenaTags": "{{pokemonName}} trocou os efeitos de batalha que afetam cada lado do campo!", "swapArenaTags": "{{pokemonName}} trocou os efeitos de batalha que afetam cada lado do campo!",
"exposedMove": "{{pokemonName}} identificou\n{{targetPokemonName}}!" "exposedMove": "{{pokemonName}} identificou\n{{targetPokemonName}}!",
"safeguard": "{{targetName}} está protegido por Safeguard!"
} }

View File

@ -13,5 +13,32 @@
"metFragment": { "metFragment": {
"normal": "encontrado no Nv.{{level}},\n{{biome}}.", "normal": "encontrado no Nv.{{level}},\n{{biome}}.",
"apparently": "aparentemente encontrado no Nv.{{level}},\n{{biome}}." "apparently": "aparentemente encontrado no Nv.{{level}},\n{{biome}}."
},
"natureFragment": {
"Hardy": "{{nature}}",
"Lonely": "{{nature}}",
"Brave": "{{nature}}",
"Adamant": "{{nature}}",
"Naughty": "{{nature}}",
"Bold": "{{nature}}",
"Docile": "{{nature}}",
"Relaxed": "{{nature}}",
"Impish": "{{nature}}",
"Lax": "{{nature}}",
"Timid": "{{nature}}",
"Hasty": "{{nature}}",
"Serious": "{{nature}}",
"Jolly": "{{nature}}",
"Naive": "{{nature}}",
"Modest": "{{nature}}",
"Mild": "{{nature}}",
"Quiet": "{{nature}}",
"Bashful": "{{nature}}",
"Rash": "{{nature}}",
"Calm": "{{nature}}",
"Gentle": "{{nature}}",
"Sassy": "{{nature}}",
"Careful": "{{nature}}",
"Quirky": "{{nature}}"
} }
} }

View File

@ -1,10 +1,10 @@
{ {
"intro": "Bem-vindo ao PokéRogue! Este é um jogo Pokémon feito por fãs focado em batalhas com elementos roguelite.\n$Este jogo não é monetizado e não reivindicamos propriedade de Pokémon nem dos ativos protegidos\n$por direitos autorais usados.\n$O jogo é um trabalho em andamento, mas é totalmente jogável.\n$Para relatórios de bugs, use a comunidade no Discord.\n$Se o jogo estiver rodando lentamente, certifique-se de que a 'Aceleração de hardware' esteja ativada \n$nas configurações do seu navegador.", "intro": "Bem-vindo ao PokéRogue!\n$Este é um fangame Pokémon focado em batalhas com elementos roguelite.\n$Este jogo não é monetizado e não reivindicamos propriedade do Pokémon nem dos ativos protegidos$por direitos autorais usados.\n$O jogo é um trabalho em andamento,\nmas totalmente jogável.\n$Para relatórios de bugs, use a comunidade do Discord.\n$Se o jogo rodar lentamente, certifique-se de que\na 'Aceleração de Hardware' esteja ativada$nas configurações do seu navegador.",
"accessMenu": "Para acessar o menu, pressione M ou Esc.\n$O menu contém configurações e diversas funções.", "accessMenu": "Para acessar o menu, pressione M ou Esc.\n$O menu contém configurações e diversas funções.",
"menu": "A partir deste menu, você pode acessar as configurações. \n$Nas configurações, você pode alterar a velocidade do jogo,\n$o estilo da janela, entre outras opções. \n$Existem também vários outros recursos disponíveis aqui.\n$Não deixe de conferir todos eles!", "menu": "A partir deste menu, você pode\\nacessar as configurações.\n$A partir das configurações, você\npode alterar a velocidade do jogo,\n$o estilo da janela e outras opções.\n$Há também vários outros recursos aqui.\nCertifique-se de verificar todos eles!",
"starterSelect": "Aqui você pode escolher seus iniciais apertando a tecla Z ou\na Barra de Espaço.\n$Esses serão os primeiro Pokémon da sua equipe.\n$Cada inicial tem seu custo. Sua equipe pode ter até 6\nmembros, desde que a soma dos custos não ultrapasse 10. \n$Você pode escolher o gênero, a habilidade\ne até a forma do seu inicial.\n$Essas opções dependem das variantes dessa\nespécie que você já capturou ou chocou. \n$Os IVs de cada inicial são os melhores de todos os Pokémon\ndaquela espécie que você já capturou ou chocou.\n$Sempre capture vários Pokémon de várias espécies!", "starterSelect": "Nesta tela, você pode selecionar seus iniciais\npressionando Z ou a barra de espaço.\n$Esses serão os primeiros membros da sua equipe.\n$Cada inicial tem um custo. Sua equipe pode ter até 6 membros,\ndesde que desde que o custo total não exceda 10.\n$Você pode escolher o gênero, a habilidade\ne até a forma do seu inicial.\n$Essas opções dependem das variantes dessa\nespécie que você já capturou ou chocou.\n$Os IVs de cada inicial são os melhores de todos os Pokémon\ndaquela espécie que você já capturou ou chocou.\n$Sempre capture vários Pokémon de todas as espécies!",
"pokerus": "Todo dia, 3 Pokémon iniciais ficam com uma borda roxa.\n$Caso veja um inicial que você possui com uma dessa, tente\nadicioná-lo a sua equipe. Lembre-se de olhar seu sumário!", "pokerus": "Todo dia, 3 Pokémon iniciais ficam com uma borda roxa.\n$Caso veja um inicial que você possui com uma dessa, tente\nadicioná-lo a sua equipe. Lembre-se de olhar seu sumário!",
"statChange": "As mudanças de atributos se mantém após a batalha desde que o Pokémon não seja trocado.\n$Seus Pokémon voltam a suas Poké Bolas antes de batalhas contra treinadores e de entrar em um novo bioma.\n$Para ver as mudanças de atributos dos Pokémon em campo, mantena C ou Shift pressionado durante a batalha.", "statChange": "As mudanças de atributos se mantém após a batalha desde que o Pokémon não seja trocado.\n$Seus Pokémon voltam a suas Poké Bolas antes de batalhas contra treinadores e de entrar em um novo bioma.\n$Para ver as mudanças de atributos dos Pokémon em campo, mantena C ou Shift pressionado durante a batalha.",
"selectItem": "Após cada batalha, você pode escolher entre 3 itens aleatórios.\n$Você pode escolher apenas um deles.\n$Esses itens variam entre consumíveis, itens de segurar e itens passivos permanentes.\n$A maioria dos efeitos de itens não consumíveis podem ser acumulados.\n$Alguns itens só aparecerão se puderem ser usados, como os itens de evolução.\n$Você também pode transferir itens de segurar entre os Pokémon utilizando a opção \"Alterar\".\n$A opção de transferir irá aparecer no canto inferior direito assim que você obter um item de segurar.\n$Você pode comprar itens consumíveis com dinheiro, e sua variedade aumentará conforme você for mais longe.\n$Certifique-se de comprá-los antes de escolher seu item aleatório. Ao escolhê-lo, a próxima batalha começará.", "selectItem": "Após cada batalha, você pode escolher entre 3 itens aleatórios.\n$Você pode escolher apenas um deles.\n$Esses itens variam entre consumíveis, itens de segurar e itens passivos permanentes.\n$A maioria dos efeitos de itens não consumíveis podem ser acumulados.\n$Alguns itens só aparecerão se puderem ser usados, como os itens de evolução.\n$Você também pode transferir itens de segurar entre os Pokémon utilizando a opção \"Alterar\".\n$A opção de transferir irá aparecer no canto inferior direito assim que você obter um item de segurar.\n$Você pode comprar itens consumíveis com dinheiro, e sua variedade aumentará conforme você for mais longe.\n$Certifique-se de comprá-los antes de escolher seu item aleatório. Ao escolhê-lo, a próxima batalha começará.",
"eggGacha": "Aqui você pode trocar seus vouchers\npor ovos de Pokémon.\n$Ovos ficam mais próximos de chocar após cada batalha.\nOvos mais raros demoram mais para chocar.\n$Pokémon chocados não serão adicionados a sua equipe,\nmas sim aos seus iniciais.\n$Pokémon chocados geralmente possuem IVs melhores\nque Pokémon selvagens.\n$Alguns Pokémon só podem ser obtidos através de seus ovos.\n$Temos 3 máquinas, cada uma com seu bônus específico,\nentão escolha a que mais lhe convém!" "eggGacha": "Nesta tela, você pode trocar seus vouchers por ovos\nde Pokémon.\n$Ovos ficam mais próximos de chocar após cada batalha.\nOvos mais raros demoram mais tempo para chocar.\n$Pokémon chocados não serão adicionados a sua equipe,\nmas sim aos seus iniciais.\n$Pokémon chocados de ovos geralmente têm IVs melhores\ndo que Pokémon selvagens.\n$Alguns Pokémon só podem ser obtidos através de ovos.\n$Existem 3 máquinas para usar com diferentes bônus, então\nescolha a que mais lhe convém!"
} }

View File

@ -47,5 +47,11 @@
"tailwindOnRemovePlayer": "我方的顺风停止了!", "tailwindOnRemovePlayer": "我方的顺风停止了!",
"tailwindOnRemoveEnemy": "敌方的顺风停止了!", "tailwindOnRemoveEnemy": "敌方的顺风停止了!",
"happyHourOnAdd": "大家被欢乐的\n气氛包围了", "happyHourOnAdd": "大家被欢乐的\n气氛包围了",
"happyHourOnRemove": "气氛回复到平常了。" "happyHourOnRemove": "气氛回复到平常了。",
"safeguardOnAdd": "整个场地被\n神秘之幕包围了",
"safeguardOnAddPlayer": "我方被\n神秘之幕包围了",
"safeguardOnAddEnemy": "对手被\n神秘之幕包围了",
"safeguardOnRemove": "包围整个场地的\n神秘之幕消失了",
"safeguardOnRemovePlayer": "包围我方的\n神秘之幕消失了",
"safeguardOnRemoveEnemy": "包围对手的\n神秘之幕消失了"
} }

View File

@ -604,6 +604,6 @@
"DRAGON_MEMORY": "龙存储碟", "DRAGON_MEMORY": "龙存储碟",
"DARK_MEMORY": "黑暗存储碟", "DARK_MEMORY": "黑暗存储碟",
"FAIRY_MEMORY": "妖精存储碟", "FAIRY_MEMORY": "妖精存储碟",
"BLANK_MEMORY": "空白存储碟" "NORMAL_MEMORY": "一般存储碟"
} }
} }

View File

@ -61,5 +61,6 @@
"suppressAbilities": "{{pokemonName}}的特性\n变得无效了", "suppressAbilities": "{{pokemonName}}的特性\n变得无效了",
"revivalBlessing": "{{pokemonName}}复活了!", "revivalBlessing": "{{pokemonName}}复活了!",
"swapArenaTags": "{{pokemonName}}\n交换了双方的场地效果", "swapArenaTags": "{{pokemonName}}\n交换了双方的场地效果",
"exposedMove": "{{pokemonName}}识破了\n{{targetPokemonName}}的原型!" "exposedMove": "{{pokemonName}}识破了\n{{targetPokemonName}}的原型!",
"safeguard": "{{targetName}}\n正受到神秘之幕的保护"
} }

View File

@ -1,5 +1,11 @@
{ {
"noCritOnAddPlayer": "{{moveName}}保護了你的\n隊伍不被擊中要害", "noCritOnAddPlayer": "{{moveName}}保護了你的\n隊伍不被擊中要害",
"noCritOnAddEnemy": "{{moveName}}保護了對方的\n隊伍不被擊中要害", "noCritOnAddEnemy": "{{moveName}}保護了對方的\n隊伍不被擊中要害",
"noCritOnRemove": "{{pokemonNameWithAffix}}的{{moveName}}\n效果消失了" "noCritOnRemove": "{{pokemonNameWithAffix}}的{{moveName}}\n效果消失了",
"safeguardOnAdd": "整個場地被\n神秘之幕包圍了",
"safeguardOnAddPlayer": "我方被\n神秘之幕包圍了",
"safeguardOnAddEnemy": "對手被\n神秘之幕包圍了",
"safeguardOnRemove": "包圍整個場地的\n神秘之幕消失了",
"safeguardOnRemovePlayer": "包圍我方的\n神秘之幕消失了",
"safeguardOnRemoveEnemy": "包圍對手的\n神秘之幕消失了"
} }

View File

@ -600,6 +600,6 @@
"DRAGON_MEMORY": "龍記憶碟", "DRAGON_MEMORY": "龍記憶碟",
"DARK_MEMORY": "黑暗記憶碟", "DARK_MEMORY": "黑暗記憶碟",
"FAIRY_MEMORY": "妖精記憶碟", "FAIRY_MEMORY": "妖精記憶碟",
"BLANK_MEMORY": "空白記憶碟" "NORMAL_MEMORY": "一般記憶碟"
} }
} }

View File

@ -61,5 +61,6 @@
"suppressAbilities": "{{pokemonName}}的特性\n變得無效了", "suppressAbilities": "{{pokemonName}}的特性\n變得無效了",
"revivalBlessing": "{{pokemonName}}復活了!", "revivalBlessing": "{{pokemonName}}復活了!",
"swapArenaTags": "{{pokemonName}}\n交換了雙方的場地效果", "swapArenaTags": "{{pokemonName}}\n交換了雙方的場地效果",
"exposedMove": "{{pokemonName}}識破了\n{{targetPokemonName}}的原形!" "exposedMove": "{{pokemonName}}識破了\n{{targetPokemonName}}的原形!",
"safeguard": "{{targetName}}\n正受到神秘之幕的保護"
} }

View File

@ -1043,7 +1043,7 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator {
} }
class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator { class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator {
constructor() { constructor(rare: boolean) {
super((party: Pokemon[], pregenArgs?: any[]) => { super((party: Pokemon[], pregenArgs?: any[]) => {
if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in FormChangeItem)) { if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in FormChangeItem)) {
return new FormChangeItemModifierType(pregenArgs[0] as FormChangeItem); return new FormChangeItemModifierType(pregenArgs[0] as FormChangeItem);
@ -1083,7 +1083,8 @@ class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator {
} }
} }
return formChangeItemTriggers; return formChangeItemTriggers;
}).flat().flatMap(fc => fc.item))]; }).flat())
].flat().flatMap(fc => fc.item).filter(i => (i && i < 100) === rare);
// convert it into a set to remove duplicate values, which can appear when the same species with a potential form change is in the party. // convert it into a set to remove duplicate values, which can appear when the same species with a potential form change is in the party.
if (!formChangeItemPool.length) { if (!formChangeItemPool.length) {
@ -1282,7 +1283,8 @@ export const modifierTypes = {
EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(false), EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(false),
RARE_EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(true), RARE_EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(true),
FORM_CHANGE_ITEM: () => new FormChangeItemModifierTypeGenerator(), FORM_CHANGE_ITEM: () => new FormChangeItemModifierTypeGenerator(false),
RARE_FORM_CHANGE_ITEM: () => new FormChangeItemModifierTypeGenerator(true),
MEGA_BRACELET: () => new ModifierType("modifierType:ModifierType.MEGA_BRACELET", "mega_bracelet", (type, _args) => new Modifiers.MegaEvolutionAccessModifier(type)), MEGA_BRACELET: () => new ModifierType("modifierType:ModifierType.MEGA_BRACELET", "mega_bracelet", (type, _args) => new Modifiers.MegaEvolutionAccessModifier(type)),
DYNAMAX_BAND: () => new ModifierType("modifierType:ModifierType.DYNAMAX_BAND", "dynamax_band", (type, _args) => new Modifiers.GigantamaxAccessModifier(type)), DYNAMAX_BAND: () => new ModifierType("modifierType:ModifierType.DYNAMAX_BAND", "dynamax_band", (type, _args) => new Modifiers.GigantamaxAccessModifier(type)),
@ -1595,6 +1597,7 @@ const modifierPool: ModifierPool = {
new WeightedModifierType(modifierTypes.PP_MAX, 3), new WeightedModifierType(modifierTypes.PP_MAX, 3),
new WeightedModifierType(modifierTypes.MINT, 4), new WeightedModifierType(modifierTypes.MINT, 4),
new WeightedModifierType(modifierTypes.RARE_EVOLUTION_ITEM, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 15) * 4, 32), 32), new WeightedModifierType(modifierTypes.RARE_EVOLUTION_ITEM, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 15) * 4, 32), 32),
new WeightedModifierType(modifierTypes.FORM_CHANGE_ITEM, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 6, 24),
new WeightedModifierType(modifierTypes.AMULET_COIN, skipInLastClassicWaveOrDefault(3)), new WeightedModifierType(modifierTypes.AMULET_COIN, skipInLastClassicWaveOrDefault(3)),
new WeightedModifierType(modifierTypes.EVIOLITE, (party: Pokemon[]) => { new WeightedModifierType(modifierTypes.EVIOLITE, (party: Pokemon[]) => {
if (!party[0].scene.gameMode.isFreshStartChallenge() && party[0].scene.gameData.unlocks[Unlockables.EVIOLITE]) { if (!party[0].scene.gameMode.isFreshStartChallenge() && party[0].scene.gameData.unlocks[Unlockables.EVIOLITE]) {
@ -1661,7 +1664,7 @@ const modifierPool: ModifierPool = {
new WeightedModifierType(modifierTypes.KINGS_ROCK, 3), new WeightedModifierType(modifierTypes.KINGS_ROCK, 3),
new WeightedModifierType(modifierTypes.LOCK_CAPSULE, skipInLastClassicWaveOrDefault(3)), new WeightedModifierType(modifierTypes.LOCK_CAPSULE, skipInLastClassicWaveOrDefault(3)),
new WeightedModifierType(modifierTypes.SUPER_EXP_CHARM, skipInLastClassicWaveOrDefault(8)), new WeightedModifierType(modifierTypes.SUPER_EXP_CHARM, skipInLastClassicWaveOrDefault(8)),
new WeightedModifierType(modifierTypes.FORM_CHANGE_ITEM, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 6, 24), new WeightedModifierType(modifierTypes.RARE_FORM_CHANGE_ITEM, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 6, 24),
new WeightedModifierType(modifierTypes.MEGA_BRACELET, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 9, 36), new WeightedModifierType(modifierTypes.MEGA_BRACELET, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 9, 36),
new WeightedModifierType(modifierTypes.DYNAMAX_BAND, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 9, 36), new WeightedModifierType(modifierTypes.DYNAMAX_BAND, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 9, 36),
new WeightedModifierType(modifierTypes.VOUCHER_PLUS, (party: Pokemon[], rerollCount: integer) => !party[0].scene.gameMode.isDaily ? Math.max(3 - rerollCount * 1, 0) : 0, 3), new WeightedModifierType(modifierTypes.VOUCHER_PLUS, (party: Pokemon[], rerollCount: integer) => !party[0].scene.gameMode.isDaily ? Math.max(3 - rerollCount * 1, 0) : 0, 3),

Some files were not shown because too many files have changed in this diff Show More