[Localization]Localized move-trigger text (#2913)
* [Localization]Localized move-trigger text * [Localization]Localized zh-cn move-trigger text * [Localization]fix typo * [Localization]fix typo * Update src/locales/pt_BR/move-trigger.ts Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br> * [Localization]add pokemonName to move-trigger.ts * [Localization]add pokemonName to move-trigger.ts * Update zh_TW move-trigger.ts * Update zh_CN move-trigger.ts * Update move.ts * Update src/locales/ko/move-trigger.ts Co-authored-by: Enoch <enoch.jwsong@gmail.com> * Update src/locales/ko/move-trigger.ts Co-authored-by: Enoch <enoch.jwsong@gmail.com> * Update move-trigger.ts * Update src/locales/de/move-trigger.ts Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> * [Localization]add affix to target pokemon names * Update src/locales/fr/move-trigger.ts Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr> * localized type --------- Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br> Co-authored-by: Enoch <enoch.jwsong@gmail.com> Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>
This commit is contained in:
parent
1965f2b147
commit
39bdfea0c8
118
src/data/move.ts
118
src/data/move.ts
|
@ -1103,7 +1103,7 @@ export class RecoilAttr extends MoveEffectAttr {
|
||||||
}
|
}
|
||||||
|
|
||||||
user.damageAndUpdate(recoilDamage, HitResult.OTHER, false, true, true);
|
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;
|
user.turnData.damageTaken += recoilDamage;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1215,7 +1215,7 @@ export class HalfSacrificialAttr extends MoveEffectAttr {
|
||||||
applyAbAttrs(BlockNonDirectDamageAbAttr, user, cancelled);
|
applyAbAttrs(BlockNonDirectDamageAbAttr, user, cancelled);
|
||||||
if (!cancelled.value) {
|
if (!cancelled.value) {
|
||||||
user.damageAndUpdate(Math.ceil(user.getMaxHp()/2), HitResult.OTHER, false, true, true);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1804,7 +1804,7 @@ export class StealHeldItemChanceAttr extends MoveEffectAttr {
|
||||||
const stolenItem = tierHeldItems[user.randSeedInt(tierHeldItems.length)];
|
const stolenItem = tierHeldItems[user.randSeedInt(tierHeldItems.length)];
|
||||||
user.scene.tryTransferHeldItemModifier(stolenItem, user, false).then(success => {
|
user.scene.tryTransferHeldItemModifier(stolenItem, user, false).then(success => {
|
||||||
if (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);
|
resolve(success);
|
||||||
});
|
});
|
||||||
|
@ -1883,9 +1883,9 @@ export class RemoveHeldItemAttr extends MoveEffectAttr {
|
||||||
target.scene.updateModifiers(target.isPlayer());
|
target.scene.updateModifiers(target.isPlayer());
|
||||||
|
|
||||||
if (this.berriesOnly) {
|
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 {
|
} 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))) {
|
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;
|
(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(getPokemonMessage(user, ` ${this.chargeText.replace("{TARGET}", target.name)}`));
|
user.scene.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user)));
|
||||||
if (this.tagType) {
|
if (this.tagType) {
|
||||||
user.addTag(this.tagType, 1, move.id, user.id);
|
user.addTag(this.tagType, 1, move.id, user.id);
|
||||||
}
|
}
|
||||||
|
@ -2257,7 +2257,7 @@ export class SunlightChargeAttr extends ChargeAttr {
|
||||||
export class ElectroShotChargeAttr extends ChargeAttr {
|
export class ElectroShotChargeAttr extends ChargeAttr {
|
||||||
private statIncreaseApplied: boolean;
|
private statIncreaseApplied: boolean;
|
||||||
constructor() {
|
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
|
// Add a flag because ChargeAttr skills use themselves twice instead of once over one-to-two turns
|
||||||
this.statIncreaseApplied = false;
|
this.statIncreaseApplied = false;
|
||||||
}
|
}
|
||||||
|
@ -2316,7 +2316,7 @@ export class DelayedAttackAttr extends OverrideMoveEffectAttr {
|
||||||
resolve(true);
|
resolve(true);
|
||||||
});
|
});
|
||||||
} else {
|
} 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(() => {
|
user.updateInfo().then(() => {
|
||||||
const ret = super.apply(user, target, move, args);
|
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);
|
resolve(ret);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -2525,8 +2525,7 @@ export class CopyStatsAttr extends MoveEffectAttr {
|
||||||
}
|
}
|
||||||
target.updateInfo();
|
target.updateInfo();
|
||||||
user.updateInfo();
|
user.updateInfo();
|
||||||
|
target.scene.queueMessage(i18next.t("moveTriggers:copiedStatChanges", {pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target)}));
|
||||||
target.scene.queueMessage(getPokemonMessage(user, " copied\n") + getPokemonMessage(target, "'s stat changes!"));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -2592,7 +2591,7 @@ export class SwapStatsAttr extends MoveEffectAttr {
|
||||||
}
|
}
|
||||||
target.updateInfo();
|
target.updateInfo();
|
||||||
user.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;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2748,7 +2747,7 @@ const doublePowerChanceMessageFunc = (user: Pokemon, target: Pokemon, move: Move
|
||||||
user.scene.executeWithSeedOffset(() => {
|
user.scene.executeWithSeedOffset(() => {
|
||||||
const rand = Utils.randSeedInt(100);
|
const rand = Utils.randSeedInt(100);
|
||||||
if (rand < move.chance) {
|
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);
|
}, user.scene.currentBattle.turn << 6, user.scene.waveSeed);
|
||||||
return message;
|
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);
|
}, user.scene.currentBattle.turn << 6, user.scene.waveSeed);
|
||||||
return message;
|
return message;
|
||||||
};
|
};
|
||||||
|
@ -3177,7 +3176,7 @@ export class PresentPowerAttr extends VariablePowerAttr {
|
||||||
// If this move is multi-hit, disable all other hits
|
// If this move is multi-hit, disable all other hits
|
||||||
user.stopMultiHit();
|
user.stopMultiHit();
|
||||||
target.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(),
|
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;
|
return true;
|
||||||
|
@ -3811,7 +3810,7 @@ const crashDamageFunc = (user: Pokemon, move: Move) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
user.damageAndUpdate(Math.floor(user.getMaxHp() / 2), HitResult.OTHER, false, true);
|
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);
|
user.turnData.damageTaken += Math.floor(user.getMaxHp() / 2);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -4151,7 +4150,7 @@ export class IgnoreAccuracyAttr extends AddBattlerTagAttr {
|
||||||
return false;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4167,7 +4166,7 @@ export class AlwaysCritsAttr extends AddBattlerTagAttr {
|
||||||
return false;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4541,7 +4540,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
|
||||||
if (switchOutTarget.hp) {
|
if (switchOutTarget.hp) {
|
||||||
switchOutTarget.hideInfo().then(() => switchOutTarget.destroy());
|
switchOutTarget.hideInfo().then(() => switchOutTarget.destroy());
|
||||||
switchOutTarget.scene.field.remove(switchOutTarget);
|
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)) {
|
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 {
|
getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
|
||||||
const blockedByAbility = new Utils.BooleanHolder(false);
|
const blockedByAbility = new Utils.BooleanHolder(false);
|
||||||
applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, blockedByAbility);
|
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 {
|
getSwitchOutCondition(): MoveConditionFunc {
|
||||||
|
@ -4678,7 +4677,7 @@ export class CopyBiomeTypeAttr extends MoveEffectAttr {
|
||||||
user.summonData.types = [ biomeType ];
|
user.summonData.types = [ biomeType ];
|
||||||
user.updateInfo();
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4697,7 +4696,7 @@ export class ChangeTypeAttr extends MoveEffectAttr {
|
||||||
target.summonData.types = [this.type];
|
target.summonData.types = [this.type];
|
||||||
target.updateInfo();
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4724,7 +4723,7 @@ export class AddTypeAttr extends MoveEffectAttr {
|
||||||
target.summonData.types = types;
|
target.summonData.types = types;
|
||||||
target.updateInfo();
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4748,7 +4747,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr {
|
||||||
|
|
||||||
user.summonData.types = [ firstMoveType ];
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -5150,7 +5149,7 @@ export class MovesetCopyMoveAttr extends OverrideMoveEffectAttr {
|
||||||
user.summonData.moveset = user.getMoveset().slice(0);
|
user.summonData.moveset = user.getMoveset().slice(0);
|
||||||
user.summonData.moveset[thisMoveIndex] = new PokemonMove(copiedMove.id, 0, 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -5185,7 +5184,7 @@ export class SketchAttr extends MoveEffectAttr {
|
||||||
|
|
||||||
user.setMove(sketchIndex, sketchedMove.id);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -5228,7 +5227,7 @@ export class AbilityChangeAttr extends MoveEffectAttr {
|
||||||
|
|
||||||
(this.selfTarget ? user : target).summonData.ability = this.ability;
|
(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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -5254,11 +5253,11 @@ export class AbilityCopyAttr extends MoveEffectAttr {
|
||||||
|
|
||||||
user.summonData.ability = target.getAbility().id;
|
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) {
|
if (this.copyToPartner && user.scene.currentBattle?.double && user.getAlly().hp) {
|
||||||
user.getAlly().summonData.ability = target.getAbility().id;
|
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;
|
return true;
|
||||||
|
@ -5291,7 +5290,7 @@ export class AbilityGiveAttr extends MoveEffectAttr {
|
||||||
|
|
||||||
target.summonData.ability = user.getAbility().id;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -5311,7 +5310,7 @@ export class SwitchAbilitiesAttr extends MoveEffectAttr {
|
||||||
user.summonData.ability = target.getAbility().id;
|
user.summonData.ability = target.getAbility().id;
|
||||||
target.summonData.ability = tempAbilityId;
|
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;
|
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.moveset = target.getMoveset().map(m => new PokemonMove(m.moveId, m.ppUsed, m.ppUp));
|
||||||
user.summonData.types = target.getTypes();
|
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.loadAssets(false).then(() => {
|
||||||
user.playAnim();
|
user.playAnim();
|
||||||
|
@ -5426,7 +5425,7 @@ export class MoneyAttr extends MoveEffectAttr {
|
||||||
|
|
||||||
apply(user: Pokemon, target: Pokemon, move: Move): boolean {
|
apply(user: Pokemon, target: Pokemon, move: Move): boolean {
|
||||||
user.scene.currentBattle.moneyScattered += user.scene.getWaveMoneyAmount(0.2);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5450,7 +5449,7 @@ export class DestinyBondAttr extends MoveEffectAttr {
|
||||||
* @returns true
|
* @returns true
|
||||||
*/
|
*/
|
||||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
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);
|
user.addTag(BattlerTagType.DESTINY_BOND, undefined, move.id, user.id);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -5489,8 +5488,7 @@ export class AttackedByItemAttr extends MoveAttr {
|
||||||
}
|
}
|
||||||
|
|
||||||
const itemName = heldItems[0]?.type?.name ?? "item";
|
const itemName = heldItems[0]?.type?.name ?? "item";
|
||||||
const attackedByItemString = ` is about to be attacked by its ${itemName}!`;
|
target.scene.queueMessage(i18next.t("moveTriggers:attackedByItem", {pokemoneName: getPokemonNameWithAffix(target), itemName: itemName}));
|
||||||
target.scene.queueMessage(getPokemonMessage(target, attackedByItemString));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -5524,7 +5522,7 @@ const failIfDampCondition: MoveConditionFunc = (user, target, move) => {
|
||||||
user.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled));
|
user.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled));
|
||||||
// Queue a message if an ability prevented usage of the move
|
// Queue a message if an ability prevented usage of the move
|
||||||
if (cancelled.value) {
|
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;
|
return !cancelled.value;
|
||||||
};
|
};
|
||||||
|
@ -5692,7 +5690,7 @@ export function initMoves() {
|
||||||
.attr(OneHitKOAttr)
|
.attr(OneHitKOAttr)
|
||||||
.attr(OneHitKOAccuracyAttr),
|
.attr(OneHitKOAccuracyAttr),
|
||||||
new AttackMove(Moves.RAZOR_WIND, Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 1)
|
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)
|
.attr(HighCritAttr)
|
||||||
.windMove()
|
.windMove()
|
||||||
.ignoresVirtual()
|
.ignoresVirtual()
|
||||||
|
@ -5712,7 +5710,7 @@ export function initMoves() {
|
||||||
.hidesTarget()
|
.hidesTarget()
|
||||||
.windMove(),
|
.windMove(),
|
||||||
new AttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1)
|
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)
|
.condition(failOnGravityCondition)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new AttackMove(Moves.BIND, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1)
|
new AttackMove(Moves.BIND, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1)
|
||||||
|
@ -5859,7 +5857,7 @@ export function initMoves() {
|
||||||
.slicingMove()
|
.slicingMove()
|
||||||
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
||||||
new AttackMove(Moves.SOLAR_BEAM, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1)
|
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)
|
.attr(AntiSunlightPowerDecreaseAttr)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1)
|
new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1)
|
||||||
|
@ -5907,7 +5905,7 @@ export function initMoves() {
|
||||||
.attr(HitsTagAttr, BattlerTagType.UNDERGROUND, false)
|
.attr(HitsTagAttr, BattlerTagType.UNDERGROUND, false)
|
||||||
.makesContact(false),
|
.makesContact(false),
|
||||||
new AttackMove(Moves.DIG, Type.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1)
|
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(),
|
.ignoresVirtual(),
|
||||||
new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1)
|
new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1)
|
||||||
.attr(StatusEffectAttr, StatusEffect.TOXIC)
|
.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)
|
new AttackMove(Moves.SWIFT, Type.NORMAL, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 1)
|
||||||
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
||||||
new AttackMove(Moves.SKULL_BASH, Type.NORMAL, MoveCategory.PHYSICAL, 130, 100, 10, -1, 0, 1)
|
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)
|
.attr(StatChangeAttr, BattleStat.DEF, 1, true)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new AttackMove(Moves.SPIKE_CANNON, Type.NORMAL, MoveCategory.PHYSICAL, 20, 100, 15, -1, 0, 1)
|
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)
|
new StatusMove(Moves.LOVELY_KISS, Type.NORMAL, 75, 10, -1, 0, 1)
|
||||||
.attr(StatusEffectAttr, StatusEffect.SLEEP),
|
.attr(StatusEffectAttr, StatusEffect.SLEEP),
|
||||||
new AttackMove(Moves.SKY_ATTACK, Type.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1)
|
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(HighCritAttr)
|
||||||
.attr(FlinchAttr)
|
.attr(FlinchAttr)
|
||||||
.makesContact(false)
|
.makesContact(false)
|
||||||
|
@ -6245,7 +6243,7 @@ export function initMoves() {
|
||||||
.target(MoveTarget.ALL_ENEMIES)
|
.target(MoveTarget.ALL_ENEMIES)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new StatusMove(Moves.HEAL_BELL, Type.NORMAL, -1, 5, -1, 0, 2)
|
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()
|
.soundBased()
|
||||||
.target(MoveTarget.PARTY),
|
.target(MoveTarget.PARTY),
|
||||||
new AttackMove(Moves.RETURN, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2)
|
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)
|
.attr(StatChangeAttr, BattleStat.SPDEF, -1)
|
||||||
.ballBombMove(),
|
.ballBombMove(),
|
||||||
new AttackMove(Moves.FUTURE_SIGHT, Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 2)
|
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)
|
new AttackMove(Moves.ROCK_SMASH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, 50, 0, 2)
|
||||||
.attr(StatChangeAttr, BattleStat.DEF, -1),
|
.attr(StatChangeAttr, BattleStat.DEF, -1),
|
||||||
new AttackMove(Moves.WHIRLPOOL, Type.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 2)
|
new AttackMove(Moves.WHIRLPOOL, Type.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 2)
|
||||||
|
@ -6464,7 +6462,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, "hid\nunderwater!", BattlerTagType.UNDERWATER)
|
.attr(ChargeAttr, ChargeAnim.DIVE_CHARGING, i18next.t("moveTriggers:hidUnderwater", {pokemonName: "{USER}"}), BattlerTagType.UNDERWATER)
|
||||||
.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)
|
||||||
.attr(MultiHitAttr),
|
.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)
|
.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(),
|
.ballBombMove(),
|
||||||
new StatusMove(Moves.AROMATHERAPY, Type.GRASS, -1, 5, -1, 0, 3)
|
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),
|
.target(MoveTarget.PARTY),
|
||||||
new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3)
|
new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3)
|
||||||
.attr(StatChangeAttr, BattleStat.SPDEF, -2),
|
.attr(StatChangeAttr, BattleStat.SPDEF, -2),
|
||||||
|
@ -6595,7 +6593,7 @@ export function initMoves() {
|
||||||
new SelfStatusMove(Moves.BULK_UP, Type.FIGHTING, -1, 20, -1, 0, 3)
|
new SelfStatusMove(Moves.BULK_UP, Type.FIGHTING, -1, 20, -1, 0, 3)
|
||||||
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], 1, true),
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], 1, true),
|
||||||
new AttackMove(Moves.BOUNCE, Type.FLYING, MoveCategory.PHYSICAL, 85, 85, 5, 30, 0, 3)
|
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)
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
||||||
.condition(failOnGravityCondition)
|
.condition(failOnGravityCondition)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
|
@ -6631,7 +6629,7 @@ export function initMoves() {
|
||||||
.attr(ConfuseAttr)
|
.attr(ConfuseAttr)
|
||||||
.pulseMove(),
|
.pulseMove(),
|
||||||
new AttackMove(Moves.DOOM_DESIRE, Type.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 3)
|
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)
|
new AttackMove(Moves.PSYCHO_BOOST, Type.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 3)
|
||||||
.attr(StatChangeAttr, BattleStat.SPATK, -2, true),
|
.attr(StatChangeAttr, BattleStat.SPATK, -2, true),
|
||||||
new SelfStatusMove(Moves.ROOST, Type.FLYING, -1, 5, -1, 0, 4)
|
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)
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 1, true)
|
||||||
.windMove(),
|
.windMove(),
|
||||||
new AttackMove(Moves.SHADOW_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4)
|
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()
|
.ignoresProtect()
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new SelfStatusMove(Moves.HONE_CLAWS, Type.DARK, -1, 15, -1, 0, 5)
|
new SelfStatusMove(Moves.HONE_CLAWS, Type.DARK, -1, 15, -1, 0, 5)
|
||||||
|
@ -7058,7 +7056,7 @@ export function initMoves() {
|
||||||
MovePowerMultiplierAttr,
|
MovePowerMultiplierAttr,
|
||||||
(user, target, move) => target.status || target.hasAbility(Abilities.COMATOSE)? 2 : 1),
|
(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)
|
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)
|
.condition(failOnGravityCondition)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new SelfStatusMove(Moves.SHIFT_GEAR, Type.STEEL, -1, 10, -1, 0, 5)
|
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)
|
.attr(StatChangeAttr, BattleStat.SPATK, 1, true)
|
||||||
.danceMove(),
|
.danceMove(),
|
||||||
new AttackMove(Moves.FREEZE_SHOCK, Type.ICE, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 5)
|
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)
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
||||||
.makesContact(false),
|
.makesContact(false),
|
||||||
new AttackMove(Moves.ICE_BURN, Type.ICE, MoveCategory.SPECIAL, 140, 90, 5, 30, 0, 5)
|
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)
|
.attr(StatusEffectAttr, StatusEffect.BURN)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new AttackMove(Moves.SNARL, Type.DARK, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5)
|
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)
|
new AttackMove(Moves.FELL_STINGER, Type.BUG, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 6)
|
||||||
.attr(PostVictoryStatChangeAttr, BattleStat.ATK, 3, true ),
|
.attr(PostVictoryStatChangeAttr, BattleStat.ATK, 3, true ),
|
||||||
new AttackMove(Moves.PHANTOM_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6)
|
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()
|
.ignoresProtect()
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new StatusMove(Moves.TRICK_OR_TREAT, Type.GHOST, 100, 20, -1, 0, 6)
|
new StatusMove(Moves.TRICK_OR_TREAT, Type.GHOST, 100, 20, -1, 0, 6)
|
||||||
|
@ -7326,7 +7324,7 @@ export function initMoves() {
|
||||||
.powderMove()
|
.powderMove()
|
||||||
.unimplemented(),
|
.unimplemented(),
|
||||||
new SelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6)
|
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)
|
.attr(StatChangeAttr, [ BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 2, true)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new StatusMove(Moves.MAGNETIC_FLUX, Type.ELECTRIC, -1, 20, -1, 0, 6)
|
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)
|
.condition((user, target, move) => target.summonData.battleStats[BattleStat.ATK] > -6)
|
||||||
.triageMove(),
|
.triageMove(),
|
||||||
new AttackMove(Moves.SOLAR_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7)
|
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)
|
.attr(AntiSunlightPowerDecreaseAttr)
|
||||||
.slicingMove(),
|
.slicingMove(),
|
||||||
new AttackMove(Moves.LEAFAGE, Type.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7)
|
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(HealStatusEffectAttr, true, StatusEffect.FREEZE)
|
||||||
.attr(RemoveTypeAttr, Type.FIRE, (user) => {
|
.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)
|
new StatusMove(Moves.SPEED_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 7)
|
||||||
.unimplemented(),
|
.unimplemented(),
|
||||||
|
@ -7593,7 +7591,7 @@ export function initMoves() {
|
||||||
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, 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()
|
.ballBombMove()
|
||||||
.makesContact(false)
|
.makesContact(false)
|
||||||
.partial(),
|
.partial(),
|
||||||
|
@ -7950,7 +7948,7 @@ export function initMoves() {
|
||||||
.makesContact(false)
|
.makesContact(false)
|
||||||
.partial(),
|
.partial(),
|
||||||
new AttackMove(Moves.METEOR_BEAM, Type.ROCK, MoveCategory.SPECIAL, 120, 90, 10, 100, 0, 8)
|
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)
|
.attr(StatChangeAttr, BattleStat.SPATK, 1, true)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new AttackMove(Moves.SHELL_SIDE_ARM, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8)
|
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);
|
return userTypes.includes(Type.ELECTRIC);
|
||||||
})
|
})
|
||||||
.attr(RemoveTypeAttr, Type.ELECTRIC, (user) => {
|
.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)
|
new AttackMove(Moves.GIGATON_HAMMER, Type.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9)
|
||||||
.makesContact(false)
|
.makesContact(false)
|
||||||
|
|
|
@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler";
|
||||||
import { settings } from "./settings.js";
|
import { settings } from "./settings.js";
|
||||||
import { common } from "./common.js";
|
import { common } from "./common.js";
|
||||||
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
||||||
|
import { moveTriggers } from "./move-trigger";
|
||||||
|
|
||||||
export const deConfig = {
|
export const deConfig = {
|
||||||
ability: ability,
|
ability: ability,
|
||||||
|
@ -99,5 +100,6 @@ export const deConfig = {
|
||||||
voucher: voucher,
|
voucher: voucher,
|
||||||
weather: weather,
|
weather: weather,
|
||||||
partyUiHandler: partyUiHandler,
|
partyUiHandler: partyUiHandler,
|
||||||
modifierSelectUiHandler: modifierSelectUiHandler
|
modifierSelectUiHandler: modifierSelectUiHandler,
|
||||||
|
moveTriggers: moveTriggers
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
|
@ -47,6 +47,7 @@ import { tutorial } from "./tutorial";
|
||||||
import { voucher } from "./voucher";
|
import { voucher } from "./voucher";
|
||||||
import { terrain, weather } from "./weather";
|
import { terrain, weather } from "./weather";
|
||||||
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
||||||
|
import { moveTriggers } from "./move-trigger";
|
||||||
|
|
||||||
export const enConfig = {
|
export const enConfig = {
|
||||||
ability: ability,
|
ability: ability,
|
||||||
|
@ -99,5 +100,6 @@ export const enConfig = {
|
||||||
voucher: voucher,
|
voucher: voucher,
|
||||||
weather: weather,
|
weather: weather,
|
||||||
partyUiHandler: partyUiHandler,
|
partyUiHandler: partyUiHandler,
|
||||||
modifierSelectUiHandler: modifierSelectUiHandler
|
modifierSelectUiHandler: modifierSelectUiHandler,
|
||||||
|
moveTriggers: moveTriggers
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
|
@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler";
|
||||||
import { settings } from "./settings.js";
|
import { settings } from "./settings.js";
|
||||||
import { common } from "./common.js";
|
import { common } from "./common.js";
|
||||||
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
||||||
|
import { moveTriggers } from "./move-trigger";
|
||||||
|
|
||||||
export const esConfig = {
|
export const esConfig = {
|
||||||
ability: ability,
|
ability: ability,
|
||||||
|
@ -99,5 +100,6 @@ export const esConfig = {
|
||||||
voucher: voucher,
|
voucher: voucher,
|
||||||
weather: weather,
|
weather: weather,
|
||||||
partyUiHandler: partyUiHandler,
|
partyUiHandler: partyUiHandler,
|
||||||
modifierSelectUiHandler: modifierSelectUiHandler
|
modifierSelectUiHandler: modifierSelectUiHandler,
|
||||||
|
moveTriggers: moveTriggers
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
|
@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler";
|
||||||
import { settings } from "./settings.js";
|
import { settings } from "./settings.js";
|
||||||
import { common } from "./common.js";
|
import { common } from "./common.js";
|
||||||
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
||||||
|
import { moveTriggers } from "./move-trigger";
|
||||||
|
|
||||||
export const frConfig = {
|
export const frConfig = {
|
||||||
ability: ability,
|
ability: ability,
|
||||||
|
@ -99,5 +100,6 @@ export const frConfig = {
|
||||||
voucher: voucher,
|
voucher: voucher,
|
||||||
weather: weather,
|
weather: weather,
|
||||||
partyUiHandler: partyUiHandler,
|
partyUiHandler: partyUiHandler,
|
||||||
modifierSelectUiHandler: modifierSelectUiHandler
|
modifierSelectUiHandler: modifierSelectUiHandler,
|
||||||
|
moveTriggers: moveTriggers
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
|
@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler";
|
||||||
import { settings } from "./settings.js";
|
import { settings } from "./settings.js";
|
||||||
import { common } from "./common.js";
|
import { common } from "./common.js";
|
||||||
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
||||||
|
import { moveTriggers } from "./move-trigger";
|
||||||
|
|
||||||
export const itConfig = {
|
export const itConfig = {
|
||||||
ability: ability,
|
ability: ability,
|
||||||
|
@ -99,5 +100,6 @@ export const itConfig = {
|
||||||
voucher: voucher,
|
voucher: voucher,
|
||||||
weather: weather,
|
weather: weather,
|
||||||
partyUiHandler: partyUiHandler,
|
partyUiHandler: partyUiHandler,
|
||||||
modifierSelectUiHandler: modifierSelectUiHandler
|
modifierSelectUiHandler: modifierSelectUiHandler,
|
||||||
|
moveTriggers: moveTriggers
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
|
@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler";
|
||||||
import { settings } from "./settings.js";
|
import { settings } from "./settings.js";
|
||||||
import { common } from "./common.js";
|
import { common } from "./common.js";
|
||||||
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
||||||
|
import { moveTriggers } from "./move-trigger";
|
||||||
|
|
||||||
export const koConfig = {
|
export const koConfig = {
|
||||||
ability: ability,
|
ability: ability,
|
||||||
|
@ -99,5 +100,6 @@ export const koConfig = {
|
||||||
voucher: voucher,
|
voucher: voucher,
|
||||||
weather: weather,
|
weather: weather,
|
||||||
partyUiHandler: partyUiHandler,
|
partyUiHandler: partyUiHandler,
|
||||||
modifierSelectUiHandler: modifierSelectUiHandler
|
modifierSelectUiHandler: modifierSelectUiHandler,
|
||||||
|
moveTriggers: moveTriggers
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
|
@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler";
|
||||||
import { settings } from "./settings.js";
|
import { settings } from "./settings.js";
|
||||||
import { common } from "./common.js";
|
import { common } from "./common.js";
|
||||||
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
||||||
|
import { moveTriggers } from "./move-trigger";
|
||||||
|
|
||||||
export const ptBrConfig = {
|
export const ptBrConfig = {
|
||||||
ability: ability,
|
ability: ability,
|
||||||
|
@ -99,5 +100,6 @@ export const ptBrConfig = {
|
||||||
voucher: voucher,
|
voucher: voucher,
|
||||||
weather: weather,
|
weather: weather,
|
||||||
partyUiHandler: partyUiHandler,
|
partyUiHandler: partyUiHandler,
|
||||||
modifierSelectUiHandler: modifierSelectUiHandler
|
modifierSelectUiHandler: modifierSelectUiHandler,
|
||||||
|
moveTriggers: moveTriggers
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
|
@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler";
|
||||||
import { settings } from "./settings.js";
|
import { settings } from "./settings.js";
|
||||||
import { common } from "./common.js";
|
import { common } from "./common.js";
|
||||||
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
||||||
|
import { moveTriggers } from "./move-trigger";
|
||||||
|
|
||||||
export const zhCnConfig = {
|
export const zhCnConfig = {
|
||||||
ability: ability,
|
ability: ability,
|
||||||
|
@ -99,5 +100,6 @@ export const zhCnConfig = {
|
||||||
voucher: voucher,
|
voucher: voucher,
|
||||||
weather: weather,
|
weather: weather,
|
||||||
partyUiHandler: partyUiHandler,
|
partyUiHandler: partyUiHandler,
|
||||||
modifierSelectUiHandler: modifierSelectUiHandler
|
modifierSelectUiHandler: modifierSelectUiHandler,
|
||||||
|
moveTriggers: moveTriggers
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
|
@ -47,6 +47,7 @@ import { partyUiHandler } from "./party-ui-handler";
|
||||||
import { settings } from "./settings.js";
|
import { settings } from "./settings.js";
|
||||||
import { common } from "./common.js";
|
import { common } from "./common.js";
|
||||||
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
import { modifierSelectUiHandler } from "./modifier-select-ui-handler";
|
||||||
|
import { moveTriggers } from "./move-trigger";
|
||||||
|
|
||||||
export const zhTwConfig = {
|
export const zhTwConfig = {
|
||||||
ability: ability,
|
ability: ability,
|
||||||
|
@ -99,5 +100,6 @@ export const zhTwConfig = {
|
||||||
voucher: voucher,
|
voucher: voucher,
|
||||||
weather: weather,
|
weather: weather,
|
||||||
partyUiHandler: partyUiHandler,
|
partyUiHandler: partyUiHandler,
|
||||||
modifierSelectUiHandler: modifierSelectUiHandler
|
modifierSelectUiHandler: modifierSelectUiHandler,
|
||||||
|
moveTriggers: moveTriggers
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
Loading…
Reference in New Issue