diff --git a/src/data/move.ts b/src/data/move.ts index 8c97e305829..7d798689bea 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1103,7 +1103,7 @@ export class RecoilAttr extends MoveEffectAttr { } user.damageAndUpdate(recoilDamage, HitResult.OTHER, false, true, true); - user.scene.queueMessage(getPokemonMessage(user, " is hit\nwith recoil!")); + user.scene.queueMessage(i18next.t("moveTriggers:hitWithRecoil", {pokemonName: getPokemonNameWithAffix(user)})); user.turnData.damageTaken += recoilDamage; return true; @@ -1215,7 +1215,7 @@ export class HalfSacrificialAttr extends MoveEffectAttr { applyAbAttrs(BlockNonDirectDamageAbAttr, user, cancelled); if (!cancelled.value) { user.damageAndUpdate(Math.ceil(user.getMaxHp()/2), HitResult.OTHER, false, true, true); - user.scene.queueMessage(getPokemonMessage(user, " cut its own HP to power up its move!")); // Queue recoil message + user.scene.queueMessage(i18next.t("moveTriggers:cutHpPowerUpMove", {pokemonName: getPokemonNameWithAffix(user)})); // Queue recoil message } return true; } @@ -1804,7 +1804,7 @@ export class StealHeldItemChanceAttr extends MoveEffectAttr { const stolenItem = tierHeldItems[user.randSeedInt(tierHeldItems.length)]; user.scene.tryTransferHeldItemModifier(stolenItem, user, false).then(success => { if (success) { - user.scene.queueMessage(getPokemonMessage(user, ` stole\n${target.name}'s ${stolenItem.type.name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:stoleItem", {pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), ItemName: stolenItem.type.name})); } resolve(success); }); @@ -1883,9 +1883,9 @@ export class RemoveHeldItemAttr extends MoveEffectAttr { target.scene.updateModifiers(target.isPlayer()); if (this.berriesOnly) { - user.scene.queueMessage(getPokemonMessage(user, ` incinerated\n${target.name}'s ${removedItem.type.name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:incineratedItem", {pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name})); } else { - user.scene.queueMessage(getPokemonMessage(user, ` knocked off\n${target.name}'s ${removedItem.type.name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:knockedOffItem", {pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name})); } } @@ -2205,7 +2205,7 @@ export class ChargeAttr extends OverrideMoveEffectAttr { if (!lastMove || lastMove.move !== move.id || (lastMove.result !== MoveResult.OTHER && (this.sameTurn || lastMove.turn !== user.scene.currentBattle.turn))) { (args[0] as Utils.BooleanHolder).value = true; new MoveChargeAnim(this.chargeAnim, move.id, user).play(user.scene, () => { - user.scene.queueMessage(getPokemonMessage(user, ` ${this.chargeText.replace("{TARGET}", target.name)}`)); + user.scene.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user))); if (this.tagType) { user.addTag(this.tagType, 1, move.id, user.id); } @@ -2257,7 +2257,7 @@ export class SunlightChargeAttr extends ChargeAttr { export class ElectroShotChargeAttr extends ChargeAttr { private statIncreaseApplied: boolean; constructor() { - super(ChargeAnim.ELECTRO_SHOT_CHARGING, "absorbed electricity!", null, true); + super(ChargeAnim.ELECTRO_SHOT_CHARGING, i18next.t("moveTriggers:absorbedElectricity"), null, true); // Add a flag because ChargeAttr skills use themselves twice instead of once over one-to-two turns this.statIncreaseApplied = false; } @@ -2316,7 +2316,7 @@ export class DelayedAttackAttr extends OverrideMoveEffectAttr { resolve(true); }); } else { - user.scene.ui.showText(getPokemonMessage(user.scene.getPokemonById(target.id), ` took\nthe ${move.name} attack!`), null, () => resolve(true)); + user.scene.ui.showText(i18next.t("moveTriggers:tookMoveAttack", {pokemonName: getPokemonNameWithAffix(user.scene.getPokemonById(target.id)), moveName: move.name}), null, () => resolve(true)); } }); } @@ -2469,7 +2469,7 @@ export class HalfHpStatMaxAttr extends StatChangeAttr { } user.updateInfo().then(() => { const ret = super.apply(user, target, move, args); - user.scene.queueMessage(getPokemonMessage(user, ` cut its own HP\nand maximized its ${getBattleStatName(this.stats[0])}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", {pokemonName: getPokemonNameWithAffix(user), stateName: getBattleStatName(this.stats[0])})); resolve(ret); }); }); @@ -2525,8 +2525,7 @@ export class CopyStatsAttr extends MoveEffectAttr { } target.updateInfo(); user.updateInfo(); - - target.scene.queueMessage(getPokemonMessage(user, " copied\n") + getPokemonMessage(target, "'s stat changes!")); + target.scene.queueMessage(i18next.t("moveTriggers:copiedStatChanges", {pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target)})); return true; } @@ -2592,7 +2591,7 @@ export class SwapStatsAttr extends MoveEffectAttr { } target.updateInfo(); user.updateInfo(); - target.scene.queueMessage(getPokemonMessage(user, " switched stat changes with the target!")); + target.scene.queueMessage(i18next.t("moveTriggers:switchedStatChanges", {pokemonName: getPokemonNameWithAffix(user)})); return true; } } @@ -2748,7 +2747,7 @@ const doublePowerChanceMessageFunc = (user: Pokemon, target: Pokemon, move: Move user.scene.executeWithSeedOffset(() => { const rand = Utils.randSeedInt(100); if (rand < move.chance) { - message = getPokemonMessage(user, " is going all out for this attack!"); + message = i18next.t("moveTriggers:goingAllOutForAttack", {pokemonName: getPokemonNameWithAffix(user)}); } }, user.scene.currentBattle.turn << 6, user.scene.waveSeed); return message; @@ -3027,7 +3026,7 @@ const magnitudeMessageFunc = (user: Pokemon, target: Pokemon, move: Move) => { } } - message = `Magnitude ${m + 4}!`; + message = i18next.t("moveTriggers:magnitudeMessage", {magnitude: m + 4}); }, user.scene.currentBattle.turn << 6, user.scene.waveSeed); return message; }; @@ -3177,7 +3176,7 @@ export class PresentPowerAttr extends VariablePowerAttr { // If this move is multi-hit, disable all other hits user.stopMultiHit(); target.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(), - Math.max(Math.floor(target.getMaxHp() / 4), 1), getPokemonMessage(target, " regained\nhealth!"), true)); + Math.max(Math.floor(target.getMaxHp() / 4), 1), i18next.t("moveTriggers:regainedHealth", {pokemonName: getPokemonNameWithAffix(target)}), true)); } return true; @@ -3811,7 +3810,7 @@ const crashDamageFunc = (user: Pokemon, move: Move) => { } user.damageAndUpdate(Math.floor(user.getMaxHp() / 2), HitResult.OTHER, false, true); - user.scene.queueMessage(getPokemonMessage(user, " kept going\nand crashed!")); + user.scene.queueMessage(i18next.t("moveTriggers:keptGoingAndCrashed", {pokemonName: getPokemonNameWithAffix(user)})); user.turnData.damageTaken += Math.floor(user.getMaxHp() / 2); return true; @@ -4151,7 +4150,7 @@ export class IgnoreAccuracyAttr extends AddBattlerTagAttr { return false; } - user.scene.queueMessage(getPokemonMessage(user, ` took aim\nat ${target.name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:tookAimAtTarget", {pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target)})); return true; } @@ -4167,7 +4166,7 @@ export class AlwaysCritsAttr extends AddBattlerTagAttr { return false; } - user.scene.queueMessage(getPokemonMessage(user, ` took aim\nat ${target.name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:tookAimAtTarget", {pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target)})); return true; } @@ -4541,7 +4540,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (switchOutTarget.hp) { switchOutTarget.hideInfo().then(() => switchOutTarget.destroy()); switchOutTarget.scene.field.remove(switchOutTarget); - user.scene.queueMessage(getPokemonMessage(switchOutTarget, " fled!"), null, true, 500); + user.scene.queueMessage(i18next.t("moveTriggers:fled", {pokemonName: getPokemonNameWithAffix(switchOutTarget)}), null, true, 500); } if (!switchOutTarget.getAlly()?.isActive(true)) { @@ -4565,7 +4564,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null { const blockedByAbility = new Utils.BooleanHolder(false); applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, blockedByAbility); - return blockedByAbility.value ? getPokemonMessage(target, " can't be switched out!") : null; + return blockedByAbility.value ? i18next.t("moveTriggers:cannotBeSwitchedOut", {pokemonName: getPokemonNameWithAffix(target)}) : null; } getSwitchOutCondition(): MoveConditionFunc { @@ -4678,7 +4677,7 @@ export class CopyBiomeTypeAttr extends MoveEffectAttr { user.summonData.types = [ biomeType ]; user.updateInfo(); - user.scene.queueMessage(getPokemonMessage(user, ` transformed\ninto the ${Utils.toReadableString(Type[biomeType])} type!`)); + user.scene.queueMessage(i18next.t("moveTriggers:transformedIntoType", {pokemonName: getPokemonNameWithAffix(user), typeName: i18next.t(`pokemonInfo:Type.${Type[biomeType]}`)})); return true; } @@ -4697,7 +4696,7 @@ export class ChangeTypeAttr extends MoveEffectAttr { target.summonData.types = [this.type]; target.updateInfo(); - user.scene.queueMessage(getPokemonMessage(target, ` transformed\ninto the ${Utils.toReadableString(Type[this.type])} type!`)); + user.scene.queueMessage(i18next.t("moveTriggers:transformedIntoType", {pokemonName: getPokemonNameWithAffix(target), typeName: i18next.t(`pokemonInfo:Type.${Type[this.type]}`)})); return true; } @@ -4724,7 +4723,7 @@ export class AddTypeAttr extends MoveEffectAttr { target.summonData.types = types; target.updateInfo(); - user.scene.queueMessage(`${Utils.toReadableString(Type[this.type])} was added to\n` + getPokemonMessage(target, "!")); + user.scene.queueMessage(`${i18next.t(`pokemonInfo:Type.${Type[this.type]}`)} was added to\n` + getPokemonMessage(target, "!")); return true; } @@ -4748,7 +4747,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr { user.summonData.types = [ firstMoveType ]; - user.scene.queueMessage(getPokemonMessage(user, ` transformed\ninto to the ${Utils.toReadableString(Type[firstMoveType])} type!`)); + user.scene.queueMessage(i18next.t("moveTriggers:transformedIntoType", {pokemonName: getPokemonNameWithAffix(user), typeName: i18next.t(`pokemonInfo:Type.${Type[firstMoveType]}`)})); return true; } @@ -5150,7 +5149,7 @@ export class MovesetCopyMoveAttr extends OverrideMoveEffectAttr { user.summonData.moveset = user.getMoveset().slice(0); user.summonData.moveset[thisMoveIndex] = new PokemonMove(copiedMove.id, 0, 0); - user.scene.queueMessage(getPokemonMessage(user, ` copied\n${copiedMove.name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers: copiedMove", {pokemonName: getPokemonNameWithAffix(user), moveName: copiedMove.name})); return true; } @@ -5185,7 +5184,7 @@ export class SketchAttr extends MoveEffectAttr { user.setMove(sketchIndex, sketchedMove.id); - user.scene.queueMessage(getPokemonMessage(user, ` sketched\n${sketchedMove.name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:sketchedMove", {pokemonName: getPokemonNameWithAffix(user), moveName: sketchedMove.name})); return true; } @@ -5228,7 +5227,7 @@ export class AbilityChangeAttr extends MoveEffectAttr { (this.selfTarget ? user : target).summonData.ability = this.ability; - user.scene.queueMessage("The " + getPokemonMessage((this.selfTarget ? user : target), ` acquired\n${allAbilities[this.ability].name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:acquiredAbility", {pokemonName: getPokemonNameWithAffix((this.selfTarget ? user : target)), abilityName: allAbilities[this.ability].name})); return true; } @@ -5254,11 +5253,11 @@ export class AbilityCopyAttr extends MoveEffectAttr { user.summonData.ability = target.getAbility().id; - user.scene.queueMessage(getPokemonMessage(user, " copied the ") + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", {pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name})); if (this.copyToPartner && user.scene.currentBattle?.double && user.getAlly().hp) { user.getAlly().summonData.ability = target.getAbility().id; - user.getAlly().scene.queueMessage(getPokemonMessage(user.getAlly(), " copied the ") + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`)); + user.getAlly().scene.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", {pokemonName: getPokemonNameWithAffix(user.getAlly()), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name})); } return true; @@ -5291,7 +5290,7 @@ export class AbilityGiveAttr extends MoveEffectAttr { target.summonData.ability = user.getAbility().id; - user.scene.queueMessage("The" + getPokemonMessage(target, `\nacquired ${allAbilities[user.getAbility().id].name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:acquiredAbility", {pokemonName: getPokemonNameWithAffix(target), abilityName: allAbilities[user.getAbility().id].name})); return true; } @@ -5311,7 +5310,7 @@ export class SwitchAbilitiesAttr extends MoveEffectAttr { user.summonData.ability = target.getAbility().id; target.summonData.ability = tempAbilityId; - user.scene.queueMessage(getPokemonMessage(user, " swapped\nabilities with its target!")); + user.scene.queueMessage(i18next.t("moveTriggers:swappedAbilitiesWithTarget", {pokemonName: getPokemonNameWithAffix(user)})); return true; } @@ -5395,7 +5394,7 @@ export class TransformAttr extends MoveEffectAttr { user.summonData.moveset = target.getMoveset().map(m => new PokemonMove(m.moveId, m.ppUsed, m.ppUp)); user.summonData.types = target.getTypes(); - user.scene.queueMessage(getPokemonMessage(user, ` transformed\ninto ${target.name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:transformedIntoTarget", {pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target)})); user.loadAssets(false).then(() => { user.playAnim(); @@ -5426,7 +5425,7 @@ export class MoneyAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move): boolean { user.scene.currentBattle.moneyScattered += user.scene.getWaveMoneyAmount(0.2); - user.scene.queueMessage("Coins were scattered everywhere!"); + user.scene.queueMessage(i18next.t("moveTriggers:coinsScatteredEverywhere")); return true; } } @@ -5450,7 +5449,7 @@ export class DestinyBondAttr extends MoveEffectAttr { * @returns true */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - user.scene.queueMessage(`${getPokemonMessage(user, " is trying\nto take its foe down with it!")}`); + user.scene.queueMessage(`${i18next.t("moveTriggers:tryingToTakeFoeDown", {pokemonName: getPokemonNameWithAffix(user)})}`); user.addTag(BattlerTagType.DESTINY_BOND, undefined, move.id, user.id); return true; } @@ -5489,8 +5488,7 @@ export class AttackedByItemAttr extends MoveAttr { } const itemName = heldItems[0]?.type?.name ?? "item"; - const attackedByItemString = ` is about to be attacked by its ${itemName}!`; - target.scene.queueMessage(getPokemonMessage(target, attackedByItemString)); + target.scene.queueMessage(i18next.t("moveTriggers:attackedByItem", {pokemoneName: getPokemonNameWithAffix(target), itemName: itemName})); return true; }; @@ -5524,7 +5522,7 @@ const failIfDampCondition: MoveConditionFunc = (user, target, move) => { user.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled)); // Queue a message if an ability prevented usage of the move if (cancelled.value) { - user.scene.queueMessage(getPokemonMessage(user, ` cannot use ${move.name}!`)); + user.scene.queueMessage(i18next.t("moveTriggers:cannotUseMove", {pokemonName: getPokemonNameWithAffix(user), moveName: move.name})); } return !cancelled.value; }; @@ -5692,7 +5690,7 @@ export function initMoves() { .attr(OneHitKOAttr) .attr(OneHitKOAccuracyAttr), new AttackMove(Moves.RAZOR_WIND, Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 1) - .attr(ChargeAttr, ChargeAnim.RAZOR_WIND_CHARGING, "whipped\nup a whirlwind!") + .attr(ChargeAttr, ChargeAnim.RAZOR_WIND_CHARGING, i18next.t("moveTriggers:whippedUpAWhirlwind", {pokemonName: "{USER}"})) .attr(HighCritAttr) .windMove() .ignoresVirtual() @@ -5712,7 +5710,7 @@ export function initMoves() { .hidesTarget() .windMove(), new AttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1) - .attr(ChargeAttr, ChargeAnim.FLY_CHARGING, "flew\nup high!", BattlerTagType.FLYING) + .attr(ChargeAttr, ChargeAnim.FLY_CHARGING, i18next.t("moveTriggers:flewUpHigh", {pokemonName: "{USER}"}), BattlerTagType.FLYING) .condition(failOnGravityCondition) .ignoresVirtual(), new AttackMove(Moves.BIND, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) @@ -5859,7 +5857,7 @@ export function initMoves() { .slicingMove() .target(MoveTarget.ALL_NEAR_ENEMIES), new AttackMove(Moves.SOLAR_BEAM, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) - .attr(SunlightChargeAttr, ChargeAnim.SOLAR_BEAM_CHARGING, "took\nin sunlight!") + .attr(SunlightChargeAttr, ChargeAnim.SOLAR_BEAM_CHARGING, i18next.t("moveTriggers:tookInSunlight", {pokemonName: "{USER}"})) .attr(AntiSunlightPowerDecreaseAttr) .ignoresVirtual(), new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1) @@ -5907,7 +5905,7 @@ export function initMoves() { .attr(HitsTagAttr, BattlerTagType.UNDERGROUND, false) .makesContact(false), new AttackMove(Moves.DIG, Type.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) - .attr(ChargeAttr, ChargeAnim.DIG_CHARGING, "dug a hole!", BattlerTagType.UNDERGROUND) + .attr(ChargeAttr, ChargeAnim.DIG_CHARGING, i18next.t("moveTriggers:dugAHole", {pokemonName: "{USER}"}), BattlerTagType.UNDERGROUND) .ignoresVirtual(), new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.TOXIC) @@ -6003,7 +6001,7 @@ export function initMoves() { new AttackMove(Moves.SWIFT, Type.NORMAL, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 1) .target(MoveTarget.ALL_NEAR_ENEMIES), new AttackMove(Moves.SKULL_BASH, Type.NORMAL, MoveCategory.PHYSICAL, 130, 100, 10, -1, 0, 1) - .attr(ChargeAttr, ChargeAnim.SKULL_BASH_CHARGING, "lowered\nits head!", null, true) + .attr(ChargeAttr, ChargeAnim.SKULL_BASH_CHARGING, i18next.t("moveTriggers:loweredItsHead", {pokemonName: "{USER}"}), null, true) .attr(StatChangeAttr, BattleStat.DEF, 1, true) .ignoresVirtual(), new AttackMove(Moves.SPIKE_CANNON, Type.NORMAL, MoveCategory.PHYSICAL, 20, 100, 15, -1, 0, 1) @@ -6042,7 +6040,7 @@ export function initMoves() { new StatusMove(Moves.LOVELY_KISS, Type.NORMAL, 75, 10, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP), new AttackMove(Moves.SKY_ATTACK, Type.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1) - .attr(ChargeAttr, ChargeAnim.SKY_ATTACK_CHARGING, "is glowing!") + .attr(ChargeAttr, ChargeAnim.SKY_ATTACK_CHARGING, i18next.t("moveTriggers:isGlowing", {pokemonName: "{USER}"})) .attr(HighCritAttr) .attr(FlinchAttr) .makesContact(false) @@ -6245,7 +6243,7 @@ export function initMoves() { .target(MoveTarget.ALL_ENEMIES) .ignoresVirtual(), new StatusMove(Moves.HEAL_BELL, Type.NORMAL, -1, 5, -1, 0, 2) - .attr(PartyStatusCureAttr, "A bell chimed!", Abilities.SOUNDPROOF) + .attr(PartyStatusCureAttr, i18next.t("moveTriggers:bellChimed"), Abilities.SOUNDPROOF) .soundBased() .target(MoveTarget.PARTY), new AttackMove(Moves.RETURN, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) @@ -6348,7 +6346,7 @@ export function initMoves() { .attr(StatChangeAttr, BattleStat.SPDEF, -1) .ballBombMove(), new AttackMove(Moves.FUTURE_SIGHT, Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 2) - .attr(DelayedAttackAttr, ArenaTagType.FUTURE_SIGHT, ChargeAnim.FUTURE_SIGHT_CHARGING, "foresaw\nan attack!"), + .attr(DelayedAttackAttr, ArenaTagType.FUTURE_SIGHT, ChargeAnim.FUTURE_SIGHT_CHARGING, i18next.t("moveTriggers:foresawAnAttack", {pokemonName: "{USER}"})), new AttackMove(Moves.ROCK_SMASH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, 50, 0, 2) .attr(StatChangeAttr, BattleStat.DEF, -1), new AttackMove(Moves.WHIRLPOOL, Type.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 2) @@ -6464,7 +6462,7 @@ export function initMoves() { .makesContact(false) .partial(), new AttackMove(Moves.DIVE, Type.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 3) - .attr(ChargeAttr, ChargeAnim.DIVE_CHARGING, "hid\nunderwater!", BattlerTagType.UNDERWATER) + .attr(ChargeAttr, ChargeAnim.DIVE_CHARGING, i18next.t("moveTriggers:hidUnderwater", {pokemonName: "{USER}"}), BattlerTagType.UNDERWATER) .ignoresVirtual(), new AttackMove(Moves.ARM_THRUST, Type.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, 0, 3) .attr(MultiHitAttr), @@ -6520,7 +6518,7 @@ export function initMoves() { .attr(MovePowerMultiplierAttr, (user, target, move) => [WeatherType.SUNNY, WeatherType.RAIN, WeatherType.SANDSTORM, WeatherType.HAIL, WeatherType.SNOW, WeatherType.FOG, WeatherType.HEAVY_RAIN, WeatherType.HARSH_SUN].includes(user.scene.arena.weather?.weatherType) && !user.scene.arena.weather?.isEffectSuppressed(user.scene) ? 2 : 1) .ballBombMove(), new StatusMove(Moves.AROMATHERAPY, Type.GRASS, -1, 5, -1, 0, 3) - .attr(PartyStatusCureAttr, "A soothing aroma wafted through the area!", Abilities.SAP_SIPPER) + .attr(PartyStatusCureAttr, i18next.t("moveTriggers:soothingAromaWaftedThroughArea"), Abilities.SAP_SIPPER) .target(MoveTarget.PARTY), new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3) .attr(StatChangeAttr, BattleStat.SPDEF, -2), @@ -6595,7 +6593,7 @@ export function initMoves() { new SelfStatusMove(Moves.BULK_UP, Type.FIGHTING, -1, 20, -1, 0, 3) .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], 1, true), new AttackMove(Moves.BOUNCE, Type.FLYING, MoveCategory.PHYSICAL, 85, 85, 5, 30, 0, 3) - .attr(ChargeAttr, ChargeAnim.BOUNCE_CHARGING, "sprang up!", BattlerTagType.FLYING) + .attr(ChargeAttr, ChargeAnim.BOUNCE_CHARGING, i18next.t("moveTriggers:sprangUp", {pokemonName: "{USER}"}), BattlerTagType.FLYING) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .condition(failOnGravityCondition) .ignoresVirtual(), @@ -6631,7 +6629,7 @@ export function initMoves() { .attr(ConfuseAttr) .pulseMove(), new AttackMove(Moves.DOOM_DESIRE, Type.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 3) - .attr(DelayedAttackAttr, ArenaTagType.DOOM_DESIRE, ChargeAnim.DOOM_DESIRE_CHARGING, "chose\nDoom Desire as its destiny!"), + .attr(DelayedAttackAttr, ArenaTagType.DOOM_DESIRE, ChargeAnim.DOOM_DESIRE_CHARGING, i18next.t("moveTriggers:choseDoomDesireAsDestiny", {pokemonName: "{USER}"})), new AttackMove(Moves.PSYCHO_BOOST, Type.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 3) .attr(StatChangeAttr, BattleStat.SPATK, -2, true), new SelfStatusMove(Moves.ROOST, Type.FLYING, -1, 5, -1, 0, 4) @@ -6943,7 +6941,7 @@ export function initMoves() { .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 1, true) .windMove(), new AttackMove(Moves.SHADOW_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) - .attr(ChargeAttr, ChargeAnim.SHADOW_FORCE_CHARGING, "vanished\ninstantly!", BattlerTagType.HIDDEN) + .attr(ChargeAttr, ChargeAnim.SHADOW_FORCE_CHARGING, i18next.t("moveTriggers:vanishedInstantly", {pokemonName: "{USER}"}), BattlerTagType.HIDDEN) .ignoresProtect() .ignoresVirtual(), new SelfStatusMove(Moves.HONE_CLAWS, Type.DARK, -1, 15, -1, 0, 5) @@ -7058,7 +7056,7 @@ export function initMoves() { MovePowerMultiplierAttr, (user, target, move) => target.status || target.hasAbility(Abilities.COMATOSE)? 2 : 1), new AttackMove(Moves.SKY_DROP, Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) - .attr(ChargeAttr, ChargeAnim.SKY_DROP_CHARGING, "took {TARGET}\ninto the sky!", BattlerTagType.FLYING) // TODO: Add 2nd turn message + .attr(ChargeAttr, ChargeAnim.SKY_DROP_CHARGING, i18next.t("moveTriggers:tookTargetIntoSky", {pokemonName: "{USER}", targetName: "{TARGET}"}), BattlerTagType.FLYING) // TODO: Add 2nd turn message .condition(failOnGravityCondition) .ignoresVirtual(), new SelfStatusMove(Moves.SHIFT_GEAR, Type.STEEL, -1, 10, -1, 0, 5) @@ -7178,11 +7176,11 @@ export function initMoves() { .attr(StatChangeAttr, BattleStat.SPATK, 1, true) .danceMove(), new AttackMove(Moves.FREEZE_SHOCK, Type.ICE, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 5) - .attr(ChargeAttr, ChargeAnim.FREEZE_SHOCK_CHARGING, "became cloaked\nin a freezing light!") + .attr(ChargeAttr, ChargeAnim.FREEZE_SHOCK_CHARGING, i18next.t("moveTriggers:becameCloakedInFreezingLight", {pokemonName: "{USER}"})) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .makesContact(false), new AttackMove(Moves.ICE_BURN, Type.ICE, MoveCategory.SPECIAL, 140, 90, 5, 30, 0, 5) - .attr(ChargeAttr, ChargeAnim.ICE_BURN_CHARGING, "became cloaked\nin freezing air!") + .attr(ChargeAttr, ChargeAnim.ICE_BURN_CHARGING, i18next.t("moveTriggers:becameCloakedInFreezingAir", {pokemonName: "{USER}"})) .attr(StatusEffectAttr, StatusEffect.BURN) .ignoresVirtual(), new AttackMove(Moves.SNARL, Type.DARK, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) @@ -7224,7 +7222,7 @@ export function initMoves() { new AttackMove(Moves.FELL_STINGER, Type.BUG, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 6) .attr(PostVictoryStatChangeAttr, BattleStat.ATK, 3, true ), new AttackMove(Moves.PHANTOM_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) - .attr(ChargeAttr, ChargeAnim.PHANTOM_FORCE_CHARGING, "vanished\ninstantly!", BattlerTagType.HIDDEN) + .attr(ChargeAttr, ChargeAnim.PHANTOM_FORCE_CHARGING, i18next.t("moveTriggers:vanishedInstantly", {pokemonName: "{USER}"}), BattlerTagType.HIDDEN) .ignoresProtect() .ignoresVirtual(), new StatusMove(Moves.TRICK_OR_TREAT, Type.GHOST, 100, 20, -1, 0, 6) @@ -7326,7 +7324,7 @@ export function initMoves() { .powderMove() .unimplemented(), new SelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6) - .attr(ChargeAttr, ChargeAnim.GEOMANCY_CHARGING, "is charging its power!") + .attr(ChargeAttr, ChargeAnim.GEOMANCY_CHARGING, i18next.t("moveTriggers:isChargingPower", {pokemonName: "{USER}"})) .attr(StatChangeAttr, [ BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 2, true) .ignoresVirtual(), new StatusMove(Moves.MAGNETIC_FLUX, Type.ELECTRIC, -1, 20, -1, 0, 6) @@ -7531,7 +7529,7 @@ export function initMoves() { .condition((user, target, move) => target.summonData.battleStats[BattleStat.ATK] > -6) .triageMove(), new AttackMove(Moves.SOLAR_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7) - .attr(SunlightChargeAttr, ChargeAnim.SOLAR_BLADE_CHARGING, "is glowing!") + .attr(SunlightChargeAttr, ChargeAnim.SOLAR_BLADE_CHARGING, i18next.t("moveTriggers:isGlowing", {pokemonName: "{USER}"})) .attr(AntiSunlightPowerDecreaseAttr) .slicingMove(), new AttackMove(Moves.LEAFAGE, Type.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7) @@ -7571,7 +7569,7 @@ export function initMoves() { }) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(RemoveTypeAttr, Type.FIRE, (user) => { - user.scene.queueMessage(getPokemonMessage(user, " burned itself out!")); + user.scene.queueMessage(i18next.t("moveTriggers:burnedItselfOut", {pokemonName: getPokemonNameWithAffix(user)})); }), new StatusMove(Moves.SPEED_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 7) .unimplemented(), @@ -7593,7 +7591,7 @@ export function initMoves() { new StatusMove(Moves.INSTRUCT, Type.PSYCHIC, -1, 15, -1, 0, 7) .unimplemented(), new AttackMove(Moves.BEAK_BLAST, Type.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, 5, 7) - .attr(ChargeAttr, ChargeAnim.BEAK_BLAST_CHARGING, "started\nheating up its beak!", undefined, false, true, -3) + .attr(ChargeAttr, ChargeAnim.BEAK_BLAST_CHARGING, i18next.t("moveTriggers:startedHeatingUpBeak", {pokemonName: "{USER}"}), undefined, false, true, -3) .ballBombMove() .makesContact(false) .partial(), @@ -7950,7 +7948,7 @@ export function initMoves() { .makesContact(false) .partial(), new AttackMove(Moves.METEOR_BEAM, Type.ROCK, MoveCategory.SPECIAL, 120, 90, 10, 100, 0, 8) - .attr(ChargeAttr, ChargeAnim.METEOR_BEAM_CHARGING, "is overflowing\nwith space power!", null, true) + .attr(ChargeAttr, ChargeAnim.METEOR_BEAM_CHARGING, i18next.t("moveTriggers:isOverflowingWithSpacePower", {pokemonName: "{USER}"}), null, true) .attr(StatChangeAttr, BattleStat.SPATK, 1, true) .ignoresVirtual(), new AttackMove(Moves.SHELL_SIDE_ARM, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) @@ -8342,7 +8340,7 @@ export function initMoves() { return userTypes.includes(Type.ELECTRIC); }) .attr(RemoveTypeAttr, Type.ELECTRIC, (user) => { - user.scene.queueMessage(getPokemonMessage(user, " used up all its electricity!")); + user.scene.queueMessage(i18next.t("moveTriggers:usedUpAllElectricity", {pokemonName: getPokemonNameWithAffix(user)})); }), new AttackMove(Moves.GIGATON_HAMMER, Type.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9) .makesContact(false) diff --git a/src/locales/de/config.ts b/src/locales/de/config.ts index 4fa92c57440..c3058551d34 100644 --- a/src/locales/de/config.ts +++ b/src/locales/de/config.ts @@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler"; import { settings } from "./settings.js"; import { common } from "./common.js"; import { modifierSelectUiHandler } from "./modifier-select-ui-handler"; +import { moveTriggers } from "./move-trigger"; export const deConfig = { ability: ability, @@ -99,5 +100,6 @@ export const deConfig = { voucher: voucher, weather: weather, partyUiHandler: partyUiHandler, - modifierSelectUiHandler: modifierSelectUiHandler + modifierSelectUiHandler: modifierSelectUiHandler, + moveTriggers: moveTriggers }; diff --git a/src/locales/de/move-trigger.ts b/src/locales/de/move-trigger.ts new file mode 100644 index 00000000000..6e7ee42213d --- /dev/null +++ b/src/locales/de/move-trigger.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/interfaces/locales"; + +export const moveTriggers: SimpleTranslationEntries = { + "hitWithRecoil" : "{{pokemonName}} erleidet Schaden durch Rückstoß!", + "cutHpPowerUpMove": "{{pokemonName}} nutzt seine KP um seine Attacke zu verstärken!", + "absorbedElectricity": "{{pokemonName}} absorbiert elektrische Energie!", + "switchedStatChanges": "{{pokemonName}}tauschte die Statuswerteveränderungen mit dem Ziel!", + "goingAllOutForAttack": "{{pokemonName}}legt sich ins Zeug!", + "regainedHealth": "{{pokemonName}} erholt sich!", + "keptGoingAndCrashed": "{{pokemonName}} springt daneben und verletzt sich!", + "fled": "{{pokemonName}} ist geflüchtet!", + "cannotBeSwitchedOut": "{{pokemonName}} kann nicht ausgewechselt werden!", + "swappedAbilitiesWithTarget": "{{pokemonName}} tauscht Fähigkeiten mit dem Ziel!", + "coinsScatteredEverywhere": "Es sind überall Münzen verstreut!", + "attackedByItem": "{{pokemonName}} wird von seinem Item {{itemName}} angegriffen!", + "whippedUpAWhirlwind": "{{pokemonName}} erzeugt eine Windböe!", + "flewUpHigh": "{{pokemonName}} fliegt hoch empor!", + "tookInSunlight": "{{pokemonName}} absorbiert Sonnenlicht!", + "dugAHole": "{{pokemonName}} vergräbt sich in der Erde!", + "loweredItsHead": "{{pokemonName}} zieht seinen Kopf ein!", + "isGlowing": "{{pokemonName}} leuchtet grell!", + "bellChimed": "Eine Glocke läutet!", + "foresawAnAttack": "{{pokemonName}} sieht einen Angriff voraus!", + "hidUnderwater": "{{pokemonName}} taucht unter!", + "soothingAromaWaftedThroughArea": "Ein wohltuendes Aroma breitet sich aus!", + "sprangUp": "{{pokemonName}} springt hoch in die Luft!", + "choseDoomDesireAsDestiny": "{{pokemonName}} äußert einen Kismetwunsch für die Zukunft!", + "vanishedInstantly": "{{pokemonName}} verschwindet augenblicklich!", + "tookTargetIntoSky": "{{pokemonName}} entführt {{targetName}} in luftige Höhen!", + "becameCloakedInFreezingLight": "{{pokemonName}} wird von einem kühlen Licht umhüllt!", + "becameCloakedInFreezingAir": "{{pokemonName}} wird in klirrend kalte Luft gehüllt!", + "isChargingPower": "{{pokemonName}} saugt Kraft in sich auf!", + "burnedItselfOut": "{{pokemonName}} braucht sein Feuer komplett auf!", + "startedHeatingUpBeak": "{{pokemonName}} erhitzt seinen Schnabel!", + "isOverflowingWithSpacePower": "Kosmische Kräfte strömen aus {{pokemonName}}!", + "usedUpAllElectricity": "{{pokemonName}} braucht seinen Strom komplett auf!", + "stoleItem": "{{pokemonName}} hat {{targetName}} das Item {{itemName}} geklaut!", + "incineratedItem": "{{itemName}} von {{targetName}} ist verbrannt und somit nutzlos geworden!", + "knockedOffItem": "{{pokemonName}} schlägt das Item {{itemName}} von {{targetName}} weg!", + "tookMoveAttack": "{{pokemonName}} wurde von {{moveName}} getroffen!", + "cutOwnHpAndMaximizedStat": "{{pokemonName}} nutzt seine KP und maximiert dadurch seinen {{stateName}}-Wert!", + "copiedStatChanges": "{{pokemonName}} kopiert die Statusveränderungen von {{targetName}}!", + "magnitudeMessage": "Intensität {{magnitude}}!", + "tookAimAtTarget": "{{pokemonName}} zielt auf {{targetName}}!", + "transformedIntoType": "{{pokemonName}} nimmt den Typ {{typeName}} an!", + "copiedMove": "{{pokemonName}} kopiert {{moveName}}!", + "sketchedMove": "{{pokemonName}} ahmt die Attacke {{moveName}} nach!", + "acquiredAbility": "The {{pokemonName}} nimmt die Fähigkeit {{abilityName}} an!", + "copiedTargetAbility": "{{pokemonName}} kopiert{{abilityName}} von {{targerName}}!", + "transformedIntoTarget": "{{pokemonName}} verwandelt sich in {{targetName}}!", + "tryingToTakeFoeDown": "{{pokemonName}} versucht, den Angreifer mit sich zu nehmen!", + "cannotUseMove": "{{pokemonName}} kann {{moveName}} nicht einsetzen!" +} as const; diff --git a/src/locales/en/config.ts b/src/locales/en/config.ts index 28cf893563f..0dd495e1eb0 100644 --- a/src/locales/en/config.ts +++ b/src/locales/en/config.ts @@ -47,6 +47,7 @@ import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; import { terrain, weather } from "./weather"; import { modifierSelectUiHandler } from "./modifier-select-ui-handler"; +import { moveTriggers } from "./move-trigger"; export const enConfig = { ability: ability, @@ -99,5 +100,6 @@ export const enConfig = { voucher: voucher, weather: weather, partyUiHandler: partyUiHandler, - modifierSelectUiHandler: modifierSelectUiHandler + modifierSelectUiHandler: modifierSelectUiHandler, + moveTriggers: moveTriggers }; diff --git a/src/locales/en/move-trigger.ts b/src/locales/en/move-trigger.ts new file mode 100644 index 00000000000..3445c26ffc4 --- /dev/null +++ b/src/locales/en/move-trigger.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/interfaces/locales"; + +export const moveTriggers: SimpleTranslationEntries = { + "hitWithRecoil" : "{{pokemonName}} was damaged by the recoil!", + "cutHpPowerUpMove": "{{pokemonName}} cut its own HP to power up its move!", + "absorbedElectricity": "{{pokemonName}} absorbed electricity!", + "switchedStatChanges": "{{pokemonName}} switched stat changes with the target!", + "goingAllOutForAttack": "{{pokemonName}} is going all out for this attack!", + "regainedHealth": "{{pokemonName}} regained\nhealth!", + "keptGoingAndCrashed": "{{pokemonName}} kept going\nand crashed!", + "fled": "{{pokemonName}} fled!", + "cannotBeSwitchedOut": "{{pokemonName}} can't be switched out!", + "swappedAbilitiesWithTarget": "{{pokemonName}} swapped\nabilities with its target!", + "coinsScatteredEverywhere": "Coins were scattered everywhere!", + "attackedByItem": "{{pokemonName}} is about to be attacked by its {{itemName}}!", + "whippedUpAWhirlwind": "{{pokemonName}} whipped\nup a whirlwind!", + "flewUpHigh": "{{pokemonName}} flew\nup high!", + "tookInSunlight": "{{pokemonName}} absorbed light!", + "dugAHole": "{{pokemonName}} burrowed its way under the ground!", + "loweredItsHead": "{{pokemonName}} tucked in its head!", + "isGlowing": "{{pokemonName}} became cloaked in a harsh light!", + "bellChimed": "A bell chimed!", + "foresawAnAttack": "{{pokemonName}} foresaw\nan attack!", + "hidUnderwater": "{{pokemonName}} hid\nunderwater!", + "soothingAromaWaftedThroughArea": "A soothing aroma wafted through the area!", + "sprangUp": "{{pokemonName}} sprang up!", + "choseDoomDesireAsDestiny": "{{pokemonName}} chose\nDoom Desire as its destiny!", + "vanishedInstantly": "{{pokemonName}} vanished\ninstantly!", + "tookTargetIntoSky": "{{pokemonName}} took {{targetName}}\ninto the sky!", + "becameCloakedInFreezingLight": "{{pokemonName}} became cloaked\nin a freezing light!", + "becameCloakedInFreezingAir": "{{pokemonName}} became cloaked\nin freezing air!", + "isChargingPower": "{{pokemonName}} is absorbing power!", + "burnedItselfOut": "{{pokemonName}} burned itself out!", + "startedHeatingUpBeak": "{{pokemonName}} started\nheating up its beak!", + "isOverflowingWithSpacePower": "{{pokemonName}} is overflowing\nwith space power!", + "usedUpAllElectricity": "{{pokemonName}} used up all its electricity!", + "stoleItem": "{{pokemonName}} stole\n{{targetName}}'s {{itemName}}!", + "incineratedItem": "{{pokemonName}} incinerated\n{{targetName}}'s {{itemName}}!", + "knockedOffItem": "{{pokemonName}} knocked off\n{{targetName}}'s {{itemName}}!", + "tookMoveAttack": "{{pokemonName}} took\nthe {{moveName}} attack!", + "cutOwnHpAndMaximizedStat": "{{pokemonName}} cut its own HP\nand maximized its {{stateName}}!", + "copiedStatChanges": "{{pokemonName}} copied\n{{targetName}}'s stat changes!", + "magnitudeMessage": "Magnitude {{magnitude}}!", + "tookAimAtTarget": "{{pokemonName}} took aim\nat {{targetName}}!", + "transformedIntoType": "{{pokemonName}} transformed\ninto the {{typeName}} type!", + "copiedMove": "{{pokemonName}} copied\n{{moveName}}!", + "sketchedMove": "{{pokemonName}} sketched\n{{moveName}}!", + "acquiredAbility": "The {{pokemonName}} acquired\n{{abilityName}}!", + "copiedTargetAbility": "{{pokemonName}} copied the {{targerName}}'s\n{{abilityName}}!", + "transformedIntoTarget": "{{pokemonName}} transformed\ninto {{targetName}}!", + "tryingToTakeFoeDown": "{{pokemonName}} is hoping to take its attacker down with it!", + "cannotUseMove": "{{pokemonName}} cannot use {{moveName}}!" +} as const; diff --git a/src/locales/es/config.ts b/src/locales/es/config.ts index e280ca29152..af3e92c538d 100644 --- a/src/locales/es/config.ts +++ b/src/locales/es/config.ts @@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler"; import { settings } from "./settings.js"; import { common } from "./common.js"; import { modifierSelectUiHandler } from "./modifier-select-ui-handler"; +import { moveTriggers } from "./move-trigger"; export const esConfig = { ability: ability, @@ -99,5 +100,6 @@ export const esConfig = { voucher: voucher, weather: weather, partyUiHandler: partyUiHandler, - modifierSelectUiHandler: modifierSelectUiHandler + modifierSelectUiHandler: modifierSelectUiHandler, + moveTriggers: moveTriggers }; diff --git a/src/locales/es/move-trigger.ts b/src/locales/es/move-trigger.ts new file mode 100644 index 00000000000..3445c26ffc4 --- /dev/null +++ b/src/locales/es/move-trigger.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/interfaces/locales"; + +export const moveTriggers: SimpleTranslationEntries = { + "hitWithRecoil" : "{{pokemonName}} was damaged by the recoil!", + "cutHpPowerUpMove": "{{pokemonName}} cut its own HP to power up its move!", + "absorbedElectricity": "{{pokemonName}} absorbed electricity!", + "switchedStatChanges": "{{pokemonName}} switched stat changes with the target!", + "goingAllOutForAttack": "{{pokemonName}} is going all out for this attack!", + "regainedHealth": "{{pokemonName}} regained\nhealth!", + "keptGoingAndCrashed": "{{pokemonName}} kept going\nand crashed!", + "fled": "{{pokemonName}} fled!", + "cannotBeSwitchedOut": "{{pokemonName}} can't be switched out!", + "swappedAbilitiesWithTarget": "{{pokemonName}} swapped\nabilities with its target!", + "coinsScatteredEverywhere": "Coins were scattered everywhere!", + "attackedByItem": "{{pokemonName}} is about to be attacked by its {{itemName}}!", + "whippedUpAWhirlwind": "{{pokemonName}} whipped\nup a whirlwind!", + "flewUpHigh": "{{pokemonName}} flew\nup high!", + "tookInSunlight": "{{pokemonName}} absorbed light!", + "dugAHole": "{{pokemonName}} burrowed its way under the ground!", + "loweredItsHead": "{{pokemonName}} tucked in its head!", + "isGlowing": "{{pokemonName}} became cloaked in a harsh light!", + "bellChimed": "A bell chimed!", + "foresawAnAttack": "{{pokemonName}} foresaw\nan attack!", + "hidUnderwater": "{{pokemonName}} hid\nunderwater!", + "soothingAromaWaftedThroughArea": "A soothing aroma wafted through the area!", + "sprangUp": "{{pokemonName}} sprang up!", + "choseDoomDesireAsDestiny": "{{pokemonName}} chose\nDoom Desire as its destiny!", + "vanishedInstantly": "{{pokemonName}} vanished\ninstantly!", + "tookTargetIntoSky": "{{pokemonName}} took {{targetName}}\ninto the sky!", + "becameCloakedInFreezingLight": "{{pokemonName}} became cloaked\nin a freezing light!", + "becameCloakedInFreezingAir": "{{pokemonName}} became cloaked\nin freezing air!", + "isChargingPower": "{{pokemonName}} is absorbing power!", + "burnedItselfOut": "{{pokemonName}} burned itself out!", + "startedHeatingUpBeak": "{{pokemonName}} started\nheating up its beak!", + "isOverflowingWithSpacePower": "{{pokemonName}} is overflowing\nwith space power!", + "usedUpAllElectricity": "{{pokemonName}} used up all its electricity!", + "stoleItem": "{{pokemonName}} stole\n{{targetName}}'s {{itemName}}!", + "incineratedItem": "{{pokemonName}} incinerated\n{{targetName}}'s {{itemName}}!", + "knockedOffItem": "{{pokemonName}} knocked off\n{{targetName}}'s {{itemName}}!", + "tookMoveAttack": "{{pokemonName}} took\nthe {{moveName}} attack!", + "cutOwnHpAndMaximizedStat": "{{pokemonName}} cut its own HP\nand maximized its {{stateName}}!", + "copiedStatChanges": "{{pokemonName}} copied\n{{targetName}}'s stat changes!", + "magnitudeMessage": "Magnitude {{magnitude}}!", + "tookAimAtTarget": "{{pokemonName}} took aim\nat {{targetName}}!", + "transformedIntoType": "{{pokemonName}} transformed\ninto the {{typeName}} type!", + "copiedMove": "{{pokemonName}} copied\n{{moveName}}!", + "sketchedMove": "{{pokemonName}} sketched\n{{moveName}}!", + "acquiredAbility": "The {{pokemonName}} acquired\n{{abilityName}}!", + "copiedTargetAbility": "{{pokemonName}} copied the {{targerName}}'s\n{{abilityName}}!", + "transformedIntoTarget": "{{pokemonName}} transformed\ninto {{targetName}}!", + "tryingToTakeFoeDown": "{{pokemonName}} is hoping to take its attacker down with it!", + "cannotUseMove": "{{pokemonName}} cannot use {{moveName}}!" +} as const; diff --git a/src/locales/fr/config.ts b/src/locales/fr/config.ts index 4254eed9fc1..0225d4b3f2e 100644 --- a/src/locales/fr/config.ts +++ b/src/locales/fr/config.ts @@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler"; import { settings } from "./settings.js"; import { common } from "./common.js"; import { modifierSelectUiHandler } from "./modifier-select-ui-handler"; +import { moveTriggers } from "./move-trigger"; export const frConfig = { ability: ability, @@ -99,5 +100,6 @@ export const frConfig = { voucher: voucher, weather: weather, partyUiHandler: partyUiHandler, - modifierSelectUiHandler: modifierSelectUiHandler + modifierSelectUiHandler: modifierSelectUiHandler, + moveTriggers: moveTriggers }; diff --git a/src/locales/fr/move-trigger.ts b/src/locales/fr/move-trigger.ts new file mode 100644 index 00000000000..28530d4114d --- /dev/null +++ b/src/locales/fr/move-trigger.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/interfaces/locales"; + +export const moveTriggers: SimpleTranslationEntries = { + "hitWithRecoil" : "{{pokemonName}} est blessé par le contrecoup !", + "cutHpPowerUpMove": "{{pokemonName}} sacrifie des PV\net augmente la puissance ses capacités !", + "absorbedElectricity": "{{pokemonName}} absorbe de l’électricité !", + "switchedStatChanges": "{{pokemonName}} permute\nles changements de stats avec ceux de sa cible !", + "goingAllOutForAttack": "{{pokemonName}} a pris\ncette capacité au sérieux !", + "regainedHealth": "{{pokemonName}}\nrécupère des PV !", + "keptGoingAndCrashed": "{{pokemonName}}\ns’écrase au sol !", + "fled": "{{pokemonName}}\nprend la fuite !", + "cannotBeSwitchedOut": "Impossible de rappeler {{pokemonName}}\nau combat.", + "swappedAbilitiesWithTarget": "{{pokemonName}} et sa cible\néchangent leurs talents !", + "coinsScatteredEverywhere": "Il pleut des pièces !", + "attackedByItem": "{{pokemonName}} est attaqué\npar son propre objet {{itemName}} !", + "whippedUpAWhirlwind": "{{pokemonName}}se prépare\nà lancer une bourrasque !", + "flewUpHigh": "{{pokemonName}} s’envole !", + "tookInSunlight": "{{pokemonName}}\nabsorbe la lumière !", + "dugAHole": "{{pokemonName}}\nse cache dans le sol !", + "loweredItsHead": "{{pokemonName}}\nbaisse la tête !", + "isGlowing": "{{pokemonName}} est entouré\nd’une lumière intense !", + "bellChimed": "Un grelot sonne !", + "foresawAnAttack": "{{pokemonName}\nprévoit une attaque !", + "hidUnderwater": "{{pokemonName}}\nse cache sous l’eau !", + "soothingAromaWaftedThroughArea": "Une odeur apaisante flotte dans l’air !", + "sprangUp": "{{pokemonName}}\nse propulse dans les airs !", + "choseDoomDesireAsDestiny": "{{pokemonName}}souhaite\nle déclenchement de la capacité Vœu Destructeur !", + "vanishedInstantly": "{{pokemonName}}\ndisparait instantanément !", + "tookTargetIntoSky": "{{pokemonName}} emporte\n{{targetName}} haut dans le ciel !", + "becameCloakedInFreezingLight": "{{pokemonName}} est baigné\nd’une lumière blafarde !", + "becameCloakedInFreezingAir": "{{pokemonName}} est entouré\nd’un air glacial !", + "isChargingPower": "{{pokemonName}}\nconcentre son énergie !", + "burnedItselfOut": "Le feu intérieur de {{pokemonName}}\ns’est entièrement consumé !", + "startedHeatingUpBeak": "{{pokemonName}}\nfait chauffer son bec !", + "isOverflowingWithSpacePower": "La puissance du cosmos afflue dans le corps\nde {{pokemonName}} !", + "usedUpAllElectricity": "{{pokemonName}}a utilisé\ntoute son électricité !", + "stoleItem": "{{pokemonName}} vole\nl’objet {{itemName}} de {{targetName}} !", + "incineratedItem": "{{pokemonName}} brule\nla {{itemName}} de {{targetName}} !", + "knockedOffItem": "{{pokemonName}} fait tomber\nl’objet {{itemName}} de {{targetName}} !", + "tookMoveAttack": "{{pokemonName}}\nsubit l’attaque {{moveName}} !", + "cutOwnHpAndMaximizedStat": "{{pokemonName}} sacrifie des PV\net monte son {{stateName}} au maximum !", + "copiedStatChanges": "{{pokemonName}} copie\nles changements de stats de {{targetName}} !", + "magnitudeMessage": "Ampleur {{magnitude}} !", + "tookAimAtTarget": "{{pokemonName}} vise\n{{targetName}} !", + "transformedIntoType": "{{pokemonName}} prend\nle type {{typeName}} !", + "copiedMove": "{{pokemonName}} copie\nla capacité {{moveName}} !", + "sketchedMove": "{{pokemonName}} utilise Gribouille\npour copier {{moveName}} !", + "acquiredAbility": "Le talent de {{pokemonName}}\ndevient {{abilityName}} !", + "copiedTargetAbility": "{{pokemonName}} copie le talent\n{{abilityName}} de {{targerName}} !", + "transformedIntoTarget": "{{pokemonName}} prend\nl’apparence de {{targetName}} !", + "tryingToTakeFoeDown": "{{pokemonName}} veut entrainer\nson assaillant dans sa chute !", + "cannotUseMove": "{{pokemonName}} ne peut pas\nutiliser la capacité {{moveName}} !" +} as const; diff --git a/src/locales/it/config.ts b/src/locales/it/config.ts index 0dfc23d912b..3d715d3843a 100644 --- a/src/locales/it/config.ts +++ b/src/locales/it/config.ts @@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler"; import { settings } from "./settings.js"; import { common } from "./common.js"; import { modifierSelectUiHandler } from "./modifier-select-ui-handler"; +import { moveTriggers } from "./move-trigger"; export const itConfig = { ability: ability, @@ -99,5 +100,6 @@ export const itConfig = { voucher: voucher, weather: weather, partyUiHandler: partyUiHandler, - modifierSelectUiHandler: modifierSelectUiHandler + modifierSelectUiHandler: modifierSelectUiHandler, + moveTriggers: moveTriggers }; diff --git a/src/locales/it/move-trigger.ts b/src/locales/it/move-trigger.ts new file mode 100644 index 00000000000..3445c26ffc4 --- /dev/null +++ b/src/locales/it/move-trigger.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/interfaces/locales"; + +export const moveTriggers: SimpleTranslationEntries = { + "hitWithRecoil" : "{{pokemonName}} was damaged by the recoil!", + "cutHpPowerUpMove": "{{pokemonName}} cut its own HP to power up its move!", + "absorbedElectricity": "{{pokemonName}} absorbed electricity!", + "switchedStatChanges": "{{pokemonName}} switched stat changes with the target!", + "goingAllOutForAttack": "{{pokemonName}} is going all out for this attack!", + "regainedHealth": "{{pokemonName}} regained\nhealth!", + "keptGoingAndCrashed": "{{pokemonName}} kept going\nand crashed!", + "fled": "{{pokemonName}} fled!", + "cannotBeSwitchedOut": "{{pokemonName}} can't be switched out!", + "swappedAbilitiesWithTarget": "{{pokemonName}} swapped\nabilities with its target!", + "coinsScatteredEverywhere": "Coins were scattered everywhere!", + "attackedByItem": "{{pokemonName}} is about to be attacked by its {{itemName}}!", + "whippedUpAWhirlwind": "{{pokemonName}} whipped\nup a whirlwind!", + "flewUpHigh": "{{pokemonName}} flew\nup high!", + "tookInSunlight": "{{pokemonName}} absorbed light!", + "dugAHole": "{{pokemonName}} burrowed its way under the ground!", + "loweredItsHead": "{{pokemonName}} tucked in its head!", + "isGlowing": "{{pokemonName}} became cloaked in a harsh light!", + "bellChimed": "A bell chimed!", + "foresawAnAttack": "{{pokemonName}} foresaw\nan attack!", + "hidUnderwater": "{{pokemonName}} hid\nunderwater!", + "soothingAromaWaftedThroughArea": "A soothing aroma wafted through the area!", + "sprangUp": "{{pokemonName}} sprang up!", + "choseDoomDesireAsDestiny": "{{pokemonName}} chose\nDoom Desire as its destiny!", + "vanishedInstantly": "{{pokemonName}} vanished\ninstantly!", + "tookTargetIntoSky": "{{pokemonName}} took {{targetName}}\ninto the sky!", + "becameCloakedInFreezingLight": "{{pokemonName}} became cloaked\nin a freezing light!", + "becameCloakedInFreezingAir": "{{pokemonName}} became cloaked\nin freezing air!", + "isChargingPower": "{{pokemonName}} is absorbing power!", + "burnedItselfOut": "{{pokemonName}} burned itself out!", + "startedHeatingUpBeak": "{{pokemonName}} started\nheating up its beak!", + "isOverflowingWithSpacePower": "{{pokemonName}} is overflowing\nwith space power!", + "usedUpAllElectricity": "{{pokemonName}} used up all its electricity!", + "stoleItem": "{{pokemonName}} stole\n{{targetName}}'s {{itemName}}!", + "incineratedItem": "{{pokemonName}} incinerated\n{{targetName}}'s {{itemName}}!", + "knockedOffItem": "{{pokemonName}} knocked off\n{{targetName}}'s {{itemName}}!", + "tookMoveAttack": "{{pokemonName}} took\nthe {{moveName}} attack!", + "cutOwnHpAndMaximizedStat": "{{pokemonName}} cut its own HP\nand maximized its {{stateName}}!", + "copiedStatChanges": "{{pokemonName}} copied\n{{targetName}}'s stat changes!", + "magnitudeMessage": "Magnitude {{magnitude}}!", + "tookAimAtTarget": "{{pokemonName}} took aim\nat {{targetName}}!", + "transformedIntoType": "{{pokemonName}} transformed\ninto the {{typeName}} type!", + "copiedMove": "{{pokemonName}} copied\n{{moveName}}!", + "sketchedMove": "{{pokemonName}} sketched\n{{moveName}}!", + "acquiredAbility": "The {{pokemonName}} acquired\n{{abilityName}}!", + "copiedTargetAbility": "{{pokemonName}} copied the {{targerName}}'s\n{{abilityName}}!", + "transformedIntoTarget": "{{pokemonName}} transformed\ninto {{targetName}}!", + "tryingToTakeFoeDown": "{{pokemonName}} is hoping to take its attacker down with it!", + "cannotUseMove": "{{pokemonName}} cannot use {{moveName}}!" +} as const; diff --git a/src/locales/ko/config.ts b/src/locales/ko/config.ts index 0c63b92a3b2..12a955706df 100644 --- a/src/locales/ko/config.ts +++ b/src/locales/ko/config.ts @@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler"; import { settings } from "./settings.js"; import { common } from "./common.js"; import { modifierSelectUiHandler } from "./modifier-select-ui-handler"; +import { moveTriggers } from "./move-trigger"; export const koConfig = { ability: ability, @@ -99,5 +100,6 @@ export const koConfig = { voucher: voucher, weather: weather, partyUiHandler: partyUiHandler, - modifierSelectUiHandler: modifierSelectUiHandler + modifierSelectUiHandler: modifierSelectUiHandler, + moveTriggers: moveTriggers }; diff --git a/src/locales/ko/move-trigger.ts b/src/locales/ko/move-trigger.ts new file mode 100644 index 00000000000..dcebb5301ae --- /dev/null +++ b/src/locales/ko/move-trigger.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/interfaces/locales"; + +export const moveTriggers: SimpleTranslationEntries = { + "hitWithRecoil" : "{{pokemonName}}[[는]]\n반동으로 데미지를 입었다!", + "cutHpPowerUpMove": "{{pokemonName}}[[는]]\n체력을 깎아서 자신의 기술을 강화했다!", + "absorbedElectricity": "{{pokemonName}}[[는]]\n전기를 흡수했다!", + "switchedStatChanges": "{{pokemonName}}[[는]] 상대와 자신의\n능력 변화를 바꿨다!", + "goingAllOutForAttack": "{{pokemonName}}[[는]]\n전력을 다하기 시작했다!", + "regainedHealth": "{{pokemonName}}[[는]]\n기력을 회복했다!", + "keptGoingAndCrashed": "{{pokemonName}}[[는]]\n의욕이 넘쳐서 땅에 부딪쳤다!", + "fled": "{{pokemonName}}[[는]]\N도망쳤다!", + "cannotBeSwitchedOut": "{{pokemonName}}[[를]]\n돌아오게 할 수 없습니다!", + "swappedAbilitiesWithTarget": "{{pokemonName}}[[는]]\n서로의 특성을 교체했다!", + "coinsScatteredEverywhere": "돈이 주위에 흩어졌다!", + "attackedByItem": "{{itemName}}[[가]]\n{{pokemonName}}에게 덤벼들었다!", + "whippedUpAWhirlwind": "{{pokemonName}}의 주위에서\n공기가 소용돌이친다!", + "flewUpHigh": "{{pokemonName}}[[는]]\n하늘 높이 날아올랐다!", + "tookInSunlight": "{{pokemonName}}[[는]]\n빛을 흡수했다!", + "dugAHole": "{{pokemonName}}[[는]]\n땅으로 파고들었다!", + "loweredItsHead": "{{pokemonName}}[[는]]\n목을 움츠렸다!", + "isGlowing": "{{pokemonName}}[[를]]\n강렬한 빛이 감쌌다!", + "bellChimed": "방울소리가 울려 퍼졌다!", + "foresawAnAttack": "{{pokemonName}}[[는]]\n미래의 공격을 예지했다!", + "hidUnderwater": "{{pokemonName}}[[는]]\n물속에 몸을 숨겼다!", + "soothingAromaWaftedThroughArea": "기분 좋은 향기가 퍼졌다!", + "sprangUp": "{{pokemonName}}[[는]]\n높이 뛰어올랐다!", + "choseDoomDesireAsDestiny": "{{pokemonName}}[[는]]\n파멸의소원을 미래에 맡겼다!", + "vanishedInstantly": "{{pokemonName}}의 모습이\n일순간에 사라졌다!", + "tookTargetIntoSky": "{{pokemonName}}[[는]] {{targetName}}[[를]]\n상공으로 데려갔다!", + "becameCloakedInFreezingLight": "{{pokemonName}}[[는]]\n차가운 빛에 둘러싸였다!", + "becameCloakedInFreezingAir": "{{pokemonName}}[[는]]\n차디찬 공기에 둘러싸였다!", + "isChargingPower": "{{pokemonName}}[[는]]\n파워를 모으고 있다!", + "burnedItselfOut": "{{pokemonName}}의 불꽃은 다 타 버렸다!", + "startedHeatingUpBeak": "{{pokemonName}}[[는]]\n부리를 가열하기 시작했다!", + "isOverflowingWithSpacePower": "{{pokemonName}}에게서\n우주의 힘이 넘쳐난다!", + "usedUpAllElectricity": "{{pokemonName}}[[는]]\n전기를 다 써 버렸다!", + "stoleItem": "{{pokemonName}}[[는]] {{targetName}}[[로]]부터\n{{itemName}}[[을]] 빼앗았다!", + "incineratedItem": "{{pokemonName}}[[는]] {{targetName}}의\n{{itemName}}[[를]] 불태워서 없애버렸다!", + "knockedOffItem": "{{pokemonName}}[[는]] {{targetName}}의\n{{itemName}}[[를]] 탁 쳐서 떨구었다!", + "tookMoveAttack": "{{pokemonName}}[[는]]\n{{moveName}} 공격을 끌어들였다!", + "cutOwnHpAndMaximizedStat": "{{pokemonName}}[[는]] 체력을 깎아서\n{{stateName}}[[를]] 풀 파워로 만들었다!", + "copiedStatChanges": "{{pokemonName}}[[는]] {{targetName}}의\n능력 변화를 복사했다!", + "magnitudeMessage": "매그니튜드{{magnitude}}!", + "tookAimAtTarget": "{{pokemonName}}[[는]] 목표를\n{{targetName}}[[로]] 결정했다!", + "transformedIntoType": "{{pokemonName}}[[는]]\n{{typeName}}타입이 됐다!", + "copiedMove": "{{pokemonName}}[[는]]\n{{moveName}}[[를]] 복사했다!", + "sketchedMove": "{{pokemonName}}[[는]]\n{{moveName}}[[를]] 스케치했다!", + "acquiredAbility": "{{pokemonName}}[[는]]\n{{abilityName}}[[가]] 되었다!", + "copiedTargetAbility": "{{pokemonName}}[[는]] {{targerName}}의\n{{abilityName}}[[를]] 복사했다!", + "transformedIntoTarget": "{{pokemonName}}[[는]]\n{{targetName}}[[로]] 변신했다!", + "tryingToTakeFoeDown": "{{pokemonName}}[[는]] 상대를\n길동무로 삼으려 하고 있다!", + "cannotUseMove": "{{pokemonName}}[[는]]\n{{moveName}}[[를]] 쓸 수 없다!" +} as const; diff --git a/src/locales/pt_BR/config.ts b/src/locales/pt_BR/config.ts index ca7d5f721fb..9e1f88392e9 100644 --- a/src/locales/pt_BR/config.ts +++ b/src/locales/pt_BR/config.ts @@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler"; import { settings } from "./settings.js"; import { common } from "./common.js"; import { modifierSelectUiHandler } from "./modifier-select-ui-handler"; +import { moveTriggers } from "./move-trigger"; export const ptBrConfig = { ability: ability, @@ -99,5 +100,6 @@ export const ptBrConfig = { voucher: voucher, weather: weather, partyUiHandler: partyUiHandler, - modifierSelectUiHandler: modifierSelectUiHandler + modifierSelectUiHandler: modifierSelectUiHandler, + moveTriggers: moveTriggers }; diff --git a/src/locales/pt_BR/move-trigger.ts b/src/locales/pt_BR/move-trigger.ts new file mode 100644 index 00000000000..03eafd728c7 --- /dev/null +++ b/src/locales/pt_BR/move-trigger.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/interfaces/locales"; + +export const moveTriggers: SimpleTranslationEntries = { + "hitWithRecoil" : "{{pokemonName}} foi ferido pelo dano reverso!", + "cutHpPowerUpMove": "{{pokemonName}} diminuiu seus PS para aumentar o poder do ataque!", + "absorbedElectricity": "{{pokemonName}} absorveu eletricidade!", + "switchedStatChanges": "{{pokemonName}} trocou as mudanças de atributo com o alvo!", + "goingAllOutForAttack": "{{pokemonName}} está arriscando tudo nesse ataque!", + "regainedHealth": "{{pokemonName}} recuperou/nsaúde!", + "keptGoingAndCrashed": "{{pokemonName}} continuou/nindo e bateu!", + "fled": "{{pokemonName}} fugiu!", + "cannotBeSwitchedOut": "{{pokemonName}} não pode ser trocado!", + "swappedAbilitiesWithTarget": "{{pokemonName}} trocou/nde habilidades com o alvo!", + "coinsScatteredEverywhere": "Moedas foram espalhadas por toda parte!", + "attackedByItem": "{{pokemonName}} está prestes a ser atacado por {{itemName}}!", + "whippedUpAWhirlwind": "{{pokemonName}} criou\num redemoinho de vento!", + "flewUpHigh": "{{pokemonName}} voou\nbem alto!", + "tookInSunlight": "{{pokemonName}} absorveu a luz do sol!", + "dugAHole": "{{pokemonName}} cavou um buraco no chão!", + "loweredItsHead": "{{pokemonName}} abaixou sua cabeça!", + "isGlowing": "{{pokemonName}} ficou envolto em uma luz forte!", + "bellChimed": "Um sino tocou!", + "foresawAnAttack": "{{pokemonName}} previu/num ataque!", + "hidUnderwater": "{{pokemonName}} se escondeu/nembaixo d'água!", + "soothingAromaWaftedThroughArea": "Um aroma suave se espalhou pelo ambiente!", + "sprangUp": "{{pokemonName}} se levantou!", + "choseDoomDesireAsDestiny": "{{pokemonName}} escolheu\no Desejo da Perdição como seu destino!", + "vanishedInstantly": "{{pokemonName}} desapareceu/nde repente!", + "tookTargetIntoSky": "{{pokemonName}} levou {{targetName}}\npara o céu!", + "becameCloakedInFreezingLight": "{{pokemonName}} ficou envolto/nem uma luz congelante!", + "becameCloakedInFreezingAir": "{{pokemonName}} ficou envolto/nem ar congelante!", + "isChargingPower": "{{pokemonName}} está absorvendo energia!", + "burnedItselfOut": "{{pokemonName}} apagou seu próprio fogo!", + "startedHeatingUpBeak": "{{pokemonName}} começou\na esquentar seu bico!", + "isOverflowingWithSpacePower": "{{pokemonName}} está sobrecarregado\ncom energia espacial!", + "usedUpAllElectricity": "{{pokemonName}} usou toda a sua eletricidade!", + "stoleItem": "{{pokemonName}} roubou/no(a) {{itemName}} de {{targetName}}!", + "incineratedItem": "{{pokemonName}} incinerou\na {{itemName}} de {{targetName}}!", + "knockedOffItem": "{{pokemonName}} derrubou\no(a) {{itemName}} de {{targetName}}!", + "tookMoveAttack": "{{pokemonName}} pegou\no movimento {{moveName}}!", + "cutOwnHpAndMaximizedStat": "{{pokemonName}} reduziu seus PS\ne maximizou seu atributo de {{statName}}!", + "copiedStatChanges": "{{pokemonName}} copiou\nas mudanças de atributo de {{targetName}}!", + "magnitudeMessage": "Magnitude {{magnitude}}!", + "tookAimAtTarget": "{{pokemonName}} mirou\nem {{targetName}}!", + "transformedIntoType": "{{pokemonName}} se transformou\nem tipo {{typeName}}!", + "copiedMove": "{{pokemonName}} copiou\no movimento {{moveName}}!", + "sketchedMove": "{{pokemonName}} desenhou\no movimento {{moveName}}!", + "acquiredAbility": "{{pokemonName}} adquiriu\na habilidade {{abilityName}}!", + "copiedTargetAbility": "{{pokemonName}} copiou a habilidade\nde {{targetName}}!", + "transformedIntoTarget": "{{pokemonName}} se transformou\nem um(a) {{targetName}}!", + "tryingToTakeFoeDown": "{{pokemonName}} está tentando derrubar o atacante com ele!", + "cannotUseMove": "{{pokemonName}} não pode usar {{moveName}}!" +} as const; diff --git a/src/locales/zh_CN/config.ts b/src/locales/zh_CN/config.ts index 052bc5331f8..2425602a092 100644 --- a/src/locales/zh_CN/config.ts +++ b/src/locales/zh_CN/config.ts @@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler"; import { settings } from "./settings.js"; import { common } from "./common.js"; import { modifierSelectUiHandler } from "./modifier-select-ui-handler"; +import { moveTriggers } from "./move-trigger"; export const zhCnConfig = { ability: ability, @@ -99,5 +100,6 @@ export const zhCnConfig = { voucher: voucher, weather: weather, partyUiHandler: partyUiHandler, - modifierSelectUiHandler: modifierSelectUiHandler + modifierSelectUiHandler: modifierSelectUiHandler, + moveTriggers: moveTriggers }; diff --git a/src/locales/zh_CN/move-trigger.ts b/src/locales/zh_CN/move-trigger.ts new file mode 100644 index 00000000000..49dec55c07f --- /dev/null +++ b/src/locales/zh_CN/move-trigger.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/interfaces/locales"; + +export const moveTriggers: SimpleTranslationEntries = { + "hitWithRecoil" : "{{pokemonName}}\n受到了反作用力造成的伤害!", + "cutHpPowerUpMove": "{{pokemonName}}\n削减了体力并提升了招式威力!", + "absorbedElectricity": "{{pokemonName}}\n吸收了电力!", + "switchedStatChanges": "{{pokemonName}}和对手互换了\n自己的能力变化!", + "goingAllOutForAttack": "{{pokemonName}}拿出全力了!", + "regainedHealth": "{{pokemonName}}的\n体力回复了!", + "keptGoingAndCrashed": "{{pokemonName}}因势头过猛\n而撞到了地面!", + "fled": "{{pokemonName}}\n逃走了!", + "cannotBeSwitchedOut": "{{pokemonName}}\n无法被收回!", + "swappedAbilitiesWithTarget": "{{pokemonName}}\n互换了各自的特性!", + "coinsScatteredEverywhere": "金币散落一地!", + "attackedByItem": "{{pokemonName}}被\n{{itemName}}袭击了!", + "whippedUpAWhirlwind": "{{pokemonName}}周围的\n空气产生了旋涡!", + "flewUpHigh": "{{pokemonName}}\n飞向了高空!", + "tookInSunlight": "{{pokemonName}}\n吸收了光!", + "dugAHole": "{{pokemonName}}\n钻入了地里!", + "loweredItsHead": "{{pokemonName}}\n把头缩了进去!", + "isGlowing": "强光包围了{{pokemonName}}\n!", + "bellChimed": "铃声响彻四周!", + "foresawAnAttack": "{{pokemonName}}\n预知了未来的攻击!", + "hidUnderwater": "{{pokemonName}}\n潜入了水中!", + "soothingAromaWaftedThroughArea": "怡人的香气扩散了开来!", + "sprangUp": "{{pokemonName}}\n高高地跳了起来!", + "choseDoomDesireAsDestiny": "{{pokemonName}}\n将破灭之愿托付给了未来!", + "vanishedInstantly": "{{pokemonName}}的身影\n瞬间消失了!", + "tookTargetIntoSky": "{{pokemonName}}将{{targetName}}\n带上了高空!", + "becameCloakedInFreezingLight": "{{pokemonName}}\n被冷光包围了!", + "becameCloakedInFreezingAir": "{{pokemonName}}\n被冰冻的空气包围了!", + "isChargingPower": "{{pokemonName}}\n正在积蓄力量!", + "burnedItselfOut": "{{pokemonName}}的火焰燃尽了!", + "startedHeatingUpBeak": "{{pokemonName}}\n开始给鸟嘴加热了!", + "isOverflowingWithSpacePower": "{{pokemonName}}身上\n溢出了宇宙之力!", + "usedUpAllElectricity": "{{pokemonName}}\n用尽电力了!", + "stoleItem": "{{pokemonName}}从{{targetName}}那里\n夺取了{{itemName}}!", + "incineratedItem": "{{pokemonName}}烧没了\n{{targetName}}的{{itemName}}!", + "knockedOffItem": "{{pokemonName}}拍落了\n{{targetName}}的{{itemName}}!", + "tookMoveAttack": "{{pokemonName}}\n受到了{{moveName}}的攻击!", + "cutOwnHpAndMaximizedStat": "{{pokemonName}}\n削减了体力并释放了全部{{stateName}}!", + "copiedStatChanges": "{{pokemonName}}复制了\n{{targetName}}的能力变化!", + "magnitudeMessage": "震级{{magnitude}}!", + "tookAimAtTarget": "{{pokemonName}}将目标对准了\n{{targetName}}!", + "transformedIntoType": "{{pokemonName}} \n变成了{{typeName}}属性!", + "copiedMove": "{{pokemonName}}\n复制了{{moveName}}!", + "sketchedMove": "{{pokemonName}}\n对{{moveName}}进行了写生!", + "acquiredAbility": "{{pokemonName}}的特性\n变为{{abilityName}}了!", + "copiedTargetAbility": "{{pokemonName}}复制了\n{{targerName}}的{{abilityName}}!", + "transformedIntoTarget": "{{pokemonName}}\n变身成了{{targetName}}!", + "tryingToTakeFoeDown": "{{pokemonName}}\n想和对手同归于尽!", + "cannotUseMove": "{{pokemonName}}\n无法使用{{moveName}}!" +} as const; diff --git a/src/locales/zh_TW/config.ts b/src/locales/zh_TW/config.ts index 3845401a6fa..1b5a4001aee 100644 --- a/src/locales/zh_TW/config.ts +++ b/src/locales/zh_TW/config.ts @@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler"; import { settings } from "./settings.js"; import { common } from "./common.js"; import { modifierSelectUiHandler } from "./modifier-select-ui-handler"; +import { moveTriggers } from "./move-trigger"; export const zhTwConfig = { ability: ability, @@ -99,5 +100,6 @@ export const zhTwConfig = { voucher: voucher, weather: weather, partyUiHandler: partyUiHandler, - modifierSelectUiHandler: modifierSelectUiHandler + modifierSelectUiHandler: modifierSelectUiHandler, + moveTriggers: moveTriggers }; diff --git a/src/locales/zh_TW/move-trigger.ts b/src/locales/zh_TW/move-trigger.ts new file mode 100644 index 00000000000..ac8630b3db4 --- /dev/null +++ b/src/locales/zh_TW/move-trigger.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/interfaces/locales"; + +export const moveTriggers: SimpleTranslationEntries = { + "hitWithRecoil" : "{{pokemonName}}\n受到了反作用力造成的傷害!", + "cutHpPowerUpMove": "{{pokemonName}}\n削減體力並提升了招式威力!", + "absorbedElectricity": "{{pokemonName}}\n吸收了电力!", + "switchedStatChanges": "{{pokemonName}}和對手互換了\n自身的能力變化!", + "goingAllOutForAttack": "{{pokemonName}}拿出全力了!", + "regainedHealth": "{{pokemonName}}的\n體力回復了!", + "keptGoingAndCrashed": "{{pokemonName}}因勢頭過猛\n而撞到了地面!", + "fled": "{{pokemonName}}\n逃走了!", + "cannotBeSwitchedOut": "{{pokemonName}}\n無法被收回!", + "swappedAbilitiesWithTarget": "{{pokemonName}}\n互換了各自的特性!", + "coinsScatteredEverywhere": "金幣散落一地!", + "attackedByItem": "{{pokemonName}}被\n{{itemName}}襲擊了!", + "whippedUpAWhirlwind": "{{pokemonName}}周圍的\n空氣產生了旋渦!", + "flewUpHigh": "{{pokemonName}}\n飛向了高空!", + "tookInSunlight": "{{pokemonName}}\n吸收了光線!", + "dugAHole": "{{pokemonName}}\n鑽進了地下!", + "loweredItsHead": "{{pokemonName}}\n把頭縮了進去!", + "isGlowing": "強光包圍了\n{{pokemonName}}!", + "bellChimed": "鈴聲響徹四周!", + "foresawAnAttack": "{{pokemonName}}\n預知了未來的攻擊!", + "hidUnderwater": "{{pokemonName}}\n潛入了水中!", + "soothingAromaWaftedThroughArea": "怡人的香氣擴散了開來!", + "sprangUp": "{{pokemonName}}\n高高地跳了起來!", + "choseDoomDesireAsDestiny": "{{pokemonName}}\n將破滅之願託付給了未來!", + "vanishedInstantly": "{{pokemonName}}的身影\n瞬間消失了!", + "tookTargetIntoSky": "{{pokemonName}}將{{targetName}}\n帶上了高空!", + "becameCloakedInFreezingLight": "{{pokemonName}}\n被冷光包圍了!", + "becameCloakedInFreezingAir": "{{pokemonName}}\n被冰凍的空氣包圍了!", + "isChargingPower": "{{pokemonName}}\n正在積蓄力量!", + "burnedItselfOut": "{{pokemonName}}的火焰燃盡了!", + "startedHeatingUpBeak": "{{pokemonName}}\n開始給鳥嘴加熱了!", + "isOverflowingWithSpacePower": "{{pokemonName}}湧起了宇宙的力量!", + "usedUpAllElectricity": "{{pokemonName}}\n用盡了電力!", + "stoleItem": "{{pokemonName}}从{{targetName}}那裏\n奪取了{{itemName}}!", + "incineratedItem": "{{pokemonName}}燒掉了\n{{targetName}}的{{itemName}}!", + "knockedOffItem": "{{pokemonName}}拍落了\n{{targetName}}的{{itemName}}!", + "tookMoveAttack": "{{pokemonName}}\n受到了{{moveName}}的攻擊!", + "cutOwnHpAndMaximizedStat": "{{pokemonName}}\n削減體力並釋放了全部{{stateName}}!", + "copiedStatChanges": "{{pokemonName}}複製了\n{{targetName}}的能力變化!", + "magnitudeMessage": "震級{{magnitude}}!", + "tookAimAtTarget": "{{pokemonName}}將目標對準了\n{{targetName}}!", + "transformedIntoType": "{{pokemonName}} \n變成了{{typeName}}屬性!", + "copiedMove": "{{pokemonName}}\n複製了{{moveName}}!", + "sketchedMove": "{{pokemonName}}\n對{{moveName}}進行了寫生!", + "acquiredAbility": "{{pokemonName}}的特性\n變为{{abilityName}}了!", + "copiedTargetAbility": "{{pokemonName}}複製了\n{{targerName}}的{{abilityName}}!", + "transformedIntoTarget": "{{pokemonName}}\n變身成了{{targetName}}!", + "tryingToTakeFoeDown": "{{pokemonName}}\n想和對手同歸於盡!", + "cannotUseMove": "{{pokemonName}}\n無法使用{{moveName}}!" +} as const;