Merge branch 'beta' into pr-illusion

This commit is contained in:
Lylian BALL 2024-08-09 18:06:28 +02:00 committed by GitHub
commit 60d442b873
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
139 changed files with 1869 additions and 2051 deletions

View File

@ -13,6 +13,7 @@
"test:cov": "vitest run --project pre && vitest run --project main --coverage", "test:cov": "vitest run --project pre && vitest run --project main --coverage",
"test:watch": "vitest run --project pre && vitest watch --project main --coverage", "test:watch": "vitest run --project pre && vitest watch --project main --coverage",
"test:silent": "vitest run --project pre && vitest run --project main --silent", "test:silent": "vitest run --project pre && vitest run --project main --silent",
"typecheck": "tsc --noEmit",
"eslint": "eslint --fix .", "eslint": "eslint --fix .",
"eslint-ci": "eslint .", "eslint-ci": "eslint .",
"docs": "typedoc", "docs": "typedoc",

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

View File

@ -6,7 +6,7 @@ import { BattleStat, getBattleStatName } from "./battle-stat";
import { MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../phases"; import { MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../phases";
import { getPokemonNameWithAffix } from "../messages"; import { getPokemonNameWithAffix } from "../messages";
import { Weather, WeatherType } from "./weather"; import { Weather, WeatherType } from "./weather";
import { BattlerTag, GroundedTag, GulpMissileTag } from "./battler-tags"; import { BattlerTag, GroundedTag, GulpMissileTag, SemiInvulnerableTag } from "./battler-tags";
import { StatusEffect, getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect"; import { StatusEffect, getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect";
import { Gender } from "./gender"; import { Gender } from "./gender";
import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, FlinchAttr, OneHitKOAttr, HitHealAttr, allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, applyMoveAttrs, IncrementMovePriorityAttr, VariableMoveTypeAttr, RandomMovesetMoveAttr, RandomMoveAttr, NaturePowerAttr, CopyMoveAttr, MoveAttr, MultiHitAttr, ChargeAttr, SacrificialAttr, SacrificialAttrOnHit } from "./move"; import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, FlinchAttr, OneHitKOAttr, HitHealAttr, allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, applyMoveAttrs, IncrementMovePriorityAttr, VariableMoveTypeAttr, RandomMovesetMoveAttr, RandomMoveAttr, NaturePowerAttr, CopyMoveAttr, MoveAttr, MultiHitAttr, ChargeAttr, SacrificialAttr, SacrificialAttrOnHit } from "./move";
@ -517,7 +517,7 @@ export class PostDefendGulpMissileAbAttr extends PostDefendAbAttr {
*/ */
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): boolean | Promise<boolean> { applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): boolean | Promise<boolean> {
const battlerTag = pokemon.getTag(GulpMissileTag); const battlerTag = pokemon.getTag(GulpMissileTag);
if (!battlerTag || move.category === MoveCategory.STATUS) { if (!battlerTag || move.category === MoveCategory.STATUS || pokemon.getTag(SemiInvulnerableTag)) {
return false; return false;
} }
@ -5257,9 +5257,7 @@ export function initAbilities() {
.attr(NoFusionAbilityAbAttr) .attr(NoFusionAbilityAbAttr)
.attr(UncopiableAbilityAbAttr) .attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr) .attr(UnswappableAbilityAbAttr)
.attr(PostDefendGulpMissileAbAttr) .attr(PostDefendGulpMissileAbAttr),
// Does not transform when Surf/Dive misses/is protected
.partial(),
new Ability(Abilities.STALWART, 8) new Ability(Abilities.STALWART, 8)
.attr(BlockRedirectAbAttr), .attr(BlockRedirectAbAttr),
new Ability(Abilities.STEAM_ENGINE, 8) new Ability(Abilities.STEAM_ENGINE, 8)

View File

@ -1,6 +1,6 @@
//import { battleAnimRawData } from "./battle-anim-raw-data"; //import { battleAnimRawData } from "./battle-anim-raw-data";
import BattleScene from "../battle-scene"; import BattleScene from "../battle-scene";
import { AttackMove, ChargeAttr, DelayedAttackAttr, MoveFlags, SelfStatusMove, allMoves } from "./move"; import { AttackMove, BeakBlastHeaderAttr, ChargeAttr, DelayedAttackAttr, MoveFlags, SelfStatusMove, allMoves } from "./move";
import Pokemon from "../field/pokemon"; import Pokemon from "../field/pokemon";
import * as Utils from "../utils"; import * as Utils from "../utils";
import { BattlerIndex } from "../battle"; import { BattlerIndex } from "../battle";
@ -485,7 +485,8 @@ export function initMoveAnim(scene: BattleScene, move: Moves): Promise<void> {
const fetchAnimAndResolve = (move: Moves) => { const fetchAnimAndResolve = (move: Moves) => {
scene.cachedFetch(`./battle-anims/${moveName}.json`) scene.cachedFetch(`./battle-anims/${moveName}.json`)
.then(response => { .then(response => {
if (!response.ok) { const contentType = response.headers.get("content-type");
if (!response.ok || contentType?.indexOf("application/json") === -1) {
console.error(`Could not load animation file for move '${moveName}'`, response.status, response.statusText); console.error(`Could not load animation file for move '${moveName}'`, response.status, response.statusText);
populateMoveAnim(move, moveAnims.get(defaultMoveAnim)); populateMoveAnim(move, moveAnims.get(defaultMoveAnim));
return resolve(); return resolve();
@ -499,7 +500,9 @@ export function initMoveAnim(scene: BattleScene, move: Moves): Promise<void> {
} else { } else {
populateMoveAnim(move, ba); populateMoveAnim(move, ba);
} }
const chargeAttr = allMoves[move].getAttrs(ChargeAttr)[0] || allMoves[move].getAttrs(DelayedAttackAttr)[0]; const chargeAttr = allMoves[move].getAttrs(ChargeAttr)[0]
|| allMoves[move].getAttrs(DelayedAttackAttr)[0]
|| allMoves[move].getAttrs(BeakBlastHeaderAttr)[0];
if (chargeAttr) { if (chargeAttr) {
initMoveChargeAnim(scene, chargeAttr.chargeAnim).then(() => resolve()); initMoveChargeAnim(scene, chargeAttr.chargeAnim).then(() => resolve());
} else { } else {
@ -570,7 +573,9 @@ export function loadMoveAnimAssets(scene: BattleScene, moveIds: Moves[], startLo
return new Promise(resolve => { return new Promise(resolve => {
const moveAnimations = moveIds.map(m => moveAnims.get(m) as AnimConfig).flat(); const moveAnimations = moveIds.map(m => moveAnims.get(m) as AnimConfig).flat();
for (const moveId of moveIds) { for (const moveId of moveIds) {
const chargeAttr = allMoves[moveId].getAttrs(ChargeAttr)[0] || allMoves[moveId].getAttrs(DelayedAttackAttr)[0]; const chargeAttr = allMoves[moveId].getAttrs(ChargeAttr)[0]
|| allMoves[moveId].getAttrs(DelayedAttackAttr)[0]
|| allMoves[moveId].getAttrs(BeakBlastHeaderAttr)[0];
if (chargeAttr) { if (chargeAttr) {
const moveChargeAnims = chargeAnims.get(chargeAttr.chargeAnim); const moveChargeAnims = chargeAnims.get(chargeAttr.chargeAnim);
moveAnimations.push(moveChargeAnims instanceof AnimConfig ? moveChargeAnims : moveChargeAnims![0]); // TODO: is the bang correct? moveAnimations.push(moveChargeAnims instanceof AnimConfig ? moveChargeAnims : moveChargeAnims![0]); // TODO: is the bang correct?

View File

@ -1,4 +1,4 @@
import { CommonAnim, CommonBattleAnim } from "./battle-anims"; import { ChargeAnim, CommonAnim, CommonBattleAnim, MoveChargeAnim } from "./battle-anims";
import { CommonAnimPhase, MoveEffectPhase, MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangeCallback, StatChangePhase } from "../phases"; import { CommonAnimPhase, MoveEffectPhase, MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangeCallback, StatChangePhase } from "../phases";
import { getPokemonNameWithAffix } from "../messages"; import { getPokemonNameWithAffix } from "../messages";
import Pokemon, { MoveResult, HitResult } from "../field/pokemon"; import Pokemon, { MoveResult, HitResult } from "../field/pokemon";
@ -118,6 +118,44 @@ export class RechargingTag extends BattlerTag {
} }
} }
/**
* BattlerTag representing the "charge phase" of Beak Blast
* Pokemon with this tag will inflict BURN status on any attacker that makes contact.
* @see {@link https://bulbapedia.bulbagarden.net/wiki/Beak_Blast_(move) | Beak Blast}
*/
export class BeakBlastChargingTag extends BattlerTag {
constructor() {
super(BattlerTagType.BEAK_BLAST_CHARGING, [ BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.TURN_END ], 1, Moves.BEAK_BLAST);
}
onAdd(pokemon: Pokemon): void {
// Play Beak Blast's charging animation
new MoveChargeAnim(ChargeAnim.BEAK_BLAST_CHARGING, this.sourceMove, pokemon).play(pokemon.scene);
// Queue Beak Blast's header message
pokemon.scene.queueMessage(i18next.t("moveTriggers:startedHeatingUpBeak", { pokemonName: getPokemonNameWithAffix(pokemon) }));
}
/**
* Inflicts `BURN` status on attackers that make contact, and causes this tag
* to be removed after the source makes a move (or the turn ends, whichever comes first)
* @param pokemon {@linkcode Pokemon} the owner of this tag
* @param lapseType {@linkcode BattlerTagLapseType} the type of functionality invoked in battle
* @returns `true` if invoked with the CUSTOM lapse type; `false` otherwise
*/
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
if (lapseType === BattlerTagLapseType.CUSTOM) {
const effectPhase = pokemon.scene.getCurrentPhase();
if (effectPhase instanceof MoveEffectPhase && effectPhase.move.getMove().hasFlag(MoveFlags.MAKES_CONTACT)) {
const attacker = effectPhase.getPokemon();
attacker.trySetStatus(StatusEffect.BURN, true, pokemon);
}
return true;
}
return super.lapse(pokemon, lapseType);
}
}
export class TrappedTag extends BattlerTag { export class TrappedTag extends BattlerTag {
constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, turnCount: number, sourceMove: Moves, sourceId: number) { constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType, turnCount: number, sourceMove: Moves, sourceId: number) {
super(tagType, lapseType, turnCount, sourceMove, sourceId); super(tagType, lapseType, turnCount, sourceMove, sourceId);
@ -1738,6 +1776,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: number, source
switch (tagType) { switch (tagType) {
case BattlerTagType.RECHARGING: case BattlerTagType.RECHARGING:
return new RechargingTag(sourceMove); return new RechargingTag(sourceMove);
case BattlerTagType.BEAK_BLAST_CHARGING:
return new BeakBlastChargingTag();
case BattlerTagType.FLINCHED: case BattlerTagType.FLINCHED:
return new FlinchedTag(sourceMove); return new FlinchedTag(sourceMove);
case BattlerTagType.INTERRUPTED: case BattlerTagType.INTERRUPTED:

View File

@ -273,11 +273,9 @@ export abstract class Challenge {
* @param valid {@link Utils.BooleanHolder} A BooleanHolder, the value gets set to false if the pokemon isn't allowed. * @param valid {@link Utils.BooleanHolder} A BooleanHolder, the value gets set to false if the pokemon isn't allowed.
* @param dexAttr {@link DexAttrProps} The dex attributes of the pokemon. * @param dexAttr {@link DexAttrProps} The dex attributes of the pokemon.
* @param soft {@link boolean} If true, allow it if it could become a valid pokemon. * @param soft {@link boolean} If true, allow it if it could become a valid pokemon.
* @param checkEvolutions {@link boolean} If true, check the pokemon's future evolutions
* @param checkForms {@link boolean} If true, check the pokemon's alternative forms
* @returns {@link boolean} Whether this function did anything. * @returns {@link boolean} Whether this function did anything.
*/ */
applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false, checkEvolutions?: boolean, checkForms?: boolean): boolean { applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false): boolean {
return false; return false;
} }
@ -405,14 +403,13 @@ export class SingleGenerationChallenge extends Challenge {
super(Challenges.SINGLE_GENERATION, 9); super(Challenges.SINGLE_GENERATION, 9);
} }
applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false, checkEvolutions?: boolean): boolean { applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false): boolean {
const generations = [pokemon.generation]; const generations = [pokemon.generation];
const checkPokemonEvolutions = checkEvolutions ?? true as boolean;
if (soft) { if (soft) {
const speciesToCheck = [pokemon.speciesId]; const speciesToCheck = [pokemon.speciesId];
while (speciesToCheck.length) { while (speciesToCheck.length) {
const checking = speciesToCheck.pop(); const checking = speciesToCheck.pop();
if (checking && pokemonEvolutions.hasOwnProperty(checking) && checkPokemonEvolutions) { if (checking && pokemonEvolutions.hasOwnProperty(checking)) {
pokemonEvolutions[checking].forEach(e => { pokemonEvolutions[checking].forEach(e => {
speciesToCheck.push(e.speciesId); speciesToCheck.push(e.speciesId);
generations.push(getPokemonSpecies(e.speciesId).generation); generations.push(getPokemonSpecies(e.speciesId).generation);
@ -533,22 +530,20 @@ export class SingleTypeChallenge extends Challenge {
super(Challenges.SINGLE_TYPE, 18); super(Challenges.SINGLE_TYPE, 18);
} }
applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false, checkEvolutions?: boolean, checkForms?: boolean): boolean { applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false): boolean {
const speciesForm = getPokemonSpeciesForm(pokemon.speciesId, dexAttr.formIndex); const speciesForm = getPokemonSpeciesForm(pokemon.speciesId, dexAttr.formIndex);
const types = [speciesForm.type1, speciesForm.type2]; const types = [speciesForm.type1, speciesForm.type2];
const checkPokemonEvolutions = checkEvolutions ?? true as boolean;
const checkPokemonForms = checkForms ?? true as boolean;
if (soft) { if (soft) {
const speciesToCheck = [pokemon.speciesId]; const speciesToCheck = [pokemon.speciesId];
while (speciesToCheck.length) { while (speciesToCheck.length) {
const checking = speciesToCheck.pop(); const checking = speciesToCheck.pop();
if (checking && pokemonEvolutions.hasOwnProperty(checking) && checkPokemonEvolutions) { if (checking && pokemonEvolutions.hasOwnProperty(checking)) {
pokemonEvolutions[checking].forEach(e => { pokemonEvolutions[checking].forEach(e => {
speciesToCheck.push(e.speciesId); speciesToCheck.push(e.speciesId);
types.push(getPokemonSpecies(e.speciesId).type1, getPokemonSpecies(e.speciesId).type2); types.push(getPokemonSpecies(e.speciesId).type1, getPokemonSpecies(e.speciesId).type2);
}); });
} }
if (checking && pokemonFormChanges.hasOwnProperty(checking) && checkPokemonForms) { if (checking && pokemonFormChanges.hasOwnProperty(checking)) {
pokemonFormChanges[checking].forEach(f1 => { pokemonFormChanges[checking].forEach(f1 => {
getPokemonSpecies(checking).forms.forEach(f2 => { getPokemonSpecies(checking).forms.forEach(f2 => {
if (f1.formKey === f2.formKey) { if (f1.formKey === f2.formKey) {
@ -746,7 +741,7 @@ export class LowerStarterPointsChallenge extends Challenge {
* @param soft {@link boolean} If true, allow it if it could become a valid pokemon. * @param soft {@link boolean} If true, allow it if it could become a valid pokemon.
* @returns True if any challenge was successfully applied. * @returns True if any challenge was successfully applied.
*/ */
export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType.STARTER_CHOICE, pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean, checkEvolutions?: boolean, checkForms?: boolean): boolean; export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType.STARTER_CHOICE, pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean): boolean;
/** /**
* Apply all challenges that modify available total starter points. * Apply all challenges that modify available total starter points.
* @param gameMode {@link GameMode} The current gameMode * @param gameMode {@link GameMode} The current gameMode
@ -854,7 +849,7 @@ export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType
if (c.value !== 0) { if (c.value !== 0) {
switch (challengeType) { switch (challengeType) {
case ChallengeType.STARTER_CHOICE: case ChallengeType.STARTER_CHOICE:
ret ||= c.applyStarterChoice(args[0], args[1], args[2], args[3], args[4], args[5]); ret ||= c.applyStarterChoice(args[0], args[1], args[2], args[3]);
break; break;
case ChallengeType.STARTER_POINTS: case ChallengeType.STARTER_POINTS:
ret ||= c.applyStarterPoints(args[0]); ret ||= c.applyStarterPoints(args[0]);

View File

@ -1021,6 +1021,22 @@ export class MessageHeaderAttr extends MoveHeaderAttr {
} }
} }
/**
* Header attribute to implement the "charge phase" of Beak Blast at the
* beginning of a turn.
* @see {@link https://bulbapedia.bulbagarden.net/wiki/Beak_Blast_(move) | Beak Blast}
* @see {@linkcode BeakBlastChargingTag}
*/
export class BeakBlastHeaderAttr extends MoveHeaderAttr {
/** Required to initialize Beak Blast's charge animation correctly */
public chargeAnim = ChargeAnim.BEAK_BLAST_CHARGING;
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
user.addTag(BattlerTagType.BEAK_BLAST_CHARGING);
return true;
}
}
export class PreMoveMessageAttr extends MoveAttr { export class PreMoveMessageAttr extends MoveAttr {
private message: string | ((user: Pokemon, target: Pokemon, move: Move) => string); private message: string | ((user: Pokemon, target: Pokemon, move: Move) => string);
@ -2391,24 +2407,21 @@ export class ChargeAttr extends OverrideMoveEffectAttr {
private chargeText: string; private chargeText: string;
private tagType: BattlerTagType | null; private tagType: BattlerTagType | null;
private chargeEffect: boolean; private chargeEffect: boolean;
public sameTurn: boolean;
public followUpPriority: integer | null; public followUpPriority: integer | null;
constructor(chargeAnim: ChargeAnim, chargeText: string, tagType?: BattlerTagType | null, chargeEffect: boolean = false, sameTurn: boolean = false, followUpPriority?: integer) { constructor(chargeAnim: ChargeAnim, chargeText: string, tagType?: BattlerTagType | null, chargeEffect: boolean = false) {
super(); super();
this.chargeAnim = chargeAnim; this.chargeAnim = chargeAnim;
this.chargeText = chargeText; this.chargeText = chargeText;
this.tagType = tagType!; // TODO: is this bang correct? this.tagType = tagType!; // TODO: is this bang correct?
this.chargeEffect = chargeEffect; this.chargeEffect = chargeEffect;
this.sameTurn = sameTurn;
this.followUpPriority = followUpPriority!; // TODO: is this bang correct?
} }
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise<boolean> { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise<boolean> {
return new Promise(resolve => { return new Promise(resolve => {
const lastMove = user.getLastXMoves().find(() => true); const lastMove = user.getLastXMoves().find(() => true);
if (!lastMove || lastMove.move !== move.id || (lastMove.result !== MoveResult.OTHER && (this.sameTurn || lastMove.turn !== user.scene.currentBattle.turn))) { if (!lastMove || lastMove.move !== move.id || (lastMove.result !== MoveResult.OTHER && lastMove.turn !== user.scene.currentBattle.turn)) {
(args[0] as Utils.BooleanHolder).value = true; (args[0] as Utils.BooleanHolder).value = true;
new MoveChargeAnim(this.chargeAnim, move.id, user).play(user.scene, () => { new MoveChargeAnim(this.chargeAnim, move.id, user).play(user.scene, () => {
user.scene.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user))); user.scene.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user)));
@ -2420,13 +2433,6 @@ export class ChargeAttr extends OverrideMoveEffectAttr {
} }
user.pushMoveHistory({ move: move.id, targets: [ target.getBattlerIndex() ], result: MoveResult.OTHER }); user.pushMoveHistory({ move: move.id, targets: [ target.getBattlerIndex() ], result: MoveResult.OTHER });
user.getMoveQueue().push({ move: move.id, targets: [ target.getBattlerIndex() ], ignorePP: true }); user.getMoveQueue().push({ move: move.id, targets: [ target.getBattlerIndex() ], ignorePP: true });
if (this.sameTurn) {
let movesetMove = user.moveset.find(m => m?.moveId === move.id);
if (!movesetMove) { // account for any move that calls a ChargeAttr move when the ChargeAttr move does not exist in moveset
movesetMove = new PokemonMove(move.id, 0, 0, true);
}
user.scene.pushMovePhase(new MovePhase(user.scene, user, [ target.getBattlerIndex() ], movesetMove, true), this.followUpPriority!); // TODO: is this bang correct?
}
user.addTag(BattlerTagType.CHARGING, 1, move.id, user.id); user.addTag(BattlerTagType.CHARGING, 1, move.id, user.id);
resolve(true); resolve(true);
}); });
@ -2736,21 +2742,34 @@ export class InvertStatsAttr extends MoveEffectAttr {
} }
export class ResetStatsAttr extends MoveEffectAttr { export class ResetStatsAttr extends MoveEffectAttr {
private targetAllPokemon: boolean;
constructor(targetAllPokemon: boolean) {
super();
this.targetAllPokemon = targetAllPokemon;
}
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if (!super.apply(user, target, move, args)) { if (!super.apply(user, target, move, args)) {
return false; return false;
} }
for (let s = 0; s < target.summonData.battleStats.length; s++) { if (this.targetAllPokemon) { // Target all pokemon on the field when Freezy Frost or Haze are used
target.summonData.battleStats[s] = 0; const activePokemon = user.scene.getField(true);
} activePokemon.forEach(p => this.resetStats(p));
target.updateInfo(); target.scene.queueMessage(i18next.t("moveTriggers:statEliminated"));
user.updateInfo(); } else { // Affects only the single target when Clear Smog is used
this.resetStats(target);
target.scene.queueMessage(i18next.t("moveTriggers:resetStats", {pokemonName: getPokemonNameWithAffix(target)})); target.scene.queueMessage(i18next.t("moveTriggers:resetStats", {pokemonName: getPokemonNameWithAffix(target)}));
}
return true; return true;
} }
resetStats(pokemon: Pokemon) {
for (let s = 0; s < pokemon.summonData.battleStats.length; s++) {
pokemon.summonData.battleStats[s] = 0;
}
pokemon.updateInfo();
}
} }
/** /**
@ -4350,7 +4369,7 @@ export class AddBattlerTagAttr extends MoveEffectAttr {
*/ */
export class GulpMissileTagAttr extends MoveEffectAttr { export class GulpMissileTagAttr extends MoveEffectAttr {
constructor() { constructor() {
super(true, MoveEffectTrigger.POST_APPLY); super(true);
} }
/** /**
@ -6434,9 +6453,8 @@ export function initMoves() {
new StatusMove(Moves.LIGHT_SCREEN, Type.PSYCHIC, -1, 30, -1, 0, 1) new StatusMove(Moves.LIGHT_SCREEN, Type.PSYCHIC, -1, 30, -1, 0, 1)
.attr(AddArenaTagAttr, ArenaTagType.LIGHT_SCREEN, 5, true) .attr(AddArenaTagAttr, ArenaTagType.LIGHT_SCREEN, 5, true)
.target(MoveTarget.USER_SIDE), .target(MoveTarget.USER_SIDE),
new StatusMove(Moves.HAZE, Type.ICE, -1, 30, -1, 0, 1) new SelfStatusMove(Moves.HAZE, Type.ICE, -1, 30, -1, 0, 1)
.target(MoveTarget.BOTH_SIDES) .attr(ResetStatsAttr, true),
.attr(ResetStatsAttr),
new StatusMove(Moves.REFLECT, Type.PSYCHIC, -1, 20, -1, 0, 1) new StatusMove(Moves.REFLECT, Type.PSYCHIC, -1, 20, -1, 0, 1)
.attr(AddArenaTagAttr, ArenaTagType.REFLECT, 5, true) .attr(AddArenaTagAttr, ArenaTagType.REFLECT, 5, true)
.target(MoveTarget.USER_SIDE), .target(MoveTarget.USER_SIDE),
@ -6951,7 +6969,7 @@ export function initMoves() {
.makesContact(false) .makesContact(false)
.partial(), .partial(),
new AttackMove(Moves.DIVE, Type.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 3) new AttackMove(Moves.DIVE, Type.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 3)
.attr(ChargeAttr, ChargeAnim.DIVE_CHARGING, i18next.t("moveTriggers:hidUnderwater", {pokemonName: "{USER}"}), BattlerTagType.UNDERWATER) .attr(ChargeAttr, ChargeAnim.DIVE_CHARGING, i18next.t("moveTriggers:hidUnderwater", {pokemonName: "{USER}"}), BattlerTagType.UNDERWATER, true)
.attr(GulpMissileTagAttr) .attr(GulpMissileTagAttr)
.ignoresVirtual(), .ignoresVirtual(),
new AttackMove(Moves.ARM_THRUST, Type.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, 0, 3) new AttackMove(Moves.ARM_THRUST, Type.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, 0, 3)
@ -7523,7 +7541,7 @@ export function initMoves() {
new AttackMove(Moves.CHIP_AWAY, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 5) new AttackMove(Moves.CHIP_AWAY, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 5)
.attr(IgnoreOpponentStatChangesAttr), .attr(IgnoreOpponentStatChangesAttr),
new AttackMove(Moves.CLEAR_SMOG, Type.POISON, MoveCategory.SPECIAL, 50, -1, 15, -1, 0, 5) new AttackMove(Moves.CLEAR_SMOG, Type.POISON, MoveCategory.SPECIAL, 50, -1, 15, -1, 0, 5)
.attr(ResetStatsAttr), .attr(ResetStatsAttr, false),
new AttackMove(Moves.STORED_POWER, Type.PSYCHIC, MoveCategory.SPECIAL, 20, 100, 10, -1, 0, 5) new AttackMove(Moves.STORED_POWER, Type.PSYCHIC, MoveCategory.SPECIAL, 20, 100, 10, -1, 0, 5)
.attr(StatChangeCountPowerAttr), .attr(StatChangeCountPowerAttr),
new StatusMove(Moves.QUICK_GUARD, Type.FIGHTING, -1, 15, -1, 3, 5) new StatusMove(Moves.QUICK_GUARD, Type.FIGHTING, -1, 15, -1, 3, 5)
@ -8084,11 +8102,10 @@ export function initMoves() {
.attr(StatChangeAttr, BattleStat.ATK, -1), .attr(StatChangeAttr, BattleStat.ATK, -1),
new StatusMove(Moves.INSTRUCT, Type.PSYCHIC, -1, 15, -1, 0, 7) new StatusMove(Moves.INSTRUCT, Type.PSYCHIC, -1, 15, -1, 0, 7)
.unimplemented(), .unimplemented(),
new AttackMove(Moves.BEAK_BLAST, Type.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, 5, 7) new AttackMove(Moves.BEAK_BLAST, Type.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, -3, 7)
.attr(ChargeAttr, ChargeAnim.BEAK_BLAST_CHARGING, i18next.t("moveTriggers:startedHeatingUpBeak", {pokemonName: "{USER}"}), undefined, false, true, -3) .attr(BeakBlastHeaderAttr)
.ballBombMove() .ballBombMove()
.makesContact(false) .makesContact(false),
.partial(),
new AttackMove(Moves.CLANGING_SCALES, Type.DRAGON, MoveCategory.SPECIAL, 110, 100, 5, -1, 0, 7) new AttackMove(Moves.CLANGING_SCALES, Type.DRAGON, MoveCategory.SPECIAL, 110, 100, 5, -1, 0, 7)
.attr(StatChangeAttr, BattleStat.DEF, -1, true, null, true, false, MoveEffectTrigger.HIT, true) .attr(StatChangeAttr, BattleStat.DEF, -1, true, null, true, false, MoveEffectTrigger.HIT, true)
.soundBased() .soundBased()
@ -8230,7 +8247,7 @@ export function initMoves() {
.makesContact(false) .makesContact(false)
.attr(AddBattlerTagAttr, BattlerTagType.SEEDED), .attr(AddBattlerTagAttr, BattlerTagType.SEEDED),
new AttackMove(Moves.FREEZY_FROST, Type.ICE, MoveCategory.SPECIAL, 100, 90, 10, -1, 0, 7) new AttackMove(Moves.FREEZY_FROST, Type.ICE, MoveCategory.SPECIAL, 100, 90, 10, -1, 0, 7)
.attr(ResetStatsAttr), .attr(ResetStatsAttr, true),
new AttackMove(Moves.SPARKLY_SWIRL, Type.FAIRY, MoveCategory.SPECIAL, 120, 85, 5, -1, 0, 7) new AttackMove(Moves.SPARKLY_SWIRL, Type.FAIRY, MoveCategory.SPECIAL, 120, 85, 5, -1, 0, 7)
.attr(PartyStatusCureAttr, null, Abilities.NONE), .attr(PartyStatusCureAttr, null, Abilities.NONE),
new AttackMove(Moves.VEEVEE_VOLLEY, Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 20, -1, 0, 7) new AttackMove(Moves.VEEVEE_VOLLEY, Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 20, -1, 0, 7)

View File

@ -115,11 +115,11 @@ export function getRandomStatusEffect(statusEffectA: StatusEffect, statusEffectB
* @param statusA The first Status * @param statusA The first Status
* @param statusB The second Status * @param statusB The second Status
*/ */
export function getRandomStatus(statusA: Status, statusB: Status): Status { export function getRandomStatus(statusA: Status | null, statusB: Status | null): Status | null {
if (statusA === undefined || statusA.effect === StatusEffect.NONE || statusA.effect === StatusEffect.FAINT) { if (!statusA || statusA.effect === StatusEffect.NONE || statusA.effect === StatusEffect.FAINT) {
return statusB; return statusB;
} }
if (statusB === undefined || statusB.effect === StatusEffect.NONE || statusB.effect === StatusEffect.FAINT) { if (!statusB || statusB.effect === StatusEffect.NONE || statusB.effect === StatusEffect.FAINT) {
return statusA; return statusA;
} }

View File

@ -66,5 +66,6 @@ export enum BattlerTagType {
IGNORE_GHOST = "IGNORE_GHOST", IGNORE_GHOST = "IGNORE_GHOST",
IGNORE_DARK = "IGNORE_DARK", IGNORE_DARK = "IGNORE_DARK",
GULP_MISSILE_ARROKUDA = "GULP_MISSILE_ARROKUDA", GULP_MISSILE_ARROKUDA = "GULP_MISSILE_ARROKUDA",
GULP_MISSILE_PIKACHU = "GULP_MISSILE_PIKACHU" GULP_MISSILE_PIKACHU = "GULP_MISSILE_PIKACHU",
BEAK_BLAST_CHARGING = "BEAK_BLAST_CHARGING"
} }

View File

@ -1271,6 +1271,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
(Overrides.OPP_PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE && !this.isPlayer())) { (Overrides.OPP_PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE && !this.isPlayer())) {
return true; return true;
} }
// Final boss does not have passive
if (this.scene.currentBattle?.battleSpec === BattleSpec.FINAL_BOSS && this instanceof EnemyPokemon) {
return false;
}
return this.passive || this.isBoss(); return this.passive || this.isBoss();
} }
@ -3801,7 +3807,7 @@ export class PlayerPokemon extends Pokemon {
if (!this.isFainted()) { if (!this.isFainted()) {
// If this Pokemon hasn't fainted, make sure the HP wasn't set over the new maximum // If this Pokemon hasn't fainted, make sure the HP wasn't set over the new maximum
this.hp = Math.min(this.hp, this.stats[Stat.HP]); this.hp = Math.min(this.hp, this.stats[Stat.HP]);
this.status = getRandomStatus(this.status!, pokemon.status!); // Get a random valid status between the two // TODO: are the bangs correct? this.status = getRandomStatus(this.status, pokemon.status); // Get a random valid status between the two
} else if (!pokemon.isFainted()) { } else if (!pokemon.isFainted()) {
// If this Pokemon fainted but the other hasn't, make sure the HP wasn't set to zero // If this Pokemon fainted but the other hasn't, make sure the HP wasn't set to zero
this.hp = Math.max(this.hp, 1); this.hp = Math.max(this.hp, 1);

View File

@ -11,6 +11,7 @@ import { BattleSpec } from "#enums/battle-spec";
import { BattlePhase, MovePhase, PokemonHealPhase } from "./phases"; import { BattlePhase, MovePhase, PokemonHealPhase } from "./phases";
import { getTypeRgb } from "./data/type"; import { getTypeRgb } from "./data/type";
import { getPokemonNameWithAffix } from "./messages"; import { getPokemonNameWithAffix } from "./messages";
import { SemiInvulnerableTag } from "./data/battler-tags";
export class FormChangePhase extends EvolutionPhase { export class FormChangePhase extends EvolutionPhase {
private formChange: SpeciesFormChange; private formChange: SpeciesFormChange;
@ -194,7 +195,7 @@ export class QuietFormChangePhase extends BattlePhase {
const preName = getPokemonNameWithAffix(this.pokemon); const preName = getPokemonNameWithAffix(this.pokemon);
if (!this.pokemon.isOnField()) { if (!this.pokemon.isOnField() || this.pokemon.getTag(SemiInvulnerableTag)) {
this.pokemon.changeForm(this.formChange).then(() => { this.pokemon.changeForm(this.formChange).then(() => {
this.scene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500); this.scene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500);
}); });

View File

@ -93,6 +93,7 @@ export class LoadingScene extends SceneBase {
this.loadImage("shiny_star_small", "ui", "shiny_small.png"); this.loadImage("shiny_star_small", "ui", "shiny_small.png");
this.loadImage("shiny_star_small_1", "ui", "shiny_small_1.png"); this.loadImage("shiny_star_small_1", "ui", "shiny_small_1.png");
this.loadImage("shiny_star_small_2", "ui", "shiny_small_2.png"); this.loadImage("shiny_star_small_2", "ui", "shiny_small_2.png");
this.loadImage("favorite", "ui", "favorite.png");
this.loadImage("passive_bg", "ui", "passive_bg.png"); this.loadImage("passive_bg", "ui", "passive_bg.png");
this.loadAtlas("shiny_icons", "ui"); this.loadAtlas("shiny_icons", "ui");
this.loadImage("ha_capsule", "ui", "ha_capsule.png"); this.loadImage("ha_capsule", "ui", "ha_capsule.png");

View File

@ -16,6 +16,9 @@ export const filterBar: SimpleTranslationEntries = {
"costReduction": "Cost Reduction", "costReduction": "Cost Reduction",
"costReductionUnlocked": "Cost Reduction Unlocked", "costReductionUnlocked": "Cost Reduction Unlocked",
"costReductionLocked": "Cost Reduction Locked", "costReductionLocked": "Cost Reduction Locked",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "Ribbon", "ribbon": "Ribbon",
"hasWon": "Ribbon - Yes", "hasWon": "Ribbon - Yes",
"hasNotWon": "Ribbon - No", "hasNotWon": "Ribbon - No",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "{{pokemonName}}'s Healing Wish\nwas granted!", "sacrificialFullRestore": "{{pokemonName}}'s Healing Wish\nwas granted!",
"invertStats": "{{pokemonName}}'s stat changes\nwere all reversed!", "invertStats": "{{pokemonName}}'s stat changes\nwere all reversed!",
"resetStats": "{{pokemonName}}'s stat changes\nwere eliminated!", "resetStats": "{{pokemonName}}'s stat changes\nwere eliminated!",
"statEliminated": "All stat changes were eliminated!",
"faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.", "faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.",
"copyType": "{{pokemonName}}'s type became the same as\n{{targetPokemonName}}'s type!", "copyType": "{{pokemonName}}'s type became the same as\n{{targetPokemonName}}'s type!",
"suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!", "suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "Toggle IVs", "toggleIVs": "Toggle IVs",
"manageMoves": "Manage Moves", "manageMoves": "Manage Moves",
"manageNature": "Manage Nature", "manageNature": "Manage Nature",
"addToFavorites": "Add to Favorites",
"removeFromFavorites": "Remove from Favorites",
"useCandies": "Use Candies", "useCandies": "Use Candies",
"selectNature": "Select nature.", "selectNature": "Select nature.",
"selectMoveSwapOut": "Select a move to swap out.", "selectMoveSwapOut": "Select a move to swap out.",

View File

@ -1,7 +1,7 @@
import { SimpleTranslationEntries } from "#app/interfaces/locales"; import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const abilityTriggers: SimpleTranslationEntries = { export const abilityTriggers: SimpleTranslationEntries = {
"blockRecoilDamage" : "{{pokemonName}} wurde durch {{abilityName}} vor Rückstoß geschützt!", "blockRecoilDamage": "{{pokemonName}} wurde durch {{abilityName}} vor Rückstoß geschützt!",
"badDreams": "{{pokemonName}} ist in einem Alptraum gefangen!", "badDreams": "{{pokemonName}} ist in einem Alptraum gefangen!",
"costar": "{{pokemonName}} kopiert die Statusveränderungen von {{allyName}}!", "costar": "{{pokemonName}} kopiert die Statusveränderungen von {{allyName}}!",
"iceFaceAvoidedDamage": "{{pokemonName}} wehrt Schaden mit {{abilityName}} ab!", "iceFaceAvoidedDamage": "{{pokemonName}} wehrt Schaden mit {{abilityName}} ab!",

View File

@ -16,6 +16,9 @@ export const filterBar: SimpleTranslationEntries = {
"costReduction": "Cost Reduction", "costReduction": "Cost Reduction",
"costReductionUnlocked": "Cost Reduction Unlocked", "costReductionUnlocked": "Cost Reduction Unlocked",
"costReductionLocked": "Cost Reduction Locked", "costReductionLocked": "Cost Reduction Locked",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "Band", "ribbon": "Band",
"hasWon": "Hat Klassik-Modus gewonnen", "hasWon": "Hat Klassik-Modus gewonnen",
"hasNotWon": "Hat Klassik-Modus nicht gewonnen", "hasNotWon": "Hat Klassik-Modus nicht gewonnen",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "Das Heilopfer von {{pokemonName}} erreicht sein Ziel!", "sacrificialFullRestore": "Das Heilopfer von {{pokemonName}} erreicht sein Ziel!",
"invertStats": "Alle Statusveränderungen von {{pokemonName}} wurden invertiert!", "invertStats": "Alle Statusveränderungen von {{pokemonName}} wurden invertiert!",
"resetStats": "Die Statusveränderungen von {{pokemonName}} wurden aufgehoben!", "resetStats": "Die Statusveränderungen von {{pokemonName}} wurden aufgehoben!",
"statEliminated": "Alle Statusveränderungen wurden aufgehoben!",
"faintCountdown": "{{pokemonName}} geht nach {{turnCount}} Runden K.O.!", "faintCountdown": "{{pokemonName}} geht nach {{turnCount}} Runden K.O.!",
"copyType": "{{pokemonName}} hat den Typ von {{targetPokemonName}} angenommen!", "copyType": "{{pokemonName}} hat den Typ von {{targetPokemonName}} angenommen!",
"suppressAbilities": "Die Fähigkeit von {{pokemonName}} wirkt nicht mehr!", "suppressAbilities": "Die Fähigkeit von {{pokemonName}} wirkt nicht mehr!",

View File

@ -5,4 +5,5 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "Geschlecht:", "gender": "Geschlecht:",
"ability": "Fähigkeit:", "ability": "Fähigkeit:",
"nature": "Wesen:", "nature": "Wesen:",
"form": "Form:",
} as const; } as const;

View File

@ -3,6 +3,7 @@ import { PokemonInfoTranslationEntries } from "#app/interfaces/locales";
export const pokemonInfo: PokemonInfoTranslationEntries = { export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: { Stat: {
"HP": "KP", "HP": "KP",
"HPStat": "KP",
"HPshortened": "KP", "HPshortened": "KP",
"ATK": "Angriff", "ATK": "Angriff",
"ATKshortened": "Ang", "ATKshortened": "Ang",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "DVs anzeigen/verbergen", "toggleIVs": "DVs anzeigen/verbergen",
"manageMoves": "Attacken ändern", "manageMoves": "Attacken ändern",
"manageNature": "Wesen ändern", "manageNature": "Wesen ändern",
"addToFavorites": "Add to Favorites",
"removeFromFavorites": "Remove from Favorites",
"useCandies": "Bonbons verwenden", "useCandies": "Bonbons verwenden",
"selectNature": "Wähle das neue Wesen.", "selectNature": "Wähle das neue Wesen.",
"selectMoveSwapOut": "Wähle die zu ersetzende Attacke.", "selectMoveSwapOut": "Wähle die zu ersetzende Attacke.",
@ -41,6 +43,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"cycleAbility": ": Fähigkeit", "cycleAbility": ": Fähigkeit",
"cycleNature": ": Wesen", "cycleNature": ": Wesen",
"cycleVariant": ": Seltenheit", "cycleVariant": ": Seltenheit",
"goFilter": ": Zu den Filtern",
"enablePassive": "Passiv-Skill aktivieren", "enablePassive": "Passiv-Skill aktivieren",
"disablePassive": "Passiv-Skill deaktivieren", "disablePassive": "Passiv-Skill deaktivieren",
"locked": "Gesperrt", "locked": "Gesperrt",

View File

@ -16,6 +16,9 @@ export const filterBar: SimpleTranslationEntries = {
"costReduction": "Cost Reduction", "costReduction": "Cost Reduction",
"costReductionUnlocked": "Cost Reduction Unlocked", "costReductionUnlocked": "Cost Reduction Unlocked",
"costReductionLocked": "Cost Reduction Locked", "costReductionLocked": "Cost Reduction Locked",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "Ribbon", "ribbon": "Ribbon",
"hasWon": "Ribbon - Yes", "hasWon": "Ribbon - Yes",
"hasNotWon": "Ribbon - No", "hasNotWon": "Ribbon - No",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "{{pokemonName}}'s Healing Wish\nwas granted!", "sacrificialFullRestore": "{{pokemonName}}'s Healing Wish\nwas granted!",
"invertStats": "{{pokemonName}}'s stat changes\nwere all reversed!", "invertStats": "{{pokemonName}}'s stat changes\nwere all reversed!",
"resetStats": "{{pokemonName}}'s stat changes\nwere eliminated!", "resetStats": "{{pokemonName}}'s stat changes\nwere eliminated!",
"statEliminated": "All stat changes were eliminated!",
"faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.", "faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.",
"copyType": "{{pokemonName}}'s type became the same as\n{{targetPokemonName}}'s type!", "copyType": "{{pokemonName}}'s type became the same as\n{{targetPokemonName}}'s type!",
"suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!", "suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "Toggle IVs", "toggleIVs": "Toggle IVs",
"manageMoves": "Manage Moves", "manageMoves": "Manage Moves",
"manageNature": "Manage Nature", "manageNature": "Manage Nature",
"addToFavorites": "Add to Favorites",
"removeFromFavorites": "Remove from Favorites",
"useCandies": "Use Candies", "useCandies": "Use Candies",
"selectNature": "Select nature.", "selectNature": "Select nature.",
"selectMoveSwapOut": "Select a move to swap out.", "selectMoveSwapOut": "Select a move to swap out.",
@ -41,6 +43,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"cycleAbility": ": Ability", "cycleAbility": ": Ability",
"cycleNature": ": Nature", "cycleNature": ": Nature",
"cycleVariant": ": Variant", "cycleVariant": ": Variant",
"goFilter": ": Go to filters",
"enablePassive": "Enable Passive", "enablePassive": "Enable Passive",
"disablePassive": "Disable Passive", "disablePassive": "Disable Passive",
"locked": "Locked", "locked": "Locked",

View File

@ -16,6 +16,9 @@ export const filterBar: SimpleTranslationEntries = {
"costReduction": "Cost Reduction", "costReduction": "Cost Reduction",
"costReductionUnlocked": "Cost Reduction Unlocked", "costReductionUnlocked": "Cost Reduction Unlocked",
"costReductionLocked": "Cost Reduction Locked", "costReductionLocked": "Cost Reduction Locked",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "Ribbon", "ribbon": "Ribbon",
"hasWon": "Ya ha ganado", "hasWon": "Ya ha ganado",
"hasNotWon": "Aún no ha ganado", "hasNotWon": "Aún no ha ganado",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "{{pokemonName}}'s Healing Wish\nwas granted!", "sacrificialFullRestore": "{{pokemonName}}'s Healing Wish\nwas granted!",
"invertStats": "{{pokemonName}}'s stat changes\nwere all reversed!", "invertStats": "{{pokemonName}}'s stat changes\nwere all reversed!",
"resetStats": "{{pokemonName}}'s stat changes\nwere eliminated!", "resetStats": "{{pokemonName}}'s stat changes\nwere eliminated!",
"statEliminated": "¡Los cambios en estadísticas fueron eliminados!",
"faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.", "faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.",
"copyType": "{{pokemonName}}'s type\nchanged to match {{targetPokemonName}}'s!", "copyType": "{{pokemonName}}'s type\nchanged to match {{targetPokemonName}}'s!",
"suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!", "suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "Mostrar IVs", "toggleIVs": "Mostrar IVs",
"manageMoves": "Cambiar movs.", "manageMoves": "Cambiar movs.",
"manageNature": "Cambiar natur.", "manageNature": "Cambiar natur.",
"addToFavorites": "Add to Favorites",
"removeFromFavorites": "Remove from Favorites",
"useCandies": "Usar Caramelos", "useCandies": "Usar Caramelos",
"selectNature": "Elige Natur.", "selectNature": "Elige Natur.",
"selectMoveSwapOut": "Elige el movimiento que sustituir.", "selectMoveSwapOut": "Elige el movimiento que sustituir.",
@ -41,6 +43,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"cycleAbility": ": Habilidad", "cycleAbility": ": Habilidad",
"cycleNature": ": Naturaleza", "cycleNature": ": Naturaleza",
"cycleVariant": ": Variante", "cycleVariant": ": Variante",
"goFilter": ": Ir a filtros",
"enablePassive": "Activar Pasiva", "enablePassive": "Activar Pasiva",
"disablePassive": "Desactivar Pasiva", "disablePassive": "Desactivar Pasiva",
"locked": "Bloqueado", "locked": "Bloqueado",

View File

@ -16,6 +16,9 @@ export const filterBar: SimpleTranslationEntries = {
"costReduction": "Cost Reduction", "costReduction": "Cost Reduction",
"costReductionUnlocked": "Cost Reduction Unlocked", "costReductionUnlocked": "Cost Reduction Unlocked",
"costReductionLocked": "Cost Reduction Locked", "costReductionLocked": "Cost Reduction Locked",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "Ruban", "ribbon": "Ruban",
"hasWon": "Ruban - Oui", "hasWon": "Ruban - Oui",
"hasNotWon": "Ruban - Non", "hasNotWon": "Ruban - Non",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "Le Vœu Soin est exaucé et profite\nà {{pokemonName}} !", "sacrificialFullRestore": "Le Vœu Soin est exaucé et profite\nà {{pokemonName}} !",
"invertStats": "Les changements de stats\nde {{pokemonName}} sont inversés !", "invertStats": "Les changements de stats\nde {{pokemonName}} sont inversés !",
"resetStats": "Les changements de stats\nde {{pokemonName}} ont tous été annulés !", "resetStats": "Les changements de stats\nde {{pokemonName}} ont tous été annulés !",
"statEliminated": "Les changements de stats ont tous été annulés !",
"faintCountdown": "{{pokemonName}}\nsera K.O. dans {{turnCount}} tours !", "faintCountdown": "{{pokemonName}}\nsera K.O. dans {{turnCount}} tours !",
"copyType": "{{pokemonName}} prend le type\nde {{targetPokemonName}} !", "copyType": "{{pokemonName}} prend le type\nde {{targetPokemonName}} !",
"suppressAbilities": "Le talent de {{pokemonName}}\na été rendu inactif !", "suppressAbilities": "Le talent de {{pokemonName}}\na été rendu inactif !",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "Voir les IV", "toggleIVs": "Voir les IV",
"manageMoves": "Modifier les Capacités", "manageMoves": "Modifier les Capacités",
"manageNature": "Modifier la Nature", "manageNature": "Modifier la Nature",
"addToFavorites": "Add to Favorites",
"removeFromFavorites": "Remove from Favorites",
"useCandies": "Utiliser des Bonbons", "useCandies": "Utiliser des Bonbons",
"selectNature": "Sélectionnez une nature.", "selectNature": "Sélectionnez une nature.",
"selectMoveSwapOut": "Sélectionnez la capacité à échanger.", "selectMoveSwapOut": "Sélectionnez la capacité à échanger.",
@ -41,6 +43,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"cycleAbility": ": Talent", "cycleAbility": ": Talent",
"cycleNature": ": Nature", "cycleNature": ": Nature",
"cycleVariant": ": Variant", "cycleVariant": ": Variant",
"goFilter": ": Aller aux filtres",
"enablePassive": "Activer Passif", "enablePassive": "Activer Passif",
"disablePassive": "Désactiver Passif", "disablePassive": "Désactiver Passif",
"locked": "Verrouillé", "locked": "Verrouillé",

View File

@ -16,6 +16,9 @@ export const filterBar: SimpleTranslationEntries = {
"costReduction": "Cost Reduction", "costReduction": "Cost Reduction",
"costReductionUnlocked": "Cost Reduction Unlocked", "costReductionUnlocked": "Cost Reduction Unlocked",
"costReductionLocked": "Cost Reduction Locked", "costReductionLocked": "Cost Reduction Locked",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "Ribbon", "ribbon": "Ribbon",
"hasWon": "Ribbon - Yes", "hasWon": "Ribbon - Yes",
"hasNotWon": "Ribbon - No", "hasNotWon": "Ribbon - No",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "{{pokemonName}} riceve i benefici\neffetti di Curardore!", "sacrificialFullRestore": "{{pokemonName}} riceve i benefici\neffetti di Curardore!",
"invertStats": "Le modifiche alle statistiche di {{pokemonName}}\nvengono invertite!", "invertStats": "Le modifiche alle statistiche di {{pokemonName}}\nvengono invertite!",
"resetStats": "Tutte le modifiche alle statistiche sono state annullate!", "resetStats": "Tutte le modifiche alle statistiche sono state annullate!",
"statEliminated": "All stat changes were eliminated!",
"faintCountdown": "{{pokemonName}}\nandrà KO dopo {{turnCount}} turni.", "faintCountdown": "{{pokemonName}}\nandrà KO dopo {{turnCount}} turni.",
"copyType": "{{pokemonName}} assume il tipo\ndi {{targetPokemonName}}!", "copyType": "{{pokemonName}} assume il tipo\ndi {{targetPokemonName}}!",
"suppressAbilities": "Labilità di {{pokemonName}}\nperde ogni efficacia!", "suppressAbilities": "Labilità di {{pokemonName}}\nperde ogni efficacia!",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "Vedi/Nascondi IV", "toggleIVs": "Vedi/Nascondi IV",
"manageMoves": "Gestisci mosse", "manageMoves": "Gestisci mosse",
"manageNature": "Gestisci natura", "manageNature": "Gestisci natura",
"addToFavorites": "Add to Favorites",
"removeFromFavorites": "Remove from Favorites",
"useCandies": "Usa caramelle", "useCandies": "Usa caramelle",
"selectNature": "Seleziona natura.", "selectNature": "Seleziona natura.",
"selectMoveSwapOut": "Seleziona una mossa da scambiare.", "selectMoveSwapOut": "Seleziona una mossa da scambiare.",
@ -41,6 +43,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"cycleAbility": ": Abilità", "cycleAbility": ": Abilità",
"cycleNature": ": Natura", "cycleNature": ": Natura",
"cycleVariant": ": Variante", "cycleVariant": ": Variante",
"goFilter": ": Go to filters",
"enablePassive": "Attiva passiva", "enablePassive": "Attiva passiva",
"disablePassive": "Disattiva passiva", "disablePassive": "Disattiva passiva",
"locked": "Bloccato", "locked": "Bloccato",

View File

@ -1,62 +1,63 @@
import { SimpleTranslationEntries } from "#app/interfaces/locales"; import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const abilityTriggers: SimpleTranslationEntries = { export const abilityTriggers: SimpleTranslationEntries = {
"blockRecoilDamage" : "{{pokemonName}}は {{abilityName}}で\nはんどうダメージを うけない!", "blockRecoilDamage" : "{{pokemonName}}は {{abilityName}}で 反動ダメージを 受けない!",
"badDreams": "{{pokemonName}}は ナイトメアに うなされている!", "badDreams": "{{pokemonName}}は ナイトメアに うなされている!",
"costar": "{{pokemonName}} copied {{allyName}}'s stat changes!", "costar": "{{pokemonName}}は {{allyName}}の\n能力変化を コピーした",
"iceFaceAvoidedDamage": "{{pokemonName}}は\n{{abilityName}}で ダメージを うけない!", "iceFaceAvoidedDamage": "{{pokemonName}}は\n{{abilityName}}で ダメージを 受けない!",
"perishBody": "{{pokemonName}}の {{abilityName}}で\nおたがいは 3ターンごに ほろびてしまう!", "perishBody": "{{pokemonName}}の {{abilityName}}で\nおたがいは 3ターン後に ほろびいてしまう",
"poisonHeal": "{{pokemonName}}は {{abilityName}}で\nかいふくした", "poisonHeal": "{{pokemonName}}は {{abilityName}}で 回復した!",
"trace": "{{pokemonName}} copied {{targetName}}'s\n{{abilityName}}!", "trace": "{{pokemonName}}は 相手の {{targetName}}の\n{{abilityName}}を トレースした!",
"windPowerCharged": "{{pokemonName}}は\n{{moveName}}を うけて じゅうでんした!", "windPowerCharged": "{{pokemonName}}は\n{{moveName}}を 受けて じゅうでんした!",
"quickDraw": "{{pokemonName}} can act faster than normal, thanks to its Quick Draw!", "quickDraw": "{{pokemonName}}は クイックドロウで\n行動が はやくなった",
"blockItemTheft": "{{pokemonNameWithAffix}}'s {{abilityName}}\nprevents item theft!", "blockItemTheft": "{{pokemonNameWithAffix}}の {{abilityName}}で\n道具を うばわれない",
"typeImmunityHeal": "{{pokemonNameWithAffix}}'s {{abilityName}}\nrestored its HP a little!", "typeImmunityHeal": "{{pokemonNameWithAffix}}は {{abilityName}}で\n体力を 回復した",
"nonSuperEffectiveImmunity": "{{pokemonNameWithAffix}} avoided damage\nwith {{abilityName}}!", "nonSuperEffectiveImmunity": "{{pokemonNameWithAffix}}は {{abilityName}}で\nダメージを 受けない。",
"postDefendDisguise": "{{pokemonNameWithAffix}}'s disguise was busted!", "postDefendDisguise": "{{pokemonNameWithAffix}}の\nばけのかわが はがれた",
"moveImmunity": "It doesn't affect {{pokemonNameWithAffix}}!", "moveImmunity": "{{pokemonNameWithAffix}}には\n効果が ないようだ…",
"reverseDrain": "{{pokemonNameWithAffix}} sucked up the liquid ooze!", "reverseDrain": "{{pokemonNameWithAffix}}は\nヘドロえきを 吸い取った",
"postDefendTypeChange": "{{pokemonNameWithAffix}}'s {{abilityName}}\nmade it the {{typeName}} type!", "postDefendTypeChange": "{{pokemonNameWithAffix}}は {{abilityName}}で\n{{typeName}}タイプに なった!",
"postDefendContactDamage": "{{pokemonNameWithAffix}}'s {{abilityName}}\nhurt its attacker!", "postDefendContactDamage": "{{pokemonNameWithAffix}}は {{abilityName}}で\n相手を キズつけた",
"postDefendAbilitySwap": "{{pokemonNameWithAffix}} swapped\nabilities with its target!", "postDefendAbilitySwap": "{{pokemonNameWithAffix}}は\nおたがいの 特性を 入れ替えた",
"postDefendAbilityGive": "{{pokemonNameWithAffix}} gave its target\n{{abilityName}}!", "postDefendAbilityGive": "{{pokemonNameWithAffix}}は\n特性が {{abilityName}}に なっちゃった!",
"postDefendMoveDisable": "{{pokemonNameWithAffix}}'s {{moveName}}\nwas disabled!", "postDefendMoveDisable": "{{pokemonNameWithAffix}}の\n{{moveName}}を 封じこめた!",
"pokemonTypeChange": "{{pokemonNameWithAffix}} transformed into the {{moveType}} type!", "pokemonTypeChange": "{{pokemonNameWithAffix}}は\n{{moveType}}タイプに なった!",
"postAttackStealHeldItem": "{{pokemonNameWithAffix}} stole\n{{defenderName}}'s {{stolenItemType}}!", "postAttackStealHeldItem": "{{pokemonNameWithAffix}}は {{defenderName}}から\n{{stolenItemType}}を うばいとった!",
"postDefendStealHeldItem": "{{pokemonNameWithAffix}} stole\n{{attackerName}}'s {{stolenItemType}}!", "postDefendStealHeldItem": "{{pokemonNameWithAffix}}は {{attackerName}}から\n{{stolenItemType}}を うばいとった!",
"copyFaintedAllyAbility": "{{pokemonNameWithAffix}}'s {{abilityName}} was taken over!", "copyFaintedAllyAbility": "{{pokemonNameWithAffix}}の\n{{abilityName}}を 引き継いだ!",
"intimidateImmunity": "{{pokemonNameWithAffix}}'s {{abilityName}} prevented it from being Intimidated!", "intimidateImmunity": "{{pokemonNameWithAffix}}は\n{{abilityName}}の 効果で 能力が 下がらない!",
"postSummonAllyHeal": "{{pokemonNameWithAffix}} drank down all the\nmatcha that {{pokemonName}} made!", "postSummonAllyHeal": "{{pokemonNameWithAffix}}が たてた お茶を\n{{pokemonName}}は 飲みほした!",
"postSummonClearAllyStats": "{{pokemonNameWithAffix}}'s stat changes\nwere removed!", "postSummonClearAllyStats": "{{pokemonNameWithAffix}}の\n能力変化が 元に戻った",
"postSummonTransform": "{{pokemonNameWithAffix}} transformed\ninto {{targetName}}!", "postSummonTransform": "{{pokemonNameWithAffix}}は\n{{targetName}}に 変身した!",
"protectStat": "{{pokemonNameWithAffix}}'s {{abilityName}}\nprevents lowering its {{statName}}!", "protectStat": "{{pokemonNameWithAffix}}は {{abilityName}}の 効果で\n{{statName}}が 下がらない!",
"statusEffectImmunityWithName": "{{pokemonNameWithAffix}}'s {{abilityName}}\nprevents {{statusEffectName}}!", "statusEffectImmunityWithName": "{{pokemonNameWithAffix}}は {{abilityName}}で\{{statusEffectName}}に ならない!",
"statusEffectImmunity": "{{pokemonNameWithAffix}}'s {{abilityName}}\nprevents status problems!", "statusEffectImmunity": "{{pokemonNameWithAffix}}は {{abilityName}}で\n状態異常に ならない",
"battlerTagImmunity": "{{pokemonNameWithAffix}}'s {{abilityName}}\nprevents {{battlerTagName}}!", "battlerTagImmunity": "{{pokemonNameWithAffix}}は {{abilityName}}で]\n{{battlerTagName}}を 無視した!",
"forewarn": "{{pokemonNameWithAffix}} was forewarned about {{moveName}}!", "forewarn": "{{pokemonNameWithAffix}}の\n{{moveName}}を 読み取った!",
"frisk": "{{pokemonNameWithAffix}} frisked {{opponentName}}'s {{opponentAbilityName}}!", "frisk": "{{pokemonNameWithAffix}}は {{opponentName}}の\n{{opponentAbilityName}}を お見通しだ!",
"postWeatherLapseHeal": "{{pokemonNameWithAffix}}'s {{abilityName}}\nrestored its HP a little!", "postWeatherLapseHeal": "{{pokemonNameWithAffix}}は {{abilityName}}で\n体力を 回復した",
"postWeatherLapseDamage": "{{pokemonNameWithAffix}} is hurt\nby its {{abilityName}}!", "postWeatherLapseDamage": "{{pokemonNameWithAffix}}は\n{{abilityName}}の ダメージを 受けた!",
"postTurnLootCreateEatenBerry": "{{pokemonNameWithAffix}} harvested one {{berryName}}!", "postTurnLootCreateEatenBerry": "{{pokemonNameWithAffix}}は\n{{berryName}}を 収穫した!",
"postTurnHeal": "{{pokemonNameWithAffix}}'s {{abilityName}}\nrestored its HP a little!", "postTurnHeal": "{{pokemonNameWithAffix}}は {{abilityName}}で\n体力を 回復した",
"fetchBall": "{{pokemonNameWithAffix}} found a\n{{pokeballName}}!", "fetchBall": "{{pokemonNameWithAffix}}は\n{{pokeballName}}を 拾ってきた!",
"healFromBerryUse": "{{pokemonNameWithAffix}}'s {{abilityName}}\nrestored its HP!", "healFromBerryUse": "{{pokemonNameWithAffix}}は {{abilityName}}で\n体力を 回復した",
"arenaTrap": "{{pokemonNameWithAffix}}'s {{abilityName}}\nprevents switching!", "arenaTrap": "{{pokemonNameWithAffix}}の {{abilityName}}で\n入れ替えることが できない",
"postBattleLoot": "{{pokemonNameWithAffix}} picked up\n{{itemName}}!", "postBattleLoot": "{{pokemonNameWithAffix}}は\n{{itemName}}を 拾った!",
"postFaintContactDamage": "{{pokemonNameWithAffix}}'s {{abilityName}}\nhurt its attacker!", "postFaintContactDamage": "{{pokemonNameWithAffix}}は {{abilityName}}で\n相手に ダメージを 与えた!",
"postFaintHpDamage": "{{pokemonNameWithAffix}}'s {{abilityName}}\nhurt its attacker!", "postFaintHpDamage": "{{pokemonNameWithAffix}}は {{abilityName}}で\n相手に ダメージを 与えた",
"postSummonPressure": "{{pokemonNameWithAffix}} is exerting its Pressure!", "postSummonPressure": "{{pokemonNameWithAffix}}は\nプレッシャーを 放っている",
"postSummonMoldBreaker": "{{pokemonNameWithAffix}} breaks the mold!", "postSummonMoldBreaker": "{{pokemonNameWithAffix}}は\nかたやぶりだ",
"postSummonAnticipation": "{{pokemonNameWithAffix}} shuddered!", "postSummonAnticipation": "{{pokemonNameWithAffix}}は\nみぶるいした",
"postSummonTurboblaze": "{{pokemonNameWithAffix}} is radiating a blazing aura!", "postSummonTurboblaze": "{{pokemonNameWithAffix}}は\n燃え盛(もえさか)る オーラを 放っている!",
"postSummonTeravolt": "{{pokemonNameWithAffix}} is radiating a bursting aura!", "postSummonTeravolt": "{{pokemonNameWithAffix}}は\n弾(はじ)ける オーラを 放っている!",
"postSummonDarkAura": "{{pokemonNameWithAffix}} is radiating a Dark Aura!", "postSummonDarkAura": "{{pokemonNameWithAffix}}は\nダークオーラを 放っている",
"postSummonFairyAura": "{{pokemonNameWithAffix}} is radiating a Fairy Aura!", "postSummonFairyAura": "{{pokemonNameWithAffix}}は\nフェアリーオーラを 放っている",
"postSummonNeutralizingGas": "{{pokemonNameWithAffix}}'s Neutralizing Gas filled the area!", "postSummonNeutralizingGas": "あたりに かがくへんかガスが 充満した!",
"postSummonAsOneGlastrier": "{{pokemonNameWithAffix}} has two Abilities!", "postSummonAsOneGlastrier": "{{pokemonNameWithAffix}}は\nふたつの 特性を あわせ持つ",
"postSummonAsOneSpectrier": "{{pokemonNameWithAffix}} has two Abilities!", "postSummonAsOneSpectrier": "{{pokemonNameWithAffix}}は\nふたつの 特性を あわせ持つ",
"postSummonVesselOfRuin": "{{pokemonNameWithAffix}}'s Vessel of Ruin lowered the {{statName}}\nof all surrounding Pokémon!", "postSummonVesselOfRuin": "{{pokemonNameWithAffix}}の わざわいのうつわで\nまわりの {{statName}}が 弱まった!",
"postSummonSwordOfRuin": "{{pokemonNameWithAffix}}'s Sword of Ruin lowered the {{statName}}\nof all surrounding Pokémon!", "postSummonSwordOfRuin": "{{pokemonNameWithAffix}}の わざわいのつるぎで\nまわりの {{statName}}が 弱まった!",
"postSummonTabletsOfRuin": "{{pokemonNameWithAffix}}'s Tablets of Ruin lowered the {{statName}}\nof all surrounding Pokémon!", "postSummonTabletsOfRuin": "{{pokemonNameWithAffix}}の わざわいのおふだ\nまわりの {{statName}}が 弱まった!",
"postSummonBeadsOfRuin": "{{pokemonNameWithAffix}}'s Beads of Ruin lowered the {{statName}}\nof all surrounding Pokémon!", "postSummonBeadsOfRuin": "{{pokemonNameWithAffix}}の わざわいのたまで\nまわりの {{statName}}が 弱まった!",
"preventBerryUse": "{{pokemonNameWithAffix}}は 緊張して\nきのみが 食べられなくなった",
} as const; } as const;

View File

@ -3,171 +3,171 @@ import { AchievementTranslationEntries } from "#app/interfaces/locales.js";
// Achievement translations for the when the player character is male // Achievement translations for the when the player character is male
export const PGMachv: AchievementTranslationEntries = { export const PGMachv: AchievementTranslationEntries = {
"Achievements": { "Achievements": {
name: "Achievements", name: "実績",
}, },
"Locked": { "Locked": {
name: "Locked", name: "なし",
}, },
"MoneyAchv": { "MoneyAchv": {
description: "Accumulate a total of ₽{{moneyAmount}}", description: "一回の ランで ₽{{moneyAmount}}を 稼ぐ",
}, },
"10K_MONEY": { "10K_MONEY": {
name: "Money Haver", name: "お金を持つ人",
}, },
"100K_MONEY": { "100K_MONEY": {
name: "Rich", name: "富豪",
}, },
"1M_MONEY": { "1M_MONEY": {
name: "Millionaire", name: "百万長者",
}, },
"10M_MONEY": { "10M_MONEY": {
name: "One Percenter", name: "超富裕層",
}, },
"DamageAchv": { "DamageAchv": {
description: "Inflict {{damageAmount}} damage in one hit", description: "一撃で {{damageAmount}}ダメージを 与える",
}, },
"250_DMG": { "250_DMG": {
name: "Hard Hitter", name: "力持ち",
}, },
"1000_DMG": { "1000_DMG": {
name: "Harder Hitter", name: "強者",
}, },
"2500_DMG": { "2500_DMG": {
name: "That's a Lotta Damage!", name: "カカロット",
}, },
"10000_DMG": { "10000_DMG": {
name: "One Punch Man", name: "ワンパンマン",
}, },
"HealAchv": { "HealAchv": {
description: "Heal {{healAmount}} {{HP}} at once with a move, ability, or held item", description: "一つの 技や 特性や 持っているアイテムで {{healAmount}}{{HP}}を 一気に 回復する",
}, },
"250_HEAL": { "250_HEAL": {
name: "Novice Healer", name: "回復発見者",
}, },
"1000_HEAL": { "1000_HEAL": {
name: "Big Healer", name: "大いなる治療者",
}, },
"2500_HEAL": { "2500_HEAL": {
name: "Cleric", name: "回復達人",
}, },
"10000_HEAL": { "10000_HEAL": {
name: "Recovery Master", name: "ジョーイさん",
}, },
"LevelAchv": { "LevelAchv": {
description: "Level up a Pokémon to Lv{{level}}", description: "一つの ポケモンを Lv{{level}}まで レベルアップする",
}, },
"LV_100": { "LV_100": {
name: "But Wait, There's More!", name: "まだまだだよ",
}, },
"LV_250": { "LV_250": {
name: "Elite", name: "天王",
}, },
"LV_1000": { "LV_1000": {
name: "To Go Even Further Beyond", name: "向こうの向こうを超え",
}, },
"RibbonAchv": { "RibbonAchv": {
description: "Accumulate a total of {{ribbonAmount}} Ribbons", description: "{{ribbonAmount}}巻の リボンを 積もる",
}, },
"10_RIBBONS": { "10_RIBBONS": {
name: "Pokémon League Champion", name: "ポケモンリーグチャンピオン",
}, },
"25_RIBBONS": { "25_RIBBONS": {
name: "Great League Champion", name: "スーパーリーグチャンピオン",
}, },
"50_RIBBONS": { "50_RIBBONS": {
name: "Ultra League Champion", name: "ハイパーリーグチャンピオン",
}, },
"75_RIBBONS": { "75_RIBBONS": {
name: "Rogue League Champion", name: "ローグリーグチャンピオン",
}, },
"100_RIBBONS": { "100_RIBBONS": {
name: "Master League Champion", name: "マスターリーグチャンピオン",
}, },
"TRANSFER_MAX_BATTLE_STAT": { "TRANSFER_MAX_BATTLE_STAT": {
name: "Teamwork", name: "同力",
description: "Baton pass to another party member with at least one stat maxed out", description: "少なくとも 一つの 能力を 最大まで あげて 他の 手持ちポケモンに バトンタッチする",
}, },
"MAX_FRIENDSHIP": { "MAX_FRIENDSHIP": {
name: "Friendmaxxing", name: "マブ達",
description: "Reach max friendship on a Pokémon", description: "一つの 手持ちポケモンの 仲良し度を 最大に 上げる",
}, },
"MEGA_EVOLVE": { "MEGA_EVOLVE": {
name: "Megamorph", name: "ザ・アブソリュート",
description: "Mega evolve a Pokémon", description: "一つの 手持ちポケモンを メガシンカさせる",
}, },
"GIGANTAMAX": { "GIGANTAMAX": {
name: "Absolute Unit", name: "太―くて 堪らない",
description: "Gigantamax a Pokémon", description: "一つの 手持ちポケモンを キョダイマックスさせる",
}, },
"TERASTALLIZE": { "TERASTALLIZE": {
name: "STAB Enthusiast", name: "一致好き",
description: "Terastallize a Pokémon", description: "一つの 手持ちポケモンを テラスタルさせる",
}, },
"STELLAR_TERASTALLIZE": { "STELLAR_TERASTALLIZE": {
name: "The Hidden Type", name: "隠れたタイプ",
description: "Stellar Terastallize a Pokémon", description: "一つの 手持ちポケモンを ステラ・テラスタルさせる",
}, },
"SPLICE": { "SPLICE": {
name: "Infinite Fusion", name: "インフィニット・フュジョン",
description: "Splice two Pokémon together with DNA Splicers", description: "いでんしのくさびで 二つの ポケモンを 吸収合体させる",
}, },
"MINI_BLACK_HOLE": { "MINI_BLACK_HOLE": {
name: "A Hole Lot of Items", name: "アイテムホーリック",
description: "Acquire a Mini Black Hole", description: "ミニブラックホールを 手に入れる",
}, },
"CATCH_MYTHICAL": { "CATCH_MYTHICAL": {
name: "Mythical", name: "",
description: "Catch a mythical Pokémon", description: "幻の ポケモンを 捕まえる",
}, },
"CATCH_SUB_LEGENDARY": { "CATCH_SUB_LEGENDARY": {
name: "(Sub-)Legendary", name: "準・伝説",
description: "Catch a sub-legendary Pokémon", description: "準伝説の ポケモンを 捕まえる",
}, },
"CATCH_LEGENDARY": { "CATCH_LEGENDARY": {
name: "Legendary", name: "ザ・伝説",
description: "Catch a legendary Pokémon", description: "伝説の ポケモンを 捕まえる",
}, },
"SEE_SHINY": { "SEE_SHINY": {
name: "Shiny", name: "色とりどりに光る",
description: "Find a shiny Pokémon in the wild", description: "野生の 色違いポケモンを みつける",
}, },
"SHINY_PARTY": { "SHINY_PARTY": {
name: "That's Dedication", name: "きらきら努力家",
description: "Have a full party of shiny Pokémon", description: "手持ちポケモンは 全員 色違いポケモンに する",
}, },
"HATCH_MYTHICAL": { "HATCH_MYTHICAL": {
name: "Mythical Egg", name: "幻のタマゴ",
description: "Hatch a mythical Pokémon from an egg", description: "幻の ポケモンを タマゴから 生まれる",
}, },
"HATCH_SUB_LEGENDARY": { "HATCH_SUB_LEGENDARY": {
name: "Sub-Legendary Egg", name: "準伝説のタマゴ",
description: "Hatch a sub-legendary Pokémon from an egg", description: "準伝説の ポケモンを タマゴから 生まれる",
}, },
"HATCH_LEGENDARY": { "HATCH_LEGENDARY": {
name: "Legendary Egg", name: "伝説のタマゴ",
description: "Hatch a legendary Pokémon from an egg", description: "伝説の ポケモンを タマゴから 生まれる",
}, },
"HATCH_SHINY": { "HATCH_SHINY": {
name: "Shiny Egg", name: "色違いタマゴ",
description: "Hatch a shiny Pokémon from an egg", description: "色違いポケモンを タマゴから 生まれる",
}, },
"HIDDEN_ABILITY": { "HIDDEN_ABILITY": {
name: "Hidden Potential", name: "底力",
description: "Catch a Pokémon with a hidden ability", description: "隠れ特性がある ポケモンを 捕まえる",
}, },
"PERFECT_IVS": { "PERFECT_IVS": {
name: "Certificate of Authenticity", name: "個体値の賞状",
description: "Get perfect IVs on a Pokémon", description: "一つの ポケモンの 個体値を すべて 最大に する",
}, },
"CLASSIC_VICTORY": { "CLASSIC_VICTORY": {
name: "Undefeated", name: "無双",
description: "Beat the game in classic mode", description: "クラシックモードを クリアする",
}, },
"UNEVOLVED_CLASSIC_VICTORY": { "UNEVOLVED_CLASSIC_VICTORY": {
name: "Bring Your Child To Work Day", name: "Bring Your Child To Work Day",
@ -175,102 +175,102 @@ export const PGMachv: AchievementTranslationEntries = {
}, },
"MONO_GEN_ONE": { "MONO_GEN_ONE": {
name: "The Original Rival", name: "原始",
description: "Complete the generation one only challenge.", description: "1世代の 単一世代チャレンジを クリアする",
}, },
"MONO_GEN_TWO": { "MONO_GEN_TWO": {
name: "Generation 1.5", name: "懐かしいカンジョウ",
description: "Complete the generation two only challenge.", description: "2世代の 単一世代チャレンジを クリアする",
}, },
"MONO_GEN_THREE": { "MONO_GEN_THREE": {
name: "Too much water?", name: "水浸し",
description: "Complete the generation three only challenge.", description: "3世代の 単一世代チャレンジを クリアする",
}, },
"MONO_GEN_FOUR": { "MONO_GEN_FOUR": {
name: "Is she really the hardest?", name: "神々の地",
description: "Complete the generation four only challenge.", description: "4世代の 単一世代チャレンジを クリアする",
}, },
"MONO_GEN_FIVE": { "MONO_GEN_FIVE": {
name: "All Original", name: "ニューヨーカー",
description: "Complete the generation five only challenge.", description: "5世代の 単一世代チャレンジを クリアする",
}, },
"MONO_GEN_SIX": { "MONO_GEN_SIX": {
name: "Almost Royalty", name: "サヴァ・サヴァ",
description: "Complete the generation six only challenge.", description: "6世代の 単一世代チャレンジを クリアする",
}, },
"MONO_GEN_SEVEN": { "MONO_GEN_SEVEN": {
name: "Only Technically", name: "アローラ・オエ",
description: "Complete the generation seven only challenge.", description: "7世代の 単一世代チャレンジを クリアする",
}, },
"MONO_GEN_EIGHT": { "MONO_GEN_EIGHT": {
name: "A Champion Time!", name: "チャンピオン タイムを 楽しめ!",
description: "Complete the generation eight only challenge.", description: "8世代の 単一世代チャレンジを クリアする",
}, },
"MONO_GEN_NINE": { "MONO_GEN_NINE": {
name: "She was going easy on you", name: "ネモに甘えたでしょう",
description: "Complete the generation nine only challenge.", description: "9世代の 単一世代チャレンジを クリアする",
}, },
"MonoType": { "MonoType": {
description: "Complete the {{type}} monotype challenge.", description: "{{type}}タイプの 単一タイプチャレンジを クリアする",
}, },
"MONO_NORMAL": { "MONO_NORMAL": {
name: "Extra Ordinary", name: "凡人",
}, },
"MONO_FIGHTING": { "MONO_FIGHTING": {
name: "I Know Kung Fu", name: "八千以上だ!!",
}, },
"MONO_FLYING": { "MONO_FLYING": {
name: "Angry Birds", name: "翼をください",
}, },
"MONO_POISON": { "MONO_POISON": {
name: "Kanto's Favourite", name: "カントーの名物",
}, },
"MONO_GROUND": { "MONO_GROUND": {
name: "Forecast: Earthquakes", name: "自信でユラユラ",
}, },
"MONO_ROCK": { "MONO_ROCK": {
name: "Brock Hard", name: "タケシの挑戦状",
}, },
"MONO_BUG": { "MONO_BUG": {
name: "You Like Jazz?", name: "チョウチョウせん者",
}, },
"MONO_GHOST": { "MONO_GHOST": {
name: "Who You Gonna Call?", name: "貞子ちゃん",
}, },
"MONO_STEEL": { "MONO_STEEL": {
name: "Iron Giant", name: "ハガネーター",
}, },
"MONO_FIRE": { "MONO_FIRE": {
name: "I Cast Fireball!", name: "NIGHT OF FIRE",
}, },
"MONO_WATER": { "MONO_WATER": {
name: "When It Rains, It Pours", name: "土砂降リスト",
}, },
"MONO_GRASS": { "MONO_GRASS": {
name: "Can't Touch This", name: "",
}, },
"MONO_ELECTRIC": { "MONO_ELECTRIC": {
name: "Aim For The Horn!", name: "パチピカペコ",
}, },
"MONO_PSYCHIC": { "MONO_PSYCHIC": {
name: "Big Brain Energy", name: "陽キャ",
}, },
"MONO_ICE": { "MONO_ICE": {
name: "Walking On Thin Ice", name: "ありのまま",
}, },
"MONO_DRAGON": { "MONO_DRAGON": {
name: "Pseudo-Legend Club", name: "龍が如く",
}, },
"MONO_DARK": { "MONO_DARK": {
name: "It's Just A Phase", name: "陰キャ",
}, },
"MONO_FAIRY": { "MONO_FAIRY": {
name: "Hey! Listen!", name: "あらハート満タンになった",
}, },
"FRESH_START": { "FRESH_START": {
name: "First Try!", name: "一発で!",
description: "Complete the fresh start challenge." description: "出直しチャレンジを クリアする"
} }
} as const; } as const;

View File

@ -1,159 +1,159 @@
import { SimpleTranslationEntries } from "#app/interfaces/locales"; import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const battle: SimpleTranslationEntries = { export const battle: SimpleTranslationEntries = {
"bossAppeared": "{{bossName}}が あらわれた!", "bossAppeared": "{{bossName}}が 現れた!",
"trainerAppeared": "{{trainerName}}が\nしょうぶを しかけてきた!", "trainerAppeared": "{{trainerName}}が\n勝負を しかけてきた!",
"trainerAppearedDouble": "{{trainerName}}が\nしょうぶを しかけてきた!", "trainerAppearedDouble": "{{trainerName}}が\n勝負を しかけてきた!",
"trainerSendOut": "{{trainerName}}は\n{{pokemonName}}を くりだした!", "trainerSendOut": "{{trainerName}}は\n{{pokemonName}}を 繰り出した!",
"singleWildAppeared": "あっ! やせいの\n{{pokemonName}}が とびだしてきた!", "singleWildAppeared": "あっ! 野生の {{pokemonName}}が 飛び出してきた!",
"multiWildAppeared": "あっ! やせいの {{pokemonName1}}と\n{{pokemonName2}}が とびだしてきた!", "multiWildAppeared": "あっ! 野生の {{pokemonName1}}と\n{{pokemonName2}}が 飛び出してきた!",
"playerComeBack": "{{pokemonName}}! もどれ!", "playerComeBack": "{{pokemonName}}! 戻れ!",
"trainerComeBack": "{{trainerName}}は\n{{pokemonName}}を ひっこめた!", "trainerComeBack": "{{trainerName}}は\n{{pokemonName}}を 引っ込めた!",
"playerGo": "ゆけっ! {{pokemonName}}", "playerGo": "ゆけっ! {{pokemonName}}",
"trainerGo": "{{trainerName}}は\n{{pokemonName}}を くりだした!", "trainerGo": "{{trainerName}}は\n{{pokemonName}}を 繰り出した!",
"switchQuestion": "{{pokemonName}}を\nいれかえますか?", "switchQuestion": "{{pokemonName}}を\n入れ替えますか?",
"trainerDefeated": "{{trainerName}}\nとの しょうぶに かった!", "trainerDefeated": "{{trainerName}} との 勝負に 勝った!",
"moneyWon": "しょうきんとして\n₽{{moneyAmount}} てにいれた!", "moneyWon": "賞金として ₽{{moneyAmount}}を 手に入れた!",
"moneyPickedUp": "₽{{moneyAmount}}を ひろった!", "moneyPickedUp": "₽{{moneyAmount}}を った!",
"pokemonCaught": "{{pokemonName}}を\nつかまえたぞ!", "pokemonCaught": "{{pokemonName}}を 捕まえたぞ!",
"addedAsAStarter": "{{pokemonName}} has been\nadded as a starter!", "addedAsAStarter": "今から {{pokemonName}}は 最初のパートナーとして 選べられる!",
"partyFull": "てもちがいっぱいです。\n{{pokemonName}}をいれるために ポケモンを ひとり てばなしますか?", "partyFull": "手持ちが いっぱいです。\n{{pokemonName}}を入れる ために ポケモンを 一つ 逃がすか?",
"pokemon": "ポケモン", "pokemon": "ポケモン",
"sendOutPokemon": "がんばれ! {{pokemonName}}", "sendOutPokemon": "頑張れ! {{pokemonName}}",
"hitResultCriticalHit": "きゅうしょに あたった!", "hitResultCriticalHit": "急所に 当たった!",
"hitResultSuperEffective": "こうかは ばつぐんだ!", "hitResultSuperEffective": "効果は バツグンだ!",
"hitResultNotVeryEffective": "こうかは いまひとつの ようだ……", "hitResultNotVeryEffective": "効果は 今ひとつの ようだ……",
"hitResultNoEffect": "{{pokemonName}}には こうかが ないようだ…", "hitResultNoEffect": "{{pokemonName}}には 効果が ないようだ…",
"hitResultOneHitKO": "いちげき ひっさつ", "hitResultOneHitKO": "一撃必殺",
"attackFailed": "しかし うまく きまらなかった!!", "attackFailed": "しかし うまく 決まらなかった!!",
"attackMissed": "{{pokemonNameWithAffix}}にはたらなかった!", "attackMissed": "{{pokemonNameWithAffix}}には 当たらなかった!",
"attackHitsCount": "{{count}}かい たった!", "attackHitsCount": "{{count}}かい たった!",
"rewardGain": "{{modifierName}}を\nてにいれた!", "rewardGain": "{{modifierName}}を 手に入れた!",
"expGain": "{{pokemonName}}は\n{{exp}}けいけんちを もらった!", "expGain": "{{pokemonName}}は\n{{exp}}経験値を もらった!",
"levelUp": "{{pokemonName}}は\nレベル{{level}} に あがった!", "levelUp": "{{pokemonName}}は\nレベル{{level}}に 上がった!",
"learnMove": "{{pokemonName}}は あたらしく\n{{moveName}}を おぼえた!", "learnMove": "{{pokemonName}}は 新しく\n{{moveName}}を 覚えた!",
"learnMovePrompt": "{{pokemonName}}は あたらしく\n{{moveName}}を おぼえたい……", "learnMovePrompt": "{{pokemonName}}は 新しく\n{{moveName}}を 覚えたい……",
"learnMoveLimitReached": "しかし {{pokemonName}}は わざを 4つ\nおぼえるので せいいっぱいだ!", "learnMoveLimitReached": "しかし {{pokemonName}}は 技を 4つ\n覚えるので せいいっぱいだ!",
"learnMoveReplaceQuestion": "{{moveName}}の かわりに\nほかの わざを わすれさせますか?", "learnMoveReplaceQuestion": "{{moveName}}の 代わりに\n他の 技を れさせますか?",
"learnMoveStopTeaching": "それでは…… {{moveName}}を\nおぼえるのを あきらめますか?", "learnMoveStopTeaching": "それでは {{moveName}}を\n覚えるのを 諦めますか?",
"learnMoveNotLearned": "{{pokemonName}}は {{moveName}}を\nおぼえずに おわった!", "learnMoveNotLearned": "{{pokemonName}}は {{moveName}}を\n覚えずに わった!",
"learnMoveForgetQuestion": "どの わざを\nわすれさせたい?", "learnMoveForgetQuestion": "どの 技を\n忘れさせたい?",
"learnMoveForgetSuccess": "{{pokemonName}}は {{moveName}}の\nつかいかたを きれいに わすれた!", "learnMoveForgetSuccess": "{{pokemonName}}は {{moveName}}の\n使い方を きれいに れた!",
"countdownPoof": "@d{32}1 @d{15}2の @d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}ポカン!", "countdownPoof": "@d{32}1 @d{15}2の @d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}ポカン!",
"learnMoveAnd": "そして…", "learnMoveAnd": "そして…",
"levelCapUp": "レベルキャップの\n{{levelCap}}にがった!", "levelCapUp": "レベルキャップの\n{{levelCap}}に 上がった!",
"moveNotImplemented": "{{moveName}}は まだじっそうされておらず、せんたくできません。", "moveNotImplemented": "{{moveName}}は まだ 実装されておらず 選択できません。",
"moveNoPP": "しかし わざの\nのこりポイントが なかった!", "moveNoPP": "しかし 技の\n残りポイントが なかった!",
"moveDisabled": "かなしばりで\n{{moveName}}が せない!", "moveDisabled": "かなしばりで\n{{moveName}}が せない!",
"noPokeballForce": "みえない ちからの せいで\nボールを げられない!", "noPokeballForce": "見えない 力の せいで\nボールが げられない!",
"noPokeballTrainer": "ひとのものを\nとったら どろぼう", "noPokeballTrainer": "人の ものを 取ったら 泥棒",
"noPokeballMulti": "あいての ポケモンが ひとつしか\n いないまえに ボールが つかえない!", "noPokeballMulti": "相手の ポケモンが 一つしか\nいない 前に ボールが 使えない!",
"noPokeballStrong": "あいての ポケモンが つよすぎて つかまえられない!\nまずは よわらせよう!", "noPokeballStrong": "相手の ポケモンが 強すぎて 捕まえられない!\nまずは 弱めよう!",
"noEscapeForce": "みえない ちからの せいで\nにげることが できない!", "noEscapeForce": "見えない 力の せいで\n逃げることが できない!",
"noEscapeTrainer": "ダメだ! しょうぶのさいちゅうに\nあいてに せなかを みせられない!", "noEscapeTrainer": "ダメだ! 勝負の最中に\n相手に 背中を せられない!",
"noEscapePokemon": "{{pokemonName}}の {{moveName}}で {{escapeVerb}}!", "noEscapePokemon": "{{pokemonName}}の {{moveName}}で {{escapeVerb}}!",
"runAwaySuccess": " うまく にげきれた!", "runAwaySuccess": " うまく 逃げ切れた!",
"runAwayCannotEscape": "にげることが できない!", "runAwayCannotEscape": "逃げることが できない!",
"escapeVerbSwitch": "いれかえることが できない", "escapeVerbSwitch": "入れ替えることが できない",
"escapeVerbFlee": "にげることが できない", "escapeVerbFlee": "逃げることが できない",
"notDisabled": "{{pokemonName}}の かなしばりが とけた!\nまた {{moveName}}が つかえられる!", "notDisabled": "{{pokemonName}}の かなしばりが 溶けた!\nまた {{moveName}}が 使えられる!",
"turnEndHpRestore": "{{pokemonName}}の たいりょくが かいふくした!", "turnEndHpRestore": "{{pokemonName}}の 体力が 回復した!",
"hpIsFull": "{{pokemonName}}の\nHPが まんたんだ!", "hpIsFull": "{{pokemonName}}の\n体力が 満タンだ!",
"skipItemQuestion": "ほんとに アイテムを とらない", "skipItemQuestion": "本当に アイテムを 取らずに 進みますか",
"eggHatching": "おや?", "eggHatching": "おや?",
"ivScannerUseQuestion": "{{pokemonName}}を\nこたいちスキャナーで そうさする?", "ivScannerUseQuestion": "{{pokemonName}}を\n個体値スキャナーで 操作しますか?",
"wildPokemonWithAffix": "やせいの {{pokemonName}}", "wildPokemonWithAffix": "野生の {{pokemonName}}",
"foePokemonWithAffix": "あいての {{pokemonName}}", "foePokemonWithAffix": "相手の {{pokemonName}}",
"useMove": "{{pokemonNameWithAffix}}の {{moveName}}", "useMove": "{{pokemonNameWithAffix}}の {{moveName}}",
"drainMessage": "{{pokemonName}}から\nたいりょくを すいとった!", "drainMessage": "{{pokemonName}}から\n体力を 吸い取った!",
"regainHealth": "{{pokemonName}}は\nたいりょくを かいふくした!", "regainHealth": "{{pokemonName}}は\n体力を 回復した!",
"stealEatBerry": "{{pokemonName}}は {{targetName}}の\n{{berryName}}を うばって たべた!", "stealEatBerry": "{{pokemonName}}は {{targetName}}の\n{{berryName}}を うばって 食べた!",
"ppHealBerry": "{{pokemonNameWithAffix}}は {{berryName}}で {{moveName}}のPPを かいふくした!", "ppHealBerry": "{{pokemonNameWithAffix}}は {{berryName}}で {{moveName}}のPPを 回復した!",
"hpHealBerry": "{{pokemonNameWithAffix}}は {{berryName}}で たいりょくを かいふくした!", "hpHealBerry": "{{pokemonNameWithAffix}}は {{berryName}}で 体力を 回復した!",
"fainted": "{{pokemonNameWithAffix}}は たおれた!", "fainted": "{{pokemonNameWithAffix}}は 倒れた!",
"statsAnd": "と ", "statsAnd": "と ",
"stats": "のうりょく", "stats": "能力",
"statRose_one": "{{pokemonNameWithAffix}}の {{stats}}が がった!", "statRose_one": "{{pokemonNameWithAffix}}の {{stats}}が がった!",
"statRose_other": "{{pokemonNameWithAffix}}の {{stats}}が がった!", "statRose_other": "{{pokemonNameWithAffix}}の {{stats}}が がった!",
"statSharplyRose_one": "{{pokemonNameWithAffix}}の {{stats}}が ぐーんと あがった!", "statSharplyRose_one": "{{pokemonNameWithAffix}}の {{stats}}が ぐーんと 上がった!",
"statSharplyRose_other": "{{pokemonNameWithAffix}}の {{stats}}が ぐーんと あがった!", "statSharplyRose_other": "{{pokemonNameWithAffix}}の {{stats}}が ぐーんと 上がった!",
"statRoseDrastically_one": "{{pokemonNameWithAffix}}の {{stats}}が ぐぐーんと あがった!", "statRoseDrastically_one": "{{pokemonNameWithAffix}}の {{stats}}が ぐぐーんと 上がった!",
"statRoseDrastically_other": "{{pokemonNameWithAffix}}の {{stats}}が ぐぐーんと あがった!", "statRoseDrastically_other": "{{pokemonNameWithAffix}}の {{stats}}が ぐぐーんと 上がった!",
"statWontGoAnyHigher_one": "{{pokemonNameWithAffix}}の {{stats}}が もう あがらない!", "statWontGoAnyHigher_one": "{{pokemonNameWithAffix}}の {{stats}}が もう 上がらない!",
"statWontGoAnyHigher_other": "{{pokemonNameWithAffix}}の {{stats}}が もう あがらない!", "statWontGoAnyHigher_other": "{{pokemonNameWithAffix}}の {{stats}}が もう 上がらない!",
"statFell_one": "{{pokemonNameWithAffix}}の {{stats}}が さがった!", "statFell_one": "{{pokemonNameWithAffix}}の {{stats}}が 下がった!",
"statFell_other": "{{pokemonNameWithAffix}}の {{stats}}が さがった!", "statFell_other": "{{pokemonNameWithAffix}}の {{stats}}が 下がった!",
"statHarshlyFell_one": "{{pokemonNameWithAffix}}の {{stats}}が がくっと さがった!", "statHarshlyFell_one": "{{pokemonNameWithAffix}}の {{stats}}が がくっと 下がった!",
"statHarshlyFell_other": "{{pokemonNameWithAffix}}の {{stats}}が がくっと さがった!", "statHarshlyFell_other": "{{pokemonNameWithAffix}}の {{stats}}が がくっと 下がった!",
"statSeverelyFell_one": "{{pokemonNameWithAffix}}の {{stats}}が がくーんと さがった!", "statSeverelyFell_one": "{{pokemonNameWithAffix}}の {{stats}}が がくーんと 下がった!",
"statSeverelyFell_other": "{{pokemonNameWithAffix}}の {{stats}}が がくーんと さがった!", "statSeverelyFell_other": "{{pokemonNameWithAffix}}の {{stats}}が がくーんと 下がった!",
"statWontGoAnyLower_one": "{{pokemonNameWithAffix}}の {{stats}}が もう さがらない!", "statWontGoAnyLower_one": "{{pokemonNameWithAffix}}の {{stats}}が もう 下がらない!",
"statWontGoAnyLower_other": "{{pokemonNameWithAffix}}の {{stats}}が もう さがらない!", "statWontGoAnyLower_other": "{{pokemonNameWithAffix}}の {{stats}}が もう 下がらない!",
"transformedIntoType": "{{pokemonName}}は\n{{type}}タイプに へんしんした!", "transformedIntoType": "{{pokemonName}}は\n{{type}}タイプに 変身した!",
"retryBattle": "このせんとうの はじまりから やりなおす", "retryBattle": "このバトルの 始まりから やり直しますか",
"unlockedSomething": "{{unlockedThing}}\nを アンロックした", "unlockedSomething": "{{unlockedThing}}\nを アンロックした",
"congratulations": "おめでとうございます!!", "congratulations": "おめでとうございます!!",
"beatModeFirstTime": "はじめて {{speciesName}}が {{gameMode}}モードを クリアした!\n{{newModifier}}を てにいれた!", "beatModeFirstTime": "初めて {{speciesName}}が {{gameMode}}モードを クリアした!\n{{newModifier}}を 手に入れた!",
"ppReduced": "{{targetName}}の {{moveName}}を {{reduction}}けずった!", "ppReduced": "{{targetName}}の {{moveName}}を {{reduction}}削った!",
"battlerTagsRechargingLapse": "{{pokemonNameWithAffix}}は こうげきの はんどうで うごけない!", "battlerTagsRechargingLapse": "{{pokemonNameWithAffix}}は 攻撃の 反動で 動けない!",
"battlerTagsTrappedOnAdd": "{{pokemonNameWithAffix}}は もう にげられない!", "battlerTagsTrappedOnAdd": "{{pokemonNameWithAffix}}は もう 逃げられない!",
"battlerTagsTrappedOnRemove": "{{pokemonNameWithAffix}}は\n{{moveName}}の こうかが とけた!", "battlerTagsTrappedOnRemove": "{{pokemonNameWithAffix}}は\n{{moveName}}の 効果が 解けた!",
"battlerTagsFlinchedLapse": "{{pokemonNameWithAffix}}は ひるんで わざが だせない!", "battlerTagsFlinchedLapse": "{{pokemonNameWithAffix}}は ひるんで 技が出せない!",
"battlerTagsConfusedOnAdd": "{{pokemonNameWithAffix}}は こんらん した!", "battlerTagsConfusedOnAdd": "{{pokemonNameWithAffix}}は 混乱 した!",
"battlerTagsConfusedOnRemove": "{{pokemonNameWithAffix}}の こんらんが とけた!", "battlerTagsConfusedOnRemove": "{{pokemonNameWithAffix}}の 混乱が 解けた!",
"battlerTagsConfusedOnOverlap": "{{pokemonNameWithAffix}}は すでに こんらん している!", "battlerTagsConfusedOnOverlap": "{{pokemonNameWithAffix}}は すでに 混乱している!",
"battlerTagsConfusedLapse": "{{pokemonNameWithAffix}}は こんらん している!", "battlerTagsConfusedLapse": "{{pokemonNameWithAffix}}は 混乱している!",
"battlerTagsConfusedLapseHurtItself": "わけも わからず じぶんを こうげきした!", "battlerTagsConfusedLapseHurtItself": "わけも わからず 自分を 攻撃した!",
"battlerTagsDestinyBondLapseIsBoss": "{{pokemonNameWithAffix}}を みちづれに できない!", "battlerTagsDestinyBondLapseIsBoss": "{{pokemonNameWithAffix}}を みちづれに できない!",
"battlerTagsDestinyBondLapse": "{{pokemonNameWithAffix}}は あいてを みちづれに した!", "battlerTagsDestinyBondLapse": "{{pokemonNameWithAffix}}は 相手を みちづれに した!",
"battlerTagsInfatuatedOnAdd": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に メロメロに なった!", "battlerTagsInfatuatedOnAdd": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に メロメロに なった!",
"battlerTagsInfatuatedOnOverlap": "{{pokemonNameWithAffix}}は すでに メロメロだ!", "battlerTagsInfatuatedOnOverlap": "{{pokemonNameWithAffix}}は すでに メロメロだ!",
"battlerTagsInfatuatedLapse": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に メロメロだ!", "battlerTagsInfatuatedLapse": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に メロメロだ!",
"battlerTagsInfatuatedLapseImmobilize": "{{pokemonNameWithAffix}}は\nメロメロで わざが せなかった!", "battlerTagsInfatuatedLapseImmobilize": "{{pokemonNameWithAffix}}は\nメロメロで わざが せなかった!",
"battlerTagsInfatuatedOnRemove": "{{pokemonNameWithAffix}}は メロメロじょうたいが なおった!", "battlerTagsInfatuatedOnRemove": "{{pokemonNameWithAffix}}は メロメロ状態が 治った!",
"battlerTagsSeededOnAdd": "{{pokemonNameWithAffix}}に たねを うえつけた!", "battlerTagsSeededOnAdd": "{{pokemonNameWithAffix}}に 種を 植(う)えつけた!",
"battlerTagsSeededLapse": "やどりぎが {{pokemonNameWithAffix}}の たいりょくを うばう!", "battlerTagsSeededLapse": "やどりぎが {{pokemonNameWithAffix}}の 体力を うばう!",
"battlerTagsSeededLapseShed": "{{pokemonNameWithAffix}}は ヘドロえきを すいとった!", "battlerTagsSeededLapseShed": "{{pokemonNameWithAffix}}は ヘドロえきを 吸い取った!",
"battlerTagsNightmareOnAdd": "{{pokemonNameWithAffix}}は あくむを みはじめた!", "battlerTagsNightmareOnAdd": "{{pokemonNameWithAffix}}は あくむを 見始めた!",
"battlerTagsNightmareOnOverlap": "{{pokemonNameWithAffix}}は すでに うなされている!", "battlerTagsNightmareOnOverlap": "{{pokemonNameWithAffix}}は すでに うなされている!",
"battlerTagsNightmareLapse": "{{pokemonNameWithAffix}}は あくむに うなされている!", "battlerTagsNightmareLapse": "{{pokemonNameWithAffix}}は あくむに うなされている!",
"battlerTagsEncoreOnAdd": "{{pokemonNameWithAffix}}は アンコールをうけた!", "battlerTagsEncoreOnAdd": "{{pokemonNameWithAffix}}は アンコールを 受けた!",
"battlerTagsEncoreOnRemove": "{{pokemonNameWithAffix}}の アンコールじょうたいが とけた!", "battlerTagsEncoreOnRemove": "{{pokemonNameWithAffix}}の アンコール状態が 解けた!",
"battlerTagsHelpingHandOnAdd": "{{pokemonNameWithAffix}}は {{pokemonName}}を\nてだすけする たいせいに はいった!", "battlerTagsHelpingHandOnAdd": "{{pokemonNameWithAffix}}は {{pokemonName}}を\nてだすけする 体制に った!",
"battlerTagsIngrainLapse": "{{pokemonNameWithAffix}}は ねから\n ようぶんを すいとった!", "battlerTagsIngrainLapse": "{{pokemonNameWithAffix}}は 根から\n養分ようぶん 吸い取った!",
"battlerTagsIngrainOnTrap": "{{pokemonNameWithAffix}}は ねを はった!", "battlerTagsIngrainOnTrap": "{{pokemonNameWithAffix}}は 根を 張った!",
"battlerTagsAquaRingOnAdd": "{{pokemonNameWithAffix}}は みずのリングを まとった!", "battlerTagsAquaRingOnAdd": "{{pokemonNameWithAffix}}は 水のリングを まとった!",
"battlerTagsAquaRingLapse": "{{pokemonName}}は {{moveName}}で\nたいりょくを かいふくした!", "battlerTagsAquaRingLapse": "{{pokemonName}}は {{moveName}}で\n体力を 回復した!",
"battlerTagsDrowsyOnAdd": "{{pokemonNameWithAffix}} の ねむけを さそった!", "battlerTagsDrowsyOnAdd": "{{pokemonNameWithAffix}} の ねむけを 誘(さそ)った!",
"battlerTagsDamagingTrapLapse": "{{pokemonNameWithAffix}}は {{moveName}}の ダメージを けた!", "battlerTagsDamagingTrapLapse": "{{pokemonNameWithAffix}}は {{moveName}}の ダメージを けた!",
"battlerTagsBindOnTrap": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に しめつけられた!", "battlerTagsBindOnTrap": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に 締め付けられた!",
"battlerTagsWrapOnTrap": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に まきつかれた!", "battlerTagsWrapOnTrap": "{{pokemonNameWithAffix}}は {{sourcePokemonName}}に 巻き付かれた!",
"battlerTagsVortexOnTrap": "{{pokemonNameWithAffix}}は うずの なかに とじこめられた!", "battlerTagsVortexOnTrap": "{{pokemonNameWithAffix}}は 渦(うず)の中に 閉じ込められた!",
"battlerTagsClampOnTrap": "{{pokemonName}}は {{sourcePokemonNameWithAffix}}の\nからに はさまれた!", "battlerTagsClampOnTrap": "{{pokemonName}}は {{sourcePokemonNameWithAffix}}の\nからに まれた!",
"battlerTagsSandTombOnTrap": "{{pokemonNameWithAffix}}は {{moveName}}に らわれた!", "battlerTagsSandTombOnTrap": "{{pokemonNameWithAffix}}は {{moveName}}に らわれた!",
"battlerTagsMagmaStormOnTrap": "{{pokemonNameWithAffix}}は マグマの\n うずに とじこめられた!", "battlerTagsMagmaStormOnTrap": "{{pokemonNameWithAffix}}は マグマの\n うず 閉じ込められた!",
"battlerTagsSnapTrapOnTrap": "{{pokemonNameWithAffix}}は トラバサミに らわれた!", "battlerTagsSnapTrapOnTrap": "{{pokemonNameWithAffix}}は トラバサミに らわれた!",
"battlerTagsThunderCageOnTrap": "{{sourcePokemonNameWithAffix}}は {{pokemonNameWithAffix}}に とじこめられた!", "battlerTagsThunderCageOnTrap": "{{sourcePokemonNameWithAffix}}は {{pokemonNameWithAffix}}に 閉じ込められた!",
"battlerTagsInfestationOnTrap": "{{pokemonNameWithAffix}}は {{sourcePokemonNameWithAffix}}に まとわりつかれた!", "battlerTagsInfestationOnTrap": "{{pokemonNameWithAffix}}は {{sourcePokemonNameWithAffix}}に まとわりつかれた!",
"battlerTagsProtectedOnAdd": "{{pokemonNameWithAffix}}は\nまもりの たいせいに はいった!", "battlerTagsProtectedOnAdd": "{{pokemonNameWithAffix}}は\nまもりの 体制に 入った!",
"battlerTagsProtectedLapse": "{{pokemonNameWithAffix}}は\nこうげきから みを まもった!", "battlerTagsProtectedLapse": "{{pokemonNameWithAffix}}は\n攻撃から 身を守った!",
"battlerTagsEnduringOnAdd": "{{pokemonNameWithAffix}}は\nこらえる たいせいに はいった!", "battlerTagsEnduringOnAdd": "{{pokemonNameWithAffix}}は\nこらえる 体制に 入った!",
"battlerTagsEnduringLapse": "{{pokemonNameWithAffix}}は\nこうげきを こらえた!", "battlerTagsEnduringLapse": "{{pokemonNameWithAffix}}は\n攻撃を こらえた!",
"battlerTagsSturdyLapse": "{{pokemonNameWithAffix}}は\nこうげきを こらえた!", "battlerTagsSturdyLapse": "{{pokemonNameWithAffix}}は\n攻撃を こらえた!",
"battlerTagsPerishSongLapse": "{{pokemonNameWithAffix}}の ほろびのカウントが {{turnCount}}になった!", "battlerTagsPerishSongLapse": "{{pokemonNameWithAffix}}の ほろびのカウントが {{turnCount}}になった!",
"battlerTagsCenterOfAttentionOnAdd": "{{pokemonNameWithAffix}}は ちゅうもくの まとになった!", "battlerTagsCenterOfAttentionOnAdd": "{{pokemonNameWithAffix}}は 注目の 的になった!",
"battlerTagsTruantLapse": "{{pokemonNameWithAffix}}は なまけている!", "battlerTagsTruantLapse": "{{pokemonNameWithAffix}}は 怠(なま)けている!",
"battlerTagsSlowStartOnAdd": "{{pokemonNameWithAffix}}は ちょうしが あがらない!", "battlerTagsSlowStartOnAdd": "{{pokemonNameWithAffix}}は 調子が 上がらない!",
"battlerTagsSlowStartOnRemove": "{{pokemonNameWithAffix}}は ちょうしを とりもどした!", "battlerTagsSlowStartOnRemove": "{{pokemonNameWithAffix}}は 調子を 取り戻した!",
"battlerTagsHighestStatBoostOnAdd": "{{pokemonNameWithAffix}}の {{statName}}が\nあがっている じょうたいに なった!", "battlerTagsHighestStatBoostOnAdd": "{{pokemonNameWithAffix}}の {{statName}}が\n上がっている 状態に なった!",
"battlerTagsHighestStatBoostOnRemove": "{{pokemonNameWithAffix}}の {{abilityName}}の こうかが なくなった!", "battlerTagsHighestStatBoostOnRemove": "{{pokemonNameWithAffix}}の {{abilityName}}の 効果が なくなった!",
"battlerTagsMagnetRisenOnAdd": "{{pokemonNameWithAffix}}は でんじりょくで うかびあがった!", "battlerTagsMagnetRisenOnAdd": "{{pokemonNameWithAffix}}は 電磁力(でんじりょく)で 浮かび上がった!",
"battlerTagsMagnetRisenOnRemove": "{{pokemonNameWithAffix}}は でんじりょくが なくなった!", "battlerTagsMagnetRisenOnRemove": "{{pokemonNameWithAffix}}は 電磁力(でんじりょく)が なくなった!",
"battlerTagsCritBoostOnAdd": "{{pokemonNameWithAffix}}は はりきっている!", "battlerTagsCritBoostOnAdd": "{{pokemonNameWithAffix}}は 張り切っている!",
"battlerTagsCritBoostOnRemove": "{{pokemonNameWithAffix}}は おちついた。", "battlerTagsCritBoostOnRemove": "{{pokemonNameWithAffix}}は 落ち着いた。",
"battlerTagsSaltCuredOnAdd": "{{pokemonNameWithAffix}}は しおづけに なった!", "battlerTagsSaltCuredOnAdd": "{{pokemonNameWithAffix}}は しおづけに なった!",
"battlerTagsSaltCuredLapse": "{{pokemonNameWithAffix}}は {{moveName}}の\n ダメージを けている", "battlerTagsSaltCuredLapse": "{{pokemonNameWithAffix}}は {{moveName}}の\n ダメージを けている",
"battlerTagsCursedOnAdd": "{{pokemonNameWithAffix}}は じぶんの たいりょくを けずって\n{{pokemonName}}に のろいを かけた!", "battlerTagsCursedOnAdd": "{{pokemonNameWithAffix}}は 自分の 体力を 削って\n{{pokemonName}}に のろいを かけた!",
"battlerTagsCursedLapse": "{{pokemonNameWithAffix}}は のろわれている!", "battlerTagsCursedLapse": "{{pokemonNameWithAffix}}は のろわれている!",
"battlerTagsStockpilingOnAdd": "{{pokemonNameWithAffix}}は {{stockpiledCount}}つ たくわえた!" "battlerTagsStockpilingOnAdd": "{{pokemonNameWithAffix}}は {{stockpiledCount}}つ たくわえた!"
} as const; } as const;

View File

@ -1,32 +1,32 @@
import { TranslationEntries } from "#app/interfaces/locales"; import { TranslationEntries } from "#app/interfaces/locales";
export const challenges: TranslationEntries = { export const challenges: TranslationEntries = {
"title": "チャレンジ じょうけん せってい", "title": "チャレンジを 設定",
"illegalEvolution": "{{pokemon}} changed into an ineligble pokémon\nfor this challenge!", "illegalEvolution": "{{pokemon}}は このチャレンジで\n対象外の ポケモンに なってしまった",
"singleGeneration": { "singleGeneration": {
"name": "Mono Gen", "name": "単一世代",
"desc": "You can only use Pokémon from Generation {{gen}}.", "desc": "{{gen}}世代からの ポケモンしか 使えません",
"desc_default": "You can only use Pokémon from the chosen generation.", "desc_default": "選んだ 世代からの ポケモンしか 使えません",
"gen_1": "one", "gen_1": "1",
"gen_2": "two", "gen_2": "2",
"gen_3": "three", "gen_3": "3",
"gen_4": "four", "gen_4": "4",
"gen_5": "five", "gen_5": "5",
"gen_6": "six", "gen_6": "6",
"gen_7": "seven", "gen_7": "7",
"gen_8": "eight", "gen_8": "8",
"gen_9": "nine", "gen_9": "9",
}, },
"singleType": { "singleType": {
"name": "Mono Type", "name": "単一タイプ",
"desc": "You can only use Pokémon with the {{type}} type.", "desc": "{{type}}タイプの ポケモンしか 使えません",
"desc_default": "You can only use Pokémon of the chosen type." "desc_default": "選んだ タイプの ポケモンしか 使えません"
//types in pokemon-info //types in pokemon-info
}, },
"freshStart": { "freshStart": {
"name": "Fresh Start", "name": "出直し",
"desc": "You can only use the original starters, and only as if you had just started pokerogue.", "desc": "ポケローグを 始めた ばかりの ような ままで ゲーム開始の 最初のパートナーしか 使えません",
"value.0": "Off", "value.0": "オフ",
"value.1": "On", "value.1": "オン",
}, },
} as const; } as const;

View File

@ -3,16 +3,31 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const filterBar: SimpleTranslationEntries = { export const filterBar: SimpleTranslationEntries = {
"genFilter": "Gen", "genFilter": "Gen",
"typeFilter": "Type", "typeFilter": "Type",
"caughtFilter": "Caught",
"unlocksFilter": "Unlocks", "unlocksFilter": "Unlocks",
"winFilter": "Win", "miscFilter": "Misc",
"sortFilter": "Sort", "sortFilter": "Sort",
"all": "All", "all": "All",
"normal": "Normal", "normal": "Not Shiny",
"uncaught": "Uncaught", "uncaught": "Uncaught",
"passive": "Passive",
"passiveUnlocked": "Passive Unlocked", "passiveUnlocked": "Passive Unlocked",
"passiveLocked": "Passive Locked", "passiveLocked": "Passive Locked",
"hasWon": "Yes", "costReduction": "Cost Reduction",
"hasNotWon": "No", "costReductionUnlocked": "Cost Reduction Unlocked",
"costReductionLocked": "Cost Reduction Locked",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "Ribbon",
"hasWon": "Ribbon - Yes",
"hasNotWon": "Ribbon - No",
"hiddenAbility": "Hidden Ability",
"hasHiddenAbility": "Hidden Ability - Yes",
"noHiddenAbility": "Hidden Ability - No",
"pokerus": "Pokerus",
"hasPokerus": "Pokerus - Yes",
"noPokerus": "Pokerus - No",
"sortByNumber": "No.", "sortByNumber": "No.",
"sortByCost": "Cost", "sortByCost": "Cost",
"sortByCandies": "Candy Count", "sortByCandies": "Candy Count",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "{{pokemonName}}の\nねがいごとが かなった", "sacrificialFullRestore": "{{pokemonName}}の\nねがいごとが かなった",
"invertStats": "{{pokemonName}}の\nのうりょくへんかが ぎゃくてんした", "invertStats": "{{pokemonName}}の\nのうりょくへんかが ぎゃくてんした",
"resetStats": "{{pokemonName}}の\nのうりょくへんかが もとにもどった", "resetStats": "{{pokemonName}}の\nのうりょくへんかが もとにもどった",
"statEliminated": "All stat changes were eliminated!",
"faintCountdown": "{{pokemonName}}は\n{{turnCount}}ターンごに ほろびてしまう!", "faintCountdown": "{{pokemonName}}は\n{{turnCount}}ターンごに ほろびてしまう!",
"copyType": "{{pokemonName}}は {{targetPokemonName}}と\n同じタイプに なった", "copyType": "{{pokemonName}}は {{targetPokemonName}}と\n同じタイプに なった",
"suppressAbilities": "{{pokemonName}}の とくせいが きかなくなった!", "suppressAbilities": "{{pokemonName}}の とくせいが きかなくなった!",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "個体値を ひょうじ", "toggleIVs": "個体値を ひょうじ",
"manageMoves": "わざを ならびかえ", "manageMoves": "わざを ならびかえ",
"manageNature": "せいかくを ならびかえ", "manageNature": "せいかくを ならびかえ",
"addToFavorites": "Add to Favorites",
"removeFromFavorites": "Remove from Favorites",
"useCandies": "アメを つかう", "useCandies": "アメを つかう",
"selectNature": "せいかくをえらんでください", "selectNature": "せいかくをえらんでください",
"selectMoveSwapOut": "交換する技を選択してください", "selectMoveSwapOut": "交換する技を選択してください",

View File

@ -2,7 +2,7 @@ import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js";
export const statusEffect: StatusEffectTranslationEntries = { export const statusEffect: StatusEffectTranslationEntries = {
none: { none: {
name: "None", name: "なし",
description: "", description: "",
obtain: "", obtain: "",
obtainSource: "", obtainSource: "",
@ -11,57 +11,57 @@ export const statusEffect: StatusEffectTranslationEntries = {
heal: "" heal: ""
}, },
poison: { poison: {
name: "Poison", name: "どく",
description: "poisoning", description: "どく",
obtain: "{{pokemonNameWithAffix}}\nwas poisoned!", obtain: "{{pokemonNameWithAffix}}は\n毒を あびた",
obtainSource: "{{pokemonNameWithAffix}}\nwas poisoned by the {{sourceText}}!", obtainSource: "{{pokemonNameWithAffix}}は\n{{sourceText}}で 毒を あびた!",
activation: "{{pokemonNameWithAffix}} is hurt\nby poison!", activation: "{{pokemonNameWithAffix}}は\n毒の ダメージを 受けた",
overlap: "{{pokemonNameWithAffix}} is\nalready poisoned!", overlap: "{{pokemonNameWithAffix}}は すでに\n毒を あびている",
heal: "{{pokemonNameWithAffix}} was\ncured of its poison!" heal: "{{pokemonNameWithAffix}}の 毒は\nきれいさっぱり なくなった"
}, },
toxic: { toxic: {
name: "Toxic", name: "もうどく",
description: "poisoning", description: "もうどく",
obtain: "{{pokemonNameWithAffix}}\nwas badly poisoned!", obtain: "{{pokemonNameWithAffix}}は\n猛毒を あびた",
obtainSource: "{{pokemonNameWithAffix}}\nwas badly poisoned by the {{sourceText}}!", obtainSource: "{{pokemonNameWithAffix}}は\n{{sourceText}}で 猛毒を あびた!",
activation: "{{pokemonNameWithAffix}} is hurt\nby poison!", activation: "{{pokemonNameWithAffix}}は\n毒の ダメージを受けた",
overlap: "{{pokemonNameWithAffix}} is\nalready poisoned!", overlap: "{{pokemonNameWithAffix}}は すでに\n毒を あびている",
heal: "{{pokemonNameWithAffix}} was\ncured of its poison!" heal: "{{pokemonNameWithAffix}}の 毒は\nきれいさっぱり なくなった"
}, },
paralysis: { paralysis: {
name: "Paralysis", name: "まひ",
description: "paralysis", description: "まひ",
obtain: "{{pokemonNameWithAffix}} was paralyzed,\nIt may be unable to move!", obtain: "{{pokemonNameWithAffix}}は まひして\n技が でにくくなった",
obtainSource: "{{pokemonNameWithAffix}} was paralyzed by the {{sourceText}}!\nIt may be unable to move!", obtainSource: "{{pokemonNameWithAffix}}は {{sourceText}}で まひして\n技が でにくくなった",
activation: "{{pokemonNameWithAffix}} is paralyzed!\nIt can't move!", activation: "{{pokemonNameWithAffix}}は\n体が しびれて 動けない",
overlap: "{{pokemonNameWithAffix}} is\nalready paralyzed!", overlap: "{{pokemonNameWithAffix}}は\nすでに まひしている",
heal: "{{pokemonNameWithAffix}} was\nhealed of paralysis!" heal: "{{pokemonNameWithAffix}}の\nしびれが とれた"
}, },
sleep: { sleep: {
name: "Sleep", name: "ねむり",
description: "sleep", description: "ねむり",
obtain: "{{pokemonNameWithAffix}}\nfell asleep!", obtain: "{{pokemonNameWithAffix}}は\n眠ってしまった",
obtainSource: "{{pokemonNameWithAffix}}\nfell asleep from the {{sourceText}}!", obtainSource: "{{pokemonNameWithAffix}}は\n{{sourceText}}で 眠ってしまった!",
activation: "{{pokemonNameWithAffix}} is fast asleep.", activation: "{{pokemonNameWithAffix}}は\nぐうぐう 眠っている",
overlap: "{{pokemonNameWithAffix}} is\nalready asleep!", overlap: "{{pokemonNameWithAffix}}は\nすでに 眠っている",
heal: "{{pokemonNameWithAffix}} woke up!" heal: "{{pokemonNameWithAffix}}は\n目を 覚ました"
}, },
freeze: { freeze: {
name: "Freeze", name: "こおり",
description: "freezing", description: "こおり",
obtain: "{{pokemonNameWithAffix}}\nwas frozen solid!", obtain: "{{pokemonNameWithAffix}}は\n凍りついた",
obtainSource: "{{pokemonNameWithAffix}}\nwas frozen solid by the {{sourceText}}!", obtainSource: "{{pokemonNameWithAffix}}は\n{{sourceText}}で 凍りついた!",
activation: "{{pokemonNameWithAffix}} is\nfrozen solid!", activation: "{{pokemonNameWithAffix}}は\n凍ってしまって 動けない",
overlap: "{{pokemonNameWithAffix}} is\nalready frozen!", overlap: "{{pokemonNameWithAffix}}は\nすでに 凍っている",
heal: "{{pokemonNameWithAffix}} was\ndefrosted!" heal: "{{pokemonNameWithAffix}}は\nこおり状態が 治った"
}, },
burn: { burn: {
name: "Burn", name: "やけど",
description: "burn", description: "やけど",
obtain: "{{pokemonNameWithAffix}}\nwas burned!", obtain: "{{pokemonNameWithAffix}}は\nやけどを 負った",
obtainSource: "{{pokemonNameWithAffix}}\nwas burned by the {{sourceText}}!", obtainSource: "{{pokemonNameWithAffix}}は\n{{sourceText}}で やけどを 負った!",
activation: "{{pokemonNameWithAffix}} is hurt\nby its burn!", activation: "{{pokemonNameWithAffix}}は\nやけどの ダメージを 受けた",
overlap: "{{pokemonNameWithAffix}} is\nalready burned!", overlap: "{{pokemonNameWithAffix}}は すでに\nやけどを 負っている",
heal: "{{pokemonNameWithAffix}} was\nhealed of its burn!" heal: "{{pokemonNameWithAffix}}の\nやけどが 治った"
}, },
} as const; } as const;

View File

@ -13,9 +13,12 @@ export const filterBar: SimpleTranslationEntries = {
"passive": "패시브", "passive": "패시브",
"passiveUnlocked": "패시브 해금", "passiveUnlocked": "패시브 해금",
"passiveLocked": "패시브 잠김", "passiveLocked": "패시브 잠김",
"costReduction": "코스트 줄이기", "costReduction": "코스트 감소",
"costReductionUnlocked": "코스트 절감됨", "costReductionUnlocked": "코스트 감소됨",
"costReductionLocked": "코스트 절감 없음", "costReductionLocked": "코스트 감소 없음",
"favorite": "즐겨찾기",
"isFavorite": "즐겨찾기 등록됨",
"notFavorite": "즐겨찾기 제외됨",
"ribbon": "클리어 여부", "ribbon": "클리어 여부",
"hasWon": "클리어 완료", "hasWon": "클리어 완료",
"hasNotWon": "클리어 안함", "hasNotWon": "클리어 안함",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "{{pokemonName}}의\n치유소원이 이루어졌다!", "sacrificialFullRestore": "{{pokemonName}}의\n치유소원이 이루어졌다!",
"invertStats": "{{pokemonName}}[[는]]\n능력 변화가 뒤집혔다!", "invertStats": "{{pokemonName}}[[는]]\n능력 변화가 뒤집혔다!",
"resetStats": "{{pokemonName}}의 모든 상태가\n원래대로 되돌아왔다!", "resetStats": "{{pokemonName}}의 모든 상태가\n원래대로 되돌아왔다!",
"statEliminated": "모든 상태가 원래대로 되돌아왔다!",
"faintCountdown": "{{pokemonName}}[[는]]\n{{turnCount}}턴 후에 쓰러져 버린다!", "faintCountdown": "{{pokemonName}}[[는]]\n{{turnCount}}턴 후에 쓰러져 버린다!",
"copyType": "{{pokemonName}}[[는]]\n{{targetPokemonName}}[[와]] 같은 타입이 되었다!", "copyType": "{{pokemonName}}[[는]]\n{{targetPokemonName}}[[와]] 같은 타입이 되었다!",
"suppressAbilities": "{{pokemonName}}의\n특성이 효과를 발휘하지 못하게 되었다!", "suppressAbilities": "{{pokemonName}}의\n특성이 효과를 발휘하지 못하게 되었다!",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "개체값 토글", "toggleIVs": "개체값 토글",
"manageMoves": "기술 관리", "manageMoves": "기술 관리",
"manageNature": "성격 관리", "manageNature": "성격 관리",
"addToFavorites": "즐겨찾기에 추가",
"removeFromFavorites": "즐겨찾기에서 제외",
"useCandies": "사탕 사용", "useCandies": "사탕 사용",
"selectNature": "교체할 성격을 선택해주세요.", "selectNature": "교체할 성격을 선택해주세요.",
"selectMoveSwapOut": "교체할 기술을 선택해주세요.", "selectMoveSwapOut": "교체할 기술을 선택해주세요.",
@ -41,6 +43,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"cycleAbility": ": 특성", "cycleAbility": ": 특성",
"cycleNature": ": 성격", "cycleNature": ": 성격",
"cycleVariant": ": 색상", "cycleVariant": ": 색상",
"goFilter": ": 필터로 이동",
"enablePassive": "패시브 활성화", "enablePassive": "패시브 활성화",
"disablePassive": "패시브 비활성화", "disablePassive": "패시브 비활성화",
"locked": "잠김", "locked": "잠김",

View File

@ -171,7 +171,7 @@ export const PGMachv: AchievementTranslationEntries = {
}, },
"UNEVOLVED_CLASSIC_VICTORY": { "UNEVOLVED_CLASSIC_VICTORY": {
name: "Tire as Crianças da Sala", name: "Tire as Crianças da Sala",
description: "Vença o jogo no Modo Clássico com pelo menos um membro da equipe não evoluído.." description: "Vença o jogo no Modo Clássico com pelo menos um membro da equipe não evoluído."
}, },
"MONO_GEN_ONE": { "MONO_GEN_ONE": {
@ -445,8 +445,8 @@ export const PGFachv: AchievementTranslationEntries = {
description: "Vença o jogo no modo clássico", description: "Vença o jogo no modo clássico",
}, },
"UNEVOLVED_CLASSIC_VICTORY": { "UNEVOLVED_CLASSIC_VICTORY": {
name: "Bring Your Child To Work Day", name: "Tire as Crianças da Sala",
description: "Beat the game in Classic Mode with at least one unevolved party member." description: "Vença o jogo no Modo Clássico com pelo menos um membro da equipe não evoluído."
}, },
"MONO_GEN_ONE": { "MONO_GEN_ONE": {

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,9 @@ export const filterBar: SimpleTranslationEntries = {
"costReduction": "Redução de Custo", "costReduction": "Redução de Custo",
"costReductionUnlocked": "Redução de Custo Desbloq.", "costReductionUnlocked": "Redução de Custo Desbloq.",
"costReductionLocked": "Redução de Custo Bloq.", "costReductionLocked": "Redução de Custo Bloq.",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "Fita", "ribbon": "Fita",
"hasWon": "Fita - Sim", "hasWon": "Fita - Sim",
"hasNotWon": "Fita - Não", "hasNotWon": "Fita - Não",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "O Healing Wish de {{pokemonName}}\nfoi concedido!", "sacrificialFullRestore": "O Healing Wish de {{pokemonName}}\nfoi concedido!",
"invertStats": "As mudanças de atributo de {{pokemonName}}\nforam revertidas!", "invertStats": "As mudanças de atributo de {{pokemonName}}\nforam revertidas!",
"resetStats": "As mudanças de atributo de {{pokemonName}}\nforam eliminadas!", "resetStats": "As mudanças de atributo de {{pokemonName}}\nforam eliminadas!",
"statEliminated": "Todas as mudanças de atributo foram eliminadas!",
"faintCountdown": "{{pokemonName}}\nirá desmaiar em {{turnCount}} turnos.", "faintCountdown": "{{pokemonName}}\nirá desmaiar em {{turnCount}} turnos.",
"copyType": "O tipo de {{pokemonName}}\nmudou para combinar com {{targetPokemonName}}!", "copyType": "O tipo de {{pokemonName}}\nmudou para combinar com {{targetPokemonName}}!",
"suppressAbilities": "A habilidade de {{pokemonName}}\nfoi suprimida!", "suppressAbilities": "A habilidade de {{pokemonName}}\nfoi suprimida!",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "Mostrar IVs", "toggleIVs": "Mostrar IVs",
"manageMoves": "Mudar Movimentos", "manageMoves": "Mudar Movimentos",
"manageNature": "Mudar Natureza", "manageNature": "Mudar Natureza",
"addToFavorites": "Add to Favorites",
"removeFromFavorites": "Remove from Favorites",
"useCandies": "Usar Doces", "useCandies": "Usar Doces",
"selectNature": "Escolha uma natureza.", "selectNature": "Escolha uma natureza.",
"selectMoveSwapOut": "Escolha um movimento para substituir.", "selectMoveSwapOut": "Escolha um movimento para substituir.",
@ -41,6 +43,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"cycleAbility": ": » Habilidade", "cycleAbility": ": » Habilidade",
"cycleNature": ": » Natureza", "cycleNature": ": » Natureza",
"cycleVariant": ": » Variante", "cycleVariant": ": » Variante",
"goFilter": ": Ir para filtros",
"enablePassive": "Ativar Passiva", "enablePassive": "Ativar Passiva",
"disablePassive": "Desativar Passiva", "disablePassive": "Desativar Passiva",
"locked": "Bloqueada", "locked": "Bloqueada",

View File

@ -20,18 +20,18 @@ export const titles: SimpleTranslationEntries = {
"plasma_boss": "Chefe da Equipe Plasma", "plasma_boss": "Chefe da Equipe Plasma",
"flare_boss": "Chefe da Equipe Flare", "flare_boss": "Chefe da Equipe Flare",
"rocket_admin": "Team Rocket Admin", "rocket_admin": "Admin da Equipe Rocket",
"rocket_admin_female": "Team Rocket Admin", "rocket_admin_female": "Admin da Equipe Rocket",
"magma_admin": "Team Magma Admin", "magma_admin": "Admin da Equipe Magma",
"magma_admin_female": "Team Magma Admin", "magma_admin_female": "Admin da Equipe Magma",
"aqua_admin": "Team Aqua Admin", "aqua_admin": "Admin da Equipe Aqua",
"aqua_admin_female": "Team Aqua Admin", "aqua_admin_female": "Admin da Equipe Aqua",
"galactic_commander": "Team Galactic Commander", "galactic_commander": "Comandante da Equipe Galáctica",
"galactic_commander_female": "Team Galactic Commander", "galactic_commander_female": "Comandante da Equipe Galáctica",
"plasma_sage": "Team Plasma Sage", "plasma_sage": "Sábio da Equipe Plasma",
"plasma_admin": "Team Plasma Admin", "plasma_admin": "Admin da Equipe Plasma",
"flare_admin": "Team Flare Admin", "flare_admin": "Admin da Equipe Flare",
"flare_admin_female": "Team Flare Admin", "flare_admin_female": "Admin da Equipe Flare",
// 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. // 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; } as const;
@ -138,24 +138,24 @@ export const trainerClasses: SimpleTranslationEntries = {
"worker_female": "Operária", "worker_female": "Operária",
"workers": "Operários", "workers": "Operários",
"youngster": "Jovem", "youngster": "Jovem",
"rocket_grunt": "Recruta da Equipe Rocket", "rocket_grunt": "Capanga da Equipe Rocket",
"rocket_grunt_female": "Recruta da Equipe Rocket", "rocket_grunt_female": "Capanga da Equipe Rocket",
"rocket_grunts": "Recrutas da Equipe Rocket", "rocket_grunts": "Capangas da Equipe Rocket",
"magma_grunt": "Recruta da Equipe Magma", "magma_grunt": "Capanga da Equipe Magma",
"magma_grunt_female": "Recruta da Equipe Magma", "magma_grunt_female": "Capanga da Equipe Magma",
"magma_grunts": "Recrutas da Equipe Magma", "magma_grunts": "Capangas da Equipe Magma",
"aqua_grunt": "Recruta da Equipe Aqua", "aqua_grunt": "Capanga da Equipe Aqua",
"aqua_grunt_female": "Recruta da Equipe Aqua", "aqua_grunt_female": "Capanga da Equipe Aqua",
"aqua_grunts": "Recrutas da Equipe Aqua", "aqua_grunts": "Capangas da Equipe Aqua",
"galactic_grunt": "Recruta da Equipe Galáctica", "galactic_grunt": "Capanga da Equipe Galáctica",
"galactic_grunt_female": "Recruta da Equipe Galáctica", "galactic_grunt_female": "Capanga da Equipe Galáctica",
"galactic_grunts": "Recrutas da Equipe Galáctica", "galactic_grunts": "Capangas da Equipe Galáctica",
"plasma_grunt": "Recruta da Equipe Plasma", "plasma_grunt": "Capanga da Equipe Plasma",
"plasma_grunt_female": "Recruta da Equipe Plasma", "plasma_grunt_female": "Capanga da Equipe Plasma",
"plasma_grunts": "Recrutas da Equipe Plasma", "plasma_grunts": "Capangas da Equipe Plasma",
"flare_grunt": "Recruta da Equipe Flare", "flare_grunt": "Capanga da Equipe Flare",
"flare_grunt_female": "Recruta da Equipe Flare", "flare_grunt_female": "Capanga da Equipe Flare",
"flare_grunts": "Recrutas da Equipe Flare", "flare_grunts": "Capangas da Equipe Flare",
} as const; } as const;
// Names of special trainers like gym leaders, elite four, and the champion // Names of special trainers like gym leaders, elite four, and the champion

View File

@ -16,6 +16,9 @@ export const filterBar: SimpleTranslationEntries = {
"costReduction": "费用降低", "costReduction": "费用降低",
"costReductionUnlocked": "已降费", "costReductionUnlocked": "已降费",
"costReductionLocked": "未降费", "costReductionLocked": "未降费",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "缎带", "ribbon": "缎带",
"hasWon": "有缎带", "hasWon": "有缎带",
"hasNotWon": "无缎带", "hasNotWon": "无缎带",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "{{pokemonName}}的\n治愈之愿实现了", "sacrificialFullRestore": "{{pokemonName}}的\n治愈之愿实现了",
"invertStats": "{{pokemonName}}的\n能力变化颠倒过来了", "invertStats": "{{pokemonName}}的\n能力变化颠倒过来了",
"resetStats": "{{pokemonName}}的\n能力变化复原了", "resetStats": "{{pokemonName}}的\n能力变化复原了",
"statEliminated": "所有能力都复原了!",
"faintCountdown": "{{pokemonName}}\n将在{{turnCount}}回合后灭亡!", "faintCountdown": "{{pokemonName}}\n将在{{turnCount}}回合后灭亡!",
"copyType": "{{pokemonName}}\n变成了{{targetPokemonName}}的属性!", "copyType": "{{pokemonName}}\n变成了{{targetPokemonName}}的属性!",
"suppressAbilities": "{{pokemonName}}的特性\n变得无效了", "suppressAbilities": "{{pokemonName}}的特性\n变得无效了",

View File

@ -28,6 +28,8 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"toggleIVs": "显示个体", "toggleIVs": "显示个体",
"manageMoves": "管理招式", "manageMoves": "管理招式",
"manageNature": "管理性格", "manageNature": "管理性格",
"addToFavorites": "Add to Favorites",
"removeFromFavorites": "Remove from Favorites",
"useCandies": "使用糖果", "useCandies": "使用糖果",
"selectNature": "选择性格", "selectNature": "选择性格",
"selectMoveSwapOut": "选择要替换的招式。", "selectMoveSwapOut": "选择要替换的招式。",
@ -41,6 +43,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"cycleAbility": ": 特性", "cycleAbility": ": 特性",
"cycleNature": ": 性格", "cycleNature": ": 性格",
"cycleVariant": ": 变种", "cycleVariant": ": 变种",
"goFilter": ": 转到筛选",
"enablePassive": "启用被动", "enablePassive": "启用被动",
"disablePassive": "禁用被动", "disablePassive": "禁用被动",
"locked": "未解锁", "locked": "未解锁",

View File

@ -16,6 +16,9 @@ export const filterBar: SimpleTranslationEntries = {
"costReduction": "Cost Reduction", "costReduction": "Cost Reduction",
"costReductionUnlocked": "Cost Reduction Unlocked", "costReductionUnlocked": "Cost Reduction Unlocked",
"costReductionLocked": "Cost Reduction Locked", "costReductionLocked": "Cost Reduction Locked",
"favorite": "Favorite",
"isFavorite": "Favorite - Yes",
"notFavorite": "Favorite - No",
"ribbon": "緞帶", "ribbon": "緞帶",
"hasWon": "有緞帶", "hasWon": "有緞帶",
"hasNotWon": "無緞帶", "hasNotWon": "無緞帶",

View File

@ -56,6 +56,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"sacrificialFullRestore": "{{pokemonName}}的\n治癒之願實現了", "sacrificialFullRestore": "{{pokemonName}}的\n治癒之願實現了",
"invertStats": "{{pokemonName}}的\n能力變化顛倒過來了", "invertStats": "{{pokemonName}}的\n能力變化顛倒過來了",
"resetStats": "{{pokemonName}}的\n能力變化復原了", "resetStats": "{{pokemonName}}的\n能力變化復原了",
"statEliminated": "所有能力都復原了!",
"faintCountdown": "{{pokemonName}}\n將在{{turnCount}}回合後滅亡!", "faintCountdown": "{{pokemonName}}\n將在{{turnCount}}回合後滅亡!",
"copyType": "{{pokemonName}}變成了{{targetPokemonName}}的屬性!", "copyType": "{{pokemonName}}變成了{{targetPokemonName}}的屬性!",
"suppressAbilities": "{{pokemonName}}的特性\n變得無效了", "suppressAbilities": "{{pokemonName}}的特性\n變得無效了",

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