Compare commits

...

5 Commits

Author SHA1 Message Date
Enoch
de5d645847
[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>
2024-08-23 09:59:35 +09:00
schmidtc1
3baa1400cc
[Bug] Fixes Moody increasing and decreasing the same stat (#3694)
* Replaces selectableStats array with the proper decreaseStatArray

* Adds docs to MoodyAbAttr

* Updates docs, creates unit tests for moody
2024-08-22 13:57:38 -07:00
Frederico Santos
4455a0e4eb
Merge pull request #3693 from pagefaultgames/main
Main to Beta sync
2024-08-22 18:39:56 +01:00
flx-sta
7bea5eb86e
Revert "W Event (Classic and Translations) (#3583)" (#3685)
This reverts commit 96302a9a55.
2024-08-22 01:31:08 +01:00
Pancakes
0aedf63685
Create FUNDING.yml 2024-08-21 14:03:46 -04:00
40 changed files with 198 additions and 90 deletions

1
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1 @@
github: patapancakes

View File

@ -3299,11 +3299,25 @@ export class PostTurnLootAbAttr extends PostTurnAbAttr {
}
}
/**
* Attribute used for {@linkcode Abilities.MOODY}
*/
export class MoodyAbAttr extends PostTurnAbAttr {
constructor() {
super(true);
}
/**
* Randomly increases one BattleStat by 2 stages and decreases a different BattleStat by 1 stage
* @param {Pokemon} pokemon Pokemon that has this ability
* @param passive N/A
* @param simulated true if applying in a simulated call.
* @param args N/A
* @returns true
*
* Any BattleStats at +6 or -6 are excluded from being increased or decreased, respectively
* If the pokemon already has all BattleStats raised to stage 6, it will only decrease one BattleStat by 1 stage
* If the pokemon already has all BattleStats lowered to stage -6, it will only increase one BattleStat by 2 stages
*/
applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean {
const selectableStats = [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD];
const increaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] < 6);
@ -3315,7 +3329,7 @@ export class MoodyAbAttr extends PostTurnAbAttr {
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [increaseStat], 2));
}
if (!simulated && decreaseStatArray.length > 0) {
const decreaseStat = selectableStats[Utils.randInt(selectableStats.length)];
const decreaseStat = decreaseStatArray[Utils.randInt(decreaseStatArray.length)];
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [decreaseStat], -1));
}
return true;

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;
}
}
@ -4946,7 +4946,7 @@ export class RevivalBlessingAttr extends MoveEffectAttr {
const slotIndex = user.scene.getEnemyParty().findIndex(p => pokemon.id === p.id);
pokemon.resetStatus();
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) {
const allyPokemon = user.getAlly();

View File

@ -1577,11 +1577,11 @@ export const trainerConfigs: TrainerConfigs = {
})),
[TrainerType.RIVAL]: new TrainerConfig((t = TrainerType.RIVAL)).setName("Finn").setHasGenders("Ivy").setHasCharSprite().setTitle("Rival").setStaticParty().setEncounterBgm(TrainerType.RIVAL).setBattleBgm("battle_rival").setMixedBattleBgm("battle_rival").setPartyTemplates(trainerPartyTemplates.RIVAL)
.setModifierRewardFuncs(() => modifierTypes.SUPER_EXP_CHARM, () => modifierTypes.EXP_SHARE, () => modifierTypes.SHINY_CHARM, () => modifierTypes.ABILITY_CHARM)
.setModifierRewardFuncs(() => modifierTypes.SUPER_EXP_CHARM, () => modifierTypes.EXP_SHARE)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, Species.CHIKORITA, Species.CYNDAQUIL, Species.TOTODILE, Species.TREECKO, Species.TORCHIC, Species.MUDKIP, Species.TURTWIG, Species.CHIMCHAR, Species.PIPLUP, Species.SNIVY, Species.TEPIG, Species.OSHAWOTT, Species.CHESPIN, Species.FENNEKIN, Species.FROAKIE, Species.ROWLET, Species.LITTEN, Species.POPPLIO, Species.GROOKEY, Species.SCORBUNNY, Species.SOBBLE, Species.SPRIGATITO, Species.FUECOCO, Species.QUAXLY], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEY, Species.HOOTHOOT, Species.TAILLOW, Species.STARLY, Species.PIDOVE, Species.FLETCHLING, Species.PIKIPEK, Species.ROOKIDEE, Species.WATTREL], TrainerSlot.TRAINER, true)),
[TrainerType.RIVAL_2]: new TrainerConfig(++t).setName("Finn").setHasGenders("Ivy").setHasCharSprite().setTitle("Rival").setStaticParty().setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm("battle_rival").setMixedBattleBgm("battle_rival").setPartyTemplates(trainerPartyTemplates.RIVAL_2)
.setModifierRewardFuncs(() => modifierTypes.EXP_SHARE, () => modifierTypes.SHINY_CHARM)
.setModifierRewardFuncs(() => modifierTypes.EXP_SHARE)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.IVYSAUR, Species.CHARMELEON, Species.WARTORTLE, Species.BAYLEEF, Species.QUILAVA, Species.CROCONAW, Species.GROVYLE, Species.COMBUSKEN, Species.MARSHTOMP, Species.GROTLE, Species.MONFERNO, Species.PRINPLUP, Species.SERVINE, Species.PIGNITE, Species.DEWOTT, Species.QUILLADIN, Species.BRAIXEN, Species.FROGADIER, Species.DARTRIX, Species.TORRACAT, Species.BRIONNE, Species.THWACKEY, Species.RABOOT, Species.DRIZZILE, Species.FLORAGATO, Species.CROCALOR, Species.QUAXWELL], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEOTTO, Species.HOOTHOOT, Species.TAILLOW, Species.STARAVIA, Species.TRANQUILL, Species.FLETCHINDER, Species.TRUMBEAK, Species.CORVISQUIRE, Species.WATTREL], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)),

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) }));
break;
case HitResult.IMMUNE:
this.scene.queueMessage(`${this.name} is unaffected!`);
this.scene.queueMessage(i18next.t("battle:hitResultImmune", { pokemonName: this.name }));
break;
case HitResult.ONE_HIT_KO:
this.scene.queueMessage(i18next.t("battle:hitResultOneHitKO"));
@ -3456,7 +3456,7 @@ export class PlayerPokemon extends Pokemon {
pokemon.resetTurnData();
pokemon.resetStatus();
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) {
const allyPokemon = this.getAlly();

View File

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

View File

@ -2573,8 +2573,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner?
$@c{smile}Maybe it was a bit of luck but\nWho knows you might just be able to go all the way.
$By the way, the professor asked me to give you these items. They look pretty cool.
$@c{serious_smile_fists}Good luck out there!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{serious_smile_fists}Good luck out there!`
},
},
"rival_female": {
@ -2588,8 +2587,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you?
$@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square I have a feeling you're going to do really well out there.
$@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful!
$@c{smile_wave}Do your best like always! I believe in you!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{smile_wave}Do your best like always! I believe in you!`
},
},
"rival_2": {
@ -2605,7 +2603,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n
$@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n
$@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all.
$@c{smile}Anyway, take care, and enjoy the event!`
$@c{smile}Anyway, take care!`
},
},
"rival_2_female": {
@ -2621,7 +2619,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}Aw well. That just means I'll have to train even harder for next time!
$@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~.
$@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this!
$@c{smile_wave}Keep at it, and enjoy the event!`
$@c{smile_wave}Keep at it!`
},
"defeat": {
1: "It's OK to lose sometimes…"

View File

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

View File

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

View File

@ -2641,8 +2641,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}Vielleicht war es einfach etwas Glück, aber\nWer weiß, vielleicht schaffst du es irgendwann
$ja wirklich ganz groß raus zu kommen.
$Übrigens, der Professor hat mich gebeten dir diese Items zu geben. Die sehen wirklich cool aus.
$@c{serious_smile_fists}Viel Glück da draußen!
$@c{smile}Oh-und genieße das Event!`
$@c{serious_smile_fists}Viel Glück da draußen!`
},
},
"rival_female": {
@ -2657,8 +2656,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Du hast gerade erst angefangen und bist schon so stark?!@d{96} @c{angry}Du hast sowas von betrogen, oder?
$@c{smile_wave_wink}Ich mach nur Spaß!@d{64} @c{smile_eclosed}Ich habe ehrlich verloren Ich habe das Gefühl, dass du es dort draußen weit bringen wirst.
$@c{smile}Übrigens, der Professor hat mich gebeten dir diese Items zu geben. Ich hoffe sie sind hilfreich!
$@c{smile_wave}Gib wie immer dein Bestes! Ich glaube an dich!
$@c{smile}Oh-und genieße das Event!`
$@c{smile_wave}Gib wie immer dein Bestes! Ich glaube an dich!`
},
},
"rival_2": {
@ -2676,7 +2674,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}Nicht, dass du wirklich Hilfe benötigen würdest, aber ich habe hier noch eins von diesen Dingern herumliegen.
$Du kannst es haben.\n
$@c{serious_smile_fists}Erwarte aber nicht, dass ich dir noch mehr gebe!\nIch kann meinen Rivalen doch keine Vorteile verschaffen.
$@c{smile}Egal, pass auf dich auf und genieße das Event!`
$@c{smile}Egal, pass auf dich auf!`
},
},
"rival_2_female": {
@ -2692,7 +2690,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}Na gut. Das bedeutet ich muss noch härter tranieren!
$@c{smile_wave}Ich habe noch eins von diesen Dingern!\n@c{smile_wave_wink}Kein Grund mir zu danken~.
$@c{angry_mopen}Das ist aber das Letzte! Du bekommst ab jett keine Geschenke mehr von mir!
$@c{smile_wave}Bleib stark und genieße das Event!`
$@c{smile_wave}Bleib stark!`
},
"defeat": {
1: "Es ist Ok manchmal zu verlieren…"

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}} geht nach {{turnCount}} Runden K.O.!",
"copyType": "{{pokemonName}} hat den Typ von {{targetPokemonName}} angenommen!",
"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!",
"exposedMove": "{{pokemonName}} erkennt {{targetPokemonName}}!",
} as const;

View File

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

View File

@ -2574,8 +2574,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner?
$@c{smile}Maybe it was a bit of luck but\nWho knows you might just be able to go all the way.
$By the way, the professor asked me to give you these items. They look pretty cool.
$@c{serious_smile_fists}Good luck out there!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{serious_smile_fists}Good luck out there!`
},
},
"rival_female": {
@ -2589,8 +2588,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you?
$@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square I have a feeling you're going to do really well out there.
$@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful!
$@c{smile_wave}Do your best like always! I believe in you!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{smile_wave}Do your best like always! I believe in you!`
},
},
"rival_2": {
@ -2604,9 +2602,9 @@ export const PGMdialogue: DialogueTranslationEntries = {
"victory": {
1: `@c{neutral_eclosed}Oh. I guess I was overconfident.
$@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n
$@c{smile}Oh, not that you really need the help, but I had an extra one of each of these lying around and figured you might want them.\n
$@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n
$@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all.
$@c{smile}Anyway, take care, and enjoy the event!`
$@c{smile}Anyway, take care!`
},
},
"rival_2_female": {
@ -2620,9 +2618,9 @@ export const PGMdialogue: DialogueTranslationEntries = {
"victory": {
1: `@c{neutral}I… wasn't supposed to lose that time…
$@c{smile}Aw well. That just means I'll have to train even harder for next time!
$@c{smile_wave}I also got you another two of these!\n@c{smile_wave_wink}No need to thank me~.
$@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~.
$@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this!
$@c{smile_wave}Keep at it, and enjoy the event!`
$@c{smile_wave}Keep at it!`
},
"defeat": {
1: "It's OK to lose sometimes…"

View File

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

View File

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

View File

@ -2569,8 +2569,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner?
$@c{smile}Maybe it was a bit of luck but\nWho knows you might just be able to go all the way.
$By the way, the professor asked me to give you these items. They look pretty cool.
$@c{serious_smile_fists}Good luck out there!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{serious_smile_fists}Good luck out there!`
},
},
"rival_female": {
@ -2584,8 +2583,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you?
$@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square I have a feeling you're going to do really well out there.
$@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful!
$@c{smile_wave}Do your best like always! I believe in you!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{smile_wave}Do your best like always! I believe in you!`
},
},
"rival_2": {
@ -2601,7 +2599,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n
$@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n
$@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all.
$@c{smile}Anyway, take care, and enjoy the event!`
$@c{smile}Anyway, take care!`
},
},
"rival_2_female": {
@ -2617,7 +2615,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}Aw well. That just means I'll have to train even harder for next time!
$@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~.
$@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this!
$@c{smile_wave}Keep at it, and enjoy the event!`
$@c{smile_wave}Keep at it!`
},
"defeat": {
1: "It's OK to lose sometimes…"

View File

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

View File

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

View File

@ -2372,8 +2372,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Wah… Tu mas vraiment lavé.\nTes vraiment un débutant ?
$@c{smile}Tas peut-être eu de la chance, mais\nPeut-être que tarriveras jusquau bout du chemin.
$Dailleurs, le prof ma demandé de te filer ces objets.\nIls ont lair sympas.
$@c{serious_smile_fists}Bonne chance à toi !
$@c{smile}Oh, et profite bien de lévènement !`
$@c{serious_smile_fists}Bonne chance à toi !`
},
},
"rival_female": {
@ -2387,8 +2386,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Tu viens de commencer et tes déjà si fort ?!@d{96}\n@c{angry}Tas triché non ? Avoue !
$@c{smile_wave_wink}Jdéconne !@d{64} @c{smile_eclosed}Jai perdu dans les règles\nJai le sentiment que tu vas très bien ten sortir.
$@c{smile}Dailleurs, le prof veut que je te donne ces quelques objets. Ils te seront utiles, pour sûr !
$@c{smile_wave}Fais de ton mieux, comme toujours !\nJe crois fort en toi !
$@c{smile}Oh, et profite bien de lévènement !`
$@c{smile_wave}Fais de ton mieux, comme toujours !\nJe crois fort en toi !`
},
},
"rival_2": {
@ -2404,7 +2402,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}Pas grave, cest OK. Je me doutais que ça arriverait.\n@c{serious_mopen_fists}Je vais juste devoir encore plus mentrainer !\n
$@c{smile}Ah, et pas que taies réellement besoin daide, mais jai ça en trop sur moi qui pourrait tintéresser.\n
$@c{serious_smile_fists}Mais nespère plus en avoir dautres !\nJe peux pas passer mon temps à aider mon adversaire.
$@c{smile}Bref, prends soin de toi et profite bien de lévènement !`
$@c{smile}Bref, prends soin de toi !`
},
},
"rival_2_female": {
@ -2419,8 +2417,8 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{neutral}Je… Jétais pas encore supposée perdre…
$@c{smile}Bon. Ça veut juste dire que je vais devoir encore plus mentrainer !
$@c{smile_wave}Jai aussi ça en rab pour toi !\n@c{smile_wave_wink}Inutile de me remercier ~.
$@c{angry_mopen}Cétaient les derniers, terminé les cadeaux après ceux- !
$@c{smile_wave}Allez, tiens le coup et profite bien de lévènement !`
$@c{angry_mopen}Cétait le dernier, terminé les cadeaux après celui- !
$@c{smile_wave}Allez, tiens le coup !`
},
"defeat": {
1: "Je suppose que cest parfois normal de perdre…"
@ -5053,8 +5051,7 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: `@c{shock}Wah… Tu mas vraiment lavé.\nTes vraiment une débutante ?
$@c{smile}Tas peut-être eu de la chance, mais\nPeut-être que tarriveras jusquau bout du chemin.
$Dailleurs, le prof ma demandé de te filer ces objets.\nIls ont lair sympas.
$@c{serious_smile_fists}Bonne chance à toi !
$@c{smile}Oh, et profite bien de lévènement !`
$@c{serious_smile_fists}Bonne chance à toi !`
},
},
"rival_female": {
@ -5068,8 +5065,7 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: `@c{shock}Tu viens de commencer et tes déjà si forte ?!@d{96}\n@c{angry}Tas triché non ? Avoue !
$@c{smile_wave_wink}Jdéconne !@d{64} @c{smile_eclosed}Jai perdu dans les règles\nJai le sentiment que tu vas très bien ten sortir.
$@c{smile}Dailleurs, le prof veut que je te donne ces quelques objets. Ils te seront utiles, pour sûr !
$@c{smile_wave}Fais de ton mieux, comme toujours !\nJe crois fort en toi !
$@c{smile}Oh, et profite bien de lévènement !`
$@c{smile_wave}Fais de ton mieux, comme toujours !\nJe crois fort en toi !`
},
},
"rival_2": {
@ -5085,7 +5081,7 @@ export const PGFdialogue: DialogueTranslationEntries = {
$@c{smile}Pas grave, cest OK. Je me doutais que ça arriverait.\n@c{serious_mopen_fists}Je vais juste devoir encore plus mentrainer !\n
$@c{smile}Ah, et pas que taies réellement besoin daide, mais jai ça en trop sur moi qui pourrait tintéresser.\n
$@c{serious_smile_fists}Mais nespère plus en avoir dautres !\nJe peux pas passer mon temps à aider mon adversaire.
$@c{smile}Bref, prends soin de toi et profite bien de lévènement !`
$@c{smile}Bref, prends soin de toi !`
},
},
"rival_2_female": {
@ -5101,7 +5097,7 @@ export const PGFdialogue: DialogueTranslationEntries = {
$@c{smile}Bon. Ça veut juste dire que je vais devoir encore plus mentrainer !
$@c{smile_wave}Jai aussi ça en rab pour toi !\n@c{smile_wave_wink}Inutile de me remercier ~.
$@c{angry_mopen}Cétait le dernier, terminé les cadeaux après celui- !
$@c{smile_wave}Allez, tiens le coup et profite bien de lévènement !`
$@c{smile_wave}Allez, tiens le coup !`
},
"defeat": {
1: "Je suppose que cest parfois normal de perdre…"

View File

@ -61,6 +61,7 @@ export const moveTriggers: SimpleTranslationEntries = {
"faintCountdown": "{{pokemonName}}\nsera K.O. dans {{turnCount}} tours !",
"copyType": "{{pokemonName}} prend le type\nde {{targetPokemonName}} !",
"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}} !",
"exposedMove": "{{targetPokemonName}} est identifié\npar {{pokemonName}} !",
} as const;

View File

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

View File

@ -2569,8 +2569,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner?
$@c{smile}Maybe it was a bit of luck but\nWho knows you might just be able to go all the way.
$By the way, the professor asked me to give you these items. They look pretty cool.
$@c{serious_smile_fists}Good luck out there!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{serious_smile_fists}Good luck out there!`
},
},
"rival_female": {
@ -2584,8 +2583,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you?
$@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square I have a feeling you're going to do really well out there.
$@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful!
$@c{smile_wave}Do your best like always! I believe in you!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{smile_wave}Do your best like always! I believe in you!`
},
},
"rival_2": {
@ -2601,7 +2599,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n
$@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n
$@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all.
$@c{smile}Anyway, take care, and enjoy the event!`
$@c{smile}Anyway, take care!`
},
},
"rival_2_female": {
@ -2617,7 +2615,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}Aw well. That just means I'll have to train even harder for next time!
$@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~.
$@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this!
$@c{smile_wave}Keep at it, and enjoy the event!`
$@c{smile_wave}Keep at it!`
},
"defeat": {
1: "It's OK to lose sometimes…"

View File

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

View File

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

View File

@ -2573,8 +2573,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner?
$@c{smile}Maybe it was a bit of luck but\nWho knows you might just be able to go all the way.
$By the way, the professor asked me to give you these items. They look pretty cool.
$@c{serious_smile_fists}Good luck out there!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{serious_smile_fists}Good luck out there!`
},
},
"rival_female": {
@ -2588,8 +2587,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you?
$@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square I have a feeling you're going to do really well out there.
$@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful!
$@c{smile_wave}Do your best like always! I believe in you!
$@c{smile}Oh- and I hope you enjoy the event!`
$@c{smile_wave}Do your best like always! I believe in you!`
},
},
"rival_2": {
@ -2605,7 +2603,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n
$@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n
$@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all.
$@c{smile}Anyway, take care, and enjoy the event!`
$@c{smile}Anyway, take care!`
},
},
"rival_2_female": {
@ -2621,7 +2619,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}Aw well. That just means I'll have to train even harder for next time!
$@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~.
$@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this!
$@c{smile_wave}Keep at it, and enjoy the event!`
$@c{smile_wave}Keep at it!`
},
"defeat": {
1: "It's OK to lose sometimes…"

View File

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

View File

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

View File

@ -2569,8 +2569,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}와… 정말 깔끔하게 당했네.\n초보자 맞아?
$@c{smile} \n그래도 .
$그나저나, .\n좋아 .
$@c{serious_smile_fists}, !
$@c{smile}- !`
$@c{serious_smile_fists}, !`
},
},
"rival_female": {
@ -2584,8 +2583,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}왜 벌써 이렇게 센 건데?!@d{96}\n@c{angry}아니면 뭔가 속임수, 그런 거?
$@c{smile_wave_wink}, !@d{64} @c{smile_eclosed} \n너 .
$@c{smile} , .\n도움이 !
$@c{smile_wave} ! 믿 !
$@c{smile}- !`
$@c{smile_wave} ! 믿 !`
},
},
"rival_2": {
@ -2601,7 +2599,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}, .\n@c{serious_mopen_fists} !\n
$@c{smile} , .\n남는 .
$@c{serious_smile_fists} , ?\n공평하게 .
$@c{smile} . , !`
$@c{smile} . !`
},
},
"rival_2_female": {
@ -2617,7 +2615,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}, . !
$@c{smile_wave} !\n@c{smile_wave_wink} ~.
$@c{angry_mopen}, !\n또 !
$@c{smile_wave}! !`
$@c{smile_wave}!`
},
"defeat": {
1: "가끔은 지는 것도 괜찮아…"

View File

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

View File

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

View File

@ -2541,8 +2541,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Caramba… Você me limpou.\nVocê é mesmo um novato?
$@c{smile}Talvez tenha sido um pouco de sorte, mas\nQuem sabe você consiga chegar até o fim.
$Aliás, o professor me pediu para te dar esses itens. Eles parecem bem legais.
$@c{serious_smile_fists}Boa sorte fora!
$@c{smile}Ah- e eu espero que você aproveite o evento!`
$@c{serious_smile_fists}Boa sorte fora!`
},
},
"rival_female": {
@ -2556,8 +2555,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: `@c{shock}Você acabou de começar e já está tão forte?!@d{96}\n@c{angry}Você trapaceou, não foi?
$@c{smile_wave_wink}Brincadeirinha!@d{64} @c{smile_eclosed}Eu perdi de forma justa Tenho a sensação de que você vai se sair muito bem fora.
$@c{smile}Aliás, o professor pediu para eu te dar alguns itens. Espero que sejam úteis!
$@c{smile_wave} o seu melhor, como sempre! Eu acredito em você!
$@c{smile}Ah- e eu espero que você aproveite o evento!`
$@c{smile_wave} o seu melhor, como sempre! Eu acredito em você!`
},
},
"rival_2": {
@ -2573,7 +2571,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
$@c{smile}Tudo bem, no entanto. Eu imaginei que isso poderia acontecer.\n@c{serious_mopen_fists}Isso significa que preciso me esforçar mais para a próxima vez!\n
$@c{smile}Ah, não que você precise realmente de ajuda, mas eu tinha um extra desses itens e pensei que você poderia querer.
$@c{serious_smile_fists}Não espere outro depois deste!\nNão posso continuar dando vantagem ao meu oponente.
$@c{smile}Enfim, cuide-se, e aproveite o evento!`
$@c{smile}Enfim, cuide-se!`
},
},
"rival_2_female": {
@ -2587,9 +2585,9 @@ export const PGMdialogue: DialogueTranslationEntries = {
"victory": {
1: `@c{neutral}Eu… não era para eu perder dessa vez…
$@c{smile}Ah bem. Isso significa que vou ter que treinar ainda mais para a próxima vez!
$@c{smile_wave}Também consegui mais dois desses para você!\n@c{smile_wave_wink}Não precisa me agradecer~.
$@c{angry_mopen}Estes são os últimos, hein! Você não vai ganhar mais nenhum presente de mim depois desse!
$@c{smile_wave}Continue assim, e aproveite o evento!`
$@c{smile_wave}Também consegui mais um desses para você!\n@c{smile_wave_wink}Não precisa me agradecer~.
$@c{angry_mopen}Este é o último, hein! Você não vai ganhar mais nenhum presente de mim depois desse!
$@c{smile_wave}Continue assim!`
},
"defeat": {
1: "Está tudo bem perder às vezes…"
@ -5227,8 +5225,7 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: `@c{shock}Caramba… Você me limpou.\nVocê é mesmo uma novata?
$@c{smile}Talvez tenha sido um pouco de sorte, mas\nQuem sabe você consiga chegar até o fim.
$Aliás, o professor me pediu para te dar esses itens. Eles parecem bem legais.
$@c{serious_smile_fists}Boa sorte fora!
$@c{smile}Ah- e eu espero que você aproveite o evento!`
$@c{serious_smile_fists}Boa sorte fora!`
},
},
"rival_female": {
@ -5242,8 +5239,7 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: `@c{shock}Você acabou de começar e já está tão forte?!@d{96}\n@c{angry}Você trapaceou, não foi?
$@c{smile_wave_wink}Brincadeirinha!@d{64} @c{smile_eclosed}Eu perdi de forma justa Tenho a sensação de que você vai se sair muito bem fora.
$@c{smile}Aliás, o professor pediu para eu te dar alguns itens. Espero que sejam úteis!
$@c{smile_wave} o seu melhor, como sempre! Eu acredito em você!
$@c{smile}Ah- e eu espero que você aproveite o evento!`
$@c{smile_wave} o seu melhor, como sempre! Eu acredito em você!`
},
},
"rival_2": {
@ -5259,7 +5255,7 @@ export const PGFdialogue: DialogueTranslationEntries = {
$@c{smile}Tudo bem, no entanto. Eu imaginei que isso poderia acontecer.\n@c{serious_mopen_fists}Isso significa que preciso me esforçar mais para a próxima vez!\n
$@c{smile}Ah, não que você precise realmente de ajuda, mas eu tinha um extra desses itens e pensei que você poderia querer.
$@c{serious_smile_fists}Não espere outro depois deste!\nNão posso continuar dando vantagem ao meu oponente.
$@c{smile}Enfim, cuide-se, e aproveite o evento!`
$@c{smile}Enfim, cuide-se!`
},
},
"rival_2_female": {
@ -5273,9 +5269,9 @@ export const PGFdialogue: DialogueTranslationEntries = {
"victory": {
1: `@c{neutral}Eu… não era para eu perder dessa vez…
$@c{smile}Ah bem. Isso significa que vou ter que treinar ainda mais para a próxima vez!
$@c{smile_wave}Também consegui mais dois desses para você!\n@c{smile_wave_wink}Não precisa me agradecer~.
$@c{angry_mopen}Estes são os últimos, hein! Você não vai ganhar mais nenhum presente de mim depois desse!
$@c{smile_wave}Continue assim, e aproveite o evento!`
$@c{smile_wave}Também consegui mais um desses para você!\n@c{smile_wave_wink}Não precisa me agradecer~.
$@c{angry_mopen}Este é o último, hein! Você não vai ganhar mais nenhum presente de mim depois desse!
$@c{smile_wave}Continue assim!`
},
"defeat": {
1: "Está tudo bem perder às vezes…"

View File

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

View File

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

View File

@ -2463,7 +2463,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "@c{smile}嘿,我在找你呢!我知道你急着上路,\n但至少说个再见吧…$@c{smile_eclosed}所以你终于要开始追逐梦想了?\n我几乎不敢相信。$@c{serious_smile_fists}来都来了,来一场对战怎么样?\n毕竟我想看看你是不是准备周全了。$@c{serious_mopen_fists}不要手下留情,我想让你全力以赴!",
},
"victory": {
1: "@c{shock}哇…你彻底击败了我。\n你是真初学者吗$@c{smile}也许是靠点运气,但是…\n谁知道你可能真的能一路走下去。$顺便说一下,博士让我给你这些东西。它们看起来可牛了。$@c{serious_smile_fists}祝你好运!$@c{smile}哦!我希望你能喜欢这次的活动! ",
1: "@c{shock}哇…你彻底击败了我。\n你是真初学者吗$@c{smile}也许是靠点运气,但是…\n谁知道你可能真的能一路走下去。$顺便说一下,博士让我给你这些东西。它们看起来可牛了。$@c{serious_smile_fists}祝你好运!",
},
},
"rival_female": {
@ -2471,7 +2471,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "@c{smile_wave}你在这儿啊!我到处找你呢!$@c{angry_mopen}你忘了和你最好的朋友说再见了吗?$@c{smile_ehalf}你要去追逐梦想了,对吧?\n从今天开始是不是…$@c{smile}不管怎样,忘了我的事就原谅你吧,\n但有个条件。@c{smile_wave_wink}你必须和我对战!$@c{angry_mopen}全力以赴!\n你也不想让你的冒险在开始之前就结束了对吧",
},
"victory": {
1: "@c{shock}你刚开始就已经这么强了?!@d{96}$@c{angry}你是不是开了?$@c{smile_wave_wink}只是开个玩笑啦!@d{64} @c{smile_eclosed}我输地心服口服了…\n我感觉你出去挺有天赋的。$@c{smile}顺便说一下,博士想让我给你一些东西。\n希望它们能帮上忙$@c{smile_wave}像往常一样尽力而为!\n我相信你$@c{smile}哦!我希望你能喜欢这次的活动! ",
1: "@c{shock}你刚开始就已经这么强了?!@d{96}$@c{angry}你是不是开了?$@c{smile_wave_wink}只是开个玩笑啦!@d{64} @c{smile_eclosed}我输地心服口服了…\n我感觉你出去挺有天赋的。$@c{smile}顺便说一下,博士想让我给你一些东西。\n希望它们能帮上忙$@c{smile_wave}像往常一样尽力而为!\n我相信你",
},
},
"rival_2": {
@ -2479,7 +2479,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "@c{smile}嘿,你也在这里吗?$@c{smile_eclosed}一路过关斩将,是吧?$@c{serious_mopen_fists}我知道看起来好像我尾随着你来到这里,\n怎么可能啦。$@c{serious_smile_fists}说真的,自从你在老家打败我后,\n我就一直很渴望再比一场。$我自己也进行了很多训练,\n所以这次我肯定会好好打一场。$@c{serious_mopen_fists}不要手下留情,就像以前一样!$让我们开始吧!",
},
"victory": {
1: "@c{neutral_eclosed}哦。我过于自信了。$@c{smile}不过没关系。我猜到可能会这样。$@c{serious_mopen_fists}这只意味着我下次需要更努力!$$@c{smile}呃,不是特意帮你,我正好有多余的这个,\n我觉得你可能想要。$$@c{serious_smile_fists}不过这次之后别指望再有了!$我不能一直给我的对手优势。$@c{smile}反正,保重,要享受活动哦",
1: "@c{neutral_eclosed}哦。我过于自信了。$@c{smile}不过没关系。我猜到可能会这样。$@c{serious_mopen_fists}这只意味着我下次需要更努力!$$@c{smile}呃,不是特意帮你,我正好有多余的这个,\n我觉得你可能想要。$$@c{serious_smile_fists}不过这次之后别指望再有了!$我不能一直给我的对手优势。$@c{smile}反正,保重",
},
},
"rival_2_female": {
@ -2487,7 +2487,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "@c{smile_wave}哦,真巧,在这里遇见你。\n看来你还没输过嘛。@c{angry_mopen}哈……好家伙!$@c{angry_mopen}我知道你在想什么,\n不我才不会跟踪你什么呢。 @c{smile_eclosed}我只是碰巧在附近。$@c{smile_ehalf}我为你感到高兴,但我只想让你知道\n有时输了是可以接受的。$@c{smile}我们从错误中学到的东西\n往往比我们一直成功时学到的还要多。$@c{angry_mopen}无论如何,我为了我们的复赛已经努力训练了\n所以你最好全力以赴",
},
"victory": {
1: "@c{neutral}我……没打算会输来着……$@c{smile}嗷……好吧。看来我要再更加努力训练了!$@c{smile_wave}我还给你带了个这个$@c{smile_wave_wink}不用谢我哦~.$@c{angry_mopen}不过,这是最后一个啦!\n你可别想再从我这赚小便宜了~$@c{smile_wave}要保重哦,要享受活动哦",
1: "@c{neutral}我……没打算会输来着……$@c{smile}嗷……好吧。看来我要再更加努力训练了!$@c{smile_wave}我还给你带了个这个$@c{smile_wave_wink}不用谢我哦~.$@c{angry_mopen}不过,这是最后一个啦!\n你可别想再从我这赚小便宜了~$@c{smile_wave}要保重哦",
},
"defeat": {
1: "输了有时候也不要紧的…",

View File

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

View File

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

View File

@ -2463,7 +2463,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "@c{smile}嘿,我在找你呢!我知道你急著上路,\n但至少說個再見吧…$@c{smile_eclosed}所以你終於要開始追逐夢想了?\n我幾乎不敢相信。$@c{serious_smile_fists}來都來了,來一場對戰怎麼樣?\n畢竟我想看看你是不是準備周全了。$@c{serious_mopen_fists}不要手下留情,我想讓你全力以赴!",
},
"victory": {
1: "@c{shock}哇…你徹底擊敗了我。\n你是真初學者嗎$@c{smile}也許是靠點運氣,但是…\n誰知道你可能真的能一路走下去。$順便說一下,博士讓我給你這些東西。它們看起來可牛了。$@c{serious_smile_fists}祝你好运!$@c{smile}哦!我希望你能喜歡這次的活動!",
1: "@c{shock}哇…你徹底擊敗了我。\n你是真初學者嗎$@c{smile}也許是靠點運氣,但是…\n誰知道你可能真的能一路走下去。$順便說一下,博士讓我給你這些東西。它們看起來可牛了。$@c{serious_smile_fists}祝你好运!",
},
},
"rival_female": {
@ -2471,7 +2471,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "@c{smile_wave}你在這兒啊!我到處找你呢!$@c{angry_mopen}你忘了和你最好的朋友說再見了嗎?$@c{smile_ehalf}你要去追逐夢想了,對吧?\n從今天開始是不是…$@c{smile}不管怎樣,忘了我的事就原諒你吧,\n但有個條件。@c{smile_wave_wink}你必須和我對戰!$@c{angry_mopen}全力以赴!\n你也不想讓你的冒險在開始之前就結束了對吧",
},
"victory": {
1: "@c{shock}你剛開始就已經這麼強了?!@d{96}$@c{angry}你是不是開了?$@c{smile_wave_wink}只是開個玩笑啦!@d{64} @c{smile_eclosed}我輸地心服口服了…\n我感覺你出去挺有天賦的。$@c{smile}順便說一下,博士想讓我給你一些東西。\n希望它們能幫上忙$@c{smile_wave}像往常一樣盡力而為!\n我相信你$@c{smile}哦!我希望你能喜歡這次的活動!",
1: "@c{shock}你剛開始就已經這麼強了?!@d{96}$@c{angry}你是不是開了?$@c{smile_wave_wink}只是開個玩笑啦!@d{64} @c{smile_eclosed}我輸地心服口服了…\n我感覺你出去挺有天賦的。$@c{smile}順便說一下,博士想讓我給你一些東西。\n希望它們能幫上忙$@c{smile_wave}像往常一樣盡力而為!\n我相信你",
},
},
"rival_2": {
@ -2479,7 +2479,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "@c{smile}嘿,你也在這裡嗎?$@c{smile_eclosed}一路過關斬將,是吧?$@c{serious_mopen_fists}我知道看起來好像我尾隨著你來到這裡,\n怎麼可能啦。$@c{serious_smile_fists}說真的,自從你在老家打敗我後,\n我就一直很渴望再比一場。$我自己也進行了很多訓練,\n所以這次我肯定會好好打一場。$@c{serious_mopen_fists}不要手下留情,就像以前一樣!$讓我們開始吧!",
},
"victory": {
1: "@c{neutral_eclosed}哦。我過於自信了。$@c{smile}不過沒關係。我猜到可能會這樣。$@c{serious_mopen_fists}這只意味著我下次需要更努力!$$@c{smile}呃,不是特意幫你,我正好有多餘的這個,\n我覺得你可能想要。$$@c{serious_smile_fists}不過這次之後別指望再有了!$我不能一直給我的對手優勢。$@c{smile}反正,保重, 要享受活動哦",
1: "@c{neutral_eclosed}哦。我過於自信了。$@c{smile}不過沒關係。我猜到可能會這樣。$@c{serious_mopen_fists}這只意味著我下次需要更努力!$$@c{smile}呃,不是特意幫你,我正好有多餘的這個,\n我覺得你可能想要。$$@c{serious_smile_fists}不過這次之後別指望再有了!$我不能一直給我的對手優勢。$@c{smile}反正,保重",
},
},
"rival_2_female": {
@ -2487,7 +2487,7 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "@c{smile_wave}哦,真巧,在這裡遇見你。\n看來你還沒輸過嘛。@c{angry_mopen}哈……好傢伙!$@c{angry_mopen}我知道你在想什麼,\n不我才不會跟蹤你什麼呢。 @c{smile_eclosed}我只是碰巧在附近。$@c{smile_ehalf}我為你感到高興,但我只想讓你知道\n有時輸了是可以接受的。$@c{smile}我們從錯誤中學到的東西\n往往比我們一直成功時學到的還要多。$@c{angry_mopen}無論如何,我為了我們的複賽已經努力訓練了\n所以你最好全力以赴",
},
"victory": {
1: "@c{neutral}我……沒打算會輸來著……$@c{smile}嗷……好吧。看來我要再更加努力訓練了!$@c{smile_wave}我還給你帶了個這個$@c{smile_wave_wink}不用謝我哦~.$@c{angry_mopen}不過,這是最後一個啦!\n 你可別想再從我這賺小便宜了~$@c{smile_wave}要保重哦,要享受活動哦",
1: "@c{neutral}我……沒打算會輸來著……$@c{smile}嗷……好吧。看來我要再更加努力訓練了!$@c{smile_wave}我還給你帶了個這個$@c{smile_wave_wink}不用謝我哦~.$@c{angry_mopen}不過,這是最後一個啦!\n 你可別想再從我這賺小便宜了~$@c{smile_wave}要保重哦",
},
"defeat": {
1: "輸了有時候也不要緊的…",

View File

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

View File

@ -65,7 +65,7 @@ export class MovePhase extends BattlePhase {
if (!this.canMove()) {
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
this.fail();

View File

@ -0,0 +1,93 @@
import { BattleStat } from "#app/data/battle-stat";
import { Abilities } from "#enums/abilities";
import { Moves } from "#enums/moves";
import { Species } from "#enums/species";
import GameManager from "#test/utils/gameManager";
import { SPLASH_ONLY } from "#test/utils/testUtils";
import Phaser from "phaser";
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
describe("Abilities - Moody", () => {
let phaserGame: Phaser.Game;
let game: GameManager;
const battleStatsArray = [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD];
beforeAll(() => {
phaserGame = new Phaser.Game({
type: Phaser.HEADLESS,
});
});
afterEach(() => {
game.phaseInterceptor.restoreOg();
});
beforeEach(() => {
game = new GameManager(phaserGame);
game.override
.battleType("single")
.enemySpecies(Species.RATTATA)
.enemyAbility(Abilities.BALL_FETCH)
.enemyPassiveAbility(Abilities.HYDRATION)
.ability(Abilities.MOODY)
.enemyMoveset(SPLASH_ONLY)
.moveset(SPLASH_ONLY);
});
it(
"should increase one BattleStat by 2 stages and decrease a different BattleStat by 1 stage",
async () => {
await game.startBattle();
const playerPokemon = game.scene.getPlayerPokemon()!;
game.move.select(Moves.SPLASH);
await game.toNextTurn();
// Find the increased and decreased stats, make sure they are different.
const statChanges = playerPokemon.summonData.battleStats;
const changedStats = battleStatsArray.filter(bs => statChanges[bs] === 2 || statChanges[bs] === -1);
expect(changedStats).toBeTruthy();
expect(changedStats.length).toBe(2);
expect(changedStats[0] !== changedStats[1]).toBeTruthy();
});
it(
"should only increase one BattleStat by 2 stages if all BattleStats are at -6",
async () => {
await game.startBattle();
const playerPokemon = game.scene.getPlayerPokemon()!;
// Set all BattleStats to -6
battleStatsArray.forEach(bs => playerPokemon.summonData.battleStats[bs] = -6);
game.move.select(Moves.SPLASH);
await game.toNextTurn();
// Should increase one BattleStat by 2 (from -6, meaning it will be -4)
const increasedStat = battleStatsArray.filter(bs => playerPokemon.summonData.battleStats[bs] === -4);
expect(increasedStat).toBeTruthy();
expect(increasedStat.length).toBe(1);
});
it(
"should only decrease one BattleStat by 1 stage if all BattleStats are at 6",
async () => {
await game.startBattle();
const playerPokemon = game.scene.getPlayerPokemon()!;
// Set all BattleStats to 6
battleStatsArray.forEach(bs => playerPokemon.summonData.battleStats[bs] = 6);
game.move.select(Moves.SPLASH);
await game.toNextTurn();
// Should decrease one BattleStat by 1 (from 6, meaning it will be 5)
const decreasedStat = battleStatsArray.filter(bs => playerPokemon.summonData.battleStats[bs] === 5);
expect(decreasedStat).toBeTruthy();
expect(decreasedStat.length).toBe(1);
});
});