Compare commits

...

19 Commits

Author SHA1 Message Date
Madmadness65
0a871fb0d0 Fix cut off dialogue for Morty 2024-05-17 12:41:16 -05:00
Benjamin Odom
6880c7afe0
Updated Logic when Animating Trainer Sprites (#1016)
Updated the check in place when attempting to play a trainer sprite. Separated it into a separate function to reduce reusing code and to make it easier to exit early when failures occur.
2024-05-17 12:37:38 -05:00
José Ricardo Fleury Oliveira
04a345a6cc
fixed master ball (#1043) 2024-05-17 12:19:38 -05:00
Alessandro Bruzzese
7935f28089
Update Italian battle.ts (#1042) 2024-05-17 12:18:03 -05:00
Alessandro Bruzzese
b55fb8db37
Update Italian battle-message-ui-handler.ts (#1040) 2024-05-17 12:02:51 -05:00
Alessandro Bruzzese
d2a8c4a150
Update Italian berry.ts (#1039) 2024-05-17 11:58:47 -05:00
Alessandro Bruzzese
a2299ee055
Update Italian trainers.ts (#1037) 2024-05-17 11:43:38 -05:00
José Ricardo Fleury Oliveira
8c21bdc0a1
New ptBR localization (#1028)
* Some translations (battle, modifier-type, trainer)

* More translations and fixes

* Minor fixes

* finished translations

* minor fix

* removed tera type
2024-05-17 10:39:13 -05:00
Jannik Tappert
09b820161f
Localized Weather, Berries and Splash Messages (#1034)
* Localized Weather, Berries and Splash Messages

* Berry messages are now correct
2024-05-17 10:21:11 -05:00
José Ricardo Fleury Oliveira
3cc9c93643
Type localization instead of TeraType (#981)
* Type localization, now type-boosting items descriptions are fully translated

* pokemon-stat refactoration

* reverted import changes
2024-05-17 09:43:11 -05:00
Brandon Rodgers
03c4b1b821
Update battler-tags.ts (#1030)
Corrected the TrappedTag class so no Ghosts can be trapped
Added special canAdd function to IngrainTag so all Ghosts can use Ingrain not just Trevenant and Phantump.
2024-05-17 08:49:04 -05:00
Calvin Keats
bfa12fd48d
Update ETHER and similar items to use total max PP instead of base PP (#1014) 2024-05-17 06:54:51 -05:00
William Burleson
10437142b6
Fix daily run freeze (#1025) 2024-05-17 05:51:48 -05:00
Tempoanon
edf3a6aa36
Fix tinted caught icon false positive (#892)
* Fix tinted caught icon false positive

* Remove unused import

* Rename and optimize

* Block comment

* use 3 equals
2024-05-17 05:28:22 -05:00
Calvin Keats
4362d49e6b
Use localization for damaging weather messages (#1017) 2024-05-17 05:25:21 -05:00
Somod1
0c660f599d
Add files via upload (#1022) 2024-05-17 05:23:44 -05:00
Lugiad
48c745deee
Update French trainers.ts (#1020) 2024-05-17 05:23:23 -05:00
Lugiad
b0fd32b1a4
Update French berry.ts (#1023) 2024-05-17 05:22:58 -05:00
Lugiad
96af567cd4
IV Scanner Results Translation (#990)
* Update battle-message-ui-handler.ts

* Update i18n.ts

* Update config.ts

* Update config.ts

* Update config.ts

* Update config.ts

* Update config.ts

* Update config.ts

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Update battle-message-ui-handler.ts

* German battle-message-ui-handler.ts

* Update config.ts

---------

Co-authored-by: Benjamin Odom <bennybroseph@gmail.com>
2024-05-17 05:21:35 -05:00
62 changed files with 1061 additions and 837 deletions

View File

@ -15,7 +15,6 @@ import { TerrainType } from "./terrain";
import { WeatherType } from "./weather";
import { BattleStat } from "./battle-stat";
import { allAbilities } from "./ability";
import { Species } from "./enums/species";
export enum BattlerTagLapseType {
FAINT,
@ -120,9 +119,8 @@ export class TrappedTag extends BattlerTag {
canAdd(pokemon: Pokemon): boolean {
const isGhost = pokemon.isOfType(Type.GHOST);
const isTrapped = pokemon.getTag(BattlerTagType.TRAPPED);
const isAllowedGhostType = pokemon.species.speciesId === Species.PHANTUMP || pokemon.species.speciesId === Species.TREVENANT;
return !isTrapped && (!isGhost || isAllowedGhostType);
return !isTrapped && !isGhost;
}
onAdd(pokemon: Pokemon): void {
@ -503,11 +501,26 @@ export class HelpingHandTag extends BattlerTag {
}
}
/**
* Applies the Ingrain tag to a pokemon
* @extends TrappedTag
*/
export class IngrainTag extends TrappedTag {
constructor(sourceId: integer) {
super(BattlerTagType.INGRAIN, BattlerTagLapseType.TURN_END, 1, Moves.INGRAIN, sourceId);
}
/**
* Check if the Ingrain tag can be added to the pokemon
* @param pokemon {@linkcode Pokemon} The pokemon to check if the tag can be added to
* @returns boolean True if the tag can be added, false otherwise
*/
canAdd(pokemon: Pokemon): boolean {
const isTrapped = pokemon.getTag(BattlerTagType.TRAPPED);
return !isTrapped;
}
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType);

View File

@ -909,7 +909,8 @@ export const trainerTypeDialogue = {
},
[TrainerType.MORTY]: {
encounter: [
`With a little more, I could see a future in which I meet the legendary Pokémon. You're going to help me reach that level!`,
`With a little more, I could see a future in which I meet the legendary Pokémon.
$You're going to help me reach that level!`,
`It's said that a rainbow-hued Pokémon will come down to appear before a truly powerful Trainer.
$I believed that tale, so I have secretly trained here all my life. As a result, I can now see what others cannot.
$I see a shadow of the person who will make the Pokémon appear.
@ -924,7 +925,8 @@ export const trainerTypeDialogue = {
`I see… Your journey has taken you to far-away places and you have witnessed much more than I.
$I envy you for that`,
`How is this possible…`,
`I don't think our potentials are so different. But you seem to have something more than that… So be it.`,
`I don't think our potentials are so different.
$But you seem to have something more than that So be it.`,
`Guess I need more training.`,
`That's a shame.`
],

View File

@ -13,22 +13,22 @@ export function getStatName(stat: Stat, shorten: boolean = false) {
let ret: string;
switch (stat) {
case Stat.HP:
ret = !shorten ? i18next.t('pokemonStat:HP') : i18next.t('pokemonStat:HPshortened');
ret = !shorten ? i18next.t('pokemonInfo:Stat.HP') : i18next.t('pokemonInfo:Stat.HPshortened');
break;
case Stat.ATK:
ret = !shorten ? i18next.t('pokemonStat:ATK') : i18next.t('pokemonStat:ATKshortened');
ret = !shorten ? i18next.t('pokemonInfo:Stat.ATK') : i18next.t('pokemonInfo:Stat.ATKshortened');
break;
case Stat.DEF:
ret = !shorten ? i18next.t('pokemonStat:DEF') : i18next.t('pokemonStat:DEFshortened');
ret = !shorten ? i18next.t('pokemonInfo:Stat.DEF') : i18next.t('pokemonInfo:Stat.DEFshortened');
break;
case Stat.SPATK:
ret = !shorten ? i18next.t('pokemonStat:SPATK') : i18next.t('pokemonStat:SPATKshortened');
ret = !shorten ? i18next.t('pokemonInfo:Stat.SPATK') : i18next.t('pokemonInfo:Stat.SPATKshortened');
break;
case Stat.SPDEF:
ret = !shorten ? i18next.t('pokemonStat:SPDEF') : i18next.t('pokemonStat:SPDEFshortened');
ret = !shorten ? i18next.t('pokemonInfo:Stat.SPDEF') : i18next.t('pokemonInfo:Stat.SPDEFshortened');
break;
case Stat.SPD:
ret = !shorten ? i18next.t('pokemonStat:SPD') : i18next.t('pokemonStat:SPDshortened');
ret = !shorten ? i18next.t('pokemonInfo:Stat.SPD') : i18next.t('pokemonInfo:Stat.SPDshortened');
break;
}
return ret;

View File

@ -1,5 +1,5 @@
import { Biome } from "./enums/biome";
import { getPokemonMessage } from "../messages";
import { getPokemonMessage, getPokemonPrefix } from "../messages";
import Pokemon from "../field/pokemon";
import { Type } from "./type";
import Move, { AttackMove } from "./move";
@ -172,9 +172,9 @@ export function getWeatherLapseMessage(weatherType: WeatherType): string {
export function getWeatherDamageMessage(weatherType: WeatherType, pokemon: Pokemon): string {
switch (weatherType) {
case WeatherType.SANDSTORM:
return getPokemonMessage(pokemon, ' is buffeted\nby the sandstorm!');
return i18next.t('weather:sandstormDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name});
case WeatherType.HAIL:
return getPokemonMessage(pokemon, ' is pelted\nby the hail!');
return i18next.t('weather:hailDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name});
}
return null;

View File

@ -370,6 +370,34 @@ export default class Trainer extends Phaser.GameObjects.Container {
this.getTintSprites().map((tintSprite, i) => tintSprite.setTexture(this.getKey(!!i)).setFrame(0));
}
/**
* Attempts to animate a given set of {@linkcode Phaser.GameObjects.Sprite}
* @see {@linkcode Phaser.GameObjects.Sprite.play}
* @param sprite {@linkcode Phaser.GameObjects.Sprite} to animate
* @param tintSprite {@linkcode Phaser.GameObjects.Sprite} placed on top of the sprite to add a color tint
* @param animConfig {@linkcode Phaser.Types.Animations.PlayAnimationConfig} to pass to {@linkcode Phaser.GameObjects.Sprite.play}
* @returns true if the sprite was able to be animated
*/
tryPlaySprite(sprite: Phaser.GameObjects.Sprite, tintSprite: Phaser.GameObjects.Sprite, animConfig: Phaser.Types.Animations.PlayAnimationConfig): boolean {
// Show an error in the console if there isn't a texture loaded
if (sprite.texture.key === '__MISSING') {
console.error(`No texture found for '${animConfig.key}'!`);
return false;
}
// Don't try to play an animation when there isn't one
if (sprite.texture.frameTotal <= 1) {
console.warn(`No animation found for '${animConfig.key}'. Is this intentional?`);
return false;
}
sprite.play(animConfig);
tintSprite.play(animConfig);
return true;
}
playAnim(): void {
const trainerAnimConfig = {
key: this.getKey(),
@ -379,14 +407,9 @@ export default class Trainer extends Phaser.GameObjects.Container {
const sprites = this.getSprites();
const tintSprites = this.getTintSprites();
// Don't try to play an animation when there isn't one
if (sprites.length > 1) {
sprites[0].play(trainerAnimConfig);
tintSprites[0].play(trainerAnimConfig);
}
else
console.warn(`No animation found for '${this.getKey()}'. Is this intentional?`);
this.tryPlaySprite(sprites[0], tintSprites[0], trainerAnimConfig);
// Queue an animation for the second trainer if this is a double battle against two separate trainers
if (this.variant === TrainerVariant.DOUBLE && !this.config.doubleOnly) {
const partnerTrainerAnimConfig = {
key: this.getKey(true),
@ -394,13 +417,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
startFrame: 0
};
// Don't try to play an animation when there isn't one
if (sprites.length > 1) {
sprites[1].play(partnerTrainerAnimConfig);
tintSprites[1].play(partnerTrainerAnimConfig);
}
else
console.warn(`No animation found for '${this.getKey()}'. Is this intentional?`);
this.tryPlaySprite(sprites[1], tintSprites[1], partnerTrainerAnimConfig);
}
}

View File

@ -0,0 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Sensationell",
"ivFantastic": "Fantastisch",
"ivVeryGood": "Sehr Gut",
"ivPrettyGood": "Gut",
"ivDecent": "Nicht Übel",
"ivNoGood": "Schlecht",
} as const;

View File

@ -2,47 +2,47 @@ import { BerryTranslationEntries } from "#app/plugins/i18n";
export const berry: BerryTranslationEntries = {
"SITRUS": {
name: "Sitrus Berry",
effect: "Restores 25% HP if HP is below 50%",
name: "Tsitrubeere",
effect: "Stellt 25% der KP wieder her, wenn die KP unter 50% sind"
},
"LUM": {
name: "Lum Berry",
effect: "Cures any non-volatile status condition and confusion",
name: "Prunusbeere",
effect: "Heilt jede nichtflüchtige Statusveränderung und Verwirrung"
},
"ENIGMA": {
name: "Enigma Berry",
effect: "Restores 25% HP if hit by a super effective move",
name: "Enigmabeere",
effect: "Stellt 25% der KP wieder her, wenn der Träger von einer sehr effektiven Attacke getroffen wird",
},
"LIECHI": {
name: "Liechi Berry",
effect: "Raises Attack if HP is below 25%",
name: "Lydzibeere",
effect: "Steigert den Angriff, wenn die KP unter 25% sind"
},
"GANLON": {
name: "Ganlon Berry",
effect: "Raises Defense if HP is below 25%",
name: "Linganbeere",
effect: "Steigert die Verteidigung, wenn die KP unter 25% sind"
},
"PETAYA": {
name: "Petaya Berry",
effect: "Raises Sp. Atk if HP is below 25%",
name: "Tahaybeere",
effect: "Steigert den Spezial-Angriff, wenn die KP unter 25% sind"
},
"APICOT": {
name: "Apicot Berry",
effect: "Raises Sp. Def if HP is below 25%",
name: "Apikobeere",
effect: "Steigert die Spezial-Verteidigung, wenn die KP unter 25% sind"
},
"SALAC": {
name: "Salac Berry",
effect: "Raises Speed if HP is below 25%",
name: "Salkabeere",
effect: "Steigert die Initiative, wenn die KP unter 25% sind"
},
"LANSAT": {
name: "Lansat Berry",
effect: "Raises critical hit ratio if HP is below 25%",
name: "Lansatbeere",
effect: "Erhöht die Volltrefferchance, wenn die KP unter 25% sind"
},
"STARF": {
name: "Starf Berry",
effect: "Sharply raises a random stat if HP is below 25%",
name: "Krambobeere",
effect: "Erhöht eine Statuswert stark, wenn die KP unter 25% sind"
},
"LEPPA": {
name: "Leppa Berry",
effect: "Restores 10 PP to a move if its PP reaches 0",
name: "Jonagobeere",
effect: "Stellt 10 AP für eine Attacke wieder her, wenn deren AP auf 0 fallen"
},
} as const;

View File

@ -12,15 +12,15 @@ import { move } from "./move";
import { nature } from "./nature";
import { pokeball } from "./pokeball";
import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { pokemonInfo } from "./pokemon-info";
import { splashMessages } from "./splash-messages";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { titles, trainerClasses, trainerNames } from "./trainers";
import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
export const deConfig = {
ability: ability,
abilityTriggers: abilityTriggers,
@ -36,7 +36,7 @@ export const deConfig = {
nature: nature,
pokeball: pokeball,
pokemon: pokemon,
pokemonStat: pokemonStat,
pokemonInfo: pokemonInfo,
splashMessages: splashMessages,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
@ -44,5 +44,6 @@ export const deConfig = {
trainerNames: trainerNames,
tutorial: tutorial,
weather: weather,
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
}

View File

@ -385,26 +385,4 @@ export const modifierType: ModifierTypeTranslationEntries = {
"CHILL_DRIVE": "Gefriermodul",
"DOUSE_DRIVE": "Aquamodul",
},
TeraType: {
"UNKNOWN": "Unbekannt",
"NORMAL": "Normal",
"FIGHTING": "Kampf",
"FLYING": "Flug",
"POISON": "Gift",
"GROUND": "Boden",
"ROCK": "Gestein",
"BUG": "Käfer",
"GHOST": "Geist",
"STEEL": "Stahl",
"FIRE": "Feuer",
"WATER": "Wasser",
"GRASS": "Pflanze",
"ELECTRIC": "Elektro",
"PSYCHIC": "Psycho",
"ICE": "Eis",
"DRAGON": "Drache",
"DARK": "Unlicht",
"FAIRY": "Fee",
"STELLAR": "Stellar",
},
} as const;

View File

@ -0,0 +1,41 @@
import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: {
"HP": "Max. KP",
"HPshortened": "MaxKP",
"ATK": "Angriff",
"ATKshortened": "Ang",
"DEF": "Verteidigung",
"DEFshortened": "Vert",
"SPATK": "Sp. Ang",
"SPATKshortened": "SpAng",
"SPDEF": "Sp. Vert",
"SPDEFshortened": "SpVert",
"SPD": "Initiative",
"SPDshortened": "Init",
},
Type: {
"UNKNOWN": "Unbekannt",
"NORMAL": "Normal",
"FIGHTING": "Kampf",
"FLYING": "Flug",
"POISON": "Gift",
"GROUND": "Boden",
"ROCK": "Gestein",
"BUG": "Käfer",
"GHOST": "Geist",
"STEEL": "Stahl",
"FIRE": "Feuer",
"WATER": "Wasser",
"GRASS": "Pflanze",
"ELECTRIC": "Elektro",
"PSYCHIC": "Psycho",
"ICE": "Eis",
"DRAGON": "Drache",
"DARK": "Unlicht",
"FAIRY": "Fee",
"STELLAR": "Stellar",
},
} as const;

View File

@ -1,16 +0,0 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const pokemonStat: SimpleTranslationEntries = {
"HP": "Max. KP",
"HPshortened": "MaxKP",
"ATK": "Angriff",
"ATKshortened": "Ang",
"DEF": "Verteidigung",
"DEFshortened": "Vert",
"SPATK": "Sp. Ang",
"SPATKshortened": "SpAng",
"SPDEF": "Sp. Vert",
"SPDEFshortened": "SpVert",
"SPD": "Initiative",
"SPDshortened": "Init"
} as const;

View File

@ -1,37 +1,37 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const splashMessages: SimpleTranslationEntries = {
"battlesWon": "Battles Won!",
"joinTheDiscord": "Join the Discord!",
"infiniteLevels": "Infinite Levels!",
"everythingStacks": "Everything Stacks!",
"optionalSaveScumming": "Optional Save Scumming!",
"biomes": "35 Biomes!",
"battlesWon": "Kämpfe gewonnen!",
"joinTheDiscord": "Tritt dem Discord bei!",
"infiniteLevels": "Unendliche Level!",
"everythingStacks": "Alles stapelt sich!",
"optionalSaveScumming": "Optionales Save Scumming!",
"biomes": "35 Biome!",
"openSource": "Open Source!",
"playWithSpeed": "Play with 5x Speed!",
"liveBugTesting": "Live Bug Testing!",
"heavyInfluence": "Heavy RoR2 Influence!",
"playWithSpeed": "Spiele mit fünffacher Geschwindigkeit!",
"liveBugTesting": "Live-Bug-Tests!",
"heavyInfluence": "Starker RoR2-Einfluss!",
"pokemonRiskAndPokemonRain": "Pokémon Risk and Pokémon Rain!",
"nowWithMoreSalt": "Now with 33% More Salt!",
"infiniteFusionAtHome": "Infinite Fusion at Home!",
"brokenEggMoves": "Broken Egg Moves!",
"magnificent": "Magnificent!",
"mubstitute": "Mubstitute!",
"thatsCrazy": "That\'s Crazy!",
"oranceJuice": "Orance Juice!",
"questionableBalancing": "Questionable Balancing!",
"coolShaders": "Cool Shaders!",
"aiFree": "AI-Free!",
"suddenDifficultySpikes": "Sudden Difficulty Spikes!",
"basedOnAnUnfinishedFlashGame": "Based on an Unfinished Flash Game!",
"moreAddictiveThanIntended": "More Addictive than Intended!",
"mostlyConsistentSeeds": "Mostly Consistent Seeds!",
"achievementPointsDontDoAnything": "Achievement Points Don\'t Do Anything!",
"youDoNotStartAtLevel": "You Do Not Start at Level 2000!",
"dontTalkAboutTheManaphyEggIncident": "Don\'t Talk About the Manaphy Egg Incident!",
"alsoTryPokengine": "Also Try Pokéngine!",
"alsoTryEmeraldRogue": "Also Try Emerald Rogue!",
"alsoTryRadicalRed": "Also Try Radical Red!",
"eeveeExpo": "Eevee Expo!",
"ynoproject": "YNOproject!",
"nowWithMoreSalt": "Jetzt mit 33% mehr Salz!",
"infiniteFusionAtHome": "Wir haben Infinite Fusionen zu Hause!",
"brokenEggMoves": "Übermächtige Ei-Attacken!",
"magnificent": "Herrlich!",
"mubstitute": "Melegator!",
"thatsCrazy": "Das ist verrückt!",
"oranceJuice": "Orangensaft!",
"questionableBalancing": "Fragwürdiges Balancing!",
"coolShaders": "Coole Shader!",
"aiFree": "Ohne KI!",
"suddenDifficultySpikes": "Plötzliche Schwierigkeitsspitzen!",
"basedOnAnUnfinishedFlashGame": "Basierend auf einem unfertigen Flash-Spiel!",
"moreAddictiveThanIntended": "Süchtig machender als beabsichtigt!",
"mostlyConsistentSeeds": "Meistens konsistente Seeds!",
"achievementPointsDontDoAnything": "Erungenschaftspunkte tun nichts!",
"youDoNotStartAtLevel": "Du startest nicht auf Level 2000!",
"dontTalkAboutTheManaphyEggIncident": "Wir reden nicht über den Manaphy-Ei-Vorfall!",
"alsoTryPokengine": "Versuche auch Pokéngine!",
"alsoTryEmeraldRogue": "Versuche auch Emerald Rogue!",
"alsoTryRadicalRed": "Versuche auch Radical Red!",
"eeveeExpo": "Evoli-Expo!",
"ynoproject": "YNO-Projekt!",
} as const;

View File

@ -4,41 +4,41 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
* The weather namespace holds text displayed when weather is active during a battle
*/
export const weather: SimpleTranslationEntries = {
"sunnyStartMessage": "Die Sonne hellt auf!",
"sunnyLapseMessage": "Die Sonne blendet.",
"sunnyClearMessage": "Die Sonne schwächt ab.",
"sunnyStartMessage": "Die Sonnenlicht wird stärker!",
"sunnyLapseMessage": "Die Sonnenlicht ist stark.",
"sunnyClearMessage": "Die Sonnenlicht verliert wieder an Intensität.",
"rainStartMessage": "Es fängt an zu regnen!",
"rainLapseMessage": "Es regnet weiterhin.",
"rainClearMessage": "Es hört auf zu regnen.",
"rainLapseMessage": "Es regnet weiter.",
"rainClearMessage": "Der Regen lässt nach.",
"sandstormStartMessage": "Ein Sandsturm braut sich zusammen!",
"sandstormStartMessage": "Ein Sandsturm kommt auf!",
"sandstormLapseMessage": "Der Sandsturm tobt.",
"sandstormClearMessage": "Der Sandsturm lässt nach.",
"sandstormDamageMessage": "{{pokemonPrefix}}{{pokemonName}} ist vom\nSandsturm beeinträchtigt!",
"sandstormClearMessage": "Der Sandsturm legt sich.",
"sandstormDamageMessage": " Der Sandsturm fügt {{pokemonPrefix}}{{pokemonName}} Schaden zu!",
"hailStartMessage": "Es fängt an zu hageln!",
"hailLapseMessage": "Es hagelt weiterhin.",
"hailClearMessage": "Es hört auf zu hageln.",
"hailDamageMessage": "{{pokemonPrefix}}{{pokemonName}} ist vom\nHagel beeinträchtigt!",
"hailLapseMessage": "Der Hagelsturm tobt.",
"hailClearMessage": "Der Hagelsturm legt sich.",
"hailDamageMessage": "{{pokemonPrefix}}{{pokemonName}} wird von Hagelkörnern getroffen!",
"snowStartMessage": "Es fängt an zu schneien!",
"snowLapseMessage": "Es schneit weiterhin.",
"snowClearMessage": "Es hört auf zu schneien.",
"snowLapseMessage": "Der Schneesturm tobt.",
"snowClearMessage": "Der Schneesturm legt sich.",
"fogStartMessage": "Es fängt an zu nebeln!",
"fogLapseMessage": "Es nebelt weiterhin.",
"fogClearMessage": "Es hört auf zu nebeln.",
"fogStartMessage": "Am Boden breitet sich dichter Nebel aus!",
"fogLapseMessage": "Der Nebel bleibt dicht.",
"fogClearMessage": "Der Nebel lichtet sich.",
"heavyRainStartMessage": "Ein Starkregen beginnt!",
"heavyRainLapseMessage": "Der Starkregen hält an.",
"heavyRainClearMessage": "Der Starkregen lässt nach.",
"heavyRainStartMessage": "Es fängt an, in Strömen zu regnen!",
"heavyRainLapseMessage": "Der strömende Regen hält an.",
"heavyRainClearMessage": "Der strömende Regen lässt nach.",
"harshSunStartMessage": "Das Sonnenlicht wird wärmer!",
"harshSunLapseMessage": "Das Sonnenlicht brennt.",
"harshSunClearMessage": "Das Sonnenlicht schwächt ab.",
"harshSunStartMessage": "Das Sonnenlicht wird sehr viel stärker!",
"harshSunLapseMessage": "Das Sonnenlicht ist sehr stark.",
"harshSunClearMessage": "Das Sonnenlicht verliert an Intensität.",
"strongWindsStartMessage": "Ein starker Wind zieht auf!",
"strongWindsLapseMessage": "Der starke Wind tobt.",
"strongWindsClearMessage": "Der starke Wind legt sich."
"strongWindsStartMessage": "Alle Flug-Pokémon werden von rätselhaften Luftströmungen geschützt!",
"strongWindsLapseMessage": "Die rätselhafte Luftströmung hält an.",
"strongWindsClearMessage": "Die rätselhafte Luftströmung hat sich wieder geleget.",
}

View File

@ -0,0 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Best",
"ivFantastic": "Fantastic",
"ivVeryGood": "Very Good",
"ivPrettyGood": "Pretty Good",
"ivDecent": "Decent",
"ivNoGood": "No Good",
} as const;

View File

@ -12,15 +12,15 @@ import { move } from "./move";
import { nature } from "./nature";
import { pokeball } from "./pokeball";
import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { pokemonInfo } from "./pokemon-info";
import { splashMessages } from "./splash-messages";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { titles, trainerClasses, trainerNames } from "./trainers";
import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
export const enConfig = {
ability: ability,
abilityTriggers: abilityTriggers,
@ -36,7 +36,7 @@ export const enConfig = {
nature: nature,
pokeball: pokeball,
pokemon: pokemon,
pokemonStat: pokemonStat,
pokemonInfo: pokemonInfo,
splashMessages: splashMessages,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
@ -44,5 +44,6 @@ export const enConfig = {
trainerNames: trainerNames,
tutorial: tutorial,
weather: weather,
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
}

View File

@ -384,26 +384,4 @@ export const modifierType: ModifierTypeTranslationEntries = {
"CHILL_DRIVE": "Chill Drive",
"DOUSE_DRIVE": "Douse Drive",
},
TeraType: {
"UNKNOWN": "Unknown",
"NORMAL": "Normal",
"FIGHTING": "Fighting",
"FLYING": "Flying",
"POISON": "Poison",
"GROUND": "Ground",
"ROCK": "Rock",
"BUG": "Bug",
"GHOST": "Ghost",
"STEEL": "Steel",
"FIRE": "Fire",
"WATER": "Water",
"GRASS": "Grass",
"ELECTRIC": "Electric",
"PSYCHIC": "Psychic",
"ICE": "Ice",
"DRAGON": "Dragon",
"DARK": "Dark",
"FAIRY": "Fairy",
"STELLAR": "Stellar",
},
} as const;

View File

@ -0,0 +1,41 @@
import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: {
"HP": "Max. HP",
"HPshortened": "MaxHP",
"ATK": "Attack",
"ATKshortened": "Atk",
"DEF": "Defense",
"DEFshortened": "Def",
"SPATK": "Sp. Atk",
"SPATKshortened": "SpAtk",
"SPDEF": "Sp. Def",
"SPDEFshortened": "SpDef",
"SPD": "Speed",
"SPDshortened": "Spd"
},
Type: {
"UNKNOWN": "Unknown",
"NORMAL": "Normal",
"FIGHTING": "Fighting",
"FLYING": "Flying",
"POISON": "Poison",
"GROUND": "Ground",
"ROCK": "Rock",
"BUG": "Bug",
"GHOST": "Ghost",
"STEEL": "Steel",
"FIRE": "Fire",
"WATER": "Water",
"GRASS": "Grass",
"ELECTRIC": "Electric",
"PSYCHIC": "Psychic",
"ICE": "Ice",
"DRAGON": "Dragon",
"DARK": "Dark",
"FAIRY": "Fairy",
"STELLAR": "Stellar",
},
} as const;

View File

@ -1,16 +0,0 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const pokemonStat: SimpleTranslationEntries = {
"HP": "Max. HP",
"HPshortened": "MaxHP",
"ATK": "Attack",
"ATKshortened": "Atk",
"DEF": "Defense",
"DEFshortened": "Def",
"SPATK": "Sp. Atk",
"SPATKshortened": "SpAtk",
"SPDEF": "Sp. Def",
"SPDEFshortened": "SpDef",
"SPD": "Speed",
"SPDshortened": "Spd"
} as const;

View File

@ -0,0 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Best",
"ivFantastic": "Fantastic",
"ivVeryGood": "Very Good",
"ivPrettyGood": "Pretty Good",
"ivDecent": "Decent",
"ivNoGood": "No Good",
} as const;

View File

@ -12,15 +12,15 @@ import { move } from "./move";
import { nature } from "./nature";
import { pokeball } from "./pokeball";
import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { pokemonInfo } from "./pokemon-info";
import { splashMessages } from "./splash-messages";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { titles, trainerClasses, trainerNames } from "./trainers";
import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
export const esConfig = {
ability: ability,
abilityTriggers: abilityTriggers,
@ -36,7 +36,7 @@ export const esConfig = {
nature: nature,
pokeball: pokeball,
pokemon: pokemon,
pokemonStat: pokemonStat,
pokemonInfo: pokemonInfo,
splashMessages: splashMessages,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
@ -44,5 +44,6 @@ export const esConfig = {
trainerNames: trainerNames,
tutorial: tutorial,
weather: weather,
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
}

View File

@ -384,26 +384,4 @@ export const modifierType: ModifierTypeTranslationEntries = {
"CHILL_DRIVE": "Chill Drive",
"DOUSE_DRIVE": "Douse Drive",
},
TeraType: {
"UNKNOWN": "Unknown",
"NORMAL": "Normal",
"FIGHTING": "Fighting",
"FLYING": "Flying",
"POISON": "Poison",
"GROUND": "Ground",
"ROCK": "Rock",
"BUG": "Bug",
"GHOST": "Ghost",
"STEEL": "Steel",
"FIRE": "Fire",
"WATER": "Water",
"GRASS": "Grass",
"ELECTRIC": "Electric",
"PSYCHIC": "Psychic",
"ICE": "Ice",
"DRAGON": "Dragon",
"DARK": "Dark",
"FAIRY": "Fairy",
"STELLAR": "Stellar",
},
} as const;

View File

@ -0,0 +1,41 @@
import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: {
"HP": "PV",
"HPshortened": "PV",
"ATK": "Ataque",
"ATKshortened": "Ata",
"DEF": "Defensa",
"DEFshortened": "Def",
"SPATK": "At. Esp.",
"SPATKshortened": "AtEsp",
"SPDEF": "Def. Esp.",
"SPDEFshortened": "DefEsp",
"SPD": "Velocidad",
"SPDshortened": "Veloc."
},
Type: {
"UNKNOWN": "Unknown",
"NORMAL": "Normal",
"FIGHTING": "Fighting",
"FLYING": "Flying",
"POISON": "Poison",
"GROUND": "Ground",
"ROCK": "Rock",
"BUG": "Bug",
"GHOST": "Ghost",
"STEEL": "Steel",
"FIRE": "Fire",
"WATER": "Water",
"GRASS": "Grass",
"ELECTRIC": "Electric",
"PSYCHIC": "Psychic",
"ICE": "Ice",
"DRAGON": "Dragon",
"DARK": "Dark",
"FAIRY": "Fairy",
"STELLAR": "Stellar",
},
} as const;

View File

@ -1,16 +0,0 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const pokemonStat: SimpleTranslationEntries = {
"HP": "PV",
"HPshortened": "PV",
"ATK": "Ataque",
"ATKshortened": "Ata",
"DEF": "Defensa",
"DEFshortened": "Def",
"SPATK": "At. Esp.",
"SPATKshortened": "AtEsp",
"SPDEF": "Def. Esp.",
"SPDEFshortened": "DefEsp",
"SPD": "Velocidad",
"SPDshortened": "Veloc."
} as const;

View File

@ -0,0 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Exceptionnel",
"ivFantastic": "Fantastique",
"ivVeryGood": "Très bon",
"ivPrettyGood": "Bon",
"ivDecent": "Passable…",
"ivNoGood": "Pas top…",
} as const;

View File

@ -2,47 +2,47 @@ import { BerryTranslationEntries } from "#app/plugins/i18n";
export const berry: BerryTranslationEntries = {
"SITRUS": {
name: "Sitrus Berry",
effect: "Restores 25% HP if HP is below 50%",
name: "Baie Sitrus",
effect: "Restaure 25% des PV sils sont inférieurs à 50%",
},
"LUM": {
name: "Lum Berry",
effect: "Cures any non-volatile status condition and confusion",
name: "Baie Prine",
effect: "Soigne tout problème de statut permanant et la confusion",
},
"ENIGMA": {
name: "Enigma Berry",
effect: "Restores 25% HP if hit by a super effective move",
name: "Baie Enigma",
effect: "Restaure 25% des PV si touché par une capacité super efficace",
},
"LIECHI": {
name: "Liechi Berry",
effect: "Raises Attack if HP is below 25%",
name: "Baie Lichii",
effect: "Augmente lAttaque si les PV sont inférieurs à 25%",
},
"GANLON": {
name: "Ganlon Berry",
effect: "Raises Defense if HP is below 25%",
name: "Baie Lingan",
effect: "Augmente la Défense si les PV sont inférieurs à 25%",
},
"PETAYA": {
name: "Petaya Berry",
effect: "Raises Sp. Atk if HP is below 25%",
name: "Baie Pitaye",
effect: "Augmente lAtq. Spé. si les PV sont inférieurs à 25%",
},
"APICOT": {
name: "Apicot Berry",
effect: "Raises Sp. Def if HP is below 25%",
name: "Baie Abriko",
effect: "Augmente la Déf. Spé. si les PV sont inférieurs à 25%",
},
"SALAC": {
name: "Salac Berry",
effect: "Raises Speed if HP is below 25%",
name: "Baie Sailak",
effect: "Augmente la Vitesse si les PV sont inférieurs à 25%",
},
"LANSAT": {
name: "Lansat Berry",
effect: "Raises critical hit ratio if HP is below 25%",
name: "Baie Lansat",
effect: "Augmente le taux de coups critiques si les PV sont inférieurs à 25%",
},
"STARF": {
name: "Starf Berry",
effect: "Sharply raises a random stat if HP is below 25%",
name: "Baie Frista",
effect: "Augmente énormément une statistique au hasard si les PV sont inférieurs à 25%",
},
"LEPPA": {
name: "Leppa Berry",
effect: "Restores 10 PP to a move if its PP reaches 0",
name: "Baie Mepo",
effect: "Restaure 10 PP à une capacité dès que ses PP tombent à 0",
},
} as const;

View File

@ -12,15 +12,15 @@ import { move } from "./move";
import { nature } from "./nature";
import { pokeball } from "./pokeball";
import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { pokemonInfo } from "./pokemon-info";
import { splashMessages } from "./splash-messages";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { titles, trainerClasses, trainerNames } from "./trainers";
import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
export const frConfig = {
ability: ability,
abilityTriggers: abilityTriggers,
@ -36,7 +36,7 @@ export const frConfig = {
nature: nature,
pokeball: pokeball,
pokemon: pokemon,
pokemonStat: pokemonStat,
pokemonInfo: pokemonInfo,
splashMessages: splashMessages,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
@ -44,6 +44,6 @@ export const frConfig = {
trainerNames: trainerNames,
tutorial: tutorial,
weather: weather,
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
}

View File

@ -384,26 +384,4 @@ export const modifierType: ModifierTypeTranslationEntries = {
"CHILL_DRIVE": "Module Aqua",
"DOUSE_DRIVE": "Module Choc",
},
TeraType: {
"UNKNOWN": "Inconnu",
"NORMAL": "Normal",
"FIGHTING": "Combat",
"FLYING": "Vol",
"POISON": "Poison",
"GROUND": "Sol",
"ROCK": "Roche",
"BUG": "Insecte",
"GHOST": "Spectre",
"STEEL": "Acier",
"FIRE": "Feu",
"WATER": "Eau",
"GRASS": "Plante",
"ELECTRIC": "Électrik",
"PSYCHIC": "Psy",
"ICE": "Glace",
"DRAGON": "Dragon",
"DARK": "Ténèbres",
"FAIRY": "Fée",
"STELLAR": "Stellaire",
},
} as const;

View File

@ -0,0 +1,41 @@
import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: {
"HP": "PV",
"HPshortened": "PV",
"ATK": "Attaque",
"ATKshortened": "Atq",
"DEF": "Défense",
"DEFshortened": "Déf",
"SPATK": "Atq. Spé.",
"SPATKshortened": "AtqSp",
"SPDEF": "Déf. Spé.",
"SPDEFshortened": "DéfSp",
"SPD": "Vitesse",
"SPDshortened": "Vit"
},
Type: {
"UNKNOWN": "Inconnu",
"NORMAL": "Normal",
"FIGHTING": "Combat",
"FLYING": "Vol",
"POISON": "Poison",
"GROUND": "Sol",
"ROCK": "Roche",
"BUG": "Insecte",
"GHOST": "Spectre",
"STEEL": "Acier",
"FIRE": "Feu",
"WATER": "Eau",
"GRASS": "Plante",
"ELECTRIC": "Électrik",
"PSYCHIC": "Psy",
"ICE": "Glace",
"DRAGON": "Dragon",
"DARK": "Ténèbres",
"FAIRY": "Fée",
"STELLAR": "Stellaire",
},
} as const;

View File

@ -1,16 +0,0 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const pokemonStat: SimpleTranslationEntries = {
"HP": "PV",
"HPshortened": "PV",
"ATK": "Attaque",
"ATKshortened": "Atq",
"DEF": "Défense",
"DEFshortened": "Déf",
"SPATK": "Atq. Spé.",
"SPATKshortened": "AtqSp",
"SPDEF": "Déf. Spé.",
"SPDEFshortened": "DéfSp",
"SPD": "Vitesse",
"SPDshortened": "Vit"
} as const;

View File

@ -35,7 +35,7 @@ export const trainerClasses: SimpleTranslationEntries = {
"clerk": "Employé",
"clerk_female": "Employée",
"colleagues": "Collègues de Bureau",
"crush_kin": "Crush Kin",
"crush_kin": "Duo Baston",
"cyclist": "Cycliste",
"cyclist_female": "Cycliste",
"cyclists": "Cyclistes",

View File

@ -0,0 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Stellare",
"ivFantastic": "Eccellente",
"ivVeryGood": "Notevole",
"ivPrettyGood": "Normale",
"ivDecent": "Sufficiente",
"ivNoGood": "Mediocre",
} as const;

View File

@ -27,12 +27,12 @@ export const battle: SimpleTranslationEntries = {
"learnMove": "{{pokemonName}} impara\n{{moveName}}!",
"learnMovePrompt": "{{pokemonName}} vorrebbe imparare\n{{moveName}}.",
"learnMoveLimitReached": "Tuttavia, {{pokemonName}}\nconosce già quattro mosse.",
"learnMoveReplaceQuestion": "Vuoi che ne dimentichi una e al suo \nposto la sostituisca con {{moveName}}?",
"learnMoveReplaceQuestion": "Vuoi che ne dimentichi una e al suo\nposto apprenda {{moveName}}?",
"learnMoveStopTeaching": "Vuoi smettere di fargli imparare\n{{moveName}}?",
"learnMoveNotLearned": "{{pokemonName}} non ha imparato\n{{moveName}}.",
"learnMoveForgetQuestion": "Quale mossa deve dimenticare?",
"learnMoveForgetSuccess": "{{pokemonName}} ha dimenticato la mossa\n{{moveName}}.",
"countdownPoof": "@d{32}1, @d{15}2, @d{15}e@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Puff!",
"countdownPoof": "@d{32}1, @d{15}2, @d{15}e@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}ta-daaaa!",
"learnMoveAnd": "E…",
"levelCapUp": "Il livello massimo\nè aumentato a {{levelCap}}!",
"moveNotImplemented": "{{moveName}} non è ancora implementata e non può essere selezionata.",
@ -51,6 +51,6 @@ export const battle: SimpleTranslationEntries = {
"escapeVerbFlee": "fuggendo",
"notDisabled": "{{pokemonName}}'s {{moveName}} non è più\ndisabilitata!",
"skipItemQuestion": "Sei sicuro di non voler prendere nessun oggetto?",
"eggHatching": "Oh?",
"eggHatching": "Oh!",
"ivScannerUseQuestion": "Vuoi usare lo scanner di IV su {{pokemonName}}?"
} as const;

View File

@ -2,47 +2,47 @@ import { BerryTranslationEntries } from "#app/plugins/i18n";
export const berry: BerryTranslationEntries = {
"SITRUS": {
name: "Sitrus Berry",
effect: "Restores 25% HP if HP is below 50%",
name: "Baccacedro",
effect: "Restituisce il 25% dei PS se i PS sono sotto il 50%",
},
"LUM": {
name: "Lum Berry",
effect: "Cures any non-volatile status condition and confusion",
name: "Baccaprugna",
effect: "Se tenuta da un Pokémon risolve qualsiasi problema di stato",
},
"ENIGMA": {
name: "Enigma Berry",
effect: "Restores 25% HP if hit by a super effective move",
name: "Baccaenigma",
effect: "Restituisce il 25% dei PS se viene colpito da una mossa superefficace",
},
"LIECHI": {
name: "Liechi Berry",
effect: "Raises Attack if HP is below 25%",
name: "Baccalici",
effect: "Aumenta l'Attacco se i PS sono sotto il 25%",
},
"GANLON": {
name: "Ganlon Berry",
effect: "Raises Defense if HP is below 25%",
name: "Baccalongan",
effect: "Aumenta la Difesa se i PS sono sotto il 25%",
},
"PETAYA": {
name: "Petaya Berry",
effect: "Raises Sp. Atk if HP is below 25%",
name: "Baccapitaya",
effect: "Aumenta l'Attacco Speciale se i PS sono sotto il 25%",
},
"APICOT": {
name: "Apicot Berry",
effect: "Raises Sp. Def if HP is below 25%",
name: "Baccacocca",
effect: "Aumenta la Difesa Speciale se i PS sono sotto il 25%",
},
"SALAC": {
name: "Salac Berry",
effect: "Raises Speed if HP is below 25%",
name: "Baccasalak",
effect: "Aumenta la Velocità se i PS sono sotto il 25%",
},
"LANSAT": {
name: "Lansat Berry",
effect: "Raises critical hit ratio if HP is below 25%",
name: "Baccalangsa",
effect: "Aumenta la probabilità di Colpo Critico se i PS sono sotto il 25%",
},
"STARF": {
name: "Starf Berry",
effect: "Sharply raises a random stat if HP is below 25%",
name: "Baccambola",
effect: "Aumenta drasticamente una statistica casuale se i PS sono sotto il 25%",
},
"LEPPA": {
name: "Leppa Berry",
effect: "Restores 10 PP to a move if its PP reaches 0",
name: "Baccamela",
effect: "Ripristina 10 PP a una mossa se i suoi PP raggiungono lo 0",
},
} as const;

View File

@ -12,15 +12,15 @@ import { move } from "./move";
import { nature } from "./nature";
import { pokeball } from "./pokeball";
import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { pokemonInfo } from "./pokemon-info";
import { splashMessages } from "./splash-messages";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { titles, trainerClasses, trainerNames } from "./trainers";
import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
export const itConfig = {
ability: ability,
abilityTriggers: abilityTriggers,
@ -36,7 +36,7 @@ export const itConfig = {
nature: nature,
pokeball: pokeball,
pokemon: pokemon,
pokemonStat: pokemonStat,
pokemonInfo: pokemonInfo,
splashMessages: splashMessages,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
@ -44,5 +44,6 @@ export const itConfig = {
trainerNames: trainerNames,
tutorial: tutorial,
weather: weather,
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
}

View File

@ -384,26 +384,4 @@ export const modifierType: ModifierTypeTranslationEntries = {
"CHILL_DRIVE": "Gelomodulo",
"DOUSE_DRIVE": "Idromodulo",
},
TeraType: {
"UNKNOWN": "Sconosciuto",
"NORMAL": "Normale",
"FIGHTING": "Lotta",
"FLYING": "Volante",
"POISON": "Veleno",
"GROUND": "Terra",
"ROCK": "Roccia",
"BUG": "Coleottero",
"GHOST": "Spettro",
"STEEL": "Acciaio",
"FIRE": "Fuoco",
"WATER": "Acqua",
"GRASS": "Erba",
"ELECTRIC": "Elettro",
"PSYCHIC": "Psico",
"ICE": "Ghiaccio",
"DRAGON": "Drago",
"DARK": "Buio",
"FAIRY": "Folletto",
"STELLAR": "Astrale",
},
} as const;

View File

@ -0,0 +1,41 @@
import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: {
"HP": "PS Max",
"HPshortened": "PS",
"ATK": "Attacco",
"ATKshortened": "Att",
"DEF": "Difesa",
"DEFshortened": "Dif",
"SPATK": "Att. Sp.",
"SPATKshortened": "AttSp",
"SPDEF": "Dif. Sp.",
"SPDEFshortened": "DifSp",
"SPD": "Velocità",
"SPDshortened": "Vel"
},
Type: {
"UNKNOWN": "Sconosciuto",
"NORMAL": "Normale",
"FIGHTING": "Lotta",
"FLYING": "Volante",
"POISON": "Veleno",
"GROUND": "Terra",
"ROCK": "Roccia",
"BUG": "Coleottero",
"GHOST": "Spettro",
"STEEL": "Acciaio",
"FIRE": "Fuoco",
"WATER": "Acqua",
"GRASS": "Erba",
"ELECTRIC": "Elettro",
"PSYCHIC": "Psico",
"ICE": "Ghiaccio",
"DRAGON": "Drago",
"DARK": "Buio",
"FAIRY": "Folletto",
"STELLAR": "Astrale",
},
} as const;

View File

@ -1,16 +0,0 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const pokemonStat: SimpleTranslationEntries = {
"HP": "PS Max",
"HPshortened": "PS",
"ATK": "Attacco",
"ATKshortened": "Att",
"DEF": "Difesa",
"DEFshortened": "Dif",
"SPATK": "Att. Sp.",
"SPATKshortened": "AttSp",
"SPDEF": "Dif. Sp.",
"SPDEFshortened": "DifSp",
"SPD": "Velocità",
"SPDshortened": "Vel"
} as const;

View File

@ -2,13 +2,13 @@ import {SimpleTranslationEntries} from "#app/plugins/i18n";
// Titles of special trainers like gym leaders, elite four, and the champion
export const titles: SimpleTranslationEntries = {
"elite_four": "Elite Four",
"gym_leader": "Gym Leader",
"gym_leader_female": "Gym Leader",
"champion": "Champion",
"rival": "Rival",
"professor": "Professor",
"frontier_brain": "Frontier Brain",
"elite_four": "Superquattro",
"gym_leader": "Capopalestra",
"gym_leader_female": "Capopalestra",
"champion": "Campione",
"rival": "Rivale",
"professor": "Professore",
"frontier_brain": "Asso Lotta",
// Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc.
} as const;

View File

@ -0,0 +1,5 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const abilityTriggers: SimpleTranslationEntries = {
'blockRecoilDamage' : `{{abilityName}} de {{pokemonName}}\nprotegeu-o do dano de recuo!`,
} as const;

View File

@ -0,0 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Melhor",
"ivFantastic": "Fantástico",
"ivVeryGood": "Muito Bom",
"ivPrettyGood": "Bom",
"ivDecent": "Regular",
"ivNoGood": "Ruim",
} as const;

View File

@ -3,13 +3,13 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const battle: SimpleTranslationEntries = {
"bossAppeared": "{{bossName}} apareceu.",
"trainerAppeared": "{{trainerName}}\nquer batalhar!",
"trainerAppearedDouble": "{{trainerName}}\nwould like to battle!",
"trainerAppearedDouble": "{{trainerName}}\nquerem batalhar!",
"singleWildAppeared": "Um {{pokemonName}} selvagem apareceu!",
"multiWildAppeared": "Um {{pokemonName1}} e um {{pokemonName2}} selvagens\napareceram!",
"playerComeBack": "{{pokemonName}}, retorne!",
"trainerComeBack": "{{trainerName}} retirou {{pokemonName}} da batalha!",
"playerGo": "{{pokemonName}}, eu escolho você!",
"trainerGo": "{{trainerName}} enviou {{pokemonName}}!",
"trainerGo": "{{trainerName}} escolheu {{pokemonName}}!",
"switchQuestion": "Quer trocar\nde {{pokemonName}}?",
"trainerDefeated": "Você derrotou\n{{trainerName}}!",
"pokemonCaught": "{{pokemonName}} foi capturado!",

View File

@ -2,47 +2,47 @@ import { BerryTranslationEntries } from "#app/plugins/i18n";
export const berry: BerryTranslationEntries = {
"SITRUS": {
name: "Sitrus Berry",
effect: "Restores 25% HP if HP is below 50%",
name: "Fruta Sitrus",
effect: "Restaura 25% dos PS se os PS estiverem abaixo de 50%",
},
"LUM": {
name: "Lum Berry",
effect: "Cures any non-volatile status condition and confusion",
name: "Fruta Lum",
effect: "Cura qualquer mudança de estado ou confusão",
},
"ENIGMA": {
name: "Enigma Berry",
effect: "Restores 25% HP if hit by a super effective move",
name: "Fruta Enigma",
effect: "Restaura 25% dos PS se atingido por um golpe supereficaz",
},
"LIECHI": {
name: "Liechi Berry",
effect: "Raises Attack if HP is below 25%",
name: "Fruta Liechi",
effect: "Aumenta o Ataque se os PS estiverem abaixo de 25%",
},
"GANLON": {
name: "Ganlon Berry",
effect: "Raises Defense if HP is below 25%",
name: "Fruta Ganlon",
effect: "Aumenta a Defesa se os PS estiverem abaixo de 25%",
},
"PETAYA": {
name: "Petaya Berry",
effect: "Raises Sp. Atk if HP is below 25%",
name: "Fruta Petaya",
effect: "Aumenta o Ataque Especial se os PS estiverem abaixo de 25%",
},
"APICOT": {
name: "Apicot Berry",
effect: "Raises Sp. Def if HP is below 25%",
name: "Fruta Apicot",
effect: "Aumenta a Defesa Especial se os PS estiverem abaixo de 25%",
},
"SALAC": {
name: "Salac Berry",
effect: "Raises Speed if HP is below 25%",
name: "Fruta Salac",
effect: "Aumenta a Velocidade se os PS estiverem abaixo de 25%",
},
"LANSAT": {
name: "Lansat Berry",
effect: "Raises critical hit ratio if HP is below 25%",
name: "Fruta Lansat",
effect: "Aumenta a chance de acerto crítico se os PS estiverem abaixo de 25%",
},
"STARF": {
name: "Starf Berry",
effect: "Sharply raises a random stat if HP is below 25%",
name: "Fruta Starf",
effect: "Aumenta drasticamente um atributo aleatório se os PS estiverem abaixo de 25%",
},
"LEPPA": {
name: "Leppa Berry",
effect: "Restores 10 PP to a move if its PP reaches 0",
name: "Fruta Leppa",
effect: "Restaura 10 PP de um movimento se seus PP acabarem",
},
} as const;

View File

@ -1,6 +1,8 @@
import { ability } from "./ability";
import { abilityTriggers } from "./ability-trigger";
import { battle } from "./battle";
import { commandUiHandler } from "./command-ui-handler";
import { egg } from "./egg";
import { fightUiHandler } from "./fight-ui-handler";
import { growth } from "./growth";
import { menu } from "./menu";
@ -10,8 +12,10 @@ import { move } from "./move";
import { nature } from "./nature";
import { pokeball } from "./pokeball";
import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { pokemonInfo } from "./pokemon-info";
import { splashMessages } from "./splash-messages";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { titles, trainerClasses, trainerNames } from "./trainers";
import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { berry } from "./berry";
@ -19,17 +23,23 @@ import { berry } from "./berry";
export const ptBrConfig = {
ability: ability,
abilityTriggers: abilityTriggers,
battle: battle,
commandUiHandler: commandUiHandler,
egg: egg,
fightUiHandler: fightUiHandler,
menuUiHandler: menuUiHandler,
menu: menu,
move: move,
pokeball: pokeball,
pokemonStat: pokemonStat,
pokemonInfo: pokemonInfo,
pokemon: pokemon,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
trainerClasses: trainerClasses,
trainerNames: trainerNames,
tutorial: tutorial,
splashMessages: splashMessages,
nature: nature,
growth: growth,
weather: weather,

21
src/locales/pt_BR/egg.ts Normal file
View File

@ -0,0 +1,21 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const egg: SimpleTranslationEntries = {
"egg": "Ovo",
"greatTier": "Raro",
"ultraTier": "Épico",
"masterTier": "Lendário",
"defaultTier": "Comum",
"hatchWavesMessageSoon": "Barulhos podem ser ouvidos vindo de dentro! Vai chocar em breve!",
"hatchWavesMessageClose": "Parece se mover ocasionalmente. Pode estar perto de chocar.",
"hatchWavesMessageNotClose": "O que vai nascer disso? Não parece estar perto de chocar.",
"hatchWavesMessageLongTime": "Parece que este ovo vai demorar bastante para chocar.",
"gachaTypeLegendary": "Chance de Lendário Aumentada",
"gachaTypeMove": "Chance de Movimento de Ovo Raro Aumentada",
"gachaTypeShiny": "Chance de Shiny Aumentada",
"selectMachine": "Escolha uma máquina.",
"notEnoughVouchers": "Você não tem vouchers suficientes!",
"tooManyEggs": "Você já tem muitos ovos!",
"pull": "Prêmio",
"pulls": "Prêmios"
} as const;

View File

@ -4,406 +4,384 @@ export const modifierType: ModifierTypeTranslationEntries = {
ModifierType: {
"AddPokeballModifierType": {
name: "{{modifierCount}}x {{pokeballName}}",
description: "Receive {{pokeballName}} x{{modifierCount}} (Inventory: {{pokeballAmount}}) \nCatch Rate: {{catchRate}}",
description: "Ganhe x{{modifierCount}} {{pokeballName}} (Mochila: {{pokeballAmount}}) \nChance de captura: {{catchRate}}",
},
"AddVoucherModifierType": {
name: "{{modifierCount}}x {{voucherTypeName}}",
description: "Receive {{voucherTypeName}} x{{modifierCount}}",
description: "Ganhe x{{modifierCount}} {{voucherTypeName}}",
},
"PokemonHeldItemModifierType": {
extra: {
"inoperable": "{{pokemonName}} can't take\nthis item!",
"tooMany": "{{pokemonName}} has too many\nof this item!",
"inoperable": "{{pokemonName}} não pode\nsegurar esse item!",
"tooMany": "{{pokemonName}} tem muitos\nmuitos deste item!",
}
},
"PokemonHpRestoreModifierType": {
description: "Restores {{restorePoints}} HP or {{restorePercent}}% HP for one Pokémon, whichever is higher",
description: "Restaura {{restorePoints}} PS ou {{restorePercent}}% PS de um Pokémon, o que for maior",
extra: {
"fully": "Fully restores HP for one Pokémon",
"fullyWithStatus": "Fully restores HP for one Pokémon and heals any status ailment",
"fully": "Restaura totalmente os PS de um Pokémon",
"fullyWithStatus": "Restaura totalmente os PS de um Pokémon e cura qualquer mudança de estado",
}
},
"PokemonReviveModifierType": {
description: "Revives one Pokémon and restores {{restorePercent}}% HP",
description: "Reanima um Pokémon e restaura {{restorePercent}}% PS",
},
"PokemonStatusHealModifierType": {
description: "Heals any status ailment for one Pokémon",
description: "Cura uma mudança de estado de um Pokémon",
},
"PokemonPpRestoreModifierType": {
description: "Restores {{restorePoints}} PP for one Pokémon move",
description: "Restaura {{restorePoints}} PP para um movimento de um Pokémon",
extra: {
"fully": "Restores all PP for one Pokémon move",
"fully": "Restaura todos os PP para um movimento de um Pokémon",
}
},
"PokemonAllMovePpRestoreModifierType": {
description: "Restores {{restorePoints}} PP for all of one Pokémon's moves",
description: "Restaura {{restorePoints}} PP para todos os movimentos de um Pokémon",
extra: {
"fully": "Restores all PP for all of one Pokémon's moves",
"fully": "Restaura todos os PP para todos os movimentos de um Pokémon",
}
},
"PokemonPpUpModifierType": {
description: "Permanently increases PP for one Pokémon move by {{upPoints}} for every 5 maximum PP (maximum 3)",
description: "Aumenta permanentemente os PP para o movimento de um Pokémon em {{upPoints}} para cada 5 PP máximos (máximo 3)",
},
"PokemonNatureChangeModifierType": {
name: "{{natureName}} Mint",
description: "Changes a Pokémon's nature to {{natureName}} and permanently unlocks the nature for the starter.",
description: "Muda a natureza de um Pokémon para {{natureName}} e a desbloqueia permanentemente para seu inicial",
},
"DoubleBattleChanceBoosterModifierType": {
description: "Doubles the chance of an encounter being a double battle for {{battleCount}} battles",
description: "Dobra as chances de encontrar uma batalha em dupla por {{battleCount}} batalhas",
},
"TempBattleStatBoosterModifierType": {
description: "Increases the {{tempBattleStatName}} of all party members by 1 stage for 5 battles",
description: "Aumenta o atributo de {{tempBattleStatName}} para todos os membros da equipe por 5 batalhas",
},
"AttackTypeBoosterModifierType": {
description: "Increases the power of a Pokémon's {{moveType}}-type moves by 20%",
description: "Aumenta o poder dos ataques do tipo {{moveType}} de um Pokémon em 20%",
},
"PokemonLevelIncrementModifierType": {
description: "Increases a Pokémon's level by 1",
description: "Aumenta em 1 o nível de um Pokémon",
},
"AllPokemonLevelIncrementModifierType": {
description: "Increases all party members' level by 1",
description: "Aumenta em 1 os níveis de todos os Pokémon",
},
"PokemonBaseStatBoosterModifierType": {
description: "Increases the holder's base {{statName}} by 10%. The higher your IVs, the higher the stack limit.",
description: "Aumenta o atributo base de {{statName}} em 10%. Quanto maior os IVs, maior o limite de aumento",
},
"AllPokemonFullHpRestoreModifierType": {
description: "Restores 100% HP for all Pokémon",
description: "Restaura totalmente os PS de todos os Pokémon",
},
"AllPokemonFullReviveModifierType": {
description: "Revives all fainted Pokémon, fully restoring HP",
description: "Reanima todos os Pokémon, restaurando totalmente seus PS",
},
"MoneyRewardModifierType": {
description: "Grants a {{moneyMultiplier}} amount of money (₽{{moneyAmount}})",
description: "Garante uma quantidade {{moneyMultiplier}} de dinheiro (₽{{moneyAmount}})",
extra: {
"small": "small",
"moderate": "moderate",
"large": "large",
"small": "pequena",
"moderate": "moderada",
"large": "grande",
},
},
"ExpBoosterModifierType": {
description: "Increases gain of EXP. Points by {{boostPercent}}%",
description: "Aumenta o ganho de pontos de experiência em {{boostPercent}}%",
},
"PokemonExpBoosterModifierType": {
description: "Increases the holder's gain of EXP. Points by {{boostPercent}}%",
description: "Aumenta o ganho de pontos de experiência de quem segura em {{boostPercent}}%",
},
"PokemonFriendshipBoosterModifierType": {
description: "Increases friendship gain per victory by 50%",
description: "Aumenta o ganho de amizade por vitória em 50%",
},
"PokemonMoveAccuracyBoosterModifierType": {
description: "Increases move accuracy by {{accuracyAmount}} (maximum 100)",
description: "Aumenta a precisão dos movimentos em {{accuracyAmount}} (máximo 100)",
},
"PokemonMultiHitModifierType": {
description: "Attacks hit one additional time at the cost of a 60/75/82.5% power reduction per stack respectively",
description: "Ataques acertam uma vez adicional ao custo de uma redução de poder de 60/75/82.5% por item, respectivamente",
},
"TmModifierType": {
name: "TM{{moveId}} - {{moveName}}",
description: "Teach {{moveName}} to a Pokémon",
description: "Ensina {{moveName}} a um Pokémon",
},
"EvolutionItemModifierType": {
description: "Causes certain Pokémon to evolve",
description: "Faz certos Pokémon evoluírem",
},
"FormChangeItemModifierType": {
description: "Causes certain Pokémon to change form",
description: "Faz certos Pokémon mudarem de forma",
},
"FusePokemonModifierType": {
description: "Combines two Pokémon (transfers Ability, splits base stats and types, shares move pool)",
description: "Combina dois Pokémon (transfere Habilidade, divide os atributos base e tipos, compartilha os movimentos)",
},
"TerastallizeModifierType": {
name: "{{teraType}} Tera Shard",
description: "{{teraType}} Terastallizes the holder for up to 10 battles",
name: "{{teraType}} Fragmento Tera",
description: "{{teraType}} Terastaliza um Pokémon por até 10 batalhas",
},
"ContactHeldItemTransferChanceModifierType": {
description: "Upon attacking, there is a {{chancePercent}}% chance the foe's held item will be stolen",
description: "Quando atacar, tem {{chancePercent}}% de chance de roubar um item do oponente",
},
"TurnHeldItemTransferModifierType": {
description: "Every turn, the holder acquires one held item from the foe",
description: "Todo turno, o Pokémon ganha um item aleatório do oponente",
},
"EnemyAttackStatusEffectChanceModifierType": {
description: "Adds a {{chancePercent}}% chance to inflict {{statusEffect}} with attack moves",
description: "Ganha {{chancePercent}}% de chance de infligir {{statusEffect}} com ataques",
},
"EnemyEndureChanceModifierType": {
description: "Adds a {{chancePercent}}% chance of enduring a hit",
description: "Ganha {{chancePercent}}% de chance de sobreviver a um ataque que o faria desmaiar",
},
"RARE_CANDY": { name: "Rare Candy" },
"RARER_CANDY": { name: "Rarer Candy" },
"RARE_CANDY": { name: "Doce Raro" },
"RARER_CANDY": { name: "Doce Raríssimo" },
"MEGA_BRACELET": { name: "Mega Bracelet", description: "Mega Stones become available" },
"DYNAMAX_BAND": { name: "Dynamax Band", description: "Max Mushrooms become available" },
"TERA_ORB": { name: "Tera Orb", description: "Tera Shards become available" },
"MEGA_BRACELET": { name: "Mega Bracelete", description: "Mega Stones become available" },
"DYNAMAX_BAND": { name: "Bracelete Dynamax", description: "Max Mushrooms become available" },
"TERA_ORB": { name: "Orbe Tera", description: "Fragmentos Tera ficam disponíveis" },
"MAP": { name: "Map", description: "Allows you to choose your destination at a crossroads" },
"MAP": { name: "Mapa", description: "Permite escolher a próxima rota" },
"POTION": { name: "Potion" },
"SUPER_POTION": { name: "Super Potion" },
"HYPER_POTION": { name: "Hyper Potion" },
"MAX_POTION": { name: "Max Potion" },
"FULL_RESTORE": { name: "Full Restore" },
"POTION": { name: "Poção" },
"SUPER_POTION": { name: "Super Poção" },
"HYPER_POTION": { name: "Hiper Poção" },
"MAX_POTION": { name: "Poção Máxima" },
"FULL_RESTORE": { name: "Restaurador" },
"REVIVE": { name: "Revive" },
"MAX_REVIVE": { name: "Max Revive" },
"REVIVE": { name: "Reanimador" },
"MAX_REVIVE": { name: "Reanimador Máximo" },
"FULL_HEAL": { name: "Full Heal" },
"FULL_HEAL": { name: "Cura Total" },
"SACRED_ASH": { name: "Sacred Ash" },
"SACRED_ASH": { name: "Cinza Sagrada" },
"REVIVER_SEED": { name: "Reviver Seed", description: "Revives the holder for 1/2 HP upon fainting" },
"REVIVER_SEED": { name: "Semente Reanimadora", description: "Após desmaiar, reanima com 50% de PS" },
"ETHER": { name: "Ether" },
"MAX_ETHER": { name: "Max Ether" },
"ETHER": { name: "Éter" },
"MAX_ETHER": { name: "Éter Máximo" },
"ELIXIR": { name: "Elixir" },
"MAX_ELIXIR": { name: "Max Elixir" },
"MAX_ELIXIR": { name: "Elixir Máximo" },
"PP_UP": { name: "PP Up" },
"PP_MAX": { name: "PP Max" },
"PP_UP": { name: "Mais PP" },
"PP_MAX": { name: "PP Máximo" },
"LURE": { name: "Lure" },
"SUPER_LURE": { name: "Super Lure" },
"MAX_LURE": { name: "Max Lure" },
"LURE": { name: "Incenso" },
"SUPER_LURE": { name: "Super Incenso" },
"MAX_LURE": { name: "Incenso Máximo" },
"MEMORY_MUSHROOM": { name: "Memory Mushroom", description: "Recall one Pokémon's forgotten move" },
"MEMORY_MUSHROOM": { name: "Cogumemória", description: "Relembra um movimento esquecido" },
"EXP_SHARE": { name: "EXP. All", description: "Non-participants receive 20% of a single participant's EXP. Points" },
"EXP_BALANCE": { name: "EXP. Balance", description: "Weighs EXP. Points received from battles towards lower-leveled party members" },
"EXP_SHARE": { name: "Compart. de Exp.", description: "Distribui pontos de experiência para todos os membros da equipe" },
"EXP_BALANCE": { name: "Balanceador de Exp.", description: "Distribui pontos de experiência principalmente para os Pokémon mais fracos" },
"OVAL_CHARM": { name: "Oval Charm", description: "When multiple Pokémon participate in a battle, each gets an extra 10% of the total EXP" },
"OVAL_CHARM": { name: "Amuleto Oval", description: "Quando vários Pokémon participam de uma batalha, cada um recebe 10% extra de pontos de experiência" },
"EXP_CHARM": { name: "EXP. Charm" },
"SUPER_EXP_CHARM": { name: "Super EXP. Charm" },
"GOLDEN_EXP_CHARM": { name: "Golden EXP. Charm" },
"EXP_CHARM": { name: "Amuleto de Exp." },
"SUPER_EXP_CHARM": { name: "Super Amuleto de Exp." },
"GOLDEN_EXP_CHARM": { name: "Amuleto de Exp. Dourado" },
"LUCKY_EGG": { name: "Lucky Egg" },
"GOLDEN_EGG": { name: "Golden Egg" },
"LUCKY_EGG": { name: "Ovo da Sorte" },
"GOLDEN_EGG": { name: "Ovo Dourado" },
"SOOTHE_BELL": { name: "Soothe Bell" },
"SOOTHE_BELL": { name: "Guizo" },
"SOUL_DEW": { name: "Soul Dew", description: "Increases the influence of a Pokémon's nature on its stats by 10% (additive)" },
"SOUL_DEW": { name: "Joia da Alma", description: "Aumenta a influência da natureza de um Pokémon em seus atributos em 10% (cumulativo)" },
"NUGGET": { name: "Nugget" },
"BIG_NUGGET": { name: "Big Nugget" },
"RELIC_GOLD": { name: "Relic Gold" },
"NUGGET": { name: "Pepita" },
"BIG_NUGGET": { name: "Pepita Grande" },
"RELIC_GOLD": { name: "Relíquia de Ouro" },
"AMULET_COIN": { name: "Amulet Coin", description: "Increases money rewards by 20%" },
"GOLDEN_PUNCH": { name: "Golden Punch", description: "Grants 50% of damage inflicted as money" },
"COIN_CASE": { name: "Coin Case", description: "After every 10th battle, receive 10% of your money in interest" },
"AMULET_COIN": { name: "Moeda Amuleto", description: "Aumenta a recompensa de dinheiro em 50%" },
"GOLDEN_PUNCH": { name: "Soco Dourado", description: "Concede 50% do dano causado em dinheiro" },
"COIN_CASE": { name: "Moedeira", description: "Após cada 10ª batalha, recebe 10% de seu dinheiro em juros" },
"LOCK_CAPSULE": { name: "Lock Capsule", description: "Allows you to lock item rarities when rerolling items" },
"LOCK_CAPSULE": { name: "Cápsula de Travamento", description: "Permite que você trave raridades de itens ao rolar novamente" },
"GRIP_CLAW": { name: "Grip Claw" },
"WIDE_LENS": { name: "Wide Lens" },
"GRIP_CLAW": { name: "Garra-Aperto" },
"WIDE_LENS": { name: "Lente Ampla" },
"MULTI_LENS": { name: "Multi Lens" },
"MULTI_LENS": { name: "Multi Lentes" },
"HEALING_CHARM": { name: "Healing Charm", description: "Increases the effectiveness of HP restoring moves and items by 10% (excludes Revives)" },
"CANDY_JAR": { name: "Candy Jar", description: "Increases the number of levels added by Rare Candy items by 1" },
"HEALING_CHARM": { name: "Amuleto de Cura", description: "Aumenta a eficácia dos movimentos e itens que restauram PS em 10% (exceto Reanimador)" },
"CANDY_JAR": { name: "Pote de Doces", description: "Aumenta o número de níveis adicionados pelo Doce Raro em 1" },
"BERRY_POUCH": { name: "Berry Pouch", description: "Adds a 25% chance that a used berry will not be consumed" },
"BERRY_POUCH": { name: "Bolsa de Berries", description: "Adiciona uma chance de 25% de que uma berry usada não seja consumida" },
"FOCUS_BAND": { name: "Focus Band", description: "Adds a 10% chance to survive with 1 HP after being damaged enough to faint" },
"FOCUS_BAND": { name: "Bandana", description: "Adiciona uma chance de 10% de sobreviver com 1 PS após ser danificado o suficiente para desmaiar" },
"QUICK_CLAW": { name: "Quick Claw", description: "Adds a 10% chance to move first regardless of speed (after priority)" },
"QUICK_CLAW": { name: "Garra Rápida", description: "Adiciona uma chance de 10% de atacar primeiro, ignorando sua velocidade (após prioridades)" },
"KINGS_ROCK": { name: "King's Rock", description: "Adds a 10% chance an attack move will cause the opponent to flinch" },
"KINGS_ROCK": { name: "Pedra do Rei", description: "Adiciona uma chance de 10% de movimentos fazerem o oponente hesitar" },
"LEFTOVERS": { name: "Leftovers", description: "Heals 1/16 of a Pokémon's maximum HP every turn" },
"SHELL_BELL": { name: "Shell Bell", description: "Heals 1/8 of a Pokémon's dealt damage" },
"LEFTOVERS": { name: "Sobras", description: "Cura 1/16 dos PS máximos de um Pokémon a cada turno" },
"SHELL_BELL": { name: "Concha-Sino", description: "Cura 1/8 do dano causado por um Pokémon" },
"BATON": { name: "Baton", description: "Allows passing along effects when switching Pokémon, which also bypasses traps" },
"BATON": { name: "Bastão", description: "Permite passar mudanças de atributo ao trocar Pokémon, ignorando armadilhas" },
"SHINY_CHARM": { name: "Shiny Charm", description: "Dramatically increases the chance of a wild Pokémon being Shiny" },
"ABILITY_CHARM": { name: "Ability Charm", description: "Dramatically increases the chance of a wild Pokémon having a Hidden Ability" },
"SHINY_CHARM": { name: "Amuleto Brilhante", description: "Aumenta drasticamente a chance de um Pokémon selvagem ser Shiny" },
"ABILITY_CHARM": { name: "Amuleto de Habilidade", description: "Aumenta drasticamente a chance de um Pokémon selvagem ter uma Habilidade Oculta" },
"IV_SCANNER": { name: "IV Scanner", description: "Allows scanning the IVs of wild Pokémon. 2 IVs are revealed per stack. The best IVs are shown first" },
"IV_SCANNER": { name: "Scanner de IVs", description: "Permite escanear os IVs de Pokémon selvagens. 2 IVs são revelados por item. Os melhores IVs são mostrados primeiro" },
"DNA_SPLICERS": { name: "DNA Splicers" },
"DNA_SPLICERS": { name: "Splicer de DNA" },
"MINI_BLACK_HOLE": { name: "Mini Black Hole" },
"MINI_BLACK_HOLE": { name: "Mini Buraco Negro" },
"GOLDEN_POKEBALL": { name: "Golden Poké Ball", description: "Adds 1 extra item option at the end of every battle" },
"GOLDEN_POKEBALL": { name: "Poké Bola Dourada", description: "Adiciona 1 opção de item extra ao final de cada batalha" },
"ENEMY_DAMAGE_BOOSTER": { name: "Damage Token", description: "Increases damage by 5%" },
"ENEMY_DAMAGE_REDUCTION": { name: "Protection Token", description: "Reduces incoming damage by 2.5%" },
"ENEMY_HEAL": { name: "Recovery Token", description: "Heals 2% of max HP every turn" },
"ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" },
"ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" },
"ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" },
"ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" },
"ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" },
"ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 10% chance every turn to heal a status condition" },
"ENEMY_ENDURE_CHANCE": { name: "Endure Token" },
"ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Adds a 1% chance that a wild Pokémon will be a fusion" },
"ENEMY_DAMAGE_BOOSTER": { name: "Token de Dano", description: "Aumenta o dano em 5%" },
"ENEMY_DAMAGE_REDUCTION": { name: "Token de Proteção", description: "Reduz o dano recebido em 2,5%" },
"ENEMY_HEAL": { name: "Token de Recuperação", description: "Cura 2% dos PS máximos a cada turno" },
"ENEMY_ATTACK_POISON_CHANCE": { name: "Token de Veneno" },
"ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Token de Paralisia" },
"ENEMY_ATTACK_SLEEP_CHANCE": { name: "Token de Sono" },
"ENEMY_ATTACK_FREEZE_CHANCE": { name: "Token de Congelamento" },
"ENEMY_ATTACK_BURN_CHANCE": { name: "Token de Queimadura" },
"ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Token de Cura Total", description: "Adiciona uma chance de 10% a cada turno de curar uma condição de status" },
"ENEMY_ENDURE_CHANCE": { name: "Token de Persistência" },
"ENEMY_FUSED_CHANCE": { name: "Token de Fusão", description: "Adiciona uma chance de 1% de que um Pokémon selvagem seja uma fusão" },
},
TempBattleStatBoosterItem: {
"x_attack": "X Attack",
"x_defense": "X Defense",
"x_sp_atk": "X Sp. Atk",
"x_sp_def": "X Sp. Def",
"x_speed": "X Speed",
"x_accuracy": "X Accuracy",
"dire_hit": "Dire Hit",
"x_attack": "Ataque X",
"x_defense": "Defesa X",
"x_sp_atk": "Ataque Esp. X",
"x_sp_def": "Defesa Esp. X",
"x_speed": "Velocidade X",
"x_accuracy": "Precisão X",
"dire_hit": "Direto",
},
AttackTypeBoosterItem: {
"silk_scarf": "Silk Scarf",
"black_belt": "Black Belt",
"sharp_beak": "Sharp Beak",
"poison_barb": "Poison Barb",
"soft_sand": "Soft Sand",
"hard_stone": "Hard Stone",
"silver_powder": "Silver Powder",
"spell_tag": "Spell Tag",
"metal_coat": "Metal Coat",
"charcoal": "Charcoal",
"mystic_water": "Mystic Water",
"miracle_seed": "Miracle Seed",
"magnet": "Magnet",
"twisted_spoon": "Twisted Spoon",
"never_melt_ice": "Never-Melt Ice",
"dragon_fang": "Dragon Fang",
"black_glasses": "Black Glasses",
"fairy_feather": "Fairy Feather",
"silk_scarf": "Lenço de Seda",
"black_belt": "Faixa Preta",
"sharp_beak": "Bico Afiado",
"poison_barb": "Farpa Venenosa",
"soft_sand": "Areia Macia",
"hard_stone": "Pedra Dura",
"silver_powder": "Pó de Prata",
"spell_tag": "Talismã de Feitiço",
"metal_coat": "Revestimento Metálico",
"charcoal": "Carvão",
"mystic_water": "Água Mística",
"miracle_seed": "Semente Milagrosa",
"magnet": "Ímã",
"twisted_spoon": "Colher Torcida",
"never_melt_ice": "Gelo Eterno",
"dragon_fang": "Presa de Dragão",
"black_glasses": "Óculos Escuros",
"fairy_feather": "Pena de Fada",
},
BaseStatBoosterItem: {
"hp_up": "HP Up",
"protein": "Protein",
"iron": "Iron",
"calcium": "Calcium",
"zinc": "Zinc",
"carbos": "Carbos",
"hp_up": "Mais PS",
"protein": "Proteína",
"iron": "Ferro",
"calcium": "Cálcio",
"zinc": "Zinco",
"carbos": "Carboidrato",
},
EvolutionItem: {
"NONE": "None",
"LINKING_CORD": "Linking Cord",
"SUN_STONE": "Sun Stone",
"MOON_STONE": "Moon Stone",
"LEAF_STONE": "Leaf Stone",
"FIRE_STONE": "Fire Stone",
"WATER_STONE": "Water Stone",
"THUNDER_STONE": "Thunder Stone",
"ICE_STONE": "Ice Stone",
"DUSK_STONE": "Dusk Stone",
"DAWN_STONE": "Dawn Stone",
"SHINY_STONE": "Shiny Stone",
"CRACKED_POT": "Cracked Pot",
"SWEET_APPLE": "Sweet Apple",
"TART_APPLE": "Tart Apple",
"STRAWBERRY_SWEET": "Strawberry Sweet",
"UNREMARKABLE_TEACUP": "Unremarkable Teacup",
"LINKING_CORD": "Cabo de Conexão",
"SUN_STONE": "Pedra do Sol",
"MOON_STONE": "Pedra da Lua",
"LEAF_STONE": "Pedra da Folha",
"FIRE_STONE": "Pedra do Fogo",
"WATER_STONE": "Pedra da Água",
"THUNDER_STONE": "Pedra do Trovão",
"ICE_STONE": "Pedra do Gelo",
"DUSK_STONE": "Pedra do Crepúsculo",
"DAWN_STONE": "Pedra da Alvorada",
"SHINY_STONE": "Pedra Brilhante",
"CRACKED_POT": "Vaso Quebrado",
"SWEET_APPLE": "Maçã Doce",
"TART_APPLE": "Maçã Azeda",
"STRAWBERRY_SWEET": "Doce de Morango",
"UNREMARKABLE_TEACUP": "Xícara Comum",
"CHIPPED_POT": "Chipped Pot",
"BLACK_AUGURITE": "Black Augurite",
"GALARICA_CUFF": "Galarica Cuff",
"GALARICA_WREATH": "Galarica Wreath",
"PEAT_BLOCK": "Peat Block",
"AUSPICIOUS_ARMOR": "Auspicious Armor",
"MALICIOUS_ARMOR": "Malicious Armor",
"MASTERPIECE_TEACUP": "Masterpiece Teacup",
"METAL_ALLOY": "Metal Alloy",
"SCROLL_OF_DARKNESS": "Scroll Of Darkness",
"SCROLL_OF_WATERS": "Scroll Of Waters",
"SYRUPY_APPLE": "Syrupy Apple",
"CHIPPED_POT": "Pote Lascado",
"BLACK_AUGURITE": "Mineral Negro",
"GALARICA_CUFF": "Bracelete de Galar",
"GALARICA_WREATH": "Coroa de Galar",
"PEAT_BLOCK": "Bloco de Turfa",
"AUSPICIOUS_ARMOR": "Armadura Prometida",
"MALICIOUS_ARMOR": "Armadura Maldita",
"MASTERPIECE_TEACUP": "Xícara Excepcional",
"METAL_ALLOY": "Liga de Metal",
"SCROLL_OF_DARKNESS": "Pergaminho da Escuridão",
"SCROLL_OF_WATERS": "Pergaminho da Água",
"SYRUPY_APPLE": "Xarope de Maçã",
},
FormChangeItem: {
"NONE": "None",
"ABOMASITE": "Abomasite",
"ABSOLITE": "Absolite",
"AERODACTYLITE": "Aerodactylite",
"AGGRONITE": "Aggronite",
"ALAKAZITE": "Alakazite",
"ALTARIANITE": "Altarianite",
"AMPHAROSITE": "Ampharosite",
"AUDINITE": "Audinite",
"BANETTITE": "Banettite",
"BEEDRILLITE": "Beedrillite",
"BLASTOISINITE": "Blastoisinite",
"BLAZIKENITE": "Blazikenite",
"CAMERUPTITE": "Cameruptite",
"CHARIZARDITE_X": "Charizardite X",
"CHARIZARDITE_Y": "Charizardite Y",
"DIANCITE": "Diancite",
"GALLADITE": "Galladite",
"GARCHOMPITE": "Garchompite",
"GARDEVOIRITE": "Gardevoirite",
"GENGARITE": "Gengarite",
"GLALITITE": "Glalitite",
"GYARADOSITE": "Gyaradosite",
"HERACRONITE": "Heracronite",
"HOUNDOOMINITE": "Houndoominite",
"KANGASKHANITE": "Kangaskhanite",
"LATIASITE": "Latiasite",
"LATIOSITE": "Latiosite",
"LOPUNNITE": "Lopunnite",
"LUCARIONITE": "Lucarionite",
"MANECTITE": "Manectite",
"MAWILITE": "Mawilite",
"MEDICHAMITE": "Medichamite",
"METAGROSSITE": "Metagrossite",
"MEWTWONITE_X": "Mewtwonite X",
"MEWTWONITE_Y": "Mewtwonite Y",
"PIDGEOTITE": "Pidgeotite",
"PINSIRITE": "Pinsirite",
"RAYQUAZITE": "Rayquazite",
"SABLENITE": "Sablenite",
"SALAMENCITE": "Salamencite",
"SCEPTILITE": "Sceptilite",
"SCIZORITE": "Scizorite",
"SHARPEDONITE": "Sharpedonite",
"SLOWBRONITE": "Slowbronite",
"STEELIXITE": "Steelixite",
"SWAMPERTITE": "Swampertite",
"TYRANITARITE": "Tyranitarite",
"VENUSAURITE": "Venusaurite",
"ABOMASITE": "Abomasita",
"ABSOLITE": "Absolita",
"AERODACTYLITE": "Aerodactylita",
"AGGRONITE": "Aggronita",
"ALAKAZITE": "Alakazita",
"ALTARIANITE": "Altarianita",
"AMPHAROSITE": "Ampharosita",
"AUDINITE": "Audinita",
"BANETTITE": "Banettita",
"BEEDRILLITE": "Beedrillita",
"BLASTOISINITE": "Blastoisinita",
"BLAZIKENITE": "Blazikenita",
"CAMERUPTITE": "Cameruptita",
"CHARIZARDITE X": "Charizardita X",
"CHARIZARDITE Y": "Charizardita Y",
"DIANCITE": "Diancita",
"GALLADITE": "Galladita",
"GARCHOMPITE": "Garchompita",
"GARDEVOIRITE": "Gardevoirita",
"GENGARITE": "Gengarita",
"GLALITITE": "Glalitita",
"GYARADOSITE": "Gyaradosita",
"HERACRONITE": "Heracronita",
"HOUNDOOMINITE": "Houndoominita",
"KANGASKHANITE": "Kangaskhanita",
"LATIASITE": "Latiasita",
"LATIOSITE": "Latiosita",
"LOPUNNITE": "Lopunnita",
"LUCARIONITE": "Lucarionita",
"MANECTITE": "Manectita",
"MAWILITE": "Mawilita",
"MEDICHAMITE": "Medichamita",
"METAGROSSITE": "Metagrossita",
"MEWTWONITE X": "Mewtwonita X",
"MEWTWONITE Y": "Mewtwonita Y",
"PIDGEOTITE": "Pidgeotita",
"PINSIRITE": "Pinsirita",
"SABLENITE": "Sablenita",
"RAYQUAZITE": "Rayquazita",
"SALAMENCITE": "Salamencita",
"SCEPTILITE": "Sceptilita",
"SCIZORITE": "Scizorita",
"SHARPEDONITE": "Sharpedonita",
"SLOWBRONITE": "Slowbronita",
"STEELIXITE": "Steelixita",
"SWAMPERTITE": "Swampertita",
"TYRANITARITE": "Tyranitarita",
"VENUSAURITE": "Venusaurita",
"BLUE_ORB": "Blue Orb",
"RED_ORB": "Red Orb",
"SHARP_METEORITE": "Sharp Meteorite",
"HARD_METEORITE": "Hard Meteorite",
"SMOOTH_METEORITE": "Smooth Meteorite",
"ADAMANT_CRYSTAL": "Adamant Crystal",
"LUSTROUS_ORB": "Lustrous Orb",
"GRISEOUS_CORE": "Griseous Core",
"REVEAL_GLASS": "Reveal Glass",
"GRACIDEA": "Gracidea",
"MAX_MUSHROOMS": "Max Mushrooms",
"DARK_STONE": "Dark Stone",
"LIGHT_STONE": "Light Stone",
"PRISON_BOTTLE": "Prison Bottle",
"N_LUNARIZER": "N Lunarizer",
"N_SOLARIZER": "N Solarizer",
"RUSTED_SWORD": "Rusted Sword",
"RUSTED_SHIELD": "Rusted Shield",
"ICY_REINS_OF_UNITY": "Icy Reins Of Unity",
"SHADOW_REINS_OF_UNITY": "Shadow Reins Of Unity",
"WELLSPRING_MASK": "Wellspring Mask",
"HEARTHFLAME_MASK": "Hearthflame Mask",
"CORNERSTONE_MASK": "Cornerstone Mask",
"SHOCK_DRIVE": "Shock Drive",
"BURN_DRIVE": "Burn Drive",
"CHILL_DRIVE": "Chill Drive",
"DOUSE_DRIVE": "Douse Drive",
},
TeraType: {
"UNKNOWN": "Unknown",
"NORMAL": "Normal",
"FIGHTING": "Fighting",
"FLYING": "Flying",
"POISON": "Poison",
"GROUND": "Ground",
"ROCK": "Rock",
"BUG": "Bug",
"GHOST": "Ghost",
"STEEL": "Steel",
"FIRE": "Fire",
"WATER": "Water",
"GRASS": "Grass",
"ELECTRIC": "Electric",
"PSYCHIC": "Psychic",
"ICE": "Ice",
"DRAGON": "Dragon",
"DARK": "Dark",
"FAIRY": "Fairy",
"STELLAR": "Stellar",
"BLUE_ORB": "Orbe Azul",
"RED_ORB": "Orbe Vermelha",
"SHARP_METEORITE": "Meteorito Afiado",
"HARD_METEORITE": "Meteorito Duro",
"SMOOTH_METEORITE": " Meteorito Liso",
"ADAMANT_CRYSTAL": "Cristal Adamante",
"LUSTROUS_ORB": "Orbe Pérola",
"GRISEOUS_CORE": "Núcleo Platinado",
"REVEAL_GLASS": "Espelho da Verdade",
"GRACIDEA": "Gracídea",
"MAX_MUSHROOMS": "Cogumax",
"DARK_STONE": "Pedra das Trevas",
"LIGHT_STONE": "Pedra da Luz",
"PRISON_BOTTLE": "Garrafa Prisão",
"N_LUNARIZER": "Lunarizador N",
"N_SOLARIZER": "Solarizador N",
"RUSTED_SWORD": "Espada Enferrujada",
"RUSTED_SHIELD": "Escudo Enferrujado",
"ICY_REINS_OF_UNITY": "Rédeas de Gelo da União",
"SHADOW_REINS_OF_UNITY": "Rédeas Sombrias da União",
"WELLSPRING_MASK": "Máscara Nascente",
"HEARTHFLAME_MASK": "Máscara Fornalha",
"CORNERSTONE_MASK": "Máscara Alicerce",
"SHOCK_DRIVE": "MagneDisco",
"BURN_DRIVE": "IgneDisco",
"CHILL_DRIVE": "CrioDisco",
"DOUSE_DRIVE": "HidroDisco",
},
} as const;

View File

@ -3583,7 +3583,7 @@ export const move: MoveTranslationEntries = {
},
"revivalBlessing": {
name: "Revival Blessing",
effect: "O usuário concede uma bênção amorosa, revivendo um Pokémon da equipe que tenha desmaiado e restaurando metade do máximo de PS desse Pokémon."
effect: "O usuário concede uma bênção amorosa, reanimando um Pokémon da equipe que tenha desmaiado e restaurando metade do máximo de PS desse Pokémon."
},
"saltCure": {
name: "Salt Cure",

View File

@ -4,7 +4,7 @@ export const pokeball: SimpleTranslationEntries = {
"pokeBall": "Poké Bola",
"greatBall": "Grande Bola",
"ultraBall": "Ultra Bola",
"rogueBall": "Rogue Bola",
"masterBall": "Master Bola",
"luxuryBall": "Bola de Luxo",
"rogueBall": "Bola Rogue",
"masterBall": "Bola Mestra",
"luxuryBall": "Bola Luxo",
} as const;

View File

@ -0,0 +1,41 @@
import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: {
"HP": "PS",
"HPshortened": "PS",
"ATK": "Ataque",
"ATKshortened": "Ata",
"DEF": "Defesa",
"DEFshortened": "Def",
"SPATK": "At. Esp.",
"SPATKshortened": "AtEsp",
"SPDEF": "Def. Esp.",
"SPDEFshortened": "DefEsp",
"SPD": "Veloc.",
"SPDshortened": "Veloc."
},
Type: {
"UNKNOWN": "Desconhecido",
"NORMAL": "Normal",
"FIGHTING": "Lutador",
"FLYING": "Voador",
"POISON": "Veneno",
"GROUND": "Terra",
"ROCK": "Pedra",
"BUG": "Inseto",
"GHOST": "Fantasma",
"STEEL": "Aço",
"FIRE": "Fogo",
"WATER": "Água",
"GRASS": "Grama",
"ELECTRIC": "Elétrico",
"PSYCHIC": "Psíquico",
"ICE": "Gelo",
"DRAGON": "Dragão",
"DARK": "Sombrio",
"FAIRY": "Fada",
"STELLAR": "Estelar"
},
} as const;

View File

@ -1,16 +0,0 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const pokemonStat: SimpleTranslationEntries = {
"HP": "PS",
"HPshortened": "PS",
"ATK": "Ataque",
"ATKshortened": "Ata",
"DEF": "Defesa",
"DEFshortened": "Def",
"SPATK": "At. Esp.",
"SPATKshortened": "AtEsp",
"SPDEF": "Def. Esp.",
"SPDEFshortened": "DefEsp",
"SPD": "Veloc.",
"SPDshortened": "Veloc."
} as const;

View File

@ -0,0 +1,37 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const splashMessages: SimpleTranslationEntries = {
"battlesWon": "Batalhas Ganhas!",
"joinTheDiscord": "Junte-se ao Discord!",
"infiniteLevels": "Níveis Infinitos!",
"everythingStacks": "Tudo Acumula!",
"optionalSaveScumming": "Você Pode Dar F5!",
"biomes": "35 Biomas!",
"openSource": "Código Aberto!",
"playWithSpeed": "Jogue na Velocidade 5x!",
"liveBugTesting": "Testamos os Bugs Ao Vivo!",
"heavyInfluence": "Grande Influência de RoR2!",
"pokemonRiskAndPokemonRain": "Pokémon Risk e Pokémon Rain!",
"nowWithMoreSalt": "O Choro é Livre!",
"infiniteFusionAtHome": "Infinite Fusion da Shopee!",
"brokenEggMoves": "Mov. de Ovo Apelões!",
"magnificent": "Magnífico!",
"mubstitute": "Mubstituto!",
"thatsCrazy": "Que Doidera!",
"oranceJuice": "Suco de Laranja!",
"questionableBalancing": "Balanceamento Questionável!",
"coolShaders": "Shader Maneiros!",
"aiFree": "Livre de IA!",
"suddenDifficultySpikes": "Ficou Difícil do Nada!",
"basedOnAnUnfinishedFlashGame": "Baseado num Jogo Online Inacabado!",
"moreAddictiveThanIntended": "Mais Viciante do que Planejado!",
"mostlyConsistentSeeds": "Consistente (na Maioria das Vezes)!",
"achievementPointsDontDoAnything": "Pontos de Conquista Não Fazem Nada!",
"youDoNotStartAtLevel": "Você Não Começa no Nível 2000!",
"dontTalkAboutTheManaphyEggIncident": "Não Fale do Incidente do Ovo de Manaphy!",
"alsoTryPokengine": "Também Jogue Pokéngine!",
"alsoTryEmeraldRogue": "Também Jogue Emerald Rogue!",
"alsoTryRadicalRed": "Também Jogue Radical Red!",
"eeveeExpo": "Eevee Expo!",
"ynoproject": "YNOproject!",
} as const;

View File

@ -16,10 +16,10 @@ export const titles: SimpleTranslationEntries = {
export const trainerClasses: SimpleTranslationEntries = {
"ace_trainer": "Trinador Ás",
"ace_trainer_female": "Trinadora Ás",
"ace_duo": "Ace Duo",
"ace_duo": "Dupla Ás",
"artist": "Artista",
"artist_female": "Artista",
"backpackers": "Backpackers",
"backpackers": "Mochileiros",
"backers": "Torcedores",
"backpacker": "Mochileiro",
"backpacker_female": "Mochileira",
@ -31,36 +31,36 @@ export const trainerClasses: SimpleTranslationEntries = {
"black_belt": "Faixa Preta",
"breeder": "Criador",
"breeder_female": "Criadora",
"breeders": "Breeders",
"breeders": "Criadores",
"clerk": "Funcionário",
"clerk_female": "Funcionária",
"colleagues": "Colleagues",
"crush_kin": "Crush Kin",
"colleagues": "Funcionários",
"crush_kin": "Casal Lutador",
"cyclist": "Ciclista",
"cyclist_female": "Ciclista",
"cyclists": "Cyclists",
"cyclists": "Ciclistas",
"dancer": "Dançarino",
"dancer_female": "Dançarina",
"depot_agent": "Ferroviário",
"doctor": "Doutor",
"doctor_female": "Doutora",
"fisherman": "Pescador",
"fisherman_female": "Pescadora",
"gentleman": "Gentleman",
"fishermen": "Pescador",
"fishermen_female": "Pescadora",
"gentleman": "Cavalheiro",
"guitarist": "Guitarrista",
"guitarist_female": "Guitarrista",
"harlequin": "Arlequim",
"hiker": "Montanhista",
"hooligans": "Bandoleiro",
"hoopster": "Jogador de basquete",
"infielder": "Jogador de baseball",
"hoopster": "Jogador de Basquete",
"infielder": "Jogador de Baseball",
"janitor": "Faxineiro",
"lady": "Dama",
"lass": "Senhorita",
"linebacker": "Zagueiro",
"maid": "Doméstica",
"madame": "Madame",
"medical_team": "Medical Team",
"medical_team": "Equipe Médica",
"musician": "Músico",
"hex_maniac": "Ocultista",
"nurse": "Enfermeira",
@ -68,48 +68,48 @@ export const trainerClasses: SimpleTranslationEntries = {
"officer": "Policial",
"parasol_lady": "Moça de Sombrinha",
"pilot": "Piloto",
"pokefan": "Pokefã",
"pokefan_family": "Poké Fan Family",
"poké_fan": "Pokefã",
"poké_fan_family": "Família Pokefã",
"preschooler": "Menino do Prezinho",
"preschooler_female": "Menina do Prezinho",
"preschoolers": "Preschoolers",
"preschoolers": "Alunos do Prezinho",
"psychic": "Médium",
"psychic_female": "Médium",
"psychics": "Psychics",
"pokémon_ranger": "Pokémon Ranger",
"pokémon_rangers": "Pokémon Ranger",
"psychics": "Médiuns",
"pokémon_ranger": "Guarda Pokémon",
"pokémon_rangers": "Guardas Pokémon",
"ranger": "Guarda",
"restaurant_staff": "Restaurant Staff",
"rich": "Rich",
"rich_female": "Rich",
"rich_boy": "Rich Boy",
"rich_couple": "Rich Couple",
"rich_kid": "Rich Kid",
"rich_kid_female": "Rich Kid",
"rich_kids": "Rich Kids",
"restaurant_staff": "Equipe do Restaurante",
"rich": "Burguês",
"rich_female": "Burguesa",
"rich_boy": "Riquinho",
"rich_couple": "Casal Burguês",
"rich_kid": "Garoto Rico",
"rich_kid_female": "Garota Rica",
"rich_kids": "Garotos Ricos",
"roughneck": "Arruaceiro",
"scientist": "Cientista",
"scientist_female": "Cientista",
"scientists": "Scientists",
"scientists": "Cientistas",
"smasher": "Tenista",
"snow_worker": "Operário da Neve",
"snow_worker_female": "Operária da Neve",
"striker": "Atacante",
"school_kid": "Estudante",
"school_kid_female": "Estudante",
"school_kids": "School Kids",
"school_kids": "Estudantes",
"swimmer": "Nadador",
"swimmer_female": "Nadadora",
"swimmers": "Swimmers",
"swimmers": "Nadadores",
"twins": "Gêmeos",
"veteran": "Veterano",
"veteran_female": "Veterana",
"veteran_duo": "Veteran Duo",
"veteran_duo": "Dupla Veterana",
"waiter": "Garçom",
"waitress": "Garçonete",
"worker": "Operário",
"worker_female": "Operária",
"workers": "Workers",
"workers": "Operários",
"youngster": "Jovem",
} as const;

View File

@ -0,0 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Best",
"ivFantastic": "Fantastic",
"ivVeryGood": "Very Good",
"ivPrettyGood": "Pretty Good",
"ivDecent": "Decent",
"ivNoGood": "No Good",
} as const;

View File

@ -2,47 +2,47 @@ import { BerryTranslationEntries } from "#app/plugins/i18n";
export const berry: BerryTranslationEntries = {
"SITRUS": {
name: "Sitrus Berry",
effect: "Restores 25% HP if HP is below 50%",
name: "文柚果",
effect: "HP低于50%时回复最大HP的25%",
},
"LUM": {
name: "Lum Berry",
effect: "Cures any non-volatile status condition and confusion",
name: "木子果",
effect: "治愈任何异常状态和混乱状态",
},
"ENIGMA": {
name: "Enigma Berry",
effect: "Restores 25% HP if hit by a super effective move",
name: "谜芝果",
effect: "受到效果绝佳的招式攻击时回复25%最大HP",
},
"LIECHI": {
name: "Liechi Berry",
effect: "Raises Attack if HP is below 25%",
name: "枝荔果",
effect: "HP低于25%时,攻击提升一个等级",
},
"GANLON": {
name: "Ganlon Berry",
effect: "Raises Defense if HP is below 25%",
name: "龙睛果",
effect: "HP低于25%时,防御提升一个等级",
},
"PETAYA": {
name: "Petaya Berry",
effect: "Raises Sp. Atk if HP is below 25%",
name: "龙火果",
effect: "HP低于25%时,特攻提升一个等级",
},
"APICOT": {
name: "Apicot Berry",
effect: "Raises Sp. Def if HP is below 25%",
name: "杏仔果",
effect: "HP低于25%时,特防提升一个等级",
},
"SALAC": {
name: "Salac Berry",
effect: "Raises Speed if HP is below 25%",
name: "沙鳞果",
effect: "HP低于25%时,速度提升一个等级",
},
"LANSAT": {
name: "Lansat Berry",
effect: "Raises critical hit ratio if HP is below 25%",
name: "兰萨果",
effect: "HP低于25%时,击中要害率提升两个等级",
},
"STARF": {
name: "Starf Berry",
effect: "Sharply raises a random stat if HP is below 25%",
name: "星桃果",
effect: "HP低于25%时,提高随机一项能力两个等级",
},
"LEPPA": {
name: "Leppa Berry",
effect: "Restores 10 PP to a move if its PP reaches 0",
name: "苹野果",
effect: "有招式的PP降到0时恢复该招式10PP",
},
} as const;

View File

@ -12,12 +12,13 @@ import { move } from "./move";
import { nature } from "./nature";
import { pokeball } from "./pokeball";
import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { pokemonInfo } from "./pokemon-info";
// import { splashMessages } from "./splash-messages";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { titles, trainerClasses, trainerNames } from "./trainers";
import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
@ -36,7 +37,7 @@ export const zhCnConfig = {
nature: nature,
pokeball: pokeball,
pokemon: pokemon,
pokemonStat: pokemonStat,
pokemonInfo: pokemonInfo,
// splashMessages: splashMessages,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
@ -44,5 +45,6 @@ export const zhCnConfig = {
trainerNames: trainerNames,
tutorial: tutorial,
weather: weather,
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
}

View File

@ -384,26 +384,4 @@ export const modifierType: ModifierTypeTranslationEntries = {
"CHILL_DRIVE": "冰冻卡带",
"DOUSE_DRIVE": "水流卡带",
},
TeraType: {
"UNKNOWN": "Unknown",
"NORMAL": "一般",
"FIGHTING": "格斗",
"FLYING": "飞行",
"POISON": "毒",
"GROUND": "地面",
"ROCK": "岩石",
"BUG": "虫",
"GHOST": "幽灵",
"STEEL": "钢",
"FIRE": "火",
"WATER": "水",
"GRASS": "草",
"ELECTRIC": "电",
"PSYCHIC": "超能力",
"ICE": "冰",
"DRAGON": "龙",
"DARK": "恶",
"FAIRY": "妖精",
"STELLAR": "星晶",
},
} as const;

View File

@ -0,0 +1,41 @@
import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: {
"HP": "最大HP",
"HPshortened": "最大HP",
"ATK": "攻击",
"ATKshortened": "攻击",
"DEF": "防御",
"DEFshortened": "防御",
"SPATK": "特攻",
"SPATKshortened": "特攻",
"SPDEF": "特防",
"SPDEFshortened": "特防",
"SPD": "速度",
"SPDshortened": "速度"
},
Type: {
"UNKNOWN": "Unknown",
"NORMAL": "一般",
"FIGHTING": "格斗",
"FLYING": "飞行",
"POISON": "毒",
"GROUND": "地面",
"ROCK": "岩石",
"BUG": "虫",
"GHOST": "幽灵",
"STEEL": "钢",
"FIRE": "火",
"WATER": "水",
"GRASS": "草",
"ELECTRIC": "电",
"PSYCHIC": "超能力",
"ICE": "冰",
"DRAGON": "龙",
"DARK": "恶",
"FAIRY": "妖精",
"STELLAR": "星晶",
},
} as const;

View File

@ -1,16 +0,0 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const pokemonStat: SimpleTranslationEntries = {
"HP": "最大HP",
"HPshortened": "最大HP",
"ATK": "攻击",
"ATKshortened": "攻击",
"DEF": "防御",
"DEFshortened": "防御",
"SPATK": "特攻",
"SPATKshortened": "特攻",
"SPDEF": "特防",
"SPDEFshortened": "特防",
"SPD": "速度",
"SPDshortened": "速度"
} as const;

View File

@ -511,7 +511,7 @@ export class AttackTypeBoosterModifierType extends PokemonHeldItemModifierType i
getDescription(scene: BattleScene): string {
// TODO: Need getTypeName?
return i18next.t(`modifierType:ModifierType.AttackTypeBoosterModifierType.description`, { moveType: Utils.toReadableString(Type[this.moveType]) });
return i18next.t(`modifierType:ModifierType.AttackTypeBoosterModifierType.description`, { moveType: i18next.t(`pokemonInfo:Type.${Type[this.moveType]}`) });
}
getPregenArgs(): any[] {
@ -898,11 +898,11 @@ export class TerastallizeModifierType extends PokemonHeldItemModifierType implem
}
get name(): string {
return i18next.t(`modifierType:ModifierType.TerastallizeModifierType.name`, { teraType: i18next.t(`modifierType:TeraType.${Type[this.teraType]}`) });
return i18next.t(`modifierType:ModifierType.TerastallizeModifierType.name`, { teraType: i18next.t(`pokemonInfo:Type.${Type[this.teraType]}`) });
}
getDescription(scene: BattleScene): string {
return i18next.t(`modifierType:ModifierType.TerastallizeModifierType.description`, { teraType: i18next.t(`modifierType:TeraType.${Type[this.teraType]}`) });
return i18next.t(`modifierType:ModifierType.TerastallizeModifierType.description`, { teraType: i18next.t(`pokemonInfo:Type.${Type[this.teraType]}`) });
}
getPregenArgs(): any[] {
@ -1194,11 +1194,11 @@ const modifierPool: ModifierPool = {
return thresholdPartyMemberCount;
}, 3),
new WeightedModifierType(modifierTypes.ETHER, (party: Pokemon[]) => {
const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMove().pp - m.ppUsed) <= 5).length).length, 3);
const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMovePp() - m.ppUsed) <= 5).length).length, 3);
return thresholdPartyMemberCount * 3;
}, 9),
new WeightedModifierType(modifierTypes.MAX_ETHER, (party: Pokemon[]) => {
const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMove().pp - m.ppUsed) <= 5).length).length, 3);
const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMovePp() - m.ppUsed) <= 5).length).length, 3);
return thresholdPartyMemberCount;
}, 3),
new WeightedModifierType(modifierTypes.LURE, 2),
@ -1237,11 +1237,11 @@ const modifierPool: ModifierPool = {
return thresholdPartyMemberCount;
}, 3),
new WeightedModifierType(modifierTypes.ELIXIR, (party: Pokemon[]) => {
const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMove().pp - m.ppUsed) <= 5).length).length, 3);
const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMovePp() - m.ppUsed) <= 5).length).length, 3);
return thresholdPartyMemberCount * 3;
}, 9),
new WeightedModifierType(modifierTypes.MAX_ELIXIR, (party: Pokemon[]) => {
const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMove().pp - m.ppUsed) <= 5).length).length, 3);
const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMovePp() - m.ppUsed) <= 5).length).length, 3);
return thresholdPartyMemberCount;
}, 3),
new WeightedModifierType(modifierTypes.DIRE_HIT, 4),

View File

@ -3545,11 +3545,13 @@ export class GameOverModifierRewardPhase extends ModifierRewardPhase {
this.scene.addModifier(newModifier).then(() => {
this.scene.playSound('level_up_fanfare');
this.scene.ui.setMode(Mode.MESSAGE);
this.scene.ui.fadeIn(250).then(() => {
this.scene.ui.showText(`You received\n${newModifier.type.name}!`, null, () => {
this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true));
resolve();
}, null, true, 1500);
});
});
})
}
}

View File

@ -43,7 +43,10 @@ export interface ModifierTypeTranslationEntries {
BaseStatBoosterItem: SimpleTranslationEntries,
EvolutionItem: SimpleTranslationEntries,
FormChangeItem: SimpleTranslationEntries,
TeraType: SimpleTranslationEntries,
}
export interface PokemonInfoTranslationEntries {
Stat: SimpleTranslationEntries,
Type: SimpleTranslationEntries,
}
export interface BerryTranslationEntry {
@ -134,7 +137,7 @@ declare module 'i18next' {
ability: AbilityTranslationEntries;
pokeball: SimpleTranslationEntries;
pokemon: SimpleTranslationEntries;
pokemonStat: SimpleTranslationEntries;
pokemonInfo: PokemonInfoTranslationEntries;
commandUiHandler: SimpleTranslationEntries;
fightUiHandler: SimpleTranslationEntries;
titles: SimpleTranslationEntries;
@ -148,6 +151,7 @@ declare module 'i18next' {
egg: SimpleTranslationEntries;
weather: SimpleTranslationEntries;
modifierType: ModifierTypeTranslationEntries;
battleMessageUiHandler: SimpleTranslationEntries;
berry: BerryTranslationEntries;
};
}

View File

@ -260,8 +260,23 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
if (!this.player) {
const dexEntry = pokemon.scene.gameData.dexData[pokemon.species.speciesId];
this.ownedIcon.setVisible(!!dexEntry.caughtAttr);
const dexAttr = pokemon.getDexAttr();
if ((dexEntry.caughtAttr & dexAttr) < dexAttr || !(pokemon.scene.gameData.starterData[pokemon.species.getRootSpeciesId()].abilityAttr & Math.pow(2, pokemon.abilityIndex)))
const opponentPokemonDexAttr = pokemon.getDexAttr();
// Check if Player owns all genders and forms of the Pokemon
const missingDexAttrs = ((dexEntry.caughtAttr & opponentPokemonDexAttr) < opponentPokemonDexAttr);
/**
* If the opposing Pokemon only has 1 normal ability and is using the hidden ability it should have the same behavior
* if it had 2 normal abilities. This code checks if that is the case and uses the correct opponent Pokemon abilityIndex (2)
* for calculations so it aligns with where the hidden ability is stored in the starter data's abilityAttr (4)
*/
const opponentPokemonOneNormalAbility = (pokemon.species.getAbilityCount() === 2);
const opponentPokemonAbilityIndex = (opponentPokemonOneNormalAbility && pokemon.abilityIndex === 1) ? 2 : pokemon.abilityIndex;
const opponentPokemonAbilityAttr = Math.pow(2, opponentPokemonAbilityIndex);
const rootFormHasHiddenAbility = pokemon.scene.gameData.starterData[pokemon.species.getRootSpeciesId()].abilityAttr & opponentPokemonAbilityAttr;
if (missingDexAttrs || !rootFormHasHiddenAbility)
this.ownedIcon.setTint(0x808080);
if (this.boss)

View File

@ -7,6 +7,7 @@ import { getStatName, Stat } from "../data/pokemon-stat";
import { addWindow } from "./ui-theme";
import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext";
import {Button} from "../enums/buttons";
import i18next from '../plugins/i18n';
export default class BattleMessageUiHandler extends MessageUiHandler {
private levelUpStatsContainer: Phaser.GameObjects.Container;
@ -237,17 +238,17 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
};
if (value > 30)
return coloredText('Best', value > starterIvs[typeIv]);
return coloredText(i18next.t('battleMessageUiHandler:ivBest'), value > starterIvs[typeIv]);
if (value === 30)
return coloredText('Fantastic', value > starterIvs[typeIv]);
return coloredText(i18next.t('battleMessageUiHandler:ivFantastic'), value > starterIvs[typeIv]);
if (value > 20)
return coloredText('Very Good', value > starterIvs[typeIv]);
return coloredText(i18next.t('battleMessageUiHandler:ivVeryGood'), value > starterIvs[typeIv]);
if (value > 10)
return coloredText('Pretty Good', value > starterIvs[typeIv]);
return coloredText(i18next.t('battleMessageUiHandler:ivPrettyGood'), value > starterIvs[typeIv]);
if (value > 0)
return coloredText('Decent', value > starterIvs[typeIv]);
return coloredText(i18next.t('battleMessageUiHandler:ivDecent'), value > starterIvs[typeIv]);
return coloredText('No Good', value > starterIvs[typeIv]);
return coloredText(i18next.t('battleMessageUiHandler:ivNoGood'), value > starterIvs[typeIv]);
}
showNameText(name: string): void {