[Localization] Add localization hard-coded message in move, pokemon. (#3639)

* Add localization missing messages.

* Apply suggestions from code review

Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
Co-authored-by: mercurius-00 <80205689+mercurius-00@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Niccolò <123510358+NicusPulcis@users.noreply.github.com>

* Update src/locales/fr/move-trigger.ts

Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>

* Update src/locales/fr/battle.ts

Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>

* Apply suggestions from code review

Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>
Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br>

* Apply suggestions from code review - ES

Co-authored-by: Asdar <asdargmng@gmail.com>

---------

Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
Co-authored-by: mercurius-00 <80205689+mercurius-00@users.noreply.github.com>
Co-authored-by: Niccolò <123510358+NicusPulcis@users.noreply.github.com>
Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>
Co-authored-by: José Ricardo Fleury Oliveira <josefleury@discente.ufg.br>
Co-authored-by: Asdar <asdargmng@gmail.com>
This commit is contained in:
Enoch 2024-08-23 09:59:35 +09:00 committed by GitHub
parent 3baa1400cc
commit de5d645847
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 27 additions and 5 deletions

View File

@ -4905,7 +4905,7 @@ export class SwapArenaTagsAttr extends MoveEffectAttr {
} }
user.scene.queueMessage( i18next.t("moveTriggers:swapArenaTags", {pokemonName: getPokemonNameWithAffix(user)})); user.scene.queueMessage(i18next.t("moveTriggers:swapArenaTags", {pokemonName: getPokemonNameWithAffix(user)}));
return true; return true;
} }
} }
@ -4946,7 +4946,7 @@ export class RevivalBlessingAttr extends MoveEffectAttr {
const slotIndex = user.scene.getEnemyParty().findIndex(p => pokemon.id === p.id); const slotIndex = user.scene.getEnemyParty().findIndex(p => pokemon.id === p.id);
pokemon.resetStatus(); pokemon.resetStatus();
pokemon.heal(Math.min(Utils.toDmgValue(0.5 * pokemon.getMaxHp()), pokemon.getMaxHp())); pokemon.heal(Math.min(Utils.toDmgValue(0.5 * pokemon.getMaxHp()), pokemon.getMaxHp()));
user.scene.queueMessage(`${getPokemonNameWithAffix(pokemon)} was revived!`,0,true); user.scene.queueMessage(i18next.t("moveTriggers:revivalBlessing", {pokemonName: getPokemonNameWithAffix(pokemon)}),0,true);
if (user.scene.currentBattle.double && user.scene.getEnemyParty().length > 1) { if (user.scene.currentBattle.double && user.scene.getEnemyParty().length > 1) {
const allyPokemon = user.getAlly(); const allyPokemon = user.getAlly();

View File

@ -2228,7 +2228,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
this.scene.queueMessage(i18next.t("battle:hitResultNoEffect", { pokemonName: getPokemonNameWithAffix(this) })); this.scene.queueMessage(i18next.t("battle:hitResultNoEffect", { pokemonName: getPokemonNameWithAffix(this) }));
break; break;
case HitResult.IMMUNE: case HitResult.IMMUNE:
this.scene.queueMessage(`${this.name} is unaffected!`); this.scene.queueMessage(i18next.t("battle:hitResultImmune", { pokemonName: this.name }));
break; break;
case HitResult.ONE_HIT_KO: case HitResult.ONE_HIT_KO:
this.scene.queueMessage(i18next.t("battle:hitResultOneHitKO")); this.scene.queueMessage(i18next.t("battle:hitResultOneHitKO"));
@ -3456,7 +3456,7 @@ export class PlayerPokemon extends Pokemon {
pokemon.resetTurnData(); pokemon.resetTurnData();
pokemon.resetStatus(); pokemon.resetStatus();
pokemon.heal(Math.min(Utils.toDmgValue(0.5 * pokemon.getMaxHp()), pokemon.getMaxHp())); pokemon.heal(Math.min(Utils.toDmgValue(0.5 * pokemon.getMaxHp()), pokemon.getMaxHp()));
this.scene.queueMessage(`${pokemon.name} was revived!`,0,true); this.scene.queueMessage(i18next.t("moveTriggers:revivalBlessing", {pokemonName: pokemon.name}),0,true);
if (this.scene.currentBattle.double && this.scene.getParty().length > 1) { if (this.scene.currentBattle.double && this.scene.getParty().length > 1) {
const allyPokemon = this.getAlly(); const allyPokemon = this.getAlly();

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "It's super effective!", "hitResultSuperEffective": "It's super effective!",
"hitResultNotVeryEffective": "It's not very effective…", "hitResultNotVeryEffective": "It's not very effective…",
"hitResultNoEffect": "It doesn't affect {{pokemonName}}!", "hitResultNoEffect": "It doesn't affect {{pokemonName}}!",
"hitResultImmune": "{{pokemonName}} is unaffected!",
"hitResultOneHitKO": "It's a one-hit KO!", "hitResultOneHitKO": "It's a one-hit KO!",
"attackFailed": "But it failed!", "attackFailed": "But it failed!",
"attackMissed": "{{pokemonNameWithAffix}} avoided the attack!", "attackMissed": "{{pokemonNameWithAffix}} avoided the attack!",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.", "faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.",
"copyType": "{{pokemonName}}'s type became the same as\n{{targetPokemonName}}'s type!", "copyType": "{{pokemonName}}'s type became the same as\n{{targetPokemonName}}'s type!",
"suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!", "suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!",
"revivalBlessing": "{{pokemonName}} was revived!",
"swapArenaTags": "{{pokemonName}} swapped the battle effects affecting each side of the field!", "swapArenaTags": "{{pokemonName}} swapped the battle effects affecting each side of the field!",
"exposedMove": "{{pokemonName}} identified\n{{targetPokemonName}}!", "exposedMove": "{{pokemonName}} identified\n{{targetPokemonName}}!",
} as const; } as const;

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "Das ist sehr effektiv!", "hitResultSuperEffective": "Das ist sehr effektiv!",
"hitResultNotVeryEffective": "Das ist nicht sehr effektiv…", "hitResultNotVeryEffective": "Das ist nicht sehr effektiv…",
"hitResultNoEffect": "Es hat keine Wirkung auf {{pokemonName}}…", "hitResultNoEffect": "Es hat keine Wirkung auf {{pokemonName}}…",
"hitResultImmune": "{{pokemonName}} ist unversehrt!",
"hitResultOneHitKO": "Ein K.O.-Treffer!", "hitResultOneHitKO": "Ein K.O.-Treffer!",
"attackFailed": "Es ist fehlgeschlagen!", "attackFailed": "Es ist fehlgeschlagen!",
"attackMissed": "Die Attacke hat {{pokemonNameWithAffix}} verfehlt!", "attackMissed": "Die Attacke hat {{pokemonNameWithAffix}} verfehlt!",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}} geht nach {{turnCount}} Runden K.O.!", "faintCountdown": "{{pokemonName}} geht nach {{turnCount}} Runden K.O.!",
"copyType": "{{pokemonName}} hat den Typ von {{targetPokemonName}} angenommen!", "copyType": "{{pokemonName}} hat den Typ von {{targetPokemonName}} angenommen!",
"suppressAbilities": "Die Fähigkeit von {{pokemonName}} wirkt nicht mehr!", "suppressAbilities": "Die Fähigkeit von {{pokemonName}} wirkt nicht mehr!",
"revivalBlessing": "{{pokemonName}} ist wieder fit und kampfbereit!",
"swapArenaTags": "{{pokemonName}} hat die Effekte, die auf den beiden Seiten des Kampffeldes wirken, miteinander getauscht!", "swapArenaTags": "{{pokemonName}} hat die Effekte, die auf den beiden Seiten des Kampffeldes wirken, miteinander getauscht!",
"exposedMove": "{{pokemonName}} erkennt {{targetPokemonName}}!", "exposedMove": "{{pokemonName}} erkennt {{targetPokemonName}}!",
} as const; } as const;

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "It's super effective!", "hitResultSuperEffective": "It's super effective!",
"hitResultNotVeryEffective": "It's not very effective…", "hitResultNotVeryEffective": "It's not very effective…",
"hitResultNoEffect": "It doesn't affect {{pokemonName}}!", "hitResultNoEffect": "It doesn't affect {{pokemonName}}!",
"hitResultImmune": "{{pokemonName}} is unaffected!",
"hitResultOneHitKO": "It's a one-hit KO!", "hitResultOneHitKO": "It's a one-hit KO!",
"attackFailed": "But it failed!", "attackFailed": "But it failed!",
"attackMissed": "{{pokemonNameWithAffix}} avoided the attack!", "attackMissed": "{{pokemonNameWithAffix}} avoided the attack!",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.", "faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.",
"copyType": "{{pokemonName}}'s type became the same as\n{{targetPokemonName}}'s type!", "copyType": "{{pokemonName}}'s type became the same as\n{{targetPokemonName}}'s type!",
"suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!", "suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!",
"revivalBlessing": "{{pokemonName}} was revived!",
"swapArenaTags": "{{pokemonName}} swapped the battle effects affecting each side of the field!", "swapArenaTags": "{{pokemonName}} swapped the battle effects affecting each side of the field!",
"exposedMove": "{{pokemonName}} identified\n{{targetPokemonName}}!", "exposedMove": "{{pokemonName}} identified\n{{targetPokemonName}}!",
} as const; } as const;

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "¡Es supereficaz!", "hitResultSuperEffective": "¡Es supereficaz!",
"hitResultNotVeryEffective": "No es muy eficaz…", "hitResultNotVeryEffective": "No es muy eficaz…",
"hitResultNoEffect": "No afecta a {{pokemonName}}!", "hitResultNoEffect": "No afecta a {{pokemonName}}!",
"hitResultImmune": "¡No afecta a {{pokemonName}}!",
"hitResultOneHitKO": "¡KO en 1 golpe!", "hitResultOneHitKO": "¡KO en 1 golpe!",
"attackFailed": "¡Pero ha fallado!", "attackFailed": "¡Pero ha fallado!",
"attackMissed": "¡{{pokemonNameWithAffix}}\nha evitado el ataque!", "attackMissed": "¡{{pokemonNameWithAffix}}\nha evitado el ataque!",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.", "faintCountdown": "{{pokemonName}}\nwill faint in {{turnCount}} turns.",
"copyType": "{{pokemonName}}'s type\nchanged to match {{targetPokemonName}}'s!", "copyType": "{{pokemonName}}'s type\nchanged to match {{targetPokemonName}}'s!",
"suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!", "suppressAbilities": "{{pokemonName}}'s ability\nwas suppressed!",
"revivalBlessing": "¡{{pokemonName}} ha revivido!",
"swapArenaTags": "{{pokemonName}} swapped the battle effects affecting each side of the field!", "swapArenaTags": "{{pokemonName}} swapped the battle effects affecting each side of the field!",
"exposedMove": "{{pokemonName}} identified\n{{targetPokemonName}}!", "exposedMove": "{{pokemonName}} identified\n{{targetPokemonName}}!",
} as const; } as const;

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "Cest super efficace !", "hitResultSuperEffective": "Cest super efficace !",
"hitResultNotVeryEffective": "Ce nest pas très efficace…", "hitResultNotVeryEffective": "Ce nest pas très efficace…",
"hitResultNoEffect": "Ça naffecte pas {{pokemonName}}…", "hitResultNoEffect": "Ça naffecte pas {{pokemonName}}…",
"hitResultImmune": "{{pokemonName}} nest pas affecté !",
"hitResultOneHitKO": "K.O. en un coup !", "hitResultOneHitKO": "K.O. en un coup !",
"attackFailed": "Mais cela échoue !", "attackFailed": "Mais cela échoue !",
"attackMissed": "{{pokemonNameWithAffix}}\névite lattaque!", "attackMissed": "{{pokemonNameWithAffix}}\névite lattaque!",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}\nsera K.O. dans {{turnCount}} tours !", "faintCountdown": "{{pokemonName}}\nsera K.O. dans {{turnCount}} tours !",
"copyType": "{{pokemonName}} prend le type\nde {{targetPokemonName}} !", "copyType": "{{pokemonName}} prend le type\nde {{targetPokemonName}} !",
"suppressAbilities": "Le talent de {{pokemonName}}\na été rendu inactif !", "suppressAbilities": "Le talent de {{pokemonName}}\na été rendu inactif !",
"revivalBlessing": "{{pokemonName}} a repris connaissance\net est prêt à se battre de nouveau !",
"swapArenaTags": "Les effets affectant chaque côté du terrain\nont été échangés par {{pokemonName}} !", "swapArenaTags": "Les effets affectant chaque côté du terrain\nont été échangés par {{pokemonName}} !",
"exposedMove": "{{targetPokemonName}} est identifié\npar {{pokemonName}} !", "exposedMove": "{{targetPokemonName}} est identifié\npar {{pokemonName}} !",
} as const; } as const;

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "È superefficace!", "hitResultSuperEffective": "È superefficace!",
"hitResultNotVeryEffective": "Non è molto efficace…", "hitResultNotVeryEffective": "Non è molto efficace…",
"hitResultNoEffect": "Non ha effetto su {{pokemonName}}!", "hitResultNoEffect": "Non ha effetto su {{pokemonName}}!",
"hitResultImmune": "{{pokemonName}} è incolume!",
"hitResultOneHitKO": "KO con un colpo!", "hitResultOneHitKO": "KO con un colpo!",
"attackFailed": "Ma ha fallito!", "attackFailed": "Ma ha fallito!",
"attackMissed": "{{pokemonNameWithAffix}}\nevita lattacco!", "attackMissed": "{{pokemonNameWithAffix}}\nevita lattacco!",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}\nandrà KO dopo {{turnCount}} turni.", "faintCountdown": "{{pokemonName}}\nandrà KO dopo {{turnCount}} turni.",
"copyType": "{{pokemonName}} assume il tipo\ndi {{targetPokemonName}}!", "copyType": "{{pokemonName}} assume il tipo\ndi {{targetPokemonName}}!",
"suppressAbilities": "Labilità di {{pokemonName}}\nperde ogni efficacia!", "suppressAbilities": "Labilità di {{pokemonName}}\nperde ogni efficacia!",
"revivalBlessing": "{{pokemonName}} torna in forze!",
"swapArenaTags": "{{pokemonName}} ha invertito gli effetti attivi\nnelle due metà del campo!", "swapArenaTags": "{{pokemonName}} ha invertito gli effetti attivi\nnelle due metà del campo!",
"exposedMove": "{{pokemonName}} ha identificato\n{{targetPokemonName}}!", "exposedMove": "{{pokemonName}} ha identificato\n{{targetPokemonName}}!",
} as const; } as const;

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "効果は バツグンだ!", "hitResultSuperEffective": "効果は バツグンだ!",
"hitResultNotVeryEffective": "効果は 今ひとつの ようだ……", "hitResultNotVeryEffective": "効果は 今ひとつの ようだ……",
"hitResultNoEffect": "{{pokemonName}}には 効果が ないようだ…", "hitResultNoEffect": "{{pokemonName}}には 効果が ないようだ…",
"hitResultImmune": "{{pokemonName}}には\n全然 効いてない",
"hitResultOneHitKO": "一撃必殺!", "hitResultOneHitKO": "一撃必殺!",
"attackFailed": "しかし うまく 決まらなかった!!", "attackFailed": "しかし うまく 決まらなかった!!",
"attackMissed": "{{pokemonNameWithAffix}}には 当たらなかった!", "attackMissed": "{{pokemonNameWithAffix}}には 当たらなかった!",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}は\n{{turnCount}}ターンごに ほろびてしまう!", "faintCountdown": "{{pokemonName}}は\n{{turnCount}}ターンごに ほろびてしまう!",
"copyType": "{{pokemonName}}は {{targetPokemonName}}と\n同じタイプに なった", "copyType": "{{pokemonName}}は {{targetPokemonName}}と\n同じタイプに なった",
"suppressAbilities": "{{pokemonName}}の とくせいが きかなくなった!", "suppressAbilities": "{{pokemonName}}の とくせいが きかなくなった!",
"revivalBlessing": "{{pokemonName}}は\n復活して 戦えるようになった",
"swapArenaTags": "{{pokemonName}}は\nおたがいの ばのこうかを いれかえた", "swapArenaTags": "{{pokemonName}}は\nおたがいの ばのこうかを いれかえた",
"exposedMove": "{{pokemonName}} identified\n{{targetPokemonName}}!", "exposedMove": "{{pokemonName}} identified\n{{targetPokemonName}}!",
} as const; } as const;

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "효과가 굉장했다!", "hitResultSuperEffective": "효과가 굉장했다!",
"hitResultNotVeryEffective": "효과가 별로인 듯하다…", "hitResultNotVeryEffective": "효과가 별로인 듯하다…",
"hitResultNoEffect": "{{pokemonName}}에게는\n효과가 없는 것 같다…", "hitResultNoEffect": "{{pokemonName}}에게는\n효과가 없는 것 같다…",
"hitResultImmune": "{{pokemonName}}에게는\n전혀 효과가 없다!",
"hitResultOneHitKO": "일격필살!", "hitResultOneHitKO": "일격필살!",
"attackFailed": "그러나 실패하고 말았다!!", "attackFailed": "그러나 실패하고 말았다!!",
"attackMissed": "{{pokemonNameWithAffix}}에게는\n맞지 않았다!", "attackMissed": "{{pokemonNameWithAffix}}에게는\n맞지 않았다!",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}[[는]]\n{{turnCount}}턴 후에 쓰러져 버린다!", "faintCountdown": "{{pokemonName}}[[는]]\n{{turnCount}}턴 후에 쓰러져 버린다!",
"copyType": "{{pokemonName}}[[는]]\n{{targetPokemonName}}[[와]] 같은 타입이 되었다!", "copyType": "{{pokemonName}}[[는]]\n{{targetPokemonName}}[[와]] 같은 타입이 되었다!",
"suppressAbilities": "{{pokemonName}}의\n특성이 효과를 발휘하지 못하게 되었다!", "suppressAbilities": "{{pokemonName}}의\n특성이 효과를 발휘하지 못하게 되었다!",
"revivalBlessing": "{{pokemonName}}[[는]]\n정신을 차려 싸울 수 있게 되었다!",
"swapArenaTags": "{{pokemonName}}[[는]]\n서로의 필드 효과를 교체했다!", "swapArenaTags": "{{pokemonName}}[[는]]\n서로의 필드 효과를 교체했다!",
"exposedMove": "{{pokemonName}}[[는]]\n{{targetPokemonName}}의 정체를 꿰뚫어 보았다!", "exposedMove": "{{pokemonName}}[[는]]\n{{targetPokemonName}}의 정체를 꿰뚫어 보았다!",
} as const; } as const;

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "É supereficaz!", "hitResultSuperEffective": "É supereficaz!",
"hitResultNotVeryEffective": "É pouco eficaz...", "hitResultNotVeryEffective": "É pouco eficaz...",
"hitResultNoEffect": "Isso não afeta {{pokemonName}}!", "hitResultNoEffect": "Isso não afeta {{pokemonName}}!",
"hitResultImmune": "{{pokemonName}} não é afetado!",
"hitResultOneHitKO": "Foi um nocaute de um golpe!", "hitResultOneHitKO": "Foi um nocaute de um golpe!",
"attackFailed": "Mas falhou!", "attackFailed": "Mas falhou!",
"attackMissed": "{{pokemonNameWithAffix}} desviou do ataque!", "attackMissed": "{{pokemonNameWithAffix}} desviou do ataque!",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}\nirá desmaiar em {{turnCount}} turnos.", "faintCountdown": "{{pokemonName}}\nirá desmaiar em {{turnCount}} turnos.",
"copyType": "O tipo de {{pokemonName}}\nmudou para combinar com {{targetPokemonName}}!", "copyType": "O tipo de {{pokemonName}}\nmudou para combinar com {{targetPokemonName}}!",
"suppressAbilities": "A habilidade de {{pokemonName}}\nfoi suprimida!", "suppressAbilities": "A habilidade de {{pokemonName}}\nfoi suprimida!",
"revivalBlessing": "{{pokemonName}} foi reanimado!",
"swapArenaTags": "{{pokemonName}} trocou os efeitos de batalha que afetam cada lado do campo!", "swapArenaTags": "{{pokemonName}} trocou os efeitos de batalha que afetam cada lado do campo!",
"exposedMove": "{{pokemonName}} identificou\n{{targetPokemonName}}!", "exposedMove": "{{pokemonName}} identificou\n{{targetPokemonName}}!",
} as const; } as const;

View File

@ -24,6 +24,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "效果拔群!", "hitResultSuperEffective": "效果拔群!",
"hitResultNotVeryEffective": "收效甚微…", "hitResultNotVeryEffective": "收效甚微…",
"hitResultNoEffect": "对{{pokemonName}}没有效果!!", "hitResultNoEffect": "对{{pokemonName}}没有效果!!",
"hitResultImmune": "对于{{pokemonName}}\n完全没有效果",
"hitResultOneHitKO": "一击必杀!", "hitResultOneHitKO": "一击必杀!",
"attackFailed": "但是失败了!", "attackFailed": "但是失败了!",
"attackMissed": "没有命中{{pokemonNameWithAffix}}", "attackMissed": "没有命中{{pokemonNameWithAffix}}",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}\n将在{{turnCount}}回合后灭亡!", "faintCountdown": "{{pokemonName}}\n将在{{turnCount}}回合后灭亡!",
"copyType": "{{pokemonName}}\n变成了{{targetPokemonName}}的属性!", "copyType": "{{pokemonName}}\n变成了{{targetPokemonName}}的属性!",
"suppressAbilities": "{{pokemonName}}的特性\n变得无效了", "suppressAbilities": "{{pokemonName}}的特性\n变得无效了",
"revivalBlessing": "{{pokemonName}}复活了!",
"swapArenaTags": "{{pokemonName}}\n交换了双方的场地效果", "swapArenaTags": "{{pokemonName}}\n交换了双方的场地效果",
"exposedMove": "{{pokemonName}}识破了\n{{targetPokemonName}}的原型!", "exposedMove": "{{pokemonName}}识破了\n{{targetPokemonName}}的原型!",
} as const; } as const;

View File

@ -21,6 +21,7 @@ export const battle: SimpleTranslationEntries = {
"hitResultSuperEffective": "效果拔群!", "hitResultSuperEffective": "效果拔群!",
"hitResultNotVeryEffective": "收效甚微…", "hitResultNotVeryEffective": "收效甚微…",
"hitResultNoEffect": "對 {{pokemonName}} 沒有效果!", "hitResultNoEffect": "對 {{pokemonName}} 沒有效果!",
"hitResultImmune": "對于{{pokemonName}}\n完全沒有效果",
"hitResultOneHitKO": "一擊切殺!", "hitResultOneHitKO": "一擊切殺!",
"attackFailed": "但是失敗了!", "attackFailed": "但是失敗了!",
"attackMissed": "沒有命中{{pokemonNameWithAffix}}", "attackMissed": "沒有命中{{pokemonNameWithAffix}}",

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}\n將在{{turnCount}}回合後滅亡!", "faintCountdown": "{{pokemonName}}\n將在{{turnCount}}回合後滅亡!",
"copyType": "{{pokemonName}}變成了{{targetPokemonName}}的屬性!", "copyType": "{{pokemonName}}變成了{{targetPokemonName}}的屬性!",
"suppressAbilities": "{{pokemonName}}的特性\n變得無效了", "suppressAbilities": "{{pokemonName}}的特性\n變得無效了",
"revivalBlessing": "{{pokemonName}}復活了!",
"swapArenaTags": "{{pokemonName}}\n交換了雙方的場地效果", "swapArenaTags": "{{pokemonName}}\n交換了雙方的場地效果",
"exposedMove": "{{pokemonName}}識破了\n{{targetPokemonName}}的原形!", "exposedMove": "{{pokemonName}}識破了\n{{targetPokemonName}}的原形!",
} as const; } as const;

View File

@ -65,7 +65,7 @@ export class MovePhase extends BattlePhase {
if (!this.canMove()) { if (!this.canMove()) {
if (this.move.moveId && this.pokemon.summonData?.disabledMove === this.move.moveId) { if (this.move.moveId && this.pokemon.summonData?.disabledMove === this.move.moveId) {
this.scene.queueMessage(`${this.move.getName()} is disabled!`); this.scene.queueMessage(i18next.t("battle:moveDisabled", { moveName: this.move.getName() }));
} }
if (this.pokemon.isActive(true) && this.move.ppUsed >= this.move.getMovePp()) { // if the move PP was reduced from Spite or otherwise, the move fails if (this.pokemon.isActive(true) && this.move.ppUsed >= this.move.getMovePp()) { // if the move PP was reduced from Spite or otherwise, the move fails
this.fail(); this.fail();