From 4ac726f79e35f67333f38cf57a678e21b8a2fd06 Mon Sep 17 00:00:00 2001 From: "gitlocalize-app[bot]" <55277160+gitlocalize-app[bot]@users.noreply.github.com> Date: Sun, 25 Aug 2024 12:19:32 -0700 Subject: [PATCH 1/7] Translate menu.json via GitLocalize (#3752) Co-authored-by: Asdar --- src/locales/es/menu.json | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/locales/es/menu.json b/src/locales/es/menu.json index 3c6587fa462..bd2479a02df 100644 --- a/src/locales/es/menu.json +++ b/src/locales/es/menu.json @@ -16,7 +16,7 @@ "invalidLoginUsername": "El usuario no es válido", "invalidRegisterUsername": "El usuario solo puede contener letras, números y guiones bajos", "invalidLoginPassword": "La contraseña no es válida", - "invalidRegisterPassword": "Contraseña debe tener 6 o más caracter.", + "invalidRegisterPassword": "La contraseña debe tener 6 o más caracteres.", "usernameAlreadyUsed": "El usuario ya está en uso", "accountNonExistent": "El usuario no existe", "unmatchingPassword": "La contraseña no coincide", @@ -37,12 +37,19 @@ "weeklyRankings": "Rankings Semanales", "noRankings": "Sin Rankings", "positionIcon": "#", + "usernameScoreboard": "Usuario", + "score": "Puntos", + "wave": "Oleada", "loading": "Cargando…", "loadingAsset": "Cargando recurso: {{assetName}}", "playersOnline": "Jugadores en Línea", "yes": "Sí", "no": "No", "disclaimer": "AVISO", - "disclaimerDescription": "Este juego es un producto inacabado; puede tener problemas de jugabilidad (incluyendo la posible pérdida\n de datos de guardado),cambiar sin avisar, y puede o no puede ser actualizado hasta ser completado.", - "errorServerDown": "¡Ups! Ha habido un problema al contactar con el servidor.\n\nPuedes mantener esta ventana abierta,\nel juego se reconectará automáticamente." -} \ No newline at end of file + "disclaimerDescription": "Este juego es un producto inacabado; puede tener problemas de jugabilidad (incluyendo la posible pérdida\n de datos de guardado), cambiar sin avisar, y puede o no puede ser actualizado hasta ser completado.", + "choosePokemon": "Elige un Pokémon.", + "renamePokemon": "Renombrar Pokémon.", + "rename": "Renombrar", + "nickname": "Apodo", + "errorServerDown": "¡Ups! Ha habido un problema al contactar con el servidor.\n\nPuedes mantener esta ventana abierta, el juego se reconectará automáticamente." +} From 4162762a0e412486571a1dc40e00dfaef691e47b Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sun, 25 Aug 2024 12:24:44 -0700 Subject: [PATCH 2/7] [Test] Refactor/consolidate Forecast tests (#3754) --- src/test/abilities/forecast.test.ts | 333 ++++++++++++---------------- 1 file changed, 142 insertions(+), 191 deletions(-) diff --git a/src/test/abilities/forecast.test.ts b/src/test/abilities/forecast.test.ts index 58f50c5a9a6..78453c5f4d2 100644 --- a/src/test/abilities/forecast.test.ts +++ b/src/test/abilities/forecast.test.ts @@ -1,19 +1,18 @@ -import { Abilities } from "#app/enums/abilities.js"; -import GameManager from "#test/utils/gameManager"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { SPLASH_ONLY } from "#test/utils/testUtils"; -import { WeatherType } from "#app/enums/weather-type"; import { BattlerIndex } from "#app/battle"; -import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; +import { allAbilities } from "#app/data/ability"; +import { Abilities } from "#app/enums/abilities"; +import { WeatherType } from "#app/enums/weather-type"; import { DamagePhase } from "#app/phases/damage-phase"; import { MovePhase } from "#app/phases/move-phase"; import { PostSummonPhase } from "#app/phases/post-summon-phase"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; -import { VictoryPhase } from "#app/phases/victory-phase"; -import { allAbilities } from "#app/data/ability"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import { SPLASH_ONLY } from "#test/utils/testUtils"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - Forecast", () => { let phaserGame: Phaser.Game; @@ -31,7 +30,7 @@ describe("Abilities - Forecast", () => { * @param initialForm The initial form pre form change */ const testWeatherFormChange = async (game: GameManager, weather: WeatherType, form: number, initialForm?: number) => { - game.override.weather(weather).starterForms({[Species.CASTFORM]: initialForm}); + game.override.weather(weather).starterForms({ [Species.CASTFORM]: initialForm }); await game.startBattle([Species.CASTFORM]); game.move.select(Moves.SPLASH); @@ -53,54 +52,6 @@ describe("Abilities - Forecast", () => { expect(game.scene.getPlayerPokemon()?.formIndex).toBe(NORMAL_FORM); }; - /** - * Tests transforming back to match the weather when Cloud Nine/Air Lock user is fainted - * @param {GameManager} game The game manager instance - * @param {Abilities} ability The ability that will go out of battle (faint) - */ - const testTransformAfterAbilityFaint = async (game: GameManager, ability: Abilities) => { - game.override.enemyAbility(ability).weather(WeatherType.SNOW).enemySpecies(Species.SHUCKLE); - await game.startBattle([Species.CASTFORM]); - const castform = game.scene.getPlayerPokemon(); - - expect(castform?.formIndex).toBe(NORMAL_FORM); - - game.move.select(Moves.TACKLE); - await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); - await game.phaseInterceptor.to(DamagePhase); - - await game.doKillOpponents(); - await game.phaseInterceptor.to(VictoryPhase); - - expect(castform?.formIndex).toBe(SNOWY_FORM); - }; - - /** - * Tests transforming back to match the weather when Cloud Nine/Air Lock user is switched out - * @param {GameManager} game The game manager instance - * @param {Abilities} ability The ability that will go out of battle (switched out) - */ - const testTransformAfterAbilitySwitchOut = async (game: GameManager, ability: Abilities) => { - game.override - .weather(WeatherType.SNOW) - .enemySpecies(Species.CASTFORM) - .enemyAbility(Abilities.FORECAST) - .ability(ability); - await game.startBattle([Species.PICHU, Species.PIKACHU]); - - const castform = game.scene.getEnemyPokemon(); - - // We mock the return value of the second Pokemon to be other than Air Lock/Cloud Nine - vi.spyOn(game.scene.getParty()[1]!, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); - expect(game.scene.getParty()[1]?.hasAbility(Abilities.BALL_FETCH)); - - expect(castform?.formIndex).toBe(NORMAL_FORM); - - game.doSwitchPokemon(1); - await game.phaseInterceptor.to(MovePhase); - expect(castform?.formIndex).toBe(SNOWY_FORM); - }; - beforeAll(() => { phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, @@ -113,55 +64,127 @@ describe("Abilities - Forecast", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.moveset([ Moves.SPLASH, Moves.RAIN_DANCE, Moves.SUNNY_DAY, Moves.TACKLE ]) + game.override + .moveset([Moves.SPLASH, Moves.RAIN_DANCE, Moves.SUNNY_DAY, Moves.TACKLE]) + .enemySpecies(Species.MAGIKARP) .enemyMoveset(SPLASH_ONLY) .enemyAbility(Abilities.BALL_FETCH); }); - it("changes to Sunny Form during Harsh Sunlight", async () => { - await testWeatherFormChange(game, WeatherType.SUNNY, SUNNY_FORM); - }); + it("changes form based on weather", async () => { + game.override + .moveset([Moves.RAIN_DANCE, Moves.SUNNY_DAY, Moves.SNOWSCAPE, Moves.SPLASH]) + .battleType("double") + .starterForms({ + [Species.KYOGRE]: 1, + [Species.GROUDON]: 1, + [Species.RAYQUAZA]: 1 + }); + await game.startBattle([Species.CASTFORM, Species.FEEBAS, Species.KYOGRE, Species.GROUDON, Species.RAYQUAZA, Species.ALTARIA]); - it("changes to Sunny Form during Extreme Harsh Sunlight", async () => { - await testWeatherFormChange(game, WeatherType.HARSH_SUN, SUNNY_FORM); - }); + vi.spyOn(game.scene.getParty()[5], "getAbility").mockReturnValue(allAbilities[Abilities.CLOUD_NINE]); - it("changes to Rainy Form during Rain", async () => { - await testWeatherFormChange(game, WeatherType.RAIN, RAINY_FORM); - }); + const castform = game.scene.getPlayerField()[0]; + expect(castform.formIndex).toBe(NORMAL_FORM); - it("changes to Rainy Form during Heavy Rain", async () => { - await testWeatherFormChange(game, WeatherType.HEAVY_RAIN, RAINY_FORM); - }); + game.move.select(Moves.RAIN_DANCE); + game.move.select(Moves.SPLASH, 1); + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); - it("changes to Snowy Form during Hail", async () => { - await testWeatherFormChange(game, WeatherType.HAIL, SNOWY_FORM); - }); + expect(castform.formIndex).toBe(RAINY_FORM); - it("changes to Snowy Form during Snow", async () => { - await testWeatherFormChange(game, WeatherType.SNOW, SNOWY_FORM); - }); + game.move.select(Moves.SUNNY_DAY); + game.move.select(Moves.SPLASH, 1); + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); - it("reverts to Normal Form during Sandstorm", async () => { - await testWeatherFormChange(game, WeatherType.SANDSTORM, NORMAL_FORM, SUNNY_FORM); - }); + expect(castform.formIndex).toBe(SUNNY_FORM); - it("reverts to Normal Form during Fog", async () => { - await testWeatherFormChange(game, WeatherType.FOG, NORMAL_FORM, SUNNY_FORM); - }); + game.move.select(Moves.SNOWSCAPE); + game.move.select(Moves.SPLASH, 1); + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); - it("reverts to Normal Form during Strong Winds", async () => { - await testWeatherFormChange(game, WeatherType.STRONG_WINDS, NORMAL_FORM, SUNNY_FORM); - }); + expect(castform.formIndex).toBe(SNOWY_FORM); + + game.override.moveset([Moves.HAIL, Moves.SANDSTORM, Moves.SNOWSCAPE, Moves.SPLASH]); + + game.move.select(Moves.SANDSTORM); + game.move.select(Moves.SPLASH, 1); + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); + + expect(castform.formIndex).toBe(NORMAL_FORM); + + game.move.select(Moves.HAIL); + game.move.select(Moves.SPLASH, 1); + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); + + expect(castform.formIndex).toBe(SNOWY_FORM); + + game.move.select(Moves.SPLASH); + game.doSwitchPokemon(2); // Feebas now 2, Kyogre 1 + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); + + expect(castform.formIndex).toBe(RAINY_FORM); + + game.move.select(Moves.SPLASH); + game.doSwitchPokemon(3); // Kyogre now 3, Groudon 1 + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); + + expect(castform.formIndex).toBe(SUNNY_FORM); + + game.move.select(Moves.SPLASH); + game.doSwitchPokemon(4); // Groudon now 4, Rayquaza 1 + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); + + expect(castform.formIndex).toBe(NORMAL_FORM); + + game.move.select(Moves.SPLASH); + game.doSwitchPokemon(2); // Rayquaza now 2, Feebas 1 + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); + + expect(castform.formIndex).toBe(NORMAL_FORM); + + game.move.select(Moves.SNOWSCAPE); + game.move.select(Moves.SPLASH, 1); + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); + + expect(castform.formIndex).toBe(SNOWY_FORM); + + game.move.select(Moves.SPLASH); + game.doSwitchPokemon(5); // Feebas now 5, Altaria 1 + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); + + expect(castform.formIndex).toBe(NORMAL_FORM); + + game.move.select(Moves.SPLASH); + game.doSwitchPokemon(5); // Altaria now 5, Feebas 1 + await game.phaseInterceptor.to("MovePhase"); + await game.toNextTurn(); + + expect(castform.formIndex).toBe(SNOWY_FORM); + + game.scene.arena.trySetWeather(WeatherType.FOG, false); + game.move.select(Moves.SPLASH); + game.move.select(Moves.SPLASH, 1); + await game.phaseInterceptor.to("TurnStartPhase"); + + expect(castform.formIndex).toBe(NORMAL_FORM); + }, 30 * 1000); it("reverts to Normal Form during Clear weather", async () => { await testWeatherFormChange(game, WeatherType.NONE, NORMAL_FORM, SUNNY_FORM); }); - it("reverts to Normal Form if a Pokémon on the field has Cloud Nine", async () => { - await testRevertFormAgainstAbility(game, Abilities.CLOUD_NINE); - }); - it("reverts to Normal Form if a Pokémon on the field has Air Lock", async () => { await testRevertFormAgainstAbility(game, Abilities.AIR_LOCK); }); @@ -177,93 +200,50 @@ describe("Abilities - Forecast", () => { expect(game.scene.getEnemyPokemon()?.formIndex).not.toBe(RAINY_FORM); }); - it("cannot be copied", async () => { - game.override.enemyAbility(Abilities.TRACE); - await game.startBattle([Species.CASTFORM]); + it("reverts to Normal Form when Castform loses Forecast, changes form to match the weather when it regains it", async () => { + game.override.moveset([Moves.SKILL_SWAP, Moves.WORRY_SEED, Moves.SPLASH]).weather(WeatherType.RAIN).battleType("double"); + await game.startBattle([Species.CASTFORM, Species.FEEBAS]); - game.move.select(Moves.SPLASH); + const castform = game.scene.getPlayerField()[0]; - expect(game.scene.getEnemyPokemon()?.hasAbility(Abilities.FORECAST)).toBe(false); - }); + expect(castform.formIndex).toBe(RAINY_FORM); - it("(Skill Swap) reverts to Normal Form when Castform loses Forecast, changes form to match the weather when it regains it", async () => { - game.override.moveset([Moves.SKILL_SWAP]).weather(WeatherType.RAIN); - await game.startBattle([Species.CASTFORM]); - const castform = game.scene.getPlayerPokemon(); + game.move.select(Moves.SKILL_SWAP, 0, BattlerIndex.PLAYER_2); + game.move.select(Moves.SKILL_SWAP, 1, BattlerIndex.PLAYER); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); - expect(castform?.formIndex).toBe(RAINY_FORM); + await game.phaseInterceptor.to("MoveEndPhase"); + expect(castform.formIndex).toBe(NORMAL_FORM); - // First turn - loses Forecast - game.move.select(Moves.SKILL_SWAP); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(castform?.formIndex).toBe(NORMAL_FORM); - - // Second turn - regains Forecast - game.move.select(Moves.SKILL_SWAP); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(castform?.formIndex).toBe(RAINY_FORM); - }); - - it("(Worry Seed) reverts to Normal Form when Castform loses Forecast, changes form to match the weather when it regains it", async () => { - game.override.enemyMoveset(Array(4).fill(Moves.WORRY_SEED)).weather(WeatherType.RAIN); - await game.startBattle([Species.CASTFORM, Species.PIKACHU]); - const castform = game.scene.getPlayerPokemon(); - - expect(castform?.formIndex).toBe(RAINY_FORM); - - // First turn - loses Forecast - game.move.select(Moves.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - expect(castform?.formIndex).toBe(NORMAL_FORM); + await game.phaseInterceptor.to("MoveEndPhase"); + expect(castform.formIndex).toBe(RAINY_FORM); await game.toNextTurn(); - // Second turn - switch out Castform, regains Forecast - game.doSwitchPokemon(1); - await game.toNextTurn(); + game.move.select(Moves.SPLASH); + game.move.select(Moves.WORRY_SEED, 1, BattlerIndex.PLAYER); + await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); + await game.phaseInterceptor.to("MoveEndPhase"); - // Third turn - switch in Castform - game.doSwitchPokemon(1); - await game.phaseInterceptor.to(MovePhase); - - expect(castform?.formIndex).toBe(RAINY_FORM); - }); - - it("reverts to Normal Form when active weather ends", async () => { - await game.startBattle([Species.CASTFORM]); - const castform = game.scene.getPlayerPokemon(); - - game.move.select(Moves.SUNNY_DAY); - await game.phaseInterceptor.to(TurnEndPhase); - - while (game.scene.arena.weather && game.scene.arena.weather.turnsLeft > 0) { - game.move.select(Moves.SPLASH); - expect(castform?.formIndex).toBe(SUNNY_FORM); - await game.toNextTurn(); - } - - expect(castform?.formIndex).toBe(NORMAL_FORM); + expect(castform.formIndex).toBe(NORMAL_FORM); }); it("reverts to Normal Form when Forecast is suppressed, changes form to match the weather when it regains it", async () => { game.override.enemyMoveset(Array(4).fill(Moves.GASTRO_ACID)).weather(WeatherType.RAIN); await game.startBattle([Species.CASTFORM, Species.PIKACHU]); - const castform = game.scene.getPlayerPokemon(); + const castform = game.scene.getPlayerPokemon()!; - expect(castform?.formIndex).toBe(RAINY_FORM); + expect(castform.formIndex).toBe(RAINY_FORM); // First turn - Forecast is suppressed game.move.select(Moves.SPLASH); - await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.move.forceHit(); await game.phaseInterceptor.to(TurnEndPhase); - expect(castform?.summonData.abilitySuppressed).toBe(true); - expect(castform?.formIndex).toBe(NORMAL_FORM); + expect(castform.summonData.abilitySuppressed).toBe(true); + expect(castform.formIndex).toBe(NORMAL_FORM); await game.toNextTurn(); @@ -275,21 +255,8 @@ describe("Abilities - Forecast", () => { game.doSwitchPokemon(1); await game.phaseInterceptor.to(MovePhase); - expect(castform?.summonData.abilitySuppressed).toBe(false); - expect(castform?.formIndex).toBe(RAINY_FORM); - }); - - it("if a Pokémon transforms into Castform, the Pokémon will remain in the same form as the target Castform, regardless of the weather", async () => { - game.override.enemyMoveset(Array(4).fill(Moves.TRANSFORM)); - await game.startBattle([Species.CASTFORM]); - - game.move.select(Moves.SUNNY_DAY); - await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); - - await game.phaseInterceptor.to(TurnEndPhase); - - expect(game.scene.getPlayerPokemon()?.formIndex).toBe(SUNNY_FORM); - expect(game.scene.getEnemyPokemon()?.formIndex).toBe(NORMAL_FORM); + expect(castform.summonData.abilitySuppressed).toBe(false); + expect(castform.formIndex).toBe(RAINY_FORM); }); it("does not change Castform's form until after Stealth Rock deals damage", async () => { @@ -304,31 +271,15 @@ describe("Abilities - Forecast", () => { game.doSwitchPokemon(1); await game.phaseInterceptor.to(PostSummonPhase); - const castform = game.scene.getPlayerPokemon(); + const castform = game.scene.getPlayerPokemon()!; // Damage phase should come first await game.phaseInterceptor.to(DamagePhase); - expect(castform?.hp).toBeLessThan(castform?.getMaxHp() ?? 0); + expect(castform.hp).toBeLessThan(castform.getMaxHp()); // Then change form await game.phaseInterceptor.to(QuietFormChangePhase); - expect(castform?.formIndex).toBe(RAINY_FORM); - }); - - it("transforms to weather-based form when Pokemon with Air Lock is fainted", async () => { - await testTransformAfterAbilityFaint(game, Abilities.AIR_LOCK); - }); - - it("transforms to weather-based form when Pokemon with Cloud Nine is fainted", async () => { - await testTransformAfterAbilityFaint(game, Abilities.CLOUD_NINE); - }); - - it("transforms to weather-based form when Pokemon with Air Lock is switched out", async () => { - await testTransformAfterAbilitySwitchOut(game, Abilities.AIR_LOCK); - }); - - it("transforms to weather-based form when Pokemon with Cloud Nine is switched out", async () => { - await testTransformAfterAbilitySwitchOut(game, Abilities.CLOUD_NINE); + expect(castform.formIndex).toBe(RAINY_FORM); }); it("should be in Normal Form after the user is switched out", async () => { From 93f658b624a8311a77369a1db1cac15925531b7a Mon Sep 17 00:00:00 2001 From: schmidtc1 <62030095+schmidtc1@users.noreply.github.com> Date: Sun, 25 Aug 2024 15:58:28 -0400 Subject: [PATCH 3/7] [Bug] Fixes Lunar Blessing only healing twice on the user instead of ally (#3701) * Sets Lunar Blessing selfTarget healing to false * Removes redundant lines * Adds unit test for Lunar Blessing * Adjusts unit tests to spy on function calls --- src/data/move.ts | 4 +- src/test/moves/lunar_blessing.test.ts | 83 +++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 src/test/moves/lunar_blessing.test.ts diff --git a/src/data/move.ts b/src/data/move.ts index 2a6ac78d6ec..78ddd790f75 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -8632,7 +8632,6 @@ export function initMoves() { .attr(StatusEffectAttr, StatusEffect.BURN), new StatusMove(Moves.JUNGLE_HEALING, Type.GRASS, -1, 10, -1, 0, 8) .attr(HealAttr, 0.25, true, false) - .attr(HealStatusEffectAttr, true, StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN, StatusEffect.SLEEP) .attr(HealStatusEffectAttr, false, StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN, StatusEffect.SLEEP) .target(MoveTarget.USER_AND_ALLIES), new AttackMove(Moves.WICKED_BLOW, Type.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) @@ -8736,8 +8735,7 @@ export function initMoves() { .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), new StatusMove(Moves.LUNAR_BLESSING, Type.PSYCHIC, -1, 5, -1, 0, 8) - .attr(HealAttr, 0.25) - .attr(HealStatusEffectAttr, true, StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN, StatusEffect.SLEEP) + .attr(HealAttr, 0.25, true, false) .attr(HealStatusEffectAttr, false, StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN, StatusEffect.SLEEP) .target(MoveTarget.USER_AND_ALLIES) .triageMove(), diff --git a/src/test/moves/lunar_blessing.test.ts b/src/test/moves/lunar_blessing.test.ts new file mode 100644 index 00000000000..73647716f06 --- /dev/null +++ b/src/test/moves/lunar_blessing.test.ts @@ -0,0 +1,83 @@ +import { StatusEffect } from "#app/enums/status-effect.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import { SPLASH_ONLY } from "#test/utils/testUtils"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Moves - Lunar Blessing", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + + game.override.battleType("double"); + + game.override.enemySpecies(Species.SHUCKLE); + game.override.enemyMoveset(SPLASH_ONLY); + game.override.enemyAbility(Abilities.BALL_FETCH); + + game.override.moveset([Moves.LUNAR_BLESSING, Moves.SPLASH]); + game.override.ability(Abilities.BALL_FETCH); + }); + + it("should restore 25% HP of the user and its ally", async () => { + await game.startBattle([Species.RATTATA, Species.RATTATA]); + const [leftPlayer, rightPlayer] = game.scene.getPlayerField(); + + vi.spyOn(leftPlayer, "getMaxHp").mockReturnValue(100); + vi.spyOn(rightPlayer, "getMaxHp").mockReturnValue(100); + + const initialHp = 1; + leftPlayer["hp"] = initialHp; + rightPlayer["hp"] = initialHp; + const expectedHeal = 25; + + vi.spyOn(leftPlayer, "heal"); + vi.spyOn(rightPlayer, "heal"); + + + game.move.select(Moves.LUNAR_BLESSING, 0); + await game.phaseInterceptor.to(CommandPhase); + game.move.select(Moves.SPLASH, 1); + await game.toNextTurn(); + + expect(leftPlayer.heal).toHaveBeenCalledOnce(); + expect(leftPlayer.heal).toHaveReturnedWith(expectedHeal); + + expect(rightPlayer.heal).toHaveBeenCalledOnce(); + expect(rightPlayer.heal).toHaveReturnedWith(expectedHeal); + }); + + it("should cure status effect of the user and its ally", async () => { + game.override.statusEffect(StatusEffect.BURN); + await game.startBattle([Species.RATTATA, Species.RATTATA]); + const [leftPlayer, rightPlayer] = game.scene.getPlayerField(); + + vi.spyOn(leftPlayer, "resetStatus"); + vi.spyOn(rightPlayer, "resetStatus"); + + game.move.select(Moves.LUNAR_BLESSING, 0); + await game.phaseInterceptor.to(CommandPhase); + game.move.select(Moves.SPLASH, 1); + await game.toNextTurn(); + + expect(leftPlayer.resetStatus).toHaveBeenCalledOnce(); + expect(rightPlayer.resetStatus).toHaveBeenCalledOnce(); + + expect(leftPlayer.status?.effect).toBeUndefined(); + expect(rightPlayer.status?.effect).toBeUndefined(); + }); +}); From 3bcc9f76f1aad6a535a729868f2d2ad4047288c1 Mon Sep 17 00:00:00 2001 From: "gitlocalize-app[bot]" <55277160+gitlocalize-app[bot]@users.noreply.github.com> Date: Sun, 25 Aug 2024 22:06:36 +0200 Subject: [PATCH 4/7] Translate modifier-type.json via GitLocalize (#3758) Co-authored-by: Asdar --- src/locales/es/modifier-type.json | 322 +++++++++++++++--------------- 1 file changed, 165 insertions(+), 157 deletions(-) diff --git a/src/locales/es/modifier-type.json b/src/locales/es/modifier-type.json index ef6d5acbfa2..95325788bf4 100644 --- a/src/locales/es/modifier-type.json +++ b/src/locales/es/modifier-type.json @@ -97,6 +97,10 @@ "name": "MT{{moveId}} - {{moveName}}", "description": "Enseña {{moveName}} a un Pokémon." }, + "TmModifierTypeWithInfo": { + "name": "MT{{moveId}} - {{moveName}}", + "description": "Enseña {{moveName}} a un Pokémon\n(Mantén pulsado C o Shift para más info)." + }, "EvolutionItemModifierType": { "description": "Hace que ciertos Pokémon evolucionen." }, @@ -129,12 +133,12 @@ "name": "Caramelorarísimo" }, "MEGA_BRACELET": { - "name": "Mega-aro", - "description": "Las Megapiedras están disponibles." + "name": "Megapulsera", + "description": "Las megapiedras se vuelven disponibles." }, "DYNAMAX_BAND": { "name": "Maximuñequera", - "description": "Las Maxisetas están disponibles." + "description": "Las maxisetas se vuelven disponibles." }, "TERA_ORB": { "name": "Orbe Teracristal", @@ -154,42 +158,42 @@ "name": "Hiperpoción" }, "MAX_POTION": { - "name": "Máx. Poción" + "name": "Máx. poción" }, "FULL_RESTORE": { - "name": "Restau. Todo" + "name": "Restau. todo" }, "REVIVE": { "name": "Revivir" }, "MAX_REVIVE": { - "name": "Máx. Revivir" + "name": "Máx. revivir" }, "FULL_HEAL": { - "name": "Cura Total" + "name": "Cura total" }, "SACRED_ASH": { - "name": "Cen. Sagrada" + "name": "Ceniza sagrada" }, "REVIVER_SEED": { - "name": "Semilla Revivir", + "name": "Semilla revivir", "description": "Revive al portador con la mitad de sus PS al debilitarse por un golpe directo." }, "WHITE_HERB": { - "name": "White Herb", - "description": "An item to be held by a Pokémon. It will restore any lowered stat in battle." + "name": "Hierba blanca", + "description": "Un objeto que puede llevar un Pokémon. Restaurará cualquier estadística reducida en combate." }, "ETHER": { "name": "Éter" }, "MAX_ETHER": { - "name": "Éter Máx." + "name": "Éter máx." }, "ELIXIR": { "name": "Elixir" }, "MAX_ELIXIR": { - "name": "Elixir Máx." + "name": "Elixir máx." }, "PP_UP": { "name": "Más PP" @@ -204,10 +208,10 @@ "name": "Superincienso" }, "MAX_LURE": { - "name": "Incienso Máximo" + "name": "Incienso máximo" }, "MEMORY_MUSHROOM": { - "name": "Seta Recuerdo", + "name": "Seta recuerdo", "description": "Recuerda un movimiento olvidado de un Pokémon." }, "EXP_SHARE": { @@ -215,8 +219,8 @@ "description": "Los que no combatan reciben el 20% de la EXP." }, "EXP_BALANCE": { - "name": "Equilibrar EXP", - "description": "Da mayor parte de la EXP recibida a los miembros del equipo que tengan menos nivel." + "name": "Equilibrador EXP", + "description": "Da una mayor parte de la EXP recibida a los miembros del equipo que tengan menos nivel." }, "OVAL_CHARM": { "name": "Amuleto Oval", @@ -232,13 +236,13 @@ "name": "Amuleto EXP Dorado" }, "LUCKY_EGG": { - "name": "Huevo Suerte" + "name": "Huevo suerte" }, "GOLDEN_EGG": { - "name": "Huevo Dorado" + "name": "Huevo dorado" }, "SOOTHE_BELL": { - "name": "Camp. Alivio" + "name": "Camp. alivio" }, "SCOPE_LENS": { "name": "Periscopio", @@ -249,7 +253,7 @@ "description": "Puerro muy largo y duro que aumenta la probabilidad de asestar un golpe crítico. Debe llevarlo Farfetch'd." }, "EVIOLITE": { - "name": "Mineral Evolutivo", + "name": "Mineral evolutivo", "description": "Roca misteriosa. El Pokémon portador aumentará su Defensa y su Defensa Especial si aún puede evolucionar." }, "SOUL_DEW": { @@ -266,7 +270,7 @@ "name": "Real de oro" }, "AMULET_COIN": { - "name": "Moneda Amuleto", + "name": "Moneda amuleto", "description": "Aumenta el dinero ganado en un 20%." }, "GOLDEN_PUNCH": { @@ -279,10 +283,10 @@ }, "LOCK_CAPSULE": { "name": "Cápsula candado", - "description": "Le permite bloquear las rarezas de los objetos al cambiar de objetos." + "description": "Permite bloquear las rarezas de los objetos al refrescar objetos." }, "GRIP_CLAW": { - "name": "Garra Garfio" + "name": "Garra garfio" }, "WIDE_LENS": { "name": "Lupa" @@ -294,20 +298,24 @@ "name": "Amuleto curación", "description": "Aumenta la efectividad de los movimientos y objetos de curacion de PS en un 10% (excepto revivir)." }, + "CANDY_JAR": { + "name": "Tarrón de caramelos", + "description": "Aumenta la cantidad de niveles otorgados por los ítems Caramelos Raros en 1." + }, "BERRY_POUCH": { - "name": "Saco Bayas", - "description": "Agrega un 30% de posibilidades de que una baya usada no se consuma." + "name": "Saco bayas", + "description": "Añade un 30% de posibilidades de que una baya no se gaste al usarla." }, "FOCUS_BAND": { - "name": "Cinta Focus", + "name": "Banda aguante", "description": "Agrega un 10% de probabilidad de resistir un ataque que lo debilitaría." }, "QUICK_CLAW": { - "name": "Garra Rápida", + "name": "Garra rápida", "description": "Agrega un 10% de probabilidad de atacar primero independientemente de la velocidad (después de la prioridad)." }, "KINGS_ROCK": { - "name": "Roca del Rey", + "name": "Roca del rey", "description": "Agrega un 10% de probabilidad de que un ataque haga que el oponente retroceda." }, "LEFTOVERS": { @@ -315,7 +323,7 @@ "description": "Cura 1/16 de los PS máximo de un Pokémon cada turno." }, "SHELL_BELL": { - "name": "Camp Concha", + "name": "Cascabel concha", "description": "Cura 1/8 del daño infligido por un Pokémon." }, "TOXIC_ORB": { @@ -327,15 +335,15 @@ "description": "Extraña esfera que causa quemaduras a quien la usa en combate." }, "BATON": { - "name": "Relevo", + "name": "Testigo", "description": "Permite pasar los efectos al cambiar de Pokémon, también evita las trampas." }, "SHINY_CHARM": { - "name": "Amuleto Iris", + "name": "Amuleto iris", "description": "Aumenta drásticamente la posibilidad de que un Pokémon salvaje sea Shiny." }, "ABILITY_CHARM": { - "name": "Amuleto Habilidad", + "name": "Amuleto habilidad", "description": "Aumenta drásticamente la posibilidad de que un Pokémon salvaje tenga una habilidad oculta." }, "IV_SCANNER": { @@ -346,60 +354,60 @@ "name": "Punta ADN" }, "MINI_BLACK_HOLE": { - "name": "Mini Agujero Negro" + "name": "Mini agujero negro" }, "GOLDEN_POKEBALL": { "name": "Poké Ball Dorada", "description": "Agrega 1 opción de objeto extra al final de cada combate." }, "ENEMY_DAMAGE_BOOSTER": { - "name": "Ficha Daño", + "name": "Ficha de daño", "description": "Aumenta el daño en un 5%." }, "ENEMY_DAMAGE_REDUCTION": { - "name": "Ficha Protección", + "name": "Ficha de protección", "description": "Reduce el daño recibido en un 2,5%." }, "ENEMY_HEAL": { - "name": "Ficha Curación", + "name": "Ficha de curación", "description": "Cura el 2% de los PS máximo en cada turno." }, "ENEMY_ATTACK_POISON_CHANCE": { - "name": "Ficha Veneno" + "name": "Ficha veneno" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { - "name": "Ficha Parálisis" + "name": "Ficha parálisis" }, "ENEMY_ATTACK_BURN_CHANCE": { - "name": "Ficha Quemadura" + "name": "Ficha quemadura" }, "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { - "name": "Ficha Cura Total", + "name": "Ficha cura total", "description": "Agrega un 2.5% de probabilidad cada turno de curar un problema de estado." }, "ENEMY_ENDURE_CHANCE": { - "name": "Ficha Aguante" + "name": "Ficha aguante" }, "ENEMY_FUSED_CHANCE": { - "name": "Ficha Fusión", + "name": "Ficha fusión", "description": "Agrega un 1% de probabilidad de que un Pokémon salvaje sea una fusión." } }, "SpeciesBoosterItem": { "LIGHT_BALL": { - "name": "Bola Luminosa", + "name": "Bola luminosa", "description": "Asombrosa esfera que aumenta el Ataque y el Ataque Especial. Debe llevarla Pikachu." }, "THICK_CLUB": { - "name": "Hueso Grueso", + "name": "Hueso grueso", "description": "Extraño tipo de hueso que potencia los ataques físicos. Debe llevarlo Cubone o Marowak." }, "METAL_POWDER": { - "name": "Polvo Metálico", + "name": "Polvo metálico", "description": "Polvo muy fino, pero a la vez poderoso, que aumenta la Defensa. Debe llevarlo Ditto." }, "QUICK_POWDER": { - "name": "Polvo Veloz", + "name": "Polvo veloz", "description": "Polvo muy fino, pero a la vez poderoso, que aumenta la Velocidad. Debe llevarlo Ditto." } }, @@ -413,35 +421,35 @@ "dire_hit": "Crítico X" }, "TempBattleStatBoosterStatName": { - "ATK": "Attack", - "DEF": "Defense", - "SPATK": "Sp. Atk", - "SPDEF": "Sp. Def", - "SPD": "Speed", - "ACC": "Accuracy", - "CRIT": "Critical Hit Ratio", - "EVA": "Evasiveness", + "ATK": "Ataque", + "DEF": "Defensa", + "SPATK": "Ataq. Esp.", + "SPDEF": "Def. Esp.", + "SPD": "Velocidad", + "ACC": "Precisión", + "CRIT": "Tasa de crítico", + "EVA": "Evasión", "DEFAULT": "???" }, "AttackTypeBoosterItem": { - "silk_scarf": "Pañuelo Seda", - "black_belt": "Cinturón Negro", - "sharp_beak": "Pico Afilado", - "poison_barb": "Flecha Venenosa", - "soft_sand": "Arena Fina", - "hard_stone": "Piedra Dura", - "silver_powder": "Polvo Plata", + "silk_scarf": "Pañuelo seda", + "black_belt": "Cinturón negro", + "sharp_beak": "Pico afilado", + "poison_barb": "Flecha venenosa", + "soft_sand": "Arena fina", + "hard_stone": "Piedra dura", + "silver_powder": "Polvo plata", "spell_tag": "Hechizo", - "metal_coat": "Rev. Metálico", + "metal_coat": "Revest. metálico", "charcoal": "Carbón", - "mystic_water": "Agua Mística", - "miracle_seed": "Semilla Milagro", + "mystic_water": "Agua mística", + "miracle_seed": "Semilla milagro", "magnet": "Imán", - "twisted_spoon": "Cuchara Torcida", + "twisted_spoon": "Cuchara torcida", "never_melt_ice": "Antiderretir", - "dragon_fang": "Colmillo Dragón", - "black_glasses": "Gafas de Sol", - "fairy_feather": "Pluma Hada" + "dragon_fang": "Colmillo dragón", + "black_glasses": "Gafas de sol", + "fairy_feather": "Pluma feérica" }, "BaseStatBoosterItem": { "hp_up": "Más PS", @@ -452,38 +460,38 @@ "carbos": "Carburante" }, "EvolutionItem": { - "NONE": "None", - "LINKING_CORD": "Cordón Unión", - "SUN_STONE": "Piedra Solar", - "MOON_STONE": "Piedra Lunar", - "LEAF_STONE": "Piedra Hoja", - "FIRE_STONE": "Piedra Fuego", - "WATER_STONE": "Piedra Agua", - "THUNDER_STONE": "Piedra Trueno", - "ICE_STONE": "Piedra Hielo", - "DUSK_STONE": "Piedra Noche", - "DAWN_STONE": "Piedra Alba", - "SHINY_STONE": "Piedra Día", - "CRACKED_POT": "Tetera Agrietada", - "SWEET_APPLE": "Manzana Dulce", - "TART_APPLE": "Manzana Ácida", - "STRAWBERRY_SWEET": "Confite Fresa", - "UNREMARKABLE_TEACUP": "Cuenco Mediocre", - "CHIPPED_POT": "Tetera Rota", - "BLACK_AUGURITE": "Mineral Negro", - "GALARICA_CUFF": "Brazal Galanuez", - "GALARICA_WREATH": "Corona Galanuez", - "PEAT_BLOCK": "Bloque de Turba", - "AUSPICIOUS_ARMOR": "Armadura Auspiciosa", - "MALICIOUS_ARMOR": "Armadura Maldita", - "MASTERPIECE_TEACUP": "Cuenco Exquisito", - "METAL_ALLOY": "Metal Compuesto", - "SCROLL_OF_DARKNESS": "Manuscrito Sombras", - "SCROLL_OF_WATERS": "Manuscrito Aguas", - "SYRUPY_APPLE": "Manzana Melosa" + "NONE": "Ninguno", + "LINKING_CORD": "Cordón unión", + "SUN_STONE": "Piedra solar", + "MOON_STONE": "Piedra lunar", + "LEAF_STONE": "Piedra hoja", + "FIRE_STONE": "Piedra fuego", + "WATER_STONE": "Piedra agua", + "THUNDER_STONE": "Piedra trueno", + "ICE_STONE": "Piedra hielo", + "DUSK_STONE": "Piedra noche", + "DAWN_STONE": "Piedra alba", + "SHINY_STONE": "Piedra día", + "CRACKED_POT": "Tetera agrietada", + "SWEET_APPLE": "Manzana dulce", + "TART_APPLE": "Manzana ácida", + "STRAWBERRY_SWEET": "Confite fresa", + "UNREMARKABLE_TEACUP": "Cuenco mediocre", + "CHIPPED_POT": "Tetera rota", + "BLACK_AUGURITE": "Mineral negro", + "GALARICA_CUFF": "Brazal galanuez", + "GALARICA_WREATH": "Corona galanuez", + "PEAT_BLOCK": "Bloque de turba", + "AUSPICIOUS_ARMOR": "Armadura auspiciosa", + "MALICIOUS_ARMOR": "Armadura maldita", + "MASTERPIECE_TEACUP": "Cuenco exquisito", + "METAL_ALLOY": "Metal compuesto", + "SCROLL_OF_DARKNESS": "Manuscrito sombras", + "SCROLL_OF_WATERS": "Manuscrito aguas", + "SYRUPY_APPLE": "Manzana melosa" }, "FormChangeItem": { - "NONE": "None", + "NONE": "Ninguno", "ABOMASITE": "Abomasnowita", "ABSOLITE": "Absolita", "AERODACTYLITE": "Aerodactylita", @@ -532,70 +540,70 @@ "SWAMPERTITE": "Swampertita", "TYRANITARITE": "Tyranitarita", "VENUSAURITE": "Venusaurita", - "BLUE_ORB": "Prisma Azul", - "RED_ORB": "Prisma Rojo", - "SHARP_METEORITE": "Meteorito Afilado", - "HARD_METEORITE": "Meteorito Duro", - "SMOOTH_METEORITE": "Meteorito Suave", - "ADAMANT_CRYSTAL": "Gran Diamansfera", - "LUSTROUS_GLOBE": "Gran Lustresfera", - "GRISEOUS_CORE": "Gran Griseosfera", - "REVEAL_GLASS": "Espejo Veraz", + "BLUE_ORB": "Prisma azul", + "RED_ORB": "Prisma rojo", + "SHARP_METEORITE": "Meteorito afilado", + "HARD_METEORITE": "Meteorito duro", + "SMOOTH_METEORITE": "Meteorito suave", + "ADAMANT_CRYSTAL": "Gran diamansfera", + "LUSTROUS_GLOBE": "Gran lustresfera", + "GRISEOUS_CORE": "Gran griseosfera", + "REVEAL_GLASS": "Espejo veraz", "GRACIDEA": "Gracídea", - "MAX_MUSHROOMS": "MaxiSetas", - "DARK_STONE": "Piedra Oscura", - "LIGHT_STONE": "Piedra Luminosa", - "PRISON_BOTTLE": "Vasija Castigo", + "MAX_MUSHROOMS": "Maxisetas", + "DARK_STONE": "Orbe oscuro", + "LIGHT_STONE": "Orbe claro", + "PRISON_BOTTLE": "Vasija castigo", "N_LUNARIZER": "Necroluna", "N_SOLARIZER": "Necrosol", - "RUSTED_SWORD": "Espada Oxidada", - "RUSTED_SHIELD": "Escudo Oxidado", - "ICY_REINS_OF_UNITY": "Riendas Unión Heladas", - "SHADOW_REINS_OF_UNITY": "Riendas Unión Oscuras", - "WELLSPRING_MASK": "Máscara Fuente", - "HEARTHFLAME_MASK": "Máscara Horno", - "CORNERSTONE_MASK": "Máscara Cimiento", + "RUSTED_SWORD": "Espada oxidada", + "RUSTED_SHIELD": "Escudo oxidado", + "ICY_REINS_OF_UNITY": "Riendas unión heladas", + "SHADOW_REINS_OF_UNITY": "Riendas unión oscuras", + "WELLSPRING_MASK": "Máscara fuente", + "HEARTHFLAME_MASK": "Máscara horno", + "CORNERSTONE_MASK": "Máscara cimiento", "SHOCK_DRIVE": "FulgoROM", "BURN_DRIVE": "PiroROM", "CHILL_DRIVE": "CrioROM", "DOUSE_DRIVE": "HidroROM", "ULTRANECROZIUM_Z": "Ultranecrostal Z", - "FIST_PLATE": "Tabla Fuerte", - "SKY_PLATE": "Tabla Cielo", - "TOXIC_PLATE": "Tabla Tóxica", - "EARTH_PLATE": "Tabla Terrax", - "STONE_PLATE": "Tabla Pétrea", - "INSECT_PLATE": "Tabla Bicho", - "SPOOKY_PLATE": "Tabla Terror", - "IRON_PLATE": "Tabla Acero", - "FLAME_PLATE": "Tabla Llama", - "SPLASH_PLATE": "Tabla Linfa", - "MEADOW_PLATE": "Tabla Pradal", - "ZAP_PLATE": "Tabla Trueno", - "MIND_PLATE": "Tabla Mental", - "ICICLE_PLATE": "Tabla Helada", - "DRACO_PLATE": "Tabla Draco", - "DREAD_PLATE": "Tabla Oscura", - "PIXIE_PLATE": "Tabla Duende", - "BLANK_PLATE": "Tabla Neutra", - "LEGEND_PLATE": "Tabla Legendaria", - "FIGHTING_MEMORY": "Disco Lucha", - "FLYING_MEMORY": "Disco Volador", - "POISON_MEMORY": "Disco Veneno", - "GROUND_MEMORY": "Disco Tierra", - "ROCK_MEMORY": "Disco Roca", - "BUG_MEMORY": "Disco Bicho", - "GHOST_MEMORY": "Disco Fantasma", - "STEEL_MEMORY": "Disco Acero", - "FIRE_MEMORY": "Disco Fuego", - "WATER_MEMORY": "Disco Agua", - "GRASS_MEMORY": "Disco Planta", - "ELECTRIC_MEMORY": "Disco Eléctrico", - "PSYCHIC_MEMORY": "Disco Psíquico", - "ICE_MEMORY": "Disco Hielo", - "DRAGON_MEMORY": "Disco Dragón", - "DARK_MEMORY": "Disco Siniestro", - "FAIRY_MEMORY": "Disco Hada", - "BLANK_MEMORY": "Disco Blanco" + "FIST_PLATE": "Tabla fuerte", + "SKY_PLATE": "Tabla cielo", + "TOXIC_PLATE": "Tabla tóxica", + "EARTH_PLATE": "Tabla terrax", + "STONE_PLATE": "Tabla pétrea", + "INSECT_PLATE": "Tabla bicho", + "SPOOKY_PLATE": "Tabla terror", + "IRON_PLATE": "Tabla acero", + "FLAME_PLATE": "Tabla llama", + "SPLASH_PLATE": "Tabla linfa", + "MEADOW_PLATE": "Tabla pradal", + "ZAP_PLATE": "Tabla trueno", + "MIND_PLATE": "Tabla mental", + "ICICLE_PLATE": "Tabla helada", + "DRACO_PLATE": "Tabla draco", + "DREAD_PLATE": "Tabla oscura", + "PIXIE_PLATE": "Tabla duende", + "BLANK_PLATE": "Tabla neutra", + "LEGEND_PLATE": "Tabla legendaria", + "FIGHTING_MEMORY": "Disco lucha", + "FLYING_MEMORY": "Disco volador", + "POISON_MEMORY": "Disco veneno", + "GROUND_MEMORY": "Disco tierra", + "ROCK_MEMORY": "Disco roca", + "BUG_MEMORY": "Disco bicho", + "GHOST_MEMORY": "Disco fantasma", + "STEEL_MEMORY": "Disco acero", + "FIRE_MEMORY": "Disco fuego", + "WATER_MEMORY": "Disco agua", + "GRASS_MEMORY": "Disco planta", + "ELECTRIC_MEMORY": "Disco eléctrico", + "PSYCHIC_MEMORY": "Disco psíquico", + "ICE_MEMORY": "Disco hielo", + "DRAGON_MEMORY": "Disco dragón", + "DARK_MEMORY": "Disco siniestro", + "FAIRY_MEMORY": "Disco hada", + "BLANK_MEMORY": "Disco en blanco" } -} \ No newline at end of file +} From 6b1163211455daa0187ee634b4832fffc47de7d4 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 25 Aug 2024 22:09:01 +0200 Subject: [PATCH 5/7] [Localization] Some French corrections + new dialogues translations (#3727) * Update ability-trigger.json * Update ability.json * Update achv-female.json * Update achv-male.json * Update battle-info.json * Update bgm-name.json * Update egg.json * Update menu.json * Update modifier-type.json * Update modifier.json * Update modifier.json * Update trainer-classes.json * Update move.json * Update dialogue-male.json * Update dialogue-male.json * Update dialogue-female.json * Update dialogue-male.json * Update dialogue-female.json * Update dialogue-male.json * Update dialogue-female.json * Update dialogue-double-battle-female.json * Update dialogue-double-battle-male.json * Update dialogue-male.json * Update dialogue-male.json * Update dialogue-female.json * Update bgm-name.json * Update bgm-name.json * Update move.json * Update bgm-name.json * Update dialogue-male.json * Update dialogue-female.json * Update dialogue-male.json * Update dialogue-female.json * Update dialogue-male.json * Update dialogue-male.json * Update dialogue-male.json * Update dialogue-female.json * Update dialogue-male.json * Update dialogue-female.json * Update dialogue-male.json * Update dialogue-female.json * Update modifier.json * Update dialogue-male.json * Update dialogue-female.json * Update dialogue-male.json * Update dialogue-female.json --- src/locales/fr/ability-trigger.json | 6 +- src/locales/fr/ability.json | 6 +- src/locales/fr/achv-female.json | 4 +- src/locales/fr/achv-male.json | 4 +- src/locales/fr/battle-info.json | 4 +- src/locales/fr/bgm-name.json | 64 +++---- .../fr/dialogue-double-battle-female.json | 4 +- .../fr/dialogue-double-battle-male.json | 4 +- src/locales/fr/dialogue-female.json | 157 +++++++++++++-- src/locales/fr/dialogue-male.json | 179 +++++++++++++----- src/locales/fr/egg.json | 18 +- src/locales/fr/menu.json | 6 +- src/locales/fr/modifier-type.json | 28 +-- src/locales/fr/modifier.json | 4 +- src/locales/fr/move.json | 138 +++++++------- src/locales/fr/trainer-classes.json | 8 +- 16 files changed, 420 insertions(+), 214 deletions(-) diff --git a/src/locales/fr/ability-trigger.json b/src/locales/fr/ability-trigger.json index 0f91f6e2209..d10fc18a146 100644 --- a/src/locales/fr/ability-trigger.json +++ b/src/locales/fr/ability-trigger.json @@ -12,7 +12,7 @@ "typeImmunityHeal": "{{abilityName}} de {{pokemonNameWithAffix}}\nrestaure un peu ses PV !", "nonSuperEffectiveImmunity": "{{pokemonNameWithAffix}} évite\nles dégâts avec {{abilityName}} !", "disguiseAvoidedDamage": "Le déguisement de {{pokemonNameWithAffix}}\ntombe !", - "moveImmunity": "Ça n'affecte pas {{pokemonNameWithAffix}}…", + "moveImmunity": "Ça n’affecte pas {{pokemonNameWithAffix}}…", "reverseDrain": "{{pokemonNameWithAffix}} aspire\nle suintement !", "postDefendTypeChange": "{{abilityName}} de {{pokemonNameWithAffix}}\nle transforme en type {{typeName}} !", "postDefendContactDamage": "{{pokemonNameWithAffix}} est blessé\npar son talent {{abilityName}} !", @@ -23,7 +23,7 @@ "postAttackStealHeldItem": "{{pokemonNameWithAffix}} vole\nl’objet {{stolenItemType}} de {{defenderName}} !", "postDefendStealHeldItem": "{{pokemonNameWithAffix}} vole\nl’objet {{stolenItemType}} de {{attackerName}} !", "copyFaintedAllyAbility": "{{pokemonNameWithAffix}} reçoit\nle talent {{abilityName}} !", - "intimidateImmunity": "{{abilityName}} de {{pokemonNameWithAffix}}\nl’empêche d'être intimidé !", + "intimidateImmunity": "{{abilityName}} de {{pokemonNameWithAffix}}\nl’empêche d’être intimidé !", "postSummonAllyHeal": "{{pokemonNameWithAffix}} boit le thé\npréparé par {{pokemonName}} !", "postSummonClearAllyStats": "Les stats de {{pokemonNameWithAffix}}\nsont revenues à la normale !", "postSummonTransform": "{{pokemonNameWithAffix}} prend\nl’apparence de {{targetName}} !", @@ -59,4 +59,4 @@ "postSummonTabletsOfRuin": "Le Bois du Fléau de {{pokemonNameWithAffix}}\naffaiblit l’{{statName}} des Pokémon alentour !", "postSummonBeadsOfRuin": "Les Perles du Fléau de {{pokemonNameWithAffix}}\naffaiblissent la {{statName}} des Pokémon alentour !", "preventBerryUse": "{{pokemonNameWithAffix}} est tendu\net ne peut plus manger de Baies !" -} \ No newline at end of file +} diff --git a/src/locales/fr/ability.json b/src/locales/fr/ability.json index 0993fcde3a9..7db44c45fa7 100644 --- a/src/locales/fr/ability.json +++ b/src/locales/fr/ability.json @@ -469,11 +469,11 @@ }, "honeyGather": { "name": "Cherche Miel", - "description": "The Pokémon gathers Honey after a battle. The Honey is then sold for money." + "description": "Le Pokémon trouve du Miel après un combat et est directement revendu contre de l’argent." }, "frisk": { "name": "Fouille", - "description": "Lorsqu'il entre en combat, le Pokémon peut vérifier la capacité d'un Pokémon adverse." + "description": "Lorsqu’il entre en combat, le Pokémon peut vérifier la capacité d’un Pokémon adverse." }, "reckless": { "name": "Téméraire", @@ -1239,4 +1239,4 @@ "name": "Emprise Toxique", "description": "Lorsque Pêchaminus empoisonne un Pokémon grâce à l’une de ses capacités, ce dernier devient également confus." } -} \ No newline at end of file +} diff --git a/src/locales/fr/achv-female.json b/src/locales/fr/achv-female.json index 0f82f612a6c..68e114965cd 100644 --- a/src/locales/fr/achv-female.json +++ b/src/locales/fr/achv-female.json @@ -62,7 +62,7 @@ "name": "Caïd" }, "HealAchv": { - "description": "Soigner {{healAmount}} {{HP}} en une fois avec une capacité, un talent ou un objet tenu." + "description": "Soigner {{healAmount}} {{HP}} en une fois avec une capacité,\nun talent ou un objet tenu." }, "1000_HEAL": { "name": "Médecin" @@ -261,4 +261,4 @@ "name": "Du premier coup !", "description": "Terminer un challenge « Nouveau départ »." } -} \ No newline at end of file +} diff --git a/src/locales/fr/achv-male.json b/src/locales/fr/achv-male.json index c51da04ecc8..077d37b4500 100644 --- a/src/locales/fr/achv-male.json +++ b/src/locales/fr/achv-male.json @@ -36,7 +36,7 @@ "name": "One Punch Man" }, "HealAchv": { - "description": "Soigner {{healAmount}} {{HP}} en une fois avec une capacité, un talent ou un objet tenu." + "description": "Soigner {{healAmount}} {{HP}} en une fois avec une capacité,\nun talent ou un objet tenu." }, "250_HEAL": { "name": "Infirmier" @@ -261,4 +261,4 @@ "name": "Du premier coup !", "description": "Terminer un challenge « Nouveau départ »." } -} \ No newline at end of file +} diff --git a/src/locales/fr/battle-info.json b/src/locales/fr/battle-info.json index 1fd968a8bd4..1408fd4d602 100644 --- a/src/locales/fr/battle-info.json +++ b/src/locales/fr/battle-info.json @@ -1,3 +1,3 @@ { - "generation": "Génération {{generation}}" -} \ No newline at end of file + "generation": "{{generation}}" +} diff --git a/src/locales/fr/bgm-name.json b/src/locales/fr/bgm-name.json index e32855990f7..f97523e109b 100644 --- a/src/locales/fr/bgm-name.json +++ b/src/locales/fr/bgm-name.json @@ -1,5 +1,5 @@ { - "music": "Musique : ", + "music": "♪ : ", "missing_entries": "{{name}}", "battle_kanto_champion": "N2B2 - Vs. Maitre de Kanto", "battle_johto_champion": "N2B2 - Vs. Maitre de Johto", @@ -83,41 +83,41 @@ "battle_galactic_boss": "DÉPS - Vs. Hélio", "battle_plasma_boss": "N2B2 - Vs. Ghetis", "battle_flare_boss": "XY - Vs. Lysandre", - "abyss": "PDM EdS - Cratère Obscur", - "badlands": "PDM EdS - Vallée Stérile", - "beach": "PDM EdS - Falaise Trempée", - "cave": "PDM EdS - Pic Céleste (grotte)", - "construction_site": "PDM EdS - Carrière Rocher", - "desert": "PDM EdS - Désert du Nord", - "dojo": "PDM EdS - Dojo Ossatueur", - "end": "PDM EdS - Tour Céleste", - "factory": "PDM EdS - Ruines Cachées", - "fairy_cave": "PDM EdS - Caverne Étoile", - "forest": "PDM EdS - Forêt Crépuscule", - "grass": "PDM EdS - Bois aux Pommes", - "graveyard": "PDM EdS - Forêt Trompeuse", - "ice_cave": "PDM EdS - Montagne Glacier", - "island": "PDM EdS - Côte Escarpée", + "abyss": "PDM EdC - Cratère Obscur", + "badlands": "PDM EdC - Vallée Stérile", + "beach": "PDM EdC - Falaise Trempée", + "cave": "PDM EdC - Pic Céleste (grotte)", + "construction_site": "PDM EdC - Carrière Rocher", + "desert": "PDM EdC - Désert du Nord", + "dojo": "PDM EdC - Dojo Ossatueur", + "end": "PDM EdC - Tour Céleste", + "factory": "PDM EdC - Ruines Cachées", + "fairy_cave": "PDM EdC - Caverne Étoile", + "forest": "PDM EdC - Forêt Crépuscule", + "grass": "PDM EdC - Bois aux Pommes", + "graveyard": "PDM EdC - Forêt Trompeuse", + "ice_cave": "PDM EdC - Montagne Glacier", + "island": "PDM EdC - Côte Escarpée", "jungle": "Lmz - Jungle", "laboratory": "Firel - Laboratory", - "lake": "PDM EdS - Caverne Cristal", - "meadow": "PDM EdS - Pic Céleste (forêt)", + "lake": "PDM EdC - Caverne Cristal", + "meadow": "PDM EdC - Pic Céleste (forêt)", "metropolis": "Firel - Metropolis", - "mountain": "PDM EdS - Mt Corne", - "plains": "PDM EdS - Pic Céleste (prairie)", - "power_plant": "PDM EdS - Plaines Élek", - "ruins": "PDM EdS - Ruine Scellée", + "mountain": "PDM EdC - Mont Corne", + "plains": "PDM EdC - Pic Céleste (prairie)", + "power_plant": "PDM EdC - Plaines Élek", + "ruins": "PDM EdC - Ruine Scellée", "sea": "Andr06 - Marine Mystique", "seabed": "Firel - Seabed", "slum": "Andr06 - Sneaky Snom", - "snowy_forest": "PDM EdS - Pic Céleste (plaine enneigée)", + "snowy_forest": "PDM EdC - Pic Céleste (plaine enneigée)", "space": "Firel - Aether", - "swamp": "PDM EdS - Mer Fermée", - "tall_grass": "PDM EdS - Forêt Brumeuse", - "temple": "PDM EdS - Grotte Égide", - "town": "PDM EdS - Donjon aléatoire - Thème 3", - "volcano": "PDM EdS - Grotte Étuve", - "wasteland": "PDM EdS - Terres Illusoires", + "swamp": "PDM EdC - Mer Fermée", + "tall_grass": "PDM EdC - Forêt Brumeuse", + "temple": "PDM EdC - Grotte Égide", + "town": "PDM EdC - Donjon aléatoire - Thème 3", + "volcano": "PDM EdC - Grotte Étuve", + "wasteland": "PDM EdC - Terres Illusoires", "encounter_ace_trainer": "NB - Regards croisés (Topdresseur·euse)", "encounter_backpacker": "NB - Regards croisés (Randonneur·euse)", "encounter_clerk": "NB - Regards croisés (Employé·e)", @@ -133,6 +133,6 @@ "encounter_twins": "NB - Regards croisés (Jumelles)", "encounter_youngster": "NB - Regards croisés (Gamin)", "heal": "NB - Soin de Pokémon", - "menu": "PDM EdS - Bienvenue dans le monde de Pokémon !", - "title": "PDM EdS - Menu Principal" -} \ No newline at end of file + "menu": "PDM EdC - Bienvenue dans le monde de Pokémon !", + "title": "PDM EdC - Menu Principal" +} diff --git a/src/locales/fr/dialogue-double-battle-female.json b/src/locales/fr/dialogue-double-battle-female.json index 078149783a9..55bb5da9800 100644 --- a/src/locales/fr/dialogue-double-battle-female.json +++ b/src/locales/fr/dialogue-double-battle-female.json @@ -1,7 +1,7 @@ { "blue_red_double": { "encounter": { - "1": "Blue : Hé Red, montrons-leur de quel bois on se chauffe !\n$Red : …\n$Blue : Voilà la puissance du Bourg Palette !" + "1": "Blue : Hé Red, montrons-lui de quel bois on se chauffe !\n$Red : …\n$Blue : Voilà la puissance du Bourg Palette !" }, "victory": { "1": "Blue : C’était un magnifique combat !\n$Red : …" @@ -79,4 +79,4 @@ "1": "Peterson : Ça c’est du rock !\n$Rosemary : Frérot…" } } -} \ No newline at end of file +} diff --git a/src/locales/fr/dialogue-double-battle-male.json b/src/locales/fr/dialogue-double-battle-male.json index a31e855cf4b..188b27ca143 100644 --- a/src/locales/fr/dialogue-double-battle-male.json +++ b/src/locales/fr/dialogue-double-battle-male.json @@ -1,7 +1,7 @@ { "blue_red_double": { "encounter": { - "1": "Blue : Hé Red, montrons-leur de quel bois on se chauffe !\n$Red : …\n$Blue : Voilà la puissance du Bourg Palette !" + "1": "Blue : Hé Red, montrons-lui de quel bois on se chauffe !\n$Red : …\n$Blue : Voilà la puissance du Bourg Palette !" }, "victory": { "1": "Blue : C’était un magnifique combat !\n$Red : …" @@ -79,4 +79,4 @@ "1": "Peterson : Ça c’est du rock !\n$Rosemary : Frérot…" } } -} \ No newline at end of file +} diff --git a/src/locales/fr/dialogue-female.json b/src/locales/fr/dialogue-female.json index 1aaadbb6449..82e3a4efd46 100644 --- a/src/locales/fr/dialogue-female.json +++ b/src/locales/fr/dialogue-female.json @@ -38,7 +38,7 @@ "3": "Je te connais pas. Ça te dis de te battre ?", "4": "Prenons du bon temps avec ce combat Pokémon !", "5": "Je vais t’apprendre à te battre avec tes Pokémon !", - "6": "Un combat doit être pris au sérieux. T’es prête à te battre ?", + "6": "Un combat doit toujours être pris au sérieux.\nT’es prête à te battre ?", "7": "Tu seras pas jeune éternellement. T’as qu’une chance pendant un combat. Bientôt, tu seras plus qu’un souvenir.", "8": "Tu ferais mieux d’y aller doucement avec moi. Mais je vais me battre sérieusement !", "9": "Je m’ennuie à l’école. Y’a rien à y faire. *Baille*\nJe me bats juste pour passer le temps." @@ -69,7 +69,7 @@ "defeat": { "1": "Tu ne devrais pas t’énerver sur tes Pokémon, même après une défaite.", "2": "Alors ? Pas mal mes Pokémon, hein ? Je suis fait pour ça.", - "3": "Peut importe à quel point t’aimes tes Pokémon, il faut toujours de la discipline s’ils se comportent mal." + "3": "Peu importe à quel point t’aimes tes Pokémon, il faut toujours de la discipline s’ils se comportent mal." } }, "breeder_female": { @@ -148,7 +148,7 @@ }, "victory": { "1": "Très bien… T’as de bons Pokémon…", - "2": "Quoi ?! Mais c'est moi le génie des combats !", + "2": "Quoi ?! Mais c’est moi le génie des combats !", "3": "Évidemment que t’es le personnage principal !", "4": "OK ! OK ! Tu pourrais être une Topdresseuse !" }, @@ -169,50 +169,98 @@ }, "rocket_grunt": { "encounter": { - "1": "Nous sommes de retour !" + "1": "Nous sommes de retour !", + "2": "Ça bosse dur, ici ! Alors du balai !", + "3": "File-nous tes Pokémon ou tu vas gouter à la colère de la Team Rocket !", + "4": "Sois témoin de ce qu’est une vraie terreur de la Team Rocket!", + "5": "Hé gamine ! Moi être guy member of la Team Rocket !" }, "victory": { - "1": "Une fois de plus la Team Rocket s’envole vers d’autres cieux !" + "1": "Une fois de plus la Team Rocket s’envole vers d’autres cieux !", + "2": "Mince! J’ai laissé tomber\nla Clé Ascenseur !", + "3": "J’ai tout foiré !", + "4": "Mes compagnons vont me venger !", + "5": "Toi dire quoi ? Forget que tu m’as vu !\nYou n’as rien seen !" } }, "magma_grunt": { "encounter": { - "1": "N’espère pas recevoir de la pitié si tu te mets sur le chemin de la Team Magma !" + "1": "N’espère pas recevoir de la pitié si tu te mets sur le chemin de la Team Magma !", + "2": "Ne te mêle pas de nos affaires ! On va rendre ce monde meilleur !", + "3": "Hors de mon chemin ! La Team Magma n’a pas de temps pour les gamins !", + "4": "J’espère que t’as quelques marshmallows, car ça va chauffer !", + "5": "On va utiliser le puissance d’un volcan ! Ça va être… explosif ! Tu l’as… ? Héhé !" }, "victory": { - "1": "Je…?\nJ’ai perdu ?!" + "1": "Je…?\nJ’ai perdu ?!", + "2": "Je peux pas croire que j’ai pas pris mon déjeuner juste pour ça…", + "3": "Impossible ! T’es qu’une gosse !", + "4": "Aahhh…\nJ’aurais dû directement rentrer à la planque…", + "5": "Tu m’as démoli… Tu crois que le boss va suspendre mon salaire ?" } }, "aqua_grunt": { "encounter": { - "1": "Aucune pitié si tu te mets sur le chemin de la Team Aqua, même pour une gamine !" + "1": "Aucune pitié si tu te mets sur le chemin de la Team Aqua, même pour un gamin !", + "2": "Grrr…\nTu as eu le culot de t’opposer à la Team Aqua !", + "3": "Je vais te liquéfier !\nEt ce sera pas qu’à cause des mes Pokémon Eau !", + "4": "Nous, la Team Aqua, existons pour le bien commun !", + "5": "Prépare-toi à te faire emporter par le courant de…\nEuh… Mes Pokémon ! Oui, mes Pokémon !" }, "victory": { - "1": "Comment ça ?" + "1": "Comment ça ?", + "2": "Ah, j’avais pas prévu d’être gêné par un mouflet qui se mêle de tout !", + "3": "J’ai perdu ?! Super, j’ai plus qu’à nager jusqu’à la planque maintenant…", + "4": "Oh non quelle angoisse…\nLe boss va me démonter…", + "5": "Je suis battu… Tu penses que le boss va me faire subir le supplice de la planche ?…" } }, "galactic_grunt": { "encounter": { - "1": "Ne te mets pas en travers de la Team Galaxie !" + "1": "Ne te mets pas en travers de la Team Galaxie !", + "2": "Sois témoin de la puissance de notre technologie et du futur qui se profile !", + "3": "Au nom de la Team Galaxie, j’éliminerai quiconque se mettera sur notre route !", + "4": "Prépare ta défaite !", + "5": "J’espère que t’es prête à te prendre une raclée de l’espace !" }, "victory": { - "1": "Désactivation…" + "1": "Désactivation…", + "2": "Cet échec n’est qu’une poussière face à nos ambitions débordantes.", + "3": "Notre projet est bien plus important que cette défaite.", + "4": "Comment ?!", + "5": "Note à moi-même :\nM’entrainer aux combats Pokémon. Ça urge…" } }, "plasma_grunt": { "encounter": { - "1": "Pas de quatiers à ceux qui ne suivent pas notre idéal !" + "1": "Pas de quatiers à ceux qui ne suivent pas notre idéal !", + "2": "Si je gagne, tu relâches tous tes Pokémon !", + "3": "Si tu te mets en travers de la Team Plasma, je m’occuperai de toi personnellement !", + "4": "La Team Plasma va libérer les Pokémon de tous les humains égoïstes dans ton genre !", + "5": "Nos coupes sont lunaires… Mais en combat ?\nTu vas vite le découvrir." }, "victory": { - "1": "Plasmaaaaaaaaa !" + "1": "Plasmaaaaaaaaa !", + "2": "Comment ai-je pu perdre…", + "3": "… Ce Pokémon est nul, j’vais aller en voler de meilleurs !", + "4": "Les plans ambitieux connaissent toujours leurs lots d’interruptions.", + "5": "C’est mauvais… MAUVAIS MAUVAIS MAUVAIS MAUVAIS !\nVa falloir battre en retraite, c’est la méga cata !" } }, "flare_grunt": { "encounter": { - "1": "Le style et le bon gout, il n’y a que ça qui compte !" + "1": "Tes Pokémon ne sont pas dignes de l’élégance de la Team Flare.", + "2": "T’as des lunettes de soleil j’espère ?\nCar prépare-toi à être éblouie !", + "3": "La Team Flare va purifier ce monde de toute imperfection !", + "4": "Prépare-toi à découvrir l’indiscutable sens du style de la Team Flare !", + "5": "La mode, c’est important !" }, "victory": { - "1": "Mon futur me semble guère radieux." + "1": "Mon futur n’a pas l’air si radieux.", + "2": "Les combats semblent être plus complexes que je le pensais.\nRetour aux planches à dessin.", + "3": "Ehhhh ?! J’ai perdu ?!", + "4": "Même dans la défaite, l’élégance de la Team Flare continue de rayonner sur ce monde.", + "5": "J’appelle pas ça perdre, j’appelle ça échouer avec panache !" } }, "rocket_boss_giovanni_1": { @@ -223,7 +271,7 @@ "1": "QUOI ? IMPOSSIBLE !" }, "defeat": { - "1": "Retiens bien. Ton incapacité à évaluer ta propre force est\nla démonstration claire que tu n'es encore qu’une gamine." + "1": "Retiens bien. Ton incapacité à évaluer ta propre force est\nla démonstration claire que tu n’es encore qu’une gamine." } }, "rocket_boss_giovanni_2": { @@ -336,6 +384,77 @@ "1": "Les Pokémon… Ne devraient plus exister." } }, + "brock": { + "encounter": { + "1": "Mon expertise des types Roche va te mettre au sol ! En garde !", + "2": "Tu veux toujours te battre avec moi ? Même en sachant que tu vas perdre ?", + "3": "Laisse-moi de montrer la véritable force de mes Pokémon Roche !" + }, + "victory": { + "1": "J’étais trop sûr de moi, c’est pour ça que j’ai perdu.", + "2": "Ce monde est vaste ! Je suis honoré d’avoir pu t’affronter.", + "3": "Peut-être bien que je n’aurais pas dû abandonner ma vocation d’Éleveur…" + }, + "defeat": { + "1": "La défense est la meilleure des attaques !\nTelle est ma méthode !", + "2": "Viens étudier des roches avec moi la prochaine fois si tu veux apprendre à mieux les aborder !", + "3": "Tout ce temps à voyager autour du monde paie enfin !" + } + }, + "misty": { + "encounter": { + "1": "Ma tactique ? Attaquer avec des Pokémon Eau !", + "2": "Je vais te prouver le tsunami que sont mes Pokémon aquatiques !", + "3": "Mon rêve, c’était de voyager et de défier des Dresseurs super forts. Seras-tu à la hauteur ?" + }, + "victory": { + "1": "OK. T’es pas naze… Je le reconnais…", + "2": "Pfff… T’as juste eu de la chance hein ?!", + "3": "Ouah ! T’es super balèze !" + }, + "defeat": { + "1": "Qu’en dis-tu? C’est ça, la puissance des Pokémon Eau !", + "2": "J’espère que t’as pris note des élégantes techniques de nage de mes Pokémon !", + "3": "Tes Pokémon ne jouent visiblement pas dans le même bassin…" + } + }, + "lt_surge": { + "encounter": { + "1": "T’as pas froid aux yeux, soldat ! Les combats Pokémon, c’est la guerre !", + "2": "Tu as du guts pour venir me fight ici ! Je vais te shock !", + "3": "Compte tes dents, tu vas morfler !\nMes Pokémon Électrik vont t’atomiser !" + }, + "victory": { + "1": "Whoo ! T’iras loin toi.", + "2": "Oh noes ! Mes tricks électriques sont à plat…\nYou are very fortiche!", + "3": "Tu es very costaud ! Je vais training very dur mes Pokémon, moi too, et on sera Number One !" + }, + "defeat": { + "1": "Oh yeah !\nMes Pokémon Électrik sont les best du monde !", + "2": "Oh yeah, baby ! I am trop fort !", + "3": "Une combat Pokémon, c’est comme une guerre et t’as eu droit à une bataille de premier ordre !" + } + }, + "erika": { + "encounter": { + "1": "Il fait beau, aujourd’hui, n’est-ce pas… ?\nQuoi un combat… ? Très bien…", + "2": "L’arrangement floral est ma spécialité, et mes Pokémon sont de type Plante. Quoi ? Tu veux te battre ?", + "3": "Il fait beau… Le soleil brille… Les plantes bourgeonnent… Je m’ennuie…", + "4": "Voir un tel jardin rempli de fleurs est si apaisant…" + }, + "victory": { + "1": "Bien joué, c’est mértié.", + "2": "Dommage, on s’amusait si bien…", + "3": "Oh non, le combat est terminé…", + "4": "Aaah, ça fait du bien !\nMerci, j’en avais besoin." + }, + "defeat": { + "1": "J’ai failli m’endormir…", + "2": "Oh non… Mes Pokémon Plante ont l’air de t’avoir bien endormie…", + "3": "Ce combat était si apaisant…", + "4": "Oh non… C’est tout ?" + } + }, "flare_boss_lysandre_2": { "encounter": { "1": "Ton futur ou le mien…\nVoyons lequel mérite plus d’aboutir." @@ -349,7 +468,7 @@ }, "rival": { "encounter": { - "1": "@c{smile}Ah, je te cherchais ! Je savais que t’étais pressée de partir, mais je m’attendais quand même à un au revoir…\n$@c{smile_eclosed}T’as finalement décidé de réaliser ton rêve ?\nJ’ai peine à y croire.\n$@c{serious_smile_fists}Vu que t’es là, ça te dis un petit combat ?\nJe voudrais quand même m’assurer que t’es prête.\n$@c{serious_mopen_fists}Surtout ne te retiens pas et donne-moi tout ce que t’as !" + "1": "@c{smile}Ah, te voilà ! Je t’ai cherchée partout ! Je savais que t’étais pressée de partir, mais je m’attendais quand même à un au revoir…\n$@c{smile_eclosed}T’as finalement décidé de réaliser ton rêve ?\nJ’ai peine à y croire.\n$@c{serious_smile_fists}Vu que t’es là, ça te dis un petit combat ?\nJe voudrais quand même m’assurer que t’es prête.\n$@c{serious_mopen_fists}Surtout ne te retiens pas et donne-moi tout ce que t’as !" }, "victory": { "1": "@c{shock}Wah… Tu m’as vraiment lavé.\nT’es vraiment une débutante ?\n$@c{smile}T’as peut-être eu de la chance, mais…\nPeut-être que t’arriveras jusqu’au bout du chemin.\n$D’ailleurs, le prof m’a demandé de te filer ces objets.\nIls ont l’air sympas.\n$@c{serious_smile_fists}Bonne chance à toi !" @@ -441,7 +560,7 @@ }, "rival_6": { "encounter": { - "1": "@c{smile_eclosed}Nous y revoilà.\n$@c{neutral}J’ai eu du temps pour réfléchir à tout ça.\nIl y a une raison à pourquoi tout semble étrange.\n$@c{neutral_eclosed}Ton rêve, ma volonté de te battre…\nFont partie de quelque chose de plus grand.\n$@c{serious}C’est même pas à propos de moi, ni de toi… Mais du monde, @c{serious_mhalf_fists}et te repousser dans tes limites est ma mission.\n$@c{neutral_eclosed}J’ignore si je serai capable de l’accomplir, mais je ferai tout ce qui est en mon pouvoir.\n$@c{neutral}Cet endroit est terrifiant… Et pourtant il m’a l’air familier, comme si j’y avais déjà mis les pieds.\n$@c{serious_mhalf_fists}Tu ressens la même chose, pas vrai ?\n$@c{serious}… et c’est comme si quelque chose ici me parlait.\n$Comme si c’était tout ce que ce monde avait toujours connu.\n$Ces précieux moments ensemble semblent si proches ne sont rien de plus qu’un lointain souvenir.\n$@c{neutral_eclosed}D’ailleurs, qui peut dire aujourd’hui qu’ils ont pu être réels ?\n$@c{serious_mopen_fists}Il faut que tu persévères. Si tu t’arrêtes, ça n'aura jamais de fin et t’es la seule à en être capable.\n$@c{serious_smile_fists}Difficile de comprendre le sens de tout ça, je sais juste que c’est la réalité.\n$@c{serious_mopen_fists}Si tu ne parviens à pas me battre ici et maintenant, tu n’as aucune chance." + "1": "@c{smile_eclosed}Nous y revoilà.\n$@c{neutral}J’ai eu du temps pour réfléchir à tout ça.\nIl y a une raison à pourquoi tout semble étrange.\n$@c{neutral_eclosed}Ton rêve, ma volonté de te battre…\nFont partie de quelque chose de plus grand.\n$@c{serious}C’est même pas à propos de moi, ni de toi… Mais du monde, @c{serious_mhalf_fists}et te repousser dans tes limites est ma mission.\n$@c{neutral_eclosed}J’ignore si je serai capable de l’accomplir, mais je ferai tout ce qui est en mon pouvoir.\n$@c{neutral}Cet endroit est terrifiant… Et pourtant il m’a l’air familier, comme si j’y avais déjà mis les pieds.\n$@c{serious_mhalf_fists}Tu ressens la même chose, pas vrai ?\n$@c{serious}… et c’est comme si quelque chose ici me parlait.\n$Comme si c’était tout ce que ce monde avait toujours connu.\n$Ces précieux moments ensemble semblent si proches ne sont rien de plus qu’un lointain souvenir.\n$@c{neutral_eclosed}D’ailleurs, qui peut dire aujourd’hui qu’ils ont pu être réels ?\n$@c{serious_mopen_fists}Il faut que tu persévères. Si tu t’arrêtes, ça n’aura jamais de fin et t’es la seule à en être capable.\n$@c{serious_smile_fists}Difficile de comprendre le sens de tout ça, je sais juste que c’est la réalité.\n$@c{serious_mopen_fists}Si tu ne parviens à pas me battre ici et maintenant, tu n’as aucune chance." }, "victory": { "1": "@c{smile_eclosed}J’ai fait ce que j’avais à faire.\n$Promets-moi juste une chose.\n@c{smile}Après avoir réparé ce monde… Rentre à la maison." @@ -455,4 +574,4 @@ "1": "@c{smile_ehalf}Je… Je crois que j’ai rempli ma mission…\n$@c{smile_eclosed}Promets-moi… Après avoir réparé ce monde… Reviens à la maison saine et sauve.\n$@c{smile_ehalf}… Merci." } } -} \ No newline at end of file +} diff --git a/src/locales/fr/dialogue-male.json b/src/locales/fr/dialogue-male.json index d0642641d0f..26636a15e4f 100644 --- a/src/locales/fr/dialogue-male.json +++ b/src/locales/fr/dialogue-male.json @@ -38,7 +38,7 @@ "3": "Je te connais pas. Ça te dis de te battre ?", "4": "Prenons du bon temps avec ce combat Pokémon !", "5": "Je vais t’apprendre à te battre avec tes Pokémon !", - "6": "Un combat doit être pris au sérieux. T’es prêt à te battre ?", + "6": "Un combat doit toujours être pris au sérieux.\nT’es prêt à te battre ?", "7": "Tu seras pas jeune éternellement. T’as qu’une chance pendant un combat. Bientôt, tu seras plus qu’un souvenir.", "8": "Tu ferais mieux d’y aller doucement avec moi. Mais je vais me battre sérieusement !", "9": "Je m’ennuie à l’école. Y’a rien à y faire. *Baille*\nJe me bats juste pour passer le temps." @@ -69,7 +69,7 @@ "defeat": { "1": "Tu ne devrais pas t’énerver sur tes Pokémon, même après une défaite.", "2": "Alors ? Pas mal mes Pokémon, hein ? Je suis fait pour ça.", - "3": "Peut importe à quel point t’aimes tes Pokémon, il faut toujours de la discipline s’ils se comportent mal." + "3": "Peu importe à quel point t’aimes tes Pokémon, il faut toujours de la discipline s’ils se comportent mal." } }, "breeder_female": { @@ -93,7 +93,7 @@ "encounter": { "1": "Aaah non ! J’avais une touche !\nTu comptes faire quoi pour arranger ça ?", "2": "Bouge de là ! Tu fais peur aux Pokémon !", - "3": "Voyons si t'arrives à ferrer une victoire !" + "3": "Voyons si t’arrives à ferrer une victoire !" }, "victory": { "1": "Vas-y là, oublie.", @@ -148,7 +148,7 @@ }, "victory": { "1": "Très bien… T’as de bons Pokémon…", - "2": "Quoi ?! Mais c'est moi le génie des combats !", + "2": "Quoi ?! Mais c’est moi le génie des combats !", "3": "Évidemment que t’es le personnage principal !", "4": "OK ! OK ! Tu pourrais être un Topdresseur !" }, @@ -170,81 +170,97 @@ "rocket_grunt": { "encounter": { "1": "Nous sommes de retour !", - "2": "We're pulling a big job here! Get lost, kid!", - "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!", - "5": "Hey, kid! Me am a Team Rocket member kind of guy!" + "2": "Ça bosse dur, ici ! Alors du balai !", + "3": "File-nous tes Pokémon ou tu vas gouter à la colère de la Team Rocket !", + "4": "Sois témoin de ce qu’est une vraie terreur de la Team Rocket!", + "5": "Hé gamin ! Moi être guy member of la Team Rocket !" }, "victory": { "1": "Une fois de plus la Team Rocket s’envole vers d’autres cieux !", - "2": "Oh no! I dropped the Lift Key!", - "3": "I blew it!", - "4": "My associates won't stand for this!", - "5": "You say what? Team Rocket bye-bye a go-go? Broken it is says you?" + "2": "Mince! J’ai laissé tomber\nla Clé Ascenseur !", + "3": "J’ai tout foiré !", + "4": "Mes compagnons vont me venger !", + "5": "Toi dire quoi ? Forget que tu m’as vu !\nYou n’as rien seen !" } }, "magma_grunt": { "encounter": { "1": "N’espère pas recevoir de la pitié si tu te mets sur le chemin de la Team Magma !", - "2": "You'd better not interfere with our plans! We're making the world a better place!", - "3": "You're in the way! Team Magma has no time for kids like you!", - "4": "I hope you brought marshmallows because things are about to heat up!", - "5": "We're going to use the power of a volcano! It's gonna be... explosive! Get it? Heh heh!" + "2": "Ne te mêle pas de nos affaires ! On va rendre ce monde meilleur !", + "3": "Hors de mon chemin ! La Team Magma n’a pas de temps pour les gamins !", + "4": "J’espère que t’as quelques marshmallows, car ça va chauffer !", + "5": "On va utiliser le puissance d’un volcan ! Ça va être… explosif ! Tu l’as… ? Héhé !" }, "victory": { "1": "Je…?\nJ’ai perdu ?!", - "2": "I can't believe I lost! I even skipped lunch for this", - "3": "No way! You're just a kid!", - "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?" + "2": "Je peux pas croire que j’ai pas pris mon déjeuner juste pour ça…", + "3": "Impossible ! T’es qu’un gosse !", + "4": "Aahhh…\nJ’aurais dû directement rentrer à la planque…", + "5": "Tu m’as démoli… Tu crois que le boss va suspendre mon salaire ?" } }, "aqua_grunt": { "encounter": { "1": "Aucune pitié si tu te mets sur le chemin de la Team Aqua, même pour un gamin !", - "2": "Grrr... You've got some nerve meddling with Team Aqua!", - "3": "You're about to get soaked! And not just from my water Pokémon!", - "4": "We, Team Aqua, exist for the good of all!", - "5": "Prepare to be washed away by the tides of my... uh, Pokémon! Yeah, my Pokémon!" + "2": "Grrr…\nTu as eu le culot de t’opposer à la Team Aqua !", + "3": "Je vais te liquéfier !\nEt ce sera pas qu’à cause des mes Pokémon Eau !", + "4": "Nous, la Team Aqua, existons pour le bien commun !", + "5": "Prépare-toi à te faire emporter par le courant de…\nEuh… Mes Pokémon ! Oui, mes Pokémon !" }, "victory": { "1": "Comment ça ?", - "2": "Arrgh, I didn't count on being meddled with by some meddling kid!", - "3": "I lost?! Guess I'll have to swim back to the hideout now...", - "4": "Oh, man, what a disaster... The boss is going to be furious...", - "5": "You beat me... Do you think the boss will make me walk the plank for this?" + "2": "Ah, j’avais pas prévu d’être gêné par un mouflet qui se mêle de tout !", + "3": "J’ai perdu ?! Super, j’ai plus qu’à nager jusqu’à la planque maintenant…", + "4": "Oh non quelle angoisse…\nLe boss va me démonter…", + "5": "Je suis battu… Tu penses que le boss va me faire subir le supplice de la planche ?…" } }, "galactic_grunt": { "encounter": { "1": "Ne te mets pas en travers de la Team Galaxie !", - "2": "Witness the power of our technology and the future we envision!", - "3": "In the name of Team Galactic, I'll eliminate anyone who stands in our way!", - "4": "Get ready to lose!", - "5": "Hope you're ready for a cosmic beatdown!" + "2": "Sois témoin de la puissance de notre technologie et du futur qui se profile !", + "3": "Au nom de la Team Galaxie, j’éliminerai quiconque se mettera sur notre route !", + "4": "Prépare ta défaite !", + "5": "J’espère que t’es prêt à te prendre une raclée de l’espace !" }, "victory": { "1": "Désactivation…", - "2": "This setback means nothing in the grand scheme.", - "3": "Our plans are bigger than this defeat.", - "4": "How?!", - "5": "Note to self: practice Pokémon battling, ASAP." + "2": "Cet échec n’est qu’une poussière face à nos ambitions débordantes.", + "3": "Notre projet est bien plus important que cette défaite.", + "4": "Comment ?!", + "5": "Note à moi-même :\nM’entrainer aux combats Pokémon. Ça urge…" } }, "plasma_grunt": { "encounter": { "1": "Pas de quatiers à ceux qui ne suivent pas notre idéal !", - "2": "If I win against you, release your Pokémon!", - "3": "If you get in the way of Team Plasma, I'll take care of you!", - "4": "Team Plasma will liberate Pokémon from selfish humans like you!", - "5": "Our hairstyles are out of this world... but our battling skills? You'll find out soon enough." + "2": "Si je gagne, tu relâches tous tes Pokémon !", + "3": "Si tu te mets en travers de la Team Plasma, je m’occuperai de toi personnellement !", + "4": "La Team Plasma va libérer les Pokémon de tous les humains égoïstes dans ton genre !", + "5": "Nos coupes sont lunaires… Mais en combat ?\nTu vas vite le découvrir." }, "victory": { "1": "Plasmaaaaaaaaa !", - "2": "How could I lose...", - "3": "...What a weak Pokémon, I'll just have to go steal some better ones!", - "4": "Great plans are always interrupted.", - "5": "This is bad... Badbadbadbadbadbadbad! Bad for Team Plasma! Or Plasbad, for short!" + "2": "Comment ai-je pu perdre…", + "3": "… Ce Pokémon est nul, j’vais aller en voler de meilleurs !", + "4": "Les plans ambitieux connaissent toujours leurs lots d’interruptions.", + "5": "C’est mauvais… MAUVAIS MAUVAIS MAUVAIS MAUVAIS !\nVa falloir battre en retraite, c’est la méga cata !" + } + }, + "flare_grunt": { + "encounter": { + "1": "Tes Pokémon ne sont pas dignes de l’élégance de la Team Flare.", + "2": "T’as des lunettes de soleil j’espère ?\nCar prépare-toi à être ébloui !", + "3": "La Team Flare va purifier ce monde de toute imperfection !", + "4": "Prépare-toi à découvrir l’indiscutable sens du style de la Team Flare !", + "5": "La mode, c’est important !" + }, + "victory": { + "1": "Mon futur n’a pas l’air si radieux.", + "2": "Les combats semblent être plus complexes que je le pensais.\nRetour aux planches à dessin.", + "3": "Ehhhh ?! J’ai perdu ?!", + "4": "Même dans la défaite, l’élégance de la Team Flare continue de rayonner sur ce monde.", + "5": "J’appelle pas ça perdre, j’appelle ça échouer avec panache !" } }, "rocket_boss_giovanni_1": { @@ -379,6 +395,77 @@ "1": "Les ignorants sans aucune vision n’auront donc de cesse de souiller ce monde." } }, + "brock": { + "encounter": { + "1": "Mon expertise des types Roche va te mettre au sol ! En garde !", + "2": "Tu veux toujours te battre avec moi ? Même en sachant que tu vas perdre ?", + "3": "Laisse-moi de montrer la véritable force de mes Pokémon Roche !" + }, + "victory": { + "1": "J’étais trop sûr de moi, c’est pour ça que j’ai perdu.", + "2": "Ce monde est vaste ! Je suis honoré d’avoir pu t’affronter.", + "3": "Peut-être bien que je n’aurais pas dû abandonner ma vocation d’Éleveur…" + }, + "defeat": { + "1": "La défense est la meilleure des attaques !\nTelle est ma méthode !", + "2": "Viens étudier des roches avec moi la prochaine fois si tu veux apprendre à mieux les aborder !", + "3": "Tout ce temps à voyager autour du monde paie enfin !" + } + }, + "misty": { + "encounter": { + "1": "Ma tactique ? Attaquer avec des Pokémon Eau !", + "2": "Je vais te prouver le tsunami que sont mes Pokémon aquatiques !", + "3": "Mon rêve, c’était de voyager et de défier des Dresseurs super forts. Seras-tu à la hauteur ?" + }, + "victory": { + "1": "OK. T’es pas naze… Je le reconnais…", + "2": "Pfff… T’as juste eu de la chance hein ?!", + "3": "Ouah ! T’es super balèze !" + }, + "defeat": { + "1": "Qu’en dis-tu? C’est ça, la puissance des Pokémon Eau !", + "2": "J’espère que t’as pris note des élégantes techniques de nage de mes Pokémon !", + "3": "Tes Pokémon ne jouent visiblement pas dans le même bassin…" + } + }, + "lt_surge": { + "encounter": { + "1": "T’as pas froid aux yeux, soldat ! Les combats Pokémon, c’est la guerre !", + "2": "Tu as du guts pour venir me fight ici ! Je vais te shock !", + "3": "Compte tes dents, tu vas morfler !\nMes Pokémon Électrik vont t’atomiser !" + }, + "victory": { + "1": "Whoo ! T’iras loin toi.", + "2": "Oh noes ! Mes tricks électriques sont à plat…\nYou are very fortiche!", + "3": "Tu es very costaud ! Je vais training very dur mes Pokémon, moi too, et on sera Number One !" + }, + "defeat": { + "1": "Oh yeah !\nMes Pokémon Électrik sont les best du monde !", + "2": "Oh yeah, baby ! I am trop fort !", + "3": "Une combat Pokémon, c’est comme une guerre et t’as eu droit à une bataille de premier ordre !" + } + }, + "erika": { + "encounter": { + "1": "Il fait beau, aujourd’hui, n’est-ce pas… ?\nQuoi un combat… ? Très bien…", + "2": "L’arrangement floral est ma spécialité, et mes Pokémon sont de type Plante. Quoi ? Tu veux te battre ?", + "3": "Il fait beau… Le soleil brille… Les plantes bourgeonnent… Je m’ennuie…", + "4": "Voir un tel jardin rempli de fleurs est si apaisant…" + }, + "victory": { + "1": "Bien joué, c’est mértié.", + "2": "Dommage, on s’amusait si bien…", + "3": "Oh non, le combat est terminé…", + "4": "Aaah, ça fait du bien !\nMerci, j’en avais besoin." + }, + "defeat": { + "1": "J’ai failli m’endormir…", + "2": "Oh non… Mes Pokémon Plante ont l’air de t’avoir bien endormi…", + "3": "Ce combat était si apaisant…", + "4": "Oh non… C’est tout ?" + } + }, "alder": { "encounter": { "1": "Prépare-toi pour un combat contre le meilleur Dresseur d’Unys !" @@ -411,7 +498,7 @@ }, "rival_female": { "encounter": { - "1": "@c{smile_wave}Ah, je te cherchais ! Je t’ai cherché partout !\n@c{angry_mopen}On oublie de dire au revoir à sa meilleure amie ?\n$@c{smile_ehalf}T’as décidé de réaliser ton rêve, hein ?\nCe jour est donc vraiment arrivé…\n$@c{smile}Je veux bien te pardonner de m’avoir oubliée,\nà une conditon. @c{smile_wave_wink}Que tu m’affronte !\n$@c{angry_mopen}Donne tout ! Ce serait dommage que ton aventure finisse avant d’avoir commencé, hein ?" + "1": "@c{smile_wave}Ah, te voilà ! Je t’ai cherché partout !\n@c{angry_mopen}On oublie de dire au revoir à sa meilleure amie ?\n$@c{smile_ehalf}T’as décidé de réaliser ton rêve, hein ?\nCe jour est donc vraiment arrivé…\n$@c{smile}Je veux bien te pardonner de m’avoir oubliée,\nà une conditon. @c{smile_wave_wink}Que tu m’affronte !\n$@c{angry_mopen}Donne tout ! Ce serait dommage que ton aventure finisse avant d’avoir commencé, hein ?" }, "victory": { "1": "@c{shock}Tu viens de commencer et t’es déjà si fort ?!@d{96}\n@c{angry}T’as triché non ? Avoue !\n$@c{smile_wave_wink}J’déconne !@d{64} @c{smile_eclosed}J’ai perdu dans les règles…\nJ’ai le sentiment que tu vas très bien t’en sortir.\n$@c{smile}D’ailleurs, le prof veut que je te donne ces quelques objets. Ils te seront utiles, pour sûr !\n$@c{smile_wave}Fais de ton mieux, comme toujours !\nJe crois fort en toi !" @@ -509,4 +596,4 @@ "1": "@c{smile_ehalf}Je… Je crois que j’ai rempli ma mission…\n$@c{smile_eclosed}Promets-moi… Après avoir réparé ce monde… Reviens à la maison sain et sauf.\n$@c{smile_ehalf}… Merci." } } -} \ No newline at end of file +} diff --git a/src/locales/fr/egg.json b/src/locales/fr/egg.json index 0cd6f0b3750..64f22aa330d 100644 --- a/src/locales/fr/egg.json +++ b/src/locales/fr/egg.json @@ -4,23 +4,23 @@ "ultraTier": "Épique", "masterTier": "Légendaire", "defaultTier": "Commun", - "hatchWavesMessageSoon": "Il fait du bruit. Il va éclore !", + "hatchWavesMessageSoon": "Il fait du bruit. Il va éclore !", "hatchWavesMessageClose": "Il bouge de temps en temps. Il devrait bientôt éclore.", "hatchWavesMessageNotClose": "Qu’est-ce qui va en sortir ? Ça va mettre du temps.", - "hatchWavesMessageLongTime": "Cet Œuf va sûrement mettre du temps à éclore.", + "hatchWavesMessageLongTime": "Cet Œuf va surement mettre du temps à éclore.", "gachaTypeLegendary": "Taux de Légendaires élevé", "gachaTypeMove": "Taux de Capacité Œuf Rare élevé", "gachaTypeShiny": "Taux de Chromatiques élevé", "selectMachine": "Sélectionnez une machine.", - "notEnoughVouchers": "Vous n’avez pas assez de coupons !", - "tooManyEggs": "Vous avez trop d’Œufs !", + "notEnoughVouchers": "Vous n’avez pas assez de coupons !", + "tooManyEggs": "Vous avez trop d’Œufs !", "pull": "Tirage", "pulls": "Tirages", "sameSpeciesEgg": "{{species}} sortira de cet Œuf !", - "hatchFromTheEgg": "{{pokemonName}} sort de l’Œuf !", + "hatchFromTheEgg": "{{pokemonName}} sort de l’Œuf !", "eggMoveUnlock": "Capacité Œuf débloquée :\n{{moveName}}", "rareEggMoveUnlock": "Capacité Œuf Rare débloquée :\n{{moveName}}", - "moveUPGacha": "Bonus Capacité\nŒuf Rare !", - "shinyUPGacha": "Bonus\nChromatique !", - "legendaryUPGacha": "Bonus !" -} \ No newline at end of file + "moveUPGacha": "Bonus Capacité\nŒuf Rare !", + "shinyUPGacha": "Bonus\nChromatique !", + "legendaryUPGacha": "Bonus !" +} diff --git a/src/locales/fr/menu.json b/src/locales/fr/menu.json index d6823b43009..83626a1f33f 100644 --- a/src/locales/fr/menu.json +++ b/src/locales/fr/menu.json @@ -42,14 +42,14 @@ "wave": "Vague", "loading": "Chargement…", "loadingAsset": "Chargement de la ressource : {{assetName}}", - "playersOnline": "Joueurs Connectés", + "playersOnline": "Joueurs connectés", "yes": "Oui", "no": "Non", "disclaimer": "AVERTISSEMENT", "disclaimerDescription": "Ce jeu n’est pas un produit fini et peut contenir des problèmes de jouabilité, dont de possibles pertes de sauvegardes,\ndes modifications sans avertissement et pourrait ou non encore être mis à jour ou terminé.", "choosePokemon": "Sélectionnez un Pokémon.", - "renamePokemon": "Renommer Pokémon", + "renamePokemon": "Renommer le Pokémon", "rename": "Renommer", "nickname": "Surnom", "errorServerDown": "Oupsi ! Un problème de connexion au serveur est survenu.\n\nVous pouvez garder cette fenêtre ouverte,\nle jeu se reconnectera automatiquement." -} \ No newline at end of file +} diff --git a/src/locales/fr/modifier-type.json b/src/locales/fr/modifier-type.json index c041adbf6d5..6d5cfb098ef 100644 --- a/src/locales/fr/modifier-type.json +++ b/src/locales/fr/modifier-type.json @@ -11,7 +11,7 @@ "PokemonHeldItemModifierType": { "extra": { "inoperable": "{{pokemonName}} ne peut pas\nporter cet objet !", - "tooMany": "{{pokemonName}} possède trop\nd’exemplaires de cet objet !" + "tooMany": "{{pokemonName}} porte trop\nd’exemplaires de cet objet !" } }, "PokemonHpRestoreModifierType": { @@ -108,7 +108,7 @@ "description": "Permet à certains Pokémon de changer de forme." }, "FusePokemonModifierType": { - "description": "Fusionne deux Pokémon (transfère le talent, sépare les stats de base et les types, partage le movepool)." + "description": "Fusionne deux Pokémon (transfère le talent, sépare les stats de base et les types, partage les capacités)." }, "TerastallizeModifierType": { "name": "Téra-Éclat {{teraType}}", @@ -194,7 +194,7 @@ "RELIC_GOLD": { "name": "Vieux Ducat" }, "AMULET_COIN": { "name": "Pièce Rune", "description": "Augmente de 20% les gains d’argent." }, - "GOLDEN_PUNCH": { "name": "Poing Doré", "description": "50% des dégâts infligés sont convertis en argent." }, + "GOLDEN_PUNCH": { "name": "Poing Doré", "description": "La moitié des dégâts infligés sont convertis en argent." }, "COIN_CASE": { "name": "Boite Jetons", "description": "Tous les 10 combats, recevez 10% de votre argent en intérêts." }, "LOCK_CAPSULE": { "name": "Poké Écrin", "description": "Permet de conserver la rareté des objets si vous relancez les objets proposés." }, @@ -205,13 +205,13 @@ "MULTI_LENS": { "name": "Lentille Multi" }, "HEALING_CHARM": { "name": "Charme Soin", "description": "Augmente de 10% l’efficacité des capacités et objets de soin de PV (hors Rappels)." }, - "CANDY_JAR": { "name": "Bonbonnière", "description": "Augmente de 1 le nombre de niveaux gagnés à l’utilisation d’un Super Bonbon." }, + "CANDY_JAR": { "name": "Bonbonnière", "description": "Augmente de 1 le nombre de niveaux gagnés à l’utilisation d’un Super Bonbon ou d’un Hyper Bonbon." }, "BERRY_POUCH": { "name": "Sac à Baies", "description": "Ajoute 30% de chances qu’une Baie utilisée ne soit pas consommée." }, "FOCUS_BAND": { "name": "Bandeau", "description": "Ajoute 10% de chances de survivre avec 1 PV si les dégâts reçus pouvaient mettre K.O. ." }, - "QUICK_CLAW": { "name": "Vive Griffe", "description": "Ajoute 10% de chances d’agir en premier, indépendamment de la vitesse (après la priorité)." }, + "QUICK_CLAW": { "name": "Vive Griffe", "description": "Ajoute 10% de chances d’agir en premier, indépendamment de la Vitesse (après la priorité)." }, "KINGS_ROCK": { "name": "Roche Royale", "description": "Ajoute 10% de chances qu’une capacité offensive apeure l’adversaire." }, @@ -261,14 +261,14 @@ }, "TempBattleStatBoosterStatName": { - "ATK": "Attaque", - "DEF": "Défense", - "SPATK": "Atq. Spé.", - "SPDEF": "Déf. Spé.", - "SPD": "Vitesse", - "ACC": "Précision", - "CRIT": "Taux de critique", - "EVA": "Esquive", + "ATK": "l’Attaque", + "DEF": "la Défense", + "SPATK": "l’Atq. Spé.", + "SPDEF": "la Déf. Spé.", + "SPD": "la Vitesse", + "ACC": "la précision", + "CRIT": "le taux de critique", + "EVA": "l’esquive", "DEFAULT": "???" }, @@ -452,4 +452,4 @@ "FAIRY_MEMORY": "ROM Fée", "BLANK_MEMORY": "ROM Vierge" } -} \ No newline at end of file +} diff --git a/src/locales/fr/modifier.json b/src/locales/fr/modifier.json index afc15b2cb88..8a15c9e5ddf 100644 --- a/src/locales/fr/modifier.json +++ b/src/locales/fr/modifier.json @@ -3,10 +3,10 @@ "turnHealApply": "Les PV de {{pokemonNameWithAffix}}\nsont un peu restaurés par les {{typeName}} !", "hitHealApply": "Les PV de {{pokemonNameWithAffix}}\nsont un peu restaurés par le {{typeName}} !", "pokemonInstantReviveApply": "{{pokemonNameWithAffix}} a repris connaissance\navec sa {{typeName}} et est prêt à se battre de nouveau !", - "pokemonResetNegativeStatStageApply": "{{pokemonNameWithAffix}}'s lowered stats were restored\nby its {{typeName}}!", + "pokemonResetNegativeStatStageApply": "Les stats baissées de {{pokemonNameWithAffix}}\nsont restaurées par l’{{typeName}} !", "moneyInterestApply": "La {{typeName}} vous rapporte\n{{moneyAmount}} ₽ d’intérêts !", "turnHeldItemTransferApply": "{{itemName}} de {{pokemonNameWithAffix}} est absorbé·e\npar le {{typeName}} de {{pokemonName}} !", "contactHeldItemTransferApply": "{{itemName}} de {{pokemonNameWithAffix}} est volé·e\npar l’{{typeName}} de {{pokemonName}} !", "enemyTurnHealApply": "{{pokemonNameWithAffix}}\nrestaure un peu ses PV !", "bypassSpeedChanceApply": "{{itemName}} de {{pokemonName}}\nlui permet d’agir plus vite que d’habitude !" -} \ No newline at end of file +} diff --git a/src/locales/fr/move.json b/src/locales/fr/move.json index f40576fc03c..a48e17b3fd9 100644 --- a/src/locales/fr/move.json +++ b/src/locales/fr/move.json @@ -25,7 +25,7 @@ }, "firePunch": { "name": "Poing Feu", - "effect": "Un coup de poing enflammé vient frapper la cible, ce qui peut la brûler (10% de chances)." + "effect": "Un coup de poing enflammé vient frapper la cible, ce qui peut la bruler (10% de chances)." }, "icePunch": { "name": "Poing Glace", @@ -205,11 +205,11 @@ }, "ember": { "name": "Flammèche", - "effect": "La cible est attaquée par une faible flamme qui peut aussi la brûler." + "effect": "La cible est attaquée par une faible flamme qui peut aussi la bruler." }, "flamethrower": { "name": "Lance-Flammes", - "effect": "La cible reçoit un torrent de flammes qui peut aussi la brûler (10% de chances)." + "effect": "La cible reçoit un torrent de flammes qui peut aussi la bruler (10% de chances)." }, "mist": { "name": "Brume", @@ -356,7 +356,7 @@ "effect": "Le lanceur provoque un tremblement de terre touchant tous les Pokémon autour de lui." }, "fissure": { - "name": "Abîme", + "name": "Abime", "effect": "Le lanceur fait tomber la cible dans une crevasse. Si cette attaque réussit, elle met K.O. sur le coup." }, "dig": { @@ -489,7 +489,7 @@ }, "smog": { "name": "Purédpois", - "effect": "Le lanceur attaque à l'aide d'une éruption de gaz répugnants qui peuvent aussi empoisonner la cible." + "effect": "Le lanceur attaque à l’aide d’une éruption de gaz répugnants qui peuvent aussi empoisonner la cible." }, "sludge": { "name": "Détritus", @@ -501,7 +501,7 @@ }, "fireBlast": { "name": "Déflagration", - "effect": "Un déluge de flammes ardentes submerge la cible, ce qui peut aussi la brûler (10% de chances)." + "effect": "Un déluge de flammes ardentes submerge la cible, ce qui peut aussi la bruler (10% de chances)." }, "waterfall": { "name": "Cascade", @@ -581,7 +581,7 @@ }, "dizzyPunch": { "name": "Uppercut", - "effect": "Un enchaînement de coups de poing cadencés frappe l’ennemi. Peut aussi le rendre confus." + "effect": "Un enchainement de coups de poing cadencés frappe l’ennemi. Peut aussi le rendre confus." }, "spore": { "name": "Spore", @@ -632,7 +632,7 @@ "effect": "Le lanceur mord l’ennemi à l’aide de ses incisives aiguisées. Peut aussi l’apeurer (10% de chances)." }, "sharpen": { - "name": "Affûtage", + "name": "Affutage", "effect": "Le lanceur réduit son nombre de polygones pour accentuer ses angles et augmenter son Attaque." }, "conversion": { @@ -641,7 +641,7 @@ }, "triAttack": { "name": "Triplattaque", - "effect": "Le lanceur envoie trois boules d’énergie simultanément qui peuvent aussi paralyser, brûler ou geler la cible (6.67% de chances)." + "effect": "Le lanceur envoie trois boules d’énergie simultanément qui peuvent aussi paralyser, bruler ou geler la cible (6.67% de chances)." }, "superFang": { "name": "Croc Fatal", @@ -661,7 +661,7 @@ }, "sketch": { "name": "Gribouille", - "effect": "Le lanceur apprend la dernière capacité utilisée par la cible. Gribouille disparaît après utilisation." + "effect": "Le lanceur apprend la dernière capacité utilisée par la cible. Gribouille disparait après utilisation." }, "tripleKick": { "name": "Triple Pied", @@ -685,7 +685,7 @@ }, "flameWheel": { "name": "Roue de Feu", - "effect": "Le lanceur s’entoure de feu et charge la cible, ce qui peut aussi la brûler (10% de chances)." + "effect": "Le lanceur s’entoure de feu et charge la cible, ce qui peut aussi la bruler (10% de chances)." }, "snore": { "name": "Ronflement", @@ -881,7 +881,7 @@ }, "sacredFire": { "name": "Feu Sacré", - "effect": "Le lanceur génère un feu mystique d’une intensité redoutable pour attaquer l’ennemi. Peut aussi le brûler (50% de chances)." + "effect": "Le lanceur génère un feu mystique d’une intensité redoutable pour attaquer l’ennemi. Peut aussi le bruler (50% de chances)." }, "magnitude": { "name": "Ampleur", @@ -1025,7 +1025,7 @@ }, "heatWave": { "name": "Canicule", - "effect": "Le lanceur provoque une vague de chaleur qui peut aussi brûler la cible (10% de chances)." + "effect": "Le lanceur provoque une vague de chaleur qui peut aussi bruler la cible (10% de chances)." }, "hail": { "name": "Grêle", @@ -1041,7 +1041,7 @@ }, "willOWisp": { "name": "Feu Follet", - "effect": "Le lanceur projette des flammes maléfiques à la cible pour lui infliger une brûlure." + "effect": "Le lanceur projette des flammes maléfiques à la cible pour lui infliger une brulure." }, "memento": { "name": "Souvenir", @@ -1049,7 +1049,7 @@ }, "facade": { "name": "Façade", - "effect": "Une capacité dont la puissance double lorsque le lanceur est empoisonné, paralysé ou brûlé." + "effect": "Une capacité dont la puissance double lorsque le lanceur est empoisonné, paralysé ou brulé." }, "focusPunch": { "name": "Mitra-Poing", @@ -1145,7 +1145,7 @@ }, "refresh": { "name": "Régénération", - "effect": "Le lanceur se repose pour guérir d’un empoisonnement, d’une brûlure ou d’une paralysie." + "effect": "Le lanceur se repose pour guérir d’un empoisonnement, d’une brulure ou d’une paralysie." }, "grudge": { "name": "Rancune", @@ -1192,8 +1192,8 @@ "effect": "Danse qui rend confus tous les Pokémon autour du lanceur." }, "blazeKick": { - "name": "Pied Brûleur", - "effect": "Le lanceur envoie un coup de pied au taux de critiques élevé. Peut aussi brûler la cible (10% de chances)." + "name": "Pied Bruleur", + "effect": "Le lanceur envoie un coup de pied au taux de critiques élevé. Peut aussi bruler la cible (10% de chances)." }, "mudSport": { "name": "Lance-Boue", @@ -1573,7 +1573,7 @@ }, "flareBlitz": { "name": "Boutefeu", - "effect": "Le lanceur s’embrase avant de charger la cible, ce qui peut la brûler (10% de chances). Le choc blesse aussi gravement le lanceur." + "effect": "Le lanceur s’embrase avant de charger la cible, ce qui peut la bruler (10% de chances). Le choc blesse aussi gravement le lanceur." }, "forcePalm": { "name": "Forte-Paume", @@ -1693,7 +1693,7 @@ }, "fireFang": { "name": "Crocs Feu", - "effect": "Le lanceur utilise une morsure enflammée qui peut aussi brûler (10% de chances) ou apeurer (10% de chances) la cible." + "effect": "Le lanceur utilise une morsure enflammée qui peut aussi bruler (10% de chances) ou apeurer (10% de chances) la cible." }, "shadowSneak": { "name": "Ombre Portée", @@ -1741,7 +1741,7 @@ }, "lavaPlume": { "name": "Ébullilave", - "effect": "Des flammes s’abattent sur tous les Pokémon autour du lanceur, ce qui peut aussi les brûler (10% de chances)." + "effect": "Des flammes s’abattent sur tous les Pokémon autour du lanceur, ce qui peut aussi les bruler (10% de chances)." }, "leafStorm": { "name": "Tempête Verte", @@ -1796,7 +1796,7 @@ "effect": "Le lanceur libère une myriade de rayons de lumière. Le type varie selon la plaque que tient le lanceur." }, "bugBite": { - "name": "Piqûre", + "name": "Piqure", "effect": "Le lanceur pique la cible. Si celle-ci tient une Baie, le lanceur la dévore et obtient son effet." }, "chargeBeam": { @@ -1865,7 +1865,7 @@ }, "shadowForce": { "name": "Revenant", - "effect": "Le lanceur disparaît au premier tour et frappe la cible au deuxième. Cette capacité fonctionne même si la cible se protège." + "effect": "Le lanceur disparait au premier tour et frappe la cible au deuxième. Cette capacité fonctionne même si la cible se protège." }, "honeClaws": { "name": "Aiguisage", @@ -2009,7 +2009,7 @@ }, "scald": { "name": "Ébullition", - "effect": "Le lanceur projette un jet d’eau bouillante sur la cible, ce qui peut aussi la brûler (30% de chances)." + "effect": "Le lanceur projette un jet d’eau bouillante sur la cible, ce qui peut aussi la bruler (30% de chances)." }, "shellSmash": { "name": "Exuviation", @@ -2037,7 +2037,7 @@ }, "incinerate": { "name": "Calcination", - "effect": "Des flammes calcinent la cible. Si elle tient un objet, une Baie par exemple, celui-ci est brûlé et devient inutilisable." + "effect": "Des flammes calcinent la cible. Si elle tient un objet, une Baie par exemple, celui-ci est brulé et devient inutilisable." }, "quash": { "name": "À la Queue", @@ -2065,19 +2065,19 @@ }, "inferno": { "name": "Feu d’Enfer", - "effect": "La cible est entourée d’un torrent de flammes ardentes qui la brûlent." + "effect": "La cible est entourée d’un torrent de flammes ardentes qui la brulent." }, "waterPledge": { "name": "Aire d’Eau", - "effect": "Une masse d’eau s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire de Feu, la puissance augmente et un arc-en-ciel apparaît." + "effect": "Une masse d’eau s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire de Feu, la puissance augmente et un arc-en-ciel apparait." }, "firePledge": { "name": "Aire de Feu", - "effect": "Une masse de feu s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Herbe, la puissance augmente et une mer de feu apparaît." + "effect": "Une masse de feu s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Herbe, la puissance augmente et une mer de feu apparait." }, "grassPledge": { "name": "Aire d’Herbe", - "effect": "Une masse végétale s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Eau, la puissance augmente et un marécage apparaît." + "effect": "Une masse végétale s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Eau, la puissance augmente et un marécage apparait." }, "voltSwitch": { "name": "Change Éclair", @@ -2177,7 +2177,7 @@ }, "searingShot": { "name": "Incendie", - "effect": "Des boules de feu s’abattent sur tous les Pokémon autour du lanceur. Peut aussi les brûler (30% de chances)." + "effect": "Des boules de feu s’abattent sur tous les Pokémon autour du lanceur. Peut aussi les bruler (30% de chances)." }, "technoBlast": { "name": "Techno-Buster", @@ -2201,7 +2201,7 @@ }, "blueFlare": { "name": "Flamme Bleue", - "effect": "De magnifiques et redoutables flammes bleues fondent sur l’ennemi. Peut aussi le brûler (20% de chances)." + "effect": "De magnifiques et redoutables flammes bleues fondent sur l’ennemi. Peut aussi le bruler (20% de chances)." }, "fieryDance": { "name": "Danse du Feu", @@ -2213,7 +2213,7 @@ }, "iceBurn": { "name": "Feu Glacé", - "effect": "Au second tour, le lanceur projette un souffle de vent glacial dévastateur sur l’ennemi. Peut aussi le brûler (30% de chances)." + "effect": "Au second tour, le lanceur projette un souffle de vent glacial dévastateur sur l’ennemi. Peut aussi le bruler (30% de chances)." }, "snarl": { "name": "Aboiement", @@ -2261,7 +2261,7 @@ }, "phantomForce": { "name": "Hantise", - "effect": "Le lanceur disparaît au premier tour et frappe au second. Cette attaque passe outre les protections." + "effect": "Le lanceur disparait au premier tour et frappe au second. Cette attaque passe outre les protections." }, "trickOrTreat": { "name": "Halloween", @@ -2333,7 +2333,7 @@ }, "fairyWind": { "name": "Vent Féérique", - "effect": "Le lanceur déchaîne un vent magique qui cingle la cible." + "effect": "Le lanceur déchaine un vent magique qui cingle la cible." }, "moonblast": { "name": "Pouvoir Lunaire", @@ -2345,7 +2345,7 @@ }, "fairyLock": { "name": "Verrou Enchanté", - "effect": "Des chaînes entourent la zone de combat, empêchant tous les Pokémon de quitter le terrain au tour suivant." + "effect": "Des chaines entourent la zone de combat, empêchant tous les Pokémon de quitter le terrain au tour suivant." }, "kingsShield": { "name": "Bouclier Royal", @@ -2365,7 +2365,7 @@ }, "steamEruption": { "name": "Jet de Vapeur", - "effect": "Le lanceur projette de la vapeur extrêmement chaude sur la cible, ce qui peut aussi la brûler (30% de chances)." + "effect": "Le lanceur projette de la vapeur extrêmement chaude sur la cible, ce qui peut aussi la bruler (30% de chances)." }, "hyperspaceHole": { "name": "TrouDimensionnel", @@ -2377,7 +2377,7 @@ }, "mysticalFire": { "name": "Feu Ensorcelé", - "effect": "Le lanceur attaque en soufflant des flammes brûlantes par la bouche et diminue l’Attaque Spéciale de la cible." + "effect": "Le lanceur attaque en soufflant des flammes brulantes par la bouche et diminue l’Attaque Spéciale de la cible." }, "spikyShield": { "name": "Pico-Défense", @@ -2517,7 +2517,7 @@ }, "tectonicRagePhysical": { "name": "Éruption Géo-Sismique", - "effect": "Le Pokémon utilise la Force Z pour entraîner l’adversaire dans les profondeurs de la terre. La puissance varie selon celle de la capacité originale." + "effect": "Le Pokémon utilise la Force Z pour entrainer l’adversaire dans les profondeurs de la terre. La puissance varie selon celle de la capacité originale." }, "tectonicRageSpecial": { "name": "Éruption Géo-Sismique", @@ -2653,7 +2653,7 @@ }, "sparklingAria": { "name": "Aria de l’Écume", - "effect": "Le lanceur émet plusieurs bulles en chantant. Soigne les brûlures des Pokémon touchés par ces bulles." + "effect": "Le lanceur émet plusieurs bulles en chantant. Soigne les brulures des Pokémon touchés par ces bulles." }, "iceHammer": { "name": "Marteau de Glace", @@ -2757,7 +2757,7 @@ }, "beakBlast": { "name": "Bec-Canon", - "effect": "Le lanceur fait chauffer son bec avant d’attaquer. S’il subit une attaque directe pendant la montée en température, l’attaquant sera brûlé." + "effect": "Le lanceur fait chauffer son bec avant d’attaquer. S’il subit une attaque directe pendant la montée en température, l’attaquant sera brulé." }, "clangingScales": { "name": "Vibrécaille", @@ -2789,7 +2789,7 @@ }, "guardianOfAlola": { "name": "Colère du Gardien d’Alola", - "effect": "Le Pokémon Tutélaire utilise la Force Z et déchaîne toute la puissance d’Alola sur sa cible. Inflige des dégâts en fonction des PV restants de celle-ci." + "effect": "Le Pokémon Tutélaire utilise la Force Z et déchaine toute la puissance d’Alola sur sa cible. Inflige des dégâts en fonction des PV restants de celle-ci." }, "soulStealing7StarStrike": { "name": "Fauche-Âme des Sept Étoiles", @@ -2865,7 +2865,7 @@ }, "naturesMadness": { "name": "Ire de la Nature", - "effect": "Le lanceur déchaîne toute la colère de la nature pour baisser les PV de la cible de moitié." + "effect": "Le lanceur déchaine toute la colère de la nature pour baisser les PV de la cible de moitié." }, "multiAttack": { "name": "Coup Varia-Type", @@ -2873,7 +2873,7 @@ }, "tenMillionVoltThunderbolt": { "name": "Giga-Tonnerre", - "effect": "Le Pikachu à casquette utilise la Force Z pour augmenter sa puissance électrique avant de la déchaîner sur la cible. Taux de critique élevé." + "effect": "Le Pikachu à casquette utilise la Force Z pour augmenter sa puissance électrique avant de la déchainer sur la cible. Taux de critique élevé." }, "mindBlown": { "name": "Caboche-Kaboum", @@ -2893,11 +2893,11 @@ }, "searingSunrazeSmash": { "name": "Hélio-Choc Dévastateur", - "effect": "Baigné dans la Force Z, Solgaleo attaque en déchaînant toute sa puissance. Ignore le talent de la cible." + "effect": "Baigné dans la Force Z, Solgaleo attaque en déchainant toute sa puissance. Ignore le talent de la cible." }, "menacingMoonrazeMaelstrom": { "name": "Rayons Séléno-Explosifs", - "effect": "Baigné dans la Force Z, Lunala attaque en déchaînant toute sa puissance. Ignore le talent de la cible." + "effect": "Baigné dans la Force Z, Lunala attaque en déchainant toute sa puissance. Ignore le talent de la cible." }, "letsSnuggleForever": { "name": "Patati-Patattrape", @@ -2937,7 +2937,7 @@ }, "sizzlySlide": { "name": "Évo-Flambo", - "effect": "Évoli s’embrase et percure violemment l’adversaire. Brûle aussi l’ennemi." + "effect": "Évoli s’embrase et percure violemment l’adversaire. Brule aussi l’ennemi." }, "glitzyGlow": { "name": "Évo-Psycho", @@ -2961,7 +2961,7 @@ }, "veeveeVolley": { "name": "Évo-Chardasso", - "effect": "Le lanceur lance une attaque dès lors qu’un signe apparaît sur le terrain. Les dégâts infligés sont proportionnels à l’affection de votre Pokémon" + "effect": "Le lanceur lance une attaque dès lors qu’un signe apparait sur le terrain. Les dégâts infligés sont proportionnels à l’affection de votre Pokémon" }, "doubleIronBash": { "name": "Écrous d’Poing", @@ -3005,7 +3005,7 @@ }, "teatime": { "name": "Thérémonie", - "effect": "Le lanceur invite tous les Pokémon sur le terrain à prendre le goûter autour d’une tasse de thé. Ceux qui tiennent une Baie la mangent." + "effect": "Le lanceur invite tous les Pokémon sur le terrain à prendre le gouter autour d’une tasse de thé. Ceux qui tiennent une Baie la mangent." }, "octolock": { "name": "Octoprise", @@ -3105,7 +3105,7 @@ }, "decorate": { "name": "Nappage", - "effect": "Augmente fortement l’Attaque et l’Attaque Spéciale du lanceur." + "effect": "Augmente fortement l’Attaque et l’Attaque Spéciale de la cible." }, "drumBeating": { "name": "Tambour Battant", @@ -3116,8 +3116,8 @@ "effect": "Bloque l’ennemi pendant 4 à 5 tours." }, "pyroBall": { - "name": "Ballon Brûlant", - "effect": "Le lanceur attaque avec un ballon fait à partir d’un caillou enflammé. Peut aussi brûler la cible (10% de chances)." + "name": "Ballon Brulant", + "effect": "Le lanceur attaque avec un ballon fait à partir d’un caillou enflammé. Peut aussi bruler la cible (10% de chances)." }, "behemothBlade": { "name": "Gladius Maximus", @@ -3189,7 +3189,7 @@ }, "steelRoller": { "name": "Métalliroue", - "effect": "Une attaque qui inflige des dégâts et fait disparaître le champ actif, mais qui échoue s’il n’y en a pas à ce moment." + "effect": "Une attaque qui inflige des dégâts et fait disparaitre le champ actif, mais qui échoue s’il n’y en a pas à ce moment." }, "scaleShot": { "name": "Rafale Écailles", @@ -3225,7 +3225,7 @@ }, "burningJealousy": { "name": "Feu Envieux", - "effect": "Le lanceur attaque sa cible avec toute sa jalousie. Cette capacité brûle tout Pokémon dont les stats ont augmenté pendant ce tour." + "effect": "Le lanceur attaque sa cible avec toute sa jalousie. Cette capacité brule tout Pokémon dont les stats ont augmenté pendant ce tour." }, "lashOut": { "name": "Cent Rancunes", @@ -3257,7 +3257,7 @@ }, "scorchingSands": { "name": "Sable Ardent", - "effect": "Le lanceur projette du sable chauffé à blanc sur la cible, ce qui peut aussi la brûler (30% de chances)." + "effect": "Le lanceur projette du sable chauffé à blanc sur la cible, ce qui peut aussi la bruler (30% de chances)." }, "jungleHealing": { "name": "Selve Salvatrice", @@ -3265,11 +3265,11 @@ }, "wickedBlow": { "name": "Poing Obscur", - "effect": "Le lanceur assène un coup puissant à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maîtrisent la puissance des Ténèbres." + "effect": "Le lanceur assène un coup puissant à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maitrisent la puissance des Ténèbres." }, "surgingStrikes": { "name": "Torrent de Coups", - "effect": "Le lanceur assène trois coups fluides à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maîtrisent la puissance de l’Eau." + "effect": "Le lanceur assène trois coups fluides à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maitrisent la puissance de l’Eau." }, "thunderCage": { "name": "Voltageôle", @@ -3285,7 +3285,7 @@ }, "fieryWrath": { "name": "Fureur Ardente", - "effect": "Le lanceur canalise sa colère et la transforme en émanation brûlante, avec laquelle il attaque la cible, ce qui peut aussi apeurer celle-ci (20% de chances)." + "effect": "Le lanceur canalise sa colère et la transforme en émanation brulante, avec laquelle il attaque la cible, ce qui peut aussi apeurer celle-ci (20% de chances)." }, "thunderousKick": { "name": "Coup Fulgurant", @@ -3329,7 +3329,7 @@ }, "ragingFury": { "name": "Grand Courroux", - "effect": "Le lanceur se déchaîne et attaque en projetant de violentes flammes pendant deux ou trois tours. Il devient ensuite confus." + "effect": "Le lanceur se déchaine et attaque en projetant de violentes flammes pendant deux ou trois tours. Il devient ensuite confus." }, "waveCrash": { "name": "Aquatacle", @@ -3373,7 +3373,7 @@ }, "infernalParade": { "name": "Cortège Funèbre", - "effect": "Une multitude de boules de feu frappent la cible, ce qui peut aussi la brûler (30% de chances et 50% en Style Puissant). La puissance est doublée si celle-ci souffre d’une altération de statut." + "effect": "Une multitude de boules de feu frappent la cible, ce qui peut aussi la bruler (30% de chances et 50% en Style Puissant). La puissance est doublée si celle-ci souffre d’une altération de statut." }, "ceaselessEdge": { "name": "Vagues à Lames", @@ -3389,7 +3389,7 @@ }, "sandsearStorm": { "name": "Typhon Pyrosable", - "effect": "Le lanceur déclenche un violent typhon mêlé à du sable ardent qui s’abat sur la cible, ce qui peut la brûler (30% de chances et 50% en Style Puissant)." + "effect": "Le lanceur déclenche un violent typhon mêlé à du sable ardent qui s’abat sur la cible, ce qui peut la bruler (30% de chances et 50% en Style Puissant)." }, "lunarBlessing": { "name": "Prière Lunaire", @@ -3529,7 +3529,7 @@ }, "gMaxRapidFlow": { "name": "Multicoup G-Max", - "effect": "Une attaque de type Eau que seul un Shifours Gigamax peut utiliser. Cet enchaînement de coups permet d’ignorer la capacité Gardomax." + "effect": "Une attaque de type Eau que seul un Shifours Gigamax peut utiliser. Cet enchainement de coups permet d’ignorer la capacité Gardomax." }, "teraBlast": { "name": "Téra Explosion", @@ -3712,8 +3712,8 @@ "effect": "Le lanceur projette de l’eau pressurisée qui entaille la cible comme une lame. Taux de critiques élevé." }, "blazingTorque": { - "name": "Crash Brûlant", - "effect": "Crash Brûlant inflige des dégâts et possède 30 % de chances de brûler l’adversaire." + "name": "Crash Brulant", + "effect": "Crash Brulant inflige des dégâts et possède 30 % de chances de bruler l’adversaire." }, "wickedTorque": { "name": "Crash Obscur", @@ -3737,7 +3737,7 @@ }, "matchaGotcha": { "name": "Mortier Matcha", - "effect": "Le lanceur remue son thé et en bombarde la cible. La moitié des dégâts infligés sont convertis en PV pour le lanceur. Cette capacité peut aussi brûler la cible." + "effect": "Le lanceur remue son thé et en bombarde la cible. La moitié des dégâts infligés sont convertis en PV pour le lanceur. Cette capacité peut aussi bruler la cible." }, "syrupBomb": { "name": "Bombe au Sirop", @@ -3760,8 +3760,8 @@ "effect": "Le lanceur attaque en tirant un rayon lumineux. Il arrive parfois que toutes les têtes agissent ensemble, ce qui double la puissance de la capacité." }, "burningBulwark": { - "name": "Rempart Brûlant", - "effect": "Le lanceur se protège contre les attaques grâce à son pelage incandescent, et si un assaillant utilise une attaque directe contre lui, il le brûle." + "name": "Rempart Brulant", + "effect": "Le lanceur se protège contre les attaques grâce à son pelage incandescent, et si un assaillant utilise une attaque directe contre lui, il le brule." }, "thunderclap": { "name": "Vif Éclair", @@ -3784,7 +3784,7 @@ "effect": "Le lanceur galvanise ses alliés avec un encouragement draconique qui augmente leur taux de critiques. L’effet est plus puissant si les alliés ont le type Dragon." }, "alluringVoice": { - "name": "Voix Envoûtante", + "name": "Voix Envoutante", "effect": "Le lanceur attaque la cible avec sa voix angélique. Cette capacité rend la cible confuse si ses stats ont augmenté pendant ce tour." }, "temperFlare": { @@ -3804,7 +3804,7 @@ "effect": "Le lanceur réagit instinctivement au moindre mouvement et donne un coup de paume qui apeure la cible. Échoue si cette dernière n’a pas utilisé une attaque prioritaire." }, "malignantChain": { - "name": "Chaîne Malsaine", - "effect": "Le lanceur ligote la cible avec une chaîne faite de poison et lui injecte un venin corrosif, ce qui peut aussi gravement l’empoisonner." + "name": "Chaine Malsaine", + "effect": "Le lanceur ligote la cible avec une chaine faite de poison et lui injecte un venin corrosif, ce qui peut aussi gravement l’empoisonner." } } diff --git a/src/locales/fr/trainer-classes.json b/src/locales/fr/trainer-classes.json index 34768d0a31f..55ad0a3db8b 100644 --- a/src/locales/fr/trainer-classes.json +++ b/src/locales/fr/trainer-classes.json @@ -11,7 +11,7 @@ "baker": "Boulangère", "battle_girl": "Combattante", "beauty": "Canon", - "beginners": "Beginners", + "beginners": "Débutants", "biker": "Motard", "black_belt": "Karatéka", "breeder": "Éleveur", @@ -29,7 +29,7 @@ "depot_agent": "Cheminot", "doctor": "Docteur", "doctor_female": "Docteure", - "firebreather": "Firebreather", + "firebreather": "Crache-Feu", "fisherman": "Pêcheur", "fisherman_female": "Pêcheuse", "gentleman": "Gentleman", @@ -68,7 +68,7 @@ "pokémon_rangers": "Pokémon Rangers", "ranger": "Ranger", "restaurant_staff": "Serveurs", - "rich": "Rich", + "rich": "Gentleman", "rich_female": "Mondaine", "rich_boy": "Gentleman", "rich_couple": "Couple de Bourgeois", @@ -118,4 +118,4 @@ "flare_grunt": "Sbire de la Team Flare", "flare_grunt_female": "Sbire de la Team Flare", "flare_grunts": "Sbires de la Team Flare" -} \ No newline at end of file +} From 1c715d74b1fc5be28ecfcc75ff1a9e1986e0dcc8 Mon Sep 17 00:00:00 2001 From: Asdar Date: Sun, 25 Aug 2024 22:44:08 +0200 Subject: [PATCH 6/7] [Localisation] [IT] Old PRs to .json and screenshots (#3737) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Localisation] Italian PRs to .json and screenshots * Update src/locales/it/trainer-titles.json Co-authored-by: Niccolò <123510358+NicusPulcis@users.noreply.github.com> --------- Co-authored-by: Niccolò <123510358+NicusPulcis@users.noreply.github.com> --- src/locales/it/party-ui-handler.json | 43 ++++++++++++++++++- src/locales/it/pokemon-form-battle.json | 2 +- src/locales/it/starter-select-ui-handler.json | 10 ++--- src/locales/it/terrain.json | 17 +++++++- src/locales/it/trainer-names.json | 36 ++++++++-------- src/locales/it/trainer-titles.json | 36 ++++++++-------- 6 files changed, 100 insertions(+), 44 deletions(-) diff --git a/src/locales/it/party-ui-handler.json b/src/locales/it/party-ui-handler.json index 9e26dfeeb6e..f5582e5b630 100644 --- a/src/locales/it/party-ui-handler.json +++ b/src/locales/it/party-ui-handler.json @@ -1 +1,42 @@ -{} \ No newline at end of file +{ + "SEND_OUT": "Manda in campo", + "SUMMARY": "Sommario", + "CANCEL": "Annulla", + "RELEASE": "Rilascia", + "APPLY": "Applica", + "TEACH": "Insegna", + "SPLICE": "Unisci", + "UNSPLICE": "Dividi", + "ACTIVATE": "Attiva", + "DEACTIVATE": "Disattiva", + "TRANSFER": "Trasferisci", + "ALL": "Tutto", + "PASS_BATON": "Staffetta", + "UNPAUSE_EVOLUTION": "Consenti evoluzione", + "REVIVE": "Revitalizza", + "RENAME": "Rinomina", + "choosePokemon": "Scegli un Pokémon.", + "doWhatWithThisPokemon": "Hai selezionato questo Pokémon.", + "noEnergy": "{{pokemonName}} non ha più energie\nper lottare!", + "hasEnergy": "{{pokemonName}} ha ancora energie\nper lottare!", + "cantBeUsed": "{{pokemonName}} non può essere usato\nin questa sfida!", + "tooManyItems": "{{pokemonName}} possiede già\nquest'oggetto in abbondanza!", + "anyEffect": "Non avrebbe alcun effetto.", + "unpausedEvolutions": "{{pokemonName}} può di nuovo evolversi.", + "unspliceConfirmation": "Vuoi davvero dividere {{fusionName}}\nda {{pokemonName}}? {{fusionName}} andrà perduto.", + "wasReverted": "{{fusionName}} è tornato ad essere {{pokemonName}}.", + "releaseConfirmation": "Vuoi davvero liberare {{pokemonName}}?", + "releaseInBattle": "Non puoi liberare un Pokémon che sta combattendo!", + "selectAMove": "Scegli una mossa.", + "changeQuantity": "Scegli un oggetto da trasferire.\nUsa < e > per cambiarne la quantità.", + "selectAnotherPokemonToSplice": "Scegli un altro Pokémon da unire.", + "cancel": "Annulla", + "goodbye": "Addio, {{pokemonName}}!", + "byebye": "Ciao ciao, {{pokemonName}}!", + "farewell": "Arrivederci, {{pokemonName}}!", + "soLong": "È stato bello, {{pokemonName}}!", + "thisIsWhereWePart": "Le nostre strade si dividono, {{pokemonName}}!", + "illMissYou": "Mi mancherai, {{pokemonName}}!", + "illNeverForgetYou": "Non ti dimenticherò, {{pokemonName}}!", + "untilWeMeetAgain": "Alla prossima, {{pokemonName}}!" + } \ No newline at end of file diff --git a/src/locales/it/pokemon-form-battle.json b/src/locales/it/pokemon-form-battle.json index 911f4fcf7c9..3c9b36f8150 100644 --- a/src/locales/it/pokemon-form-battle.json +++ b/src/locales/it/pokemon-form-battle.json @@ -10,5 +10,5 @@ "eternamaxChange": "{{preName}} si Dynamaxxa infinitamente\nin {{pokemonName}}!", "revertChange": "{{pokemonName}} è tornato\nalla sua forma originaria!", "formChange": "{{preName}} ha cambiato forma!", - "disguiseChange": "Its disguise served it as a decoy!" + "disguiseChange": "Il costume ha assorbito l’attacco!" } \ No newline at end of file diff --git a/src/locales/it/starter-select-ui-handler.json b/src/locales/it/starter-select-ui-handler.json index 2bdc267d5f6..04137993d33 100644 --- a/src/locales/it/starter-select-ui-handler.json +++ b/src/locales/it/starter-select-ui-handler.json @@ -1,6 +1,6 @@ { "confirmStartTeam": "Vuoi iniziare con questi Pokémon?", - "confirmExit": "Do you want to exit?", + "confirmExit": "Vuoi tornare alla schermata principale?", "invalidParty": "Questo squadra iniziale non è valida!", "gen1": "1ª", "gen2": "2ª", @@ -21,13 +21,13 @@ "toggleIVs": "Vedi/Nascondi IV", "manageMoves": "Gestisci mosse", "manageNature": "Gestisci natura", - "addToFavorites": "Add to Favorites", - "removeFromFavorites": "Remove from Favorites", + "addToFavorites": "Aggiungi ai preferiti", + "removeFromFavorites": "Rimuovi dai preferiti", "useCandies": "Usa caramelle", "selectNature": "Seleziona natura.", "selectMoveSwapOut": "Seleziona una mossa da scambiare.", "selectMoveSwapWith": "Seleziona una mossa da scambiare con", - "sameSpeciesEgg": "Buy an Egg", + "sameSpeciesEgg": "Compra un uovo", "unlockPassive": "Sblocca passiva", "reduceCost": "Riduci costo", "cycleShiny": ": Shiny", @@ -36,7 +36,7 @@ "cycleAbility": ": Abilità", "cycleNature": ": Natura", "cycleVariant": ": Variante", - "goFilter": ": Go to filters", + "goFilter": ": Vai ai filtri", "enablePassive": "Attiva passiva", "disablePassive": "Disattiva passiva", "locked": "Bloccato", diff --git a/src/locales/it/terrain.json b/src/locales/it/terrain.json index 9e26dfeeb6e..d0a584d74ab 100644 --- a/src/locales/it/terrain.json +++ b/src/locales/it/terrain.json @@ -1 +1,16 @@ -{} \ No newline at end of file +{ + "misty": "Nebbioso", + "mistyStartMessage": "Ai piedi dei Pokémon si addensa la nebbia.", + "mistyClearMessage": "La nebbia si dissolve.", + "mistyBlockMessage": "Il Campo Nebbioso protegge {{pokemonNameWithAffix}}!", + "electric": "Elettrico", + "electricStartMessage": "Ai piedi dei Pokémon si accumula dell’elettricità.", + "electricClearMessage": "L’elettricità svanisce.", + "grassy": "Erboso", + "grassyStartMessage": "Ai piedi dei Pokémon cresce rigogliosa l’erba.", + "grassyClearMessage": "L’erba sparisce.", + "psychic": "Psichico", + "psychicStartMessage": "Nel campo si avverte una strana sensazione...", + "psychicClearMessage": "La strana sensazione nel campo è svanita!", + "defaultBlockMessage": "Il Campo {{terrainName}} protegge {{pokemonNameWithAffix}}!" +} diff --git a/src/locales/it/trainer-names.json b/src/locales/it/trainer-names.json index e5ad03321a8..bd66fbae647 100644 --- a/src/locales/it/trainer-names.json +++ b/src/locales/it/trainer-names.json @@ -124,25 +124,25 @@ "rival": "Finn", "rival_female": "Ivy", "archer": "Archer", - "ariana": "Ariana", - "proton": "Proton", - "petrel": "Petrel", - "tabitha": "Tabitha", - "courtney": "Courtney", - "shelly": "Shelly", - "matt": "Matt", - "mars": "Mars", - "jupiter": "Jupiter", - "saturn": "Saturn", - "zinzolin": "Zinzolin", - "rood": "Rood", - "xerosic": "Xerosic", - "bryony": "Bryony", - "maxie": "Maxie", - "archie": "Archie", + "ariana": "Atena", + "proton": "Milas", + "petrel": "Maxus", + "tabitha": "Ottavio", + "courtney": "Rossella", + "shelly": "Ada", + "matt": "Alan", + "mars": "Martes", + "jupiter": "Giovia", + "saturn": "Saturno", + "zinzolin": "Violante", + "rood": "Ross", + "xerosic": "Xante", + "bryony": "Bromelia", + "maxie": "Max", + "archie": "Ivan", "cyrus": "Cyrus", - "ghetsis": "Ghetsis", - "lysandre": "Lysandre", + "ghetsis": "Ghecis", + "lysandre": "Elisio", "blue_red_double": "Blu & Rosso", "red_blue_double": "Rosso & Blu", "tate_liza_double": "Tell & Pat", diff --git a/src/locales/it/trainer-titles.json b/src/locales/it/trainer-titles.json index c7f0dd8b323..f8132d2b817 100644 --- a/src/locales/it/trainer-titles.json +++ b/src/locales/it/trainer-titles.json @@ -10,22 +10,22 @@ "rival": "Rivale", "professor": "Professore", "frontier_brain": "Asso lotta", - "rocket_boss": "Team Rocket Boss", - "magma_boss": "Team Magma Boss", - "aqua_boss": "Team Aqua Boss", - "galactic_boss": "Team Galactic Boss", - "plasma_boss": "Team Plasma Boss", - "flare_boss": "Team Flare Boss", - "rocket_admin": "Team Rocket Admin", - "rocket_admin_female": "Team Rocket Admin", - "magma_admin": "Team Magma Admin", - "magma_admin_female": "Team Magma Admin", - "aqua_admin": "Team Aqua Admin", - "aqua_admin_female": "Team Aqua Admin", - "galactic_commander": "Team Galactic Commander", - "galactic_commander_female": "Team Galactic Commander", - "plasma_sage": "Team Plasma Sage", - "plasma_admin": "Team Plasma Admin", - "flare_admin": "Team Flare Admin", - "flare_admin_female": "Team Flare Admin" + "rocket_boss": "Capo Rocket", + "magma_boss": "Capo Magma", + "aqua_boss": "Capo Idro", + "galactic_boss": "Capo Galassia", + "plasma_boss": "Capo Plasma", + "flare_boss": "Capo Flare", + "rocket_admin": "Tenente Team Rocket", + "rocket_admin_female": "Tenente Team Rocket", + "magma_admin": "Magmatenente", + "magma_admin_female": "Magmatenente", + "aqua_admin": "Idrotenente", + "aqua_admin_female": "Idrotenente", + "galactic_commander": "Comandante Galassia", + "galactic_commander_female": "Comandante Galassia", + "plasma_sage": "Saggio Team Plasma", + "plasma_admin": "Tenente Team Plasma", + "flare_admin": "Ufficiale Team Flare", + "flare_admin_female": "Ufficiale Team Flare" } \ No newline at end of file From b7d71df46606eee1458a58027a9aee8af08a91fc Mon Sep 17 00:00:00 2001 From: damocleas Date: Sun, 25 Aug 2024 16:51:00 -0400 Subject: [PATCH 7/7] [Balance] Gigantamax State/Form Rebalance (#2442) * [Balance] Gigantamax State/Form Rebalance (WIP) * GMAX Ability for Orbeetle adjusted * fixed typo on CHLOROPHYLL * Adjusted stats so there was a less intense drop in some stats * Added comments to GMAX Pikachu, Eevee, Meowth * Updated ability for GMAX Kingler and Eevee * Added Stellar typing to GMAX Eevee * Fixed typing on GMAX Eevee and Snorlax * GMax Garbodor- Toxic Debris > Corrosion * Corrected Trubbish passive to not overlap with GMax Garbodor * Update pokemonFixed Coalossal, Flapple, and Centiskorch BST, Alcremie Ability Change * Changed Alcremie Passive in adjustment with Gmax ability * Undid Eevee being Stellar * Gmax Sandaconda Sand Stream -> Sand Spit * Balance Sweep of changes by damo, less dropped stats and simpler spreads * fixed 5 Appletun BST I missed * fixed missing Hatterene BST --- src/data/pokemon-species.ts | 70 ++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index fc6f28fb1cd..dc12ca402cd 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -913,7 +913,7 @@ export function initSpecies() { new PokemonSpecies(Species.VENUSAUR, 1, false, false, false, "Seed Pokémon", Type.GRASS, Type.POISON, 2, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, GrowthRate.MEDIUM_SLOW, 87.5, true, true, new PokemonForm("Normal", "", Type.GRASS, Type.POISON, 2, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, true, null, true), new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.GRASS, Type.POISON, 2.4, 155.5, Abilities.THICK_FAT, Abilities.THICK_FAT, Abilities.THICK_FAT, 625, 80, 100, 123, 122, 120, 80, 45, 50, 263, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.POISON, 24, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 625, 100, 90, 120, 110, 130, 75, 45, 50, 263, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.POISON, 24, 100, Abilities.CHLOROPHYLL, Abilities.CHLOROPHYLL, Abilities.CHLOROPHYLL, 625, 120, 82, 98, 130, 115, 80, 45, 50, 263, true), ), new PokemonSpecies(Species.CHARMANDER, 1, false, false, false, "Lizard Pokémon", Type.FIRE, null, 0.6, 8.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 309, 39, 52, 43, 60, 50, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.CHARMELEON, 1, false, false, false, "Flame Pokémon", Type.FIRE, null, 1.1, 19, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 405, 58, 64, 58, 80, 65, 80, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), @@ -921,20 +921,20 @@ export function initSpecies() { new PokemonForm("Normal", "", Type.FIRE, Type.FLYING, 1.7, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, false, null, true), new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, Type.FIRE, Type.DRAGON, 1.7, 110.5, Abilities.TOUGH_CLAWS, Abilities.NONE, Abilities.TOUGH_CLAWS, 634, 78, 130, 111, 130, 85, 100, 45, 50, 267), new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, Type.FIRE, Type.FLYING, 1.7, 100.5, Abilities.DROUGHT, Abilities.NONE, Abilities.DROUGHT, 634, 78, 104, 78, 159, 115, 100, 45, 50, 267), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, Type.FLYING, 28, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 634, 98, 100, 96, 135, 110, 95, 45, 50, 267), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, Type.FLYING, 28, 90.5, Abilities.SOLAR_POWER, Abilities.SOLAR_POWER, Abilities.SOLAR_POWER, 634, 118, 84, 93, 139, 110, 100, 45, 50, 267), ), new PokemonSpecies(Species.SQUIRTLE, 1, false, false, false, "Tiny Turtle Pokémon", Type.WATER, null, 0.5, 9, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 314, 44, 48, 65, 50, 64, 43, 45, 50, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.WARTORTLE, 1, false, false, false, "Turtle Pokémon", Type.WATER, null, 1, 22.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 405, 59, 63, 80, 65, 80, 58, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.BLASTOISE, 1, false, false, false, "Shellfish Pokémon", Type.WATER, null, 1.6, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, new PokemonForm("Normal", "", Type.WATER, null, 1.6, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, false, null, true), new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.WATER, null, 1.6, 101.1, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.MEGA_LAUNCHER, 630, 79, 103, 120, 135, 115, 78, 45, 50, 265), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 25, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 630, 100, 95, 130, 105, 125, 75, 45, 50, 265), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.STEEL, 25, 85.5, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, 630, 119, 83, 130, 115, 115, 68, 45, 50, 265), ), new PokemonSpecies(Species.CATERPIE, 1, false, false, false, "Worm Pokémon", Type.BUG, null, 0.3, 2.9, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 45, 30, 35, 20, 20, 45, 255, 50, 39, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.METAPOD, 1, false, false, false, "Cocoon Pokémon", Type.BUG, null, 0.7, 9.9, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 20, 55, 25, 25, 30, 120, 50, 72, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.BUTTERFREE, 1, false, false, false, "Butterfly Pokémon", Type.BUG, Type.FLYING, 1.1, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, GrowthRate.MEDIUM_FAST, 50, true, true, new PokemonForm("Normal", "", Type.BUG, Type.FLYING, 1.1, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, true, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.FLYING, 17, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 495, 75, 50, 75, 120, 100, 75, 45, 50, 198, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.FLYING, 17, 32, Abilities.TINTED_LENS, Abilities.TINTED_LENS, Abilities.TINTED_LENS, 495, 85, 35, 80, 120, 90, 85, 45, 50, 198, true), ), new PokemonSpecies(Species.WEEDLE, 1, false, false, false, "Hairy Bug Pokémon", Type.BUG, Type.POISON, 0.3, 3.2, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 40, 35, 30, 20, 20, 50, 255, 70, 39, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.KAKUNA, 1, false, false, false, "Cocoon Pokémon", Type.BUG, Type.POISON, 0.6, 10, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 45, 25, 50, 25, 25, 35, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), @@ -963,7 +963,7 @@ export function initSpecies() { new PokemonForm("Cute Cosplay", "cute-cosplay", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom new PokemonForm("Smart Cosplay", "smart-cosplay", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom new PokemonForm("Tough Cosplay", "tough-cosplay", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, null, 21, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 420, 45, 60, 65, 100, 75, 75, 190, 50, 112), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, null, 21, 6, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, 530, 125, 95, 60, 90, 70, 90, 190, 50, 112), //+100 BST from Partner Form ), new PokemonSpecies(Species.RAICHU, 1, false, false, false, "Mouse Pokémon", Type.ELECTRIC, null, 0.8, 30, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 485, 60, 90, 55, 90, 80, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, true), new PokemonSpecies(Species.SANDSHREW, 1, false, false, false, "Mouse Pokémon", Type.GROUND, null, 0.6, 12, Abilities.SAND_VEIL, Abilities.NONE, Abilities.SAND_RUSH, 300, 50, 75, 85, 20, 30, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), @@ -993,7 +993,7 @@ export function initSpecies() { new PokemonSpecies(Species.DUGTRIO, 1, false, false, false, "Mole Pokémon", Type.GROUND, null, 0.7, 33.3, Abilities.SAND_VEIL, Abilities.ARENA_TRAP, Abilities.SAND_FORCE, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.MEOWTH, 1, false, false, false, "Scratch Cat Pokémon", Type.NORMAL, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false, true, new PokemonForm("Normal", "", Type.NORMAL, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 33, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 390, 50, 85, 60, 70, 50, 75, 255, 50, 58), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 33, 4.2, Abilities.TECHNICIAN, Abilities.TECHNICIAN, Abilities.TECHNICIAN, 540, 115, 110, 65, 65, 70, 115, 255, 50, 58), //+100 BST from Persian ), new PokemonSpecies(Species.PERSIAN, 1, false, false, false, "Classy Cat Pokémon", Type.NORMAL, null, 1, 32, Abilities.LIMBER, Abilities.TECHNICIAN, Abilities.UNNERVE, 440, 65, 70, 60, 65, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.PSYDUCK, 1, false, false, false, "Duck Pokémon", Type.WATER, null, 0.8, 19.6, Abilities.DAMP, Abilities.CLOUD_NINE, Abilities.SWIFT_SWIM, 320, 50, 52, 48, 65, 50, 55, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), @@ -1015,7 +1015,7 @@ export function initSpecies() { new PokemonSpecies(Species.MACHOKE, 1, false, false, false, "Superpower Pokémon", Type.FIGHTING, null, 1.5, 70.5, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 405, 80, 100, 70, 50, 60, 45, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), new PokemonSpecies(Species.MACHAMP, 1, false, false, false, "Superpower Pokémon", Type.FIGHTING, null, 1.6, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false, true, new PokemonForm("Normal", "", Type.FIGHTING, null, 1.6, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIGHTING, null, 25, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 605, 113, 170, 90, 70, 95, 67, 45, 50, 253), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIGHTING, null, 25, 130, Abilities.GUTS, Abilities.GUTS, Abilities.GUTS, 605, 115, 170, 95, 65, 95, 65, 45, 50, 253), ), new PokemonSpecies(Species.BELLSPROUT, 1, false, false, false, "Flower Pokémon", Type.GRASS, Type.POISON, 0.7, 4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 300, 50, 75, 35, 70, 30, 40, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), new PokemonSpecies(Species.WEEPINBELL, 1, false, false, false, "Flycatcher Pokémon", Type.GRASS, Type.POISON, 1, 6.4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 390, 65, 90, 50, 85, 45, 55, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), @@ -1048,7 +1048,7 @@ export function initSpecies() { new PokemonSpecies(Species.GENGAR, 1, false, false, false, "Shadow Pokémon", Type.GHOST, Type.POISON, 1.5, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false, true, new PokemonForm("Normal", "", Type.GHOST, Type.POISON, 1.5, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, false, null, true), new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.GHOST, Type.POISON, 1.4, 40.5, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.NONE, 600, 60, 65, 80, 170, 95, 130, 45, 50, 250), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GHOST, Type.POISON, 20, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 600, 75, 95, 85, 160, 95, 90, 45, 50, 250), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GHOST, Type.POISON, 20, 40.5, Abilities.CURSED_BODY, Abilities.CURSED_BODY, Abilities.CURSED_BODY, 600, 140, 65, 70, 140, 85, 100, 45, 50, 250), ), new PokemonSpecies(Species.ONIX, 1, false, false, false, "Rock Snake Pokémon", Type.ROCK, Type.GROUND, 8.8, 210, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.WEAK_ARMOR, 385, 35, 45, 160, 30, 45, 70, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.DROWZEE, 1, false, false, false, "Hypnosis Pokémon", Type.PSYCHIC, null, 1, 32.4, Abilities.INSOMNIA, Abilities.FOREWARN, Abilities.INNER_FOCUS, 328, 60, 48, 45, 43, 90, 42, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), @@ -1056,7 +1056,7 @@ export function initSpecies() { new PokemonSpecies(Species.KRABBY, 1, false, false, false, "River Crab Pokémon", Type.WATER, null, 0.4, 6.5, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 325, 30, 105, 90, 25, 25, 50, 225, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.KINGLER, 1, false, false, false, "Pincer Pokémon", Type.WATER, null, 1.3, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, new PokemonForm("Normal", "", Type.WATER, null, 1.3, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 19, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 575, 70, 165, 145, 60, 70, 65, 60, 50, 166), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 19, 60, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 575, 90, 155, 140, 50, 80, 70, 60, 50, 166), ), new PokemonSpecies(Species.VOLTORB, 1, false, false, false, "Ball Pokémon", Type.ELECTRIC, null, 0.5, 10.4, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 70, 66, GrowthRate.MEDIUM_FAST, null, false), new PokemonSpecies(Species.ELECTRODE, 1, false, false, false, "Ball Pokémon", Type.ELECTRIC, null, 1.2, 66.6, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), @@ -1100,13 +1100,13 @@ export function initSpecies() { ), new PokemonSpecies(Species.LAPRAS, 1, false, false, false, "Transport Pokémon", Type.WATER, Type.ICE, 2.5, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, GrowthRate.SLOW, 50, false, true, new PokemonForm("Normal", "", Type.WATER, Type.ICE, 2.5, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ICE, 24, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 635, 160, 95, 110, 95, 125, 50, 45, 50, 187), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ICE, 24, 220, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, 635, 170, 85, 95, 115, 110, 60, 45, 50, 187), ), new PokemonSpecies(Species.DITTO, 1, false, false, false, "Transform Pokémon", Type.NORMAL, null, 0.3, 4, Abilities.LIMBER, Abilities.NONE, Abilities.IMPOSTER, 288, 48, 48, 48, 48, 48, 48, 35, 50, 101, GrowthRate.MEDIUM_FAST, null, false), new PokemonSpecies(Species.EEVEE, 1, false, false, false, "Evolution Pokémon", Type.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, GrowthRate.MEDIUM_FAST, 87.5, false, true, new PokemonForm("Normal", "", Type.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, false, null, true), new PokemonForm("Partner", "partner", Type.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 435, 65, 75, 70, 65, 85, 75, 45, 50, 65, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 18, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 425, 70, 75, 80, 60, 95, 45, 45, 50, 65), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 18, 6.5, Abilities.PROTEAN, Abilities.PROTEAN, Abilities.PROTEAN, 535, 105, 95, 70, 95, 85, 85, 45, 50, 65), //+100 BST from Partner Form ), new PokemonSpecies(Species.VAPOREON, 1, false, false, false, "Bubble Jet Pokémon", Type.WATER, null, 1, 29, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.HYDRATION, 525, 130, 65, 60, 110, 95, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), new PokemonSpecies(Species.JOLTEON, 1, false, false, false, "Lightning Pokémon", Type.ELECTRIC, null, 0.8, 24.5, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.QUICK_FEET, 525, 65, 65, 60, 110, 95, 130, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), @@ -1122,7 +1122,7 @@ export function initSpecies() { ), new PokemonSpecies(Species.SNORLAX, 1, false, false, false, "Sleeping Pokémon", Type.NORMAL, null, 2.1, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, GrowthRate.SLOW, 87.5, false, true, new PokemonForm("Normal", "", Type.NORMAL, null, 2.1, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 35, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 640, 200, 130, 85, 75, 130, 20, 25, 50, 189), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, Type.GRASS, 35, 460, Abilities.THICK_FAT, Abilities.THICK_FAT, Abilities.THICK_FAT, 640, 200, 135, 85, 80, 125, 15, 25, 50, 189), ), new PokemonSpecies(Species.ARTICUNO, 1, true, false, false, "Freeze Pokémon", Type.ICE, Type.FLYING, 1.7, 55.4, Abilities.PRESSURE, Abilities.NONE, Abilities.SNOW_CLOAK, 580, 90, 85, 100, 95, 125, 85, 3, 35, 290, GrowthRate.SLOW, null, false), new PokemonSpecies(Species.ZAPDOS, 1, true, false, false, "Electric Pokémon", Type.ELECTRIC, Type.FLYING, 1.6, 52.6, Abilities.PRESSURE, Abilities.NONE, Abilities.STATIC, 580, 90, 90, 85, 125, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), @@ -1762,7 +1762,7 @@ export function initSpecies() { new PokemonSpecies(Species.TRUBBISH, 5, false, false, false, "Trash Bag Pokémon", Type.POISON, null, 0.6, 31, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.AFTERMATH, 329, 50, 50, 62, 40, 62, 65, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.GARBODOR, 5, false, false, false, "Trash Heap Pokémon", Type.POISON, null, 1.9, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, new PokemonForm("Normal", "", Type.POISON, null, 1.9, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.POISON, null, 21, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 574, 100, 125, 102, 80, 102, 65, 60, 50, 166), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.POISON, Type.STEEL, 21, 107.3, Abilities.TOXIC_DEBRIS, Abilities.TOXIC_DEBRIS, Abilities.TOXIC_DEBRIS, 574, 135, 125, 102, 57, 102, 53, 60, 50, 166), ), new PokemonSpecies(Species.ZORUA, 5, false, false, false, "Tricky Fox Pokémon", Type.DARK, null, 0.7, 12.5, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 330, 40, 65, 40, 80, 40, 65, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.ZOROARK, 5, false, false, false, "Illusion Fox Pokémon", Type.DARK, null, 1.6, 81.1, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 510, 60, 105, 60, 120, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), @@ -2236,25 +2236,25 @@ export function initSpecies() { new PokemonSpecies(Species.MELTAN, 7, false, false, true, "Hex Nut Pokémon", Type.STEEL, null, 0.2, 8, Abilities.MAGNET_PULL, Abilities.NONE, Abilities.NONE, 300, 46, 65, 65, 55, 35, 34, 3, 0, 150, GrowthRate.SLOW, null, false), new PokemonSpecies(Species.MELMETAL, 7, false, false, true, "Hex Nut Pokémon", Type.STEEL, null, 2.5, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, GrowthRate.SLOW, null, false, true, new PokemonForm("Normal", "", Type.STEEL, null, 2.5, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, null, 25, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 700, 170, 165, 165, 95, 75, 30, 3, 0, 300), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, null, 25, 800, Abilities.IRON_FIST, Abilities.IRON_FIST, Abilities.IRON_FIST, 700, 175, 165, 155, 85, 75, 45, 3, 0, 300), ), new PokemonSpecies(Species.GROOKEY, 8, false, false, false, "Chimp Pokémon", Type.GRASS, null, 0.3, 5, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 310, 50, 65, 50, 40, 40, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.THWACKEY, 8, false, false, false, "Beat Pokémon", Type.GRASS, null, 0.7, 14, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 420, 70, 85, 70, 55, 60, 80, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.RILLABOOM, 8, false, false, false, "Drummer Pokémon", Type.GRASS, null, 2.1, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, new PokemonForm("Normal", "", Type.GRASS, null, 2.1, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, null, 28, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 630, 125, 150, 115, 75, 90, 75, 45, 50, 265), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, null, 28, 90, Abilities.GRASSY_SURGE, Abilities.GRASSY_SURGE, Abilities.GRASSY_SURGE, 630, 125, 150, 115, 65, 95, 80, 45, 50, 265), ), new PokemonSpecies(Species.SCORBUNNY, 8, false, false, false, "Rabbit Pokémon", Type.FIRE, null, 0.3, 4.5, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 310, 50, 71, 40, 40, 40, 69, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.RABOOT, 8, false, false, false, "Rabbit Pokémon", Type.FIRE, null, 0.6, 9, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 420, 65, 86, 60, 55, 60, 94, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.CINDERACE, 8, false, false, false, "Striker Pokémon", Type.FIRE, null, 1.4, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, new PokemonForm("Normal", "", Type.FIRE, null, 1.4, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, null, 27, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 630, 100, 145, 90, 75, 90, 130, 45, 50, 265), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, null, 27, 33, Abilities.LIBERO, Abilities.LIBERO, Abilities.LIBERO, 630, 90, 151, 85, 85, 85, 134, 45, 50, 265), ), new PokemonSpecies(Species.SOBBLE, 8, false, false, false, "Water Lizard Pokémon", Type.WATER, null, 0.3, 4, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 310, 50, 40, 40, 70, 40, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.DRIZZILE, 8, false, false, false, "Water Lizard Pokémon", Type.WATER, null, 0.7, 11.5, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 420, 65, 60, 55, 95, 55, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.INTELEON, 8, false, false, false, "Secret Agent Pokémon", Type.WATER, null, 1.9, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, new PokemonForm("Normal", "", Type.WATER, null, 1.9, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 40, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 630, 90, 100, 90, 150, 90, 110, 45, 50, 265), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 40, 45.2, Abilities.SNIPER, Abilities.SNIPER, Abilities.SNIPER, 630, 90, 90, 85, 150, 85, 130, 45, 50, 265), ), new PokemonSpecies(Species.SKWOVET, 8, false, false, false, "Cheeky Pokémon", Type.NORMAL, null, 0.3, 2.5, Abilities.CHEEK_POUCH, Abilities.NONE, Abilities.GLUTTONY, 275, 70, 55, 55, 35, 35, 25, 255, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.GREEDENT, 8, false, false, false, "Greedy Pokémon", Type.NORMAL, null, 0.6, 6, Abilities.CHEEK_POUCH, Abilities.NONE, Abilities.GLUTTONY, 460, 120, 95, 95, 55, 75, 20, 90, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), @@ -2262,13 +2262,13 @@ export function initSpecies() { new PokemonSpecies(Species.CORVISQUIRE, 8, false, false, false, "Raven Pokémon", Type.FLYING, null, 0.8, 16, Abilities.KEEN_EYE, Abilities.UNNERVE, Abilities.BIG_PECKS, 365, 68, 67, 55, 43, 55, 77, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 50, false), new PokemonSpecies(Species.CORVIKNIGHT, 8, false, false, false, "Raven Pokémon", Type.FLYING, Type.STEEL, 2.2, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, GrowthRate.MEDIUM_SLOW, 50, false, true, new PokemonForm("Normal", "", Type.FLYING, Type.STEEL, 2.2, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FLYING, Type.STEEL, 14, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 595, 125, 100, 135, 60, 95, 80, 45, 50, 248), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FLYING, Type.STEEL, 14, 75, Abilities.MIRROR_ARMOR, Abilities.MIRROR_ARMOR, Abilities.MIRROR_ARMOR, 595, 128, 102, 140, 53, 95, 77, 45, 50, 248), ), new PokemonSpecies(Species.BLIPBUG, 8, false, false, false, "Larva Pokémon", Type.BUG, null, 0.4, 8, Abilities.SWARM, Abilities.COMPOUND_EYES, Abilities.TELEPATHY, 180, 25, 20, 20, 25, 45, 45, 255, 50, 36, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.DOTTLER, 8, false, false, false, "Radome Pokémon", Type.BUG, Type.PSYCHIC, 0.4, 19.5, Abilities.SWARM, Abilities.COMPOUND_EYES, Abilities.TELEPATHY, 335, 50, 35, 80, 50, 90, 30, 120, 50, 117, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.ORBEETLE, 8, false, false, false, "Seven Spot Pokémon", Type.BUG, Type.PSYCHIC, 0.4, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, GrowthRate.MEDIUM_FAST, 50, false, true, new PokemonForm("Normal", "", Type.BUG, Type.PSYCHIC, 0.4, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.PSYCHIC, 14, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 605, 75, 50, 140, 90, 150, 100, 45, 50, 253), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.PSYCHIC, 14, 40.8, Abilities.TRACE, Abilities.TRACE, Abilities.TRACE, 605, 90, 45, 130, 110, 140, 90, 45, 50, 253), ), new PokemonSpecies(Species.NICKIT, 8, false, false, false, "Fox Pokémon", Type.DARK, null, 0.6, 8.9, Abilities.RUN_AWAY, Abilities.UNBURDEN, Abilities.STAKEOUT, 245, 40, 28, 28, 47, 52, 50, 255, 50, 49, GrowthRate.FAST, 50, false), new PokemonSpecies(Species.THIEVUL, 8, false, false, false, "Fox Pokémon", Type.DARK, null, 1.2, 19.9, Abilities.RUN_AWAY, Abilities.UNBURDEN, Abilities.STAKEOUT, 455, 70, 58, 58, 87, 92, 90, 127, 50, 159, GrowthRate.FAST, 50, false), @@ -2279,7 +2279,7 @@ export function initSpecies() { new PokemonSpecies(Species.CHEWTLE, 8, false, false, false, "Snapping Pokémon", Type.WATER, null, 0.3, 8.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 284, 50, 64, 50, 38, 38, 44, 255, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.DREDNAW, 8, false, false, false, "Bite Pokémon", Type.WATER, Type.ROCK, 1, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, true, new PokemonForm("Normal", "", Type.WATER, Type.ROCK, 1, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ROCK, 24, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 585, 115, 150, 110, 55, 85, 70, 75, 50, 170), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ROCK, 24, 115.5, Abilities.STRONG_JAW, Abilities.STRONG_JAW, Abilities.STRONG_JAW, 585, 115, 145, 115, 43, 83, 84, 75, 50, 170), ), new PokemonSpecies(Species.YAMPER, 8, false, false, false, "Puppy Pokémon", Type.ELECTRIC, null, 0.3, 13.5, Abilities.BALL_FETCH, Abilities.NONE, Abilities.RATTLED, 270, 59, 45, 50, 40, 50, 26, 255, 50, 54, GrowthRate.FAST, 50, false), new PokemonSpecies(Species.BOLTUND, 8, false, false, false, "Dog Pokémon", Type.ELECTRIC, null, 1, 34, Abilities.STRONG_JAW, Abilities.NONE, Abilities.COMPETITIVE, 490, 69, 90, 60, 90, 60, 121, 45, 50, 172, GrowthRate.FAST, 50, false), @@ -2287,21 +2287,21 @@ export function initSpecies() { new PokemonSpecies(Species.CARKOL, 8, false, false, false, "Coal Pokémon", Type.ROCK, Type.FIRE, 1.1, 78, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 410, 80, 60, 90, 60, 70, 50, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), new PokemonSpecies(Species.COALOSSAL, 8, false, false, false, "Coal Pokémon", Type.ROCK, Type.FIRE, 2.8, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, new PokemonForm("Normal", "", Type.ROCK, Type.FIRE, 2.8, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ROCK, Type.FIRE, 42, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 610, 140, 95, 150, 95, 105, 25, 45, 50, 255), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ROCK, Type.FIRE, 42, 310.5, Abilities.STEAM_ENGINE, Abilities.STEAM_ENGINE, Abilities.STEAM_ENGINE, 610, 140, 95, 130, 95, 110, 40, 45, 50, 255), ), new PokemonSpecies(Species.APPLIN, 8, false, false, false, "Apple Core Pokémon", Type.GRASS, Type.DRAGON, 0.2, 0.5, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.BULLETPROOF, 260, 40, 40, 80, 40, 40, 20, 255, 50, 52, GrowthRate.ERRATIC, 50, false), new PokemonSpecies(Species.FLAPPLE, 8, false, false, false, "Apple Wing Pokémon", Type.GRASS, Type.DRAGON, 0.3, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, new PokemonForm("Normal", "", Type.GRASS, Type.DRAGON, 0.3, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 585, 90, 140, 90, 120, 75, 70, 45, 50, 170), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 1, Abilities.HUSTLE, Abilities.HUSTLE, Abilities.HUSTLE, 585, 90, 130, 100, 85, 80, 100, 45, 50, 170), ), new PokemonSpecies(Species.APPLETUN, 8, false, false, false, "Apple Nectar Pokémon", Type.GRASS, Type.DRAGON, 0.4, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, new PokemonForm("Normal", "", Type.GRASS, Type.DRAGON, 0.4, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 585, 140, 95, 95, 135, 95, 25, 45, 50, 170), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 13, Abilities.THICK_FAT, Abilities.THICK_FAT, Abilities.THICK_FAT, 585, 130, 75, 115, 125, 115, 25, 45, 50, 170), ), new PokemonSpecies(Species.SILICOBRA, 8, false, false, false, "Sand Snake Pokémon", Type.GROUND, null, 2.2, 7.6, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 315, 52, 57, 75, 35, 50, 46, 255, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.SANDACONDA, 8, false, false, false, "Sand Snake Pokémon", Type.GROUND, null, 3.8, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, GrowthRate.MEDIUM_FAST, 50, false, true, new PokemonForm("Normal", "", Type.GROUND, null, 3.8, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GROUND, null, 22, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 610, 90, 135, 150, 75, 80, 80, 120, 50, 179), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GROUND, null, 22, 65.5, Abilities.SAND_SPIT, Abilities.SAND_SPIT, Abilities.SAND_SPIT, 610, 117, 137, 140, 55, 80, 81, 120, 50, 179), ), new PokemonSpecies(Species.CRAMORANT, 8, false, false, false, "Gulp Pokémon", Type.FLYING, Type.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, new PokemonForm("Normal", "", Type.FLYING, Type.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, false, null, true), @@ -2314,12 +2314,12 @@ export function initSpecies() { new PokemonSpecies(Species.TOXTRICITY, 8, false, false, false, "Punk Pokémon", Type.ELECTRIC, Type.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.PLUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, GrowthRate.MEDIUM_SLOW, 50, false, true, new PokemonForm("Amped Form", "amped", Type.ELECTRIC, Type.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.PLUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "", true), new PokemonForm("Low-Key Form", "lowkey", Type.ELECTRIC, Type.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.MINUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "lowkey", true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, Type.POISON, 24, 40, Abilities.PUNK_ROCK, Abilities.MINUS, Abilities.TECHNICIAN, 602, 95, 118, 80, 144, 80, 85, 45, 50, 176), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, Type.POISON, 24, 40, Abilities.PUNK_ROCK, Abilities.PUNK_ROCK, Abilities.PUNK_ROCK, 602, 114, 98, 82, 144, 82, 82, 45, 50, 176), ), new PokemonSpecies(Species.SIZZLIPEDE, 8, false, false, false, "Radiator Pokémon", Type.FIRE, Type.BUG, 0.7, 1, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 305, 50, 65, 45, 50, 50, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.CENTISKORCH, 8, false, false, false, "Radiator Pokémon", Type.FIRE, Type.BUG, 3, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, GrowthRate.MEDIUM_FAST, 50, false, true, new PokemonForm("Normal", "", Type.FIRE, Type.BUG, 3, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, Type.BUG, 75, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 625, 125, 145, 75, 105, 105, 70, 75, 50, 184), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, Type.BUG, 75, 120, Abilities.FLASH_FIRE, Abilities.FLASH_FIRE, Abilities.FLASH_FIRE, 625, 140, 145, 75, 90, 100, 75, 75, 50, 184), ), new PokemonSpecies(Species.CLOBBOPUS, 8, false, false, false, "Tantrum Pokémon", Type.FIGHTING, null, 0.6, 4, Abilities.LIMBER, Abilities.NONE, Abilities.TECHNICIAN, 310, 50, 68, 60, 50, 50, 32, 180, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), new PokemonSpecies(Species.GRAPPLOCT, 8, false, false, false, "Jujitsu Pokémon", Type.FIGHTING, null, 1.6, 39, Abilities.LIMBER, Abilities.NONE, Abilities.TECHNICIAN, 480, 80, 118, 90, 70, 80, 42, 45, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), @@ -2335,13 +2335,13 @@ export function initSpecies() { new PokemonSpecies(Species.HATTREM, 8, false, false, false, "Serene Pokémon", Type.PSYCHIC, null, 0.6, 4.8, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 370, 57, 40, 65, 86, 73, 49, 120, 50, 130, GrowthRate.SLOW, 0, false), new PokemonSpecies(Species.HATTERENE, 8, false, false, false, "Silent Pokémon", Type.PSYCHIC, Type.FAIRY, 2.1, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, GrowthRate.SLOW, 0, false, true, new PokemonForm("Normal", "", Type.PSYCHIC, Type.FAIRY, 2.1, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.PSYCHIC, Type.FAIRY, 26, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 610, 70, 105, 110, 160, 125, 40, 45, 50, 255), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.PSYCHIC, Type.FAIRY, 26, 5.1, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 610, 97, 90, 105, 146, 122, 50, 45, 50, 255), ), new PokemonSpecies(Species.IMPIDIMP, 8, false, false, false, "Wily Pokémon", Type.DARK, Type.FAIRY, 0.4, 5.5, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 265, 45, 45, 30, 55, 40, 50, 255, 50, 53, GrowthRate.MEDIUM_FAST, 100, false), new PokemonSpecies(Species.MORGREM, 8, false, false, false, "Devious Pokémon", Type.DARK, Type.FAIRY, 0.8, 12.5, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 370, 65, 60, 45, 75, 55, 70, 120, 50, 130, GrowthRate.MEDIUM_FAST, 100, false), new PokemonSpecies(Species.GRIMMSNARL, 8, false, false, false, "Bulk Up Pokémon", Type.DARK, Type.FAIRY, 1.5, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, GrowthRate.MEDIUM_FAST, 100, false, true, new PokemonForm("Normal", "", Type.DARK, Type.FAIRY, 1.5, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.DARK, Type.FAIRY, 32, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 610, 120, 155, 75, 110, 85, 65, 45, 50, 255), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.DARK, Type.FAIRY, 32, 61, Abilities.PRANKSTER, Abilities.PRANKSTER, Abilities.PRANKSTER, 610, 135, 138, 77, 110, 85, 65, 45, 50, 255), ), new PokemonSpecies(Species.OBSTAGOON, 8, false, false, false, "Blocking Pokémon", Type.DARK, Type.NORMAL, 1.6, 46, Abilities.RECKLESS, Abilities.GUTS, Abilities.DEFIANT, 520, 93, 90, 101, 60, 81, 95, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.PERRSERKER, 8, false, false, false, "Viking Pokémon", Type.STEEL, null, 0.8, 28, Abilities.BATTLE_ARMOR, Abilities.TOUGH_CLAWS, Abilities.STEELY_SPIRIT, 440, 70, 110, 100, 50, 60, 50, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), @@ -2360,7 +2360,7 @@ export function initSpecies() { new PokemonForm("Ruby Swirl", "ruby-swirl", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), new PokemonForm("Caramel Swirl", "caramel-swirl", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), new PokemonForm("Rainbow Swirl", "rainbow-swirl", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FAIRY, null, 30, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 595, 85, 70, 85, 140, 150, 65, 100, 50, 173), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FAIRY, null, 30, 0.5, Abilities.MISTY_SURGE, Abilities.MISTY_SURGE, Abilities.MISTY_SURGE, 595, 135, 60, 75, 130, 131, 64, 100, 50, 173), ), new PokemonSpecies(Species.FALINKS, 8, false, false, false, "Formation Pokémon", Type.FIGHTING, null, 3, 62, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.DEFIANT, 470, 65, 100, 100, 70, 60, 75, 45, 50, 165, GrowthRate.MEDIUM_FAST, null, false), new PokemonSpecies(Species.PINCURCHIN, 8, false, false, false, "Sea Urchin Pokémon", Type.ELECTRIC, null, 0.3, 1, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.ELECTRIC_SURGE, 435, 48, 101, 95, 91, 85, 15, 75, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), @@ -2382,7 +2382,7 @@ export function initSpecies() { new PokemonSpecies(Species.CUFANT, 8, false, false, false, "Copperderm Pokémon", Type.STEEL, null, 1.2, 100, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 330, 72, 80, 49, 40, 49, 40, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.COPPERAJAH, 8, false, false, false, "Copperderm Pokémon", Type.STEEL, null, 3, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, true, new PokemonForm("Normal", "", Type.STEEL, null, 3, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, null, 23, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 600, 150, 160, 80, 90, 80, 40, 90, 50, 175), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, Type.GROUND, 23, 650, Abilities.MOLD_BREAKER, Abilities.MOLD_BREAKER, Abilities.MOLD_BREAKER, 600, 167, 155, 89, 80, 89, 20, 90, 50, 175), ), new PokemonSpecies(Species.DRACOZOLT, 8, false, false, false, "Fossil Pokémon", Type.ELECTRIC, Type.DRAGON, 1.8, 190, Abilities.VOLT_ABSORB, Abilities.HUSTLE, Abilities.SAND_RUSH, 505, 90, 100, 90, 80, 70, 75, 45, 50, 177, GrowthRate.SLOW, null, false), new PokemonSpecies(Species.ARCTOZOLT, 8, false, false, false, "Fossil Pokémon", Type.ELECTRIC, Type.ICE, 2.3, 150, Abilities.VOLT_ABSORB, Abilities.STATIC, Abilities.SLUSH_RUSH, 505, 90, 100, 90, 90, 80, 55, 45, 50, 177, GrowthRate.SLOW, null, false), @@ -2390,7 +2390,7 @@ export function initSpecies() { new PokemonSpecies(Species.ARCTOVISH, 8, false, false, false, "Fossil Pokémon", Type.WATER, Type.ICE, 2, 175, Abilities.WATER_ABSORB, Abilities.ICE_BODY, Abilities.SLUSH_RUSH, 505, 90, 90, 100, 80, 90, 55, 45, 50, 177, GrowthRate.SLOW, null, false), new PokemonSpecies(Species.DURALUDON, 8, false, false, false, "Alloy Pokémon", Type.STEEL, Type.DRAGON, 1.8, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false, true, new PokemonForm("Normal", "", Type.STEEL, Type.DRAGON, 1.8, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, Type.DRAGON, 43, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 635, 90, 110, 145, 140, 60, 90, 45, 50, 187), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, Type.DRAGON, 43, 40, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, 635, 100, 105, 119, 166, 57, 88, 45, 50, 187), ), new PokemonSpecies(Species.DREEPY, 8, false, false, false, "Lingering Pokémon", Type.DRAGON, Type.GHOST, 0.5, 2, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 270, 28, 60, 30, 40, 30, 82, 45, 50, 54, GrowthRate.SLOW, 50, false), new PokemonSpecies(Species.DRAKLOAK, 8, false, false, false, "Caretaker Pokémon", Type.DRAGON, Type.GHOST, 1.4, 11, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 410, 68, 80, 50, 60, 50, 102, 45, 50, 144, GrowthRate.SLOW, 50, false), @@ -2411,8 +2411,8 @@ export function initSpecies() { new PokemonSpecies(Species.URSHIFU, 8, true, false, false, "Wushu Pokémon", Type.FIGHTING, Type.DARK, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, GrowthRate.SLOW, 87.5, false, true, new PokemonForm("Single Strike Style", "single-strike", Type.FIGHTING, Type.DARK, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, "", true), new PokemonForm("Rapid Strike Style", "rapid-strike", Type.FIGHTING, Type.WATER, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, null, true), - new PokemonForm("G-Max Single Strike Style", SpeciesFormKey.GIGANTAMAX_SINGLE, Type.FIGHTING, Type.DARK, 29, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 160, 120, 75, 70, 100, 3, 50, 275), - new PokemonForm("G-Max Rapid Strike Style", SpeciesFormKey.GIGANTAMAX_RAPID, Type.FIGHTING, Type.WATER, 26, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 160, 120, 75, 70, 100, 3, 50, 275), + new PokemonForm("G-Max Single Strike Style", SpeciesFormKey.GIGANTAMAX_SINGLE, Type.FIGHTING, Type.DARK, 29, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 150, 115, 73, 70, 117, 3, 50, 275), + new PokemonForm("G-Max Rapid Strike Style", SpeciesFormKey.GIGANTAMAX_RAPID, Type.FIGHTING, Type.WATER, 26, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 150, 115, 73, 70, 117, 3, 50, 275), ), new PokemonSpecies(Species.ZARUDE, 8, false, false, true, "Rogue Monkey Pokémon", Type.DARK, Type.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, GrowthRate.SLOW, null, false, false, new PokemonForm("Normal", "", Type.DARK, Type.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), @@ -3622,7 +3622,7 @@ export const starterPassiveAbilities = { [Species.YAMASK]: Abilities.PURIFYING_SALT, [Species.TIRTOUGA]: Abilities.WATER_ABSORB, [Species.ARCHEN]: Abilities.MULTISCALE, - [Species.TRUBBISH]: Abilities.TOXIC_DEBRIS, + [Species.TRUBBISH]: Abilities.NEUTRALIZING_GAS, [Species.ZORUA]: Abilities.DARK_AURA, [Species.MINCCINO]: Abilities.FUR_COAT, [Species.GOTHITA]: Abilities.UNNERVE, @@ -3783,7 +3783,7 @@ export const starterPassiveAbilities = { [Species.SINISTEA]: Abilities.SHADOW_SHIELD, [Species.HATENNA]: Abilities.FAIRY_AURA, [Species.IMPIDIMP]: Abilities.FUR_COAT, - [Species.MILCERY]: Abilities.MISTY_SURGE, + [Species.MILCERY]: Abilities.REGENERATOR, [Species.FALINKS]: Abilities.PARENTAL_BOND, [Species.PINCURCHIN]: Abilities.ELECTROMORPHOSIS, [Species.SNOM]: Abilities.SNOW_WARNING,