Merge branch 'pagefaultgames:main' into main

This commit is contained in:
3ae3ae 2024-07-05 11:31:18 +09:00 committed by GitHub
commit 700ff78998
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
59 changed files with 2527 additions and 5703 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -3,42 +3,42 @@
"7b4a7b": "204024",
"101010": "101010",
"efbdef": "bddd9e",
"e6a5d6": "6c9e63",
"e7a5d6": "6c9e63",
"b57bb5": "416240",
"314273": "a86a2c",
"4a73b5": "ffb554",
"c52152": "ffa80e",
"c62152": "ffa80e",
"ffffff": "ffffff",
"8c2152": "c54200",
"8463b5": "ffa72a",
"c5c5c5": "c5c5c5"
"c6c6c6": "c5c5c5"
},
"1": {
"7b4a7b": "581747",
"101010": "101010",
"efbdef": "e99eae",
"e6a5d6": "d1759c",
"e7a5d6": "d1759c",
"b57bb5": "953b6c",
"314273": "537fde",
"4a73b5": "90b7f9",
"c52152": "31d9ff",
"c62152": "31d9ff",
"ffffff": "ffffff",
"8c2152": "15a7d2",
"8463b5": "1662bf",
"c5c5c5": "c5c5c5"
"c6c6c6": "c5c5c5"
},
"2": {
"7b4a7b": "9b5250",
"101010": "101010",
"efbdef": "f5f3e1",
"e6a5d6": "ded0af",
"e7a5d6": "ded0af",
"b57bb5": "ce987a",
"314273": "194540",
"4a73b5": "39816d",
"c52152": "00de92",
"c62152": "00de92",
"ffffff": "ffffff",
"8c2152": "00ad7f",
"8463b5": "006b5b",
"c5c5c5": "c5c5c5"
"c6c6c6": "c5c5c5"
}
}
}

View File

@ -66,6 +66,7 @@ import { PlayerGender } from "#enums/player-gender";
import { Species } from "#enums/species";
import { UiTheme } from "#enums/ui-theme";
import { TimedEventManager } from "#app/timed-event-manager.js";
import i18next from "i18next";
export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1";
@ -463,7 +464,7 @@ export default class BattleScene extends SceneBase {
this.luckText.setVisible(false);
this.fieldUI.add(this.luckText);
this.luckLabelText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, "Luck:", TextStyle.PARTY, { fontSize: "54px" });
this.luckLabelText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, i18next.t("common:luckIndicator"), TextStyle.PARTY, { fontSize: "54px" });
this.luckLabelText.setName("text-luck-label");
this.luckLabelText.setOrigin(1, 0.5);
this.luckLabelText.setVisible(false);

View File

@ -1155,7 +1155,7 @@ export class SacrificialAttr extends MoveEffectAttr {
**/
export class SacrificialAttrOnHit extends MoveEffectAttr {
constructor() {
super(true, MoveEffectTrigger.POST_TARGET);
super(true, MoveEffectTrigger.HIT);
}
/**

View File

@ -2,4 +2,9 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const common: SimpleTranslationEntries = {
"start": "Start",
"luckIndicator": "Glück:",
"shinyOnHover": "Schillernd",
"commonShiny": "Gewöhnlich",
"rareShiny": "Selten",
"epicShiny": "Episch",
} as const;

View File

@ -22,4 +22,7 @@ export const egg: SimpleTranslationEntries = {
"hatchFromTheEgg": "Ein {{pokemonName}} ist aus dem Ei geschlüpft!",
"eggMoveUnlock": "Ei-Attacke freigeschaltet: {{moveName}}",
"rareEggMoveUnlock": "Seltene Ei-Attacke freigeschaltet: {{moveName}}",
"moveUPGacha": "Mehr\nEi-Attacken!",
"shinyUPGacha": "Mehr\nSchillernde!",
"legendaryUPGacha": "erscheint\nöfter!",
} as const;

View File

@ -53,6 +53,5 @@ export const menu: SimpleTranslationEntries = {
"no":"Nein",
"disclaimer": "HAFTUNGSAUSSCHLUSS",
"disclaimerDescription": "Dieses Spiel ist ein unfertiges Produkt. Es kann spielbeinträchtigende Fehler (bis hin zum Verlust des Speicherstandes)\n aufweisen, sich ohne Vorankündigung ändern und es gibt keine Garantie dass es weiterentwickelt oder fertiggestellt wird.",
"choosePokemon": "Wähle ein Pokémon.",
"errorServerDown": "Ups! Es gab einen Fehler beim Versuch\nden Server zu kontaktieren\nLasse dieses Fenster offen\nDu wirst automatisch neu verbunden.",
} as const;

View File

@ -6,5 +6,48 @@ export const partyUiHandler: SimpleTranslationEntries = {
"CANCEL": "Abbrechen",
"RELEASE": "Freilassen",
"APPLY": "Anwenden",
"TEACH": "Erlernen"
"TEACH": "Erlernen",
"SPLICE": "Fusionieren",
"UNSPLICE": "Defusionieren",
"ACTIVATE": "Aktivieren",
"DEACTIVATE": "Deaktivieren",
"TRANSFER": "Übertragen",
"ALL": "Alle",
"PASS_BATON": "Stafette nutzen",
"UNPAUSE_EVOLUTION": "Entwicklung fortsetzen",
"REVIVE": "Wiederbeleben",
"choosePokemon": "Wähle ein Pokémon.",
"doWhatWithThisPokemon": "Was soll mit diesem Pokémon geschehen?",
"noEnergy": "{{pokemonName}} ist nicht fit genug, um zu kämpfen!",
"hasEnergy": "{{pokemonName}} steckt noch voller Energie",
"cantBeUsed": "{{pokemonName}} kann in dieser Herausforderung nicht verwendet werden!",
"tooManyItems": "{{pokemonName}} trägt bereits zu viele dieser Items!",
"anyEffect": "Das würde keine Wirkung zeigen.",
"unpausedEvolutions": "Entwicklungen für {{pokemonName}} wurden wieder aktiviert.",
"unspliceConfirmation": "Willst du wirklich {{fusionName}} von {{pokemonName}} defusionieren? {{fusionName}} wird freigelassen.",
"wasReverted": "{{fusionName}} verwandelt sich in {{pokemonName}} zurück.",
"releaseConfirmation": "Möchtest du {{pokemonName}} wirklich freilassen?",
"releaseInBattle": "Pokémon, die aktuell im Kampf sind, können nicht freigelassen werden.",
"selectAMove": "Wähle eine Attacke.",
"changeQuantity": "Wähle ein getragenes Item aus, das übertragen werden soll. Nutze < und > um die Anzahl zu ändern.",
"selectAnotherPokemonToSplice": "Wähle ein anderes Pokémon mit dem fusioniert werden soll aus.",
"cancel": "Abbrechen",
// Slot TM text
"able": "Erlernbar!",
"notAble": "Nicht erlernbar",
"learned": "Bereits erlernt!",
// Releasing messages
"goodbye": "Auf wiedersehen, {{pokemonName}}!",
"byebye": "Byebye, {{pokemonName}}!",
"farewell": "Machs gut, {{pokemonName}}!",
"soLong": "Bis dann, {{pokemonName}}!",
"thisIsWhereWePart": "Nun heißt es Abschied nehmen, {{pokemonName}}!",
"illMissYou": "Ich werde dich vermissen, {{pokemonName}}!",
"illNeverForgetYou": "Ich werde dich niemals vergessen, {{pokemonName}}!",
"untilWeMeetAgain": "Bis wir uns wiedersehen, {{pokemonName}}!",
"sayonara": "Sayonara, {{pokemonName}}!",
"smellYaLater": "Also dann, man riecht sich! Ciao!, {{pokemonName}}!",
} as const;

View File

@ -5,7 +5,4 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "Geschlecht:",
"ability": "Fähigkeit:",
"nature": "Wesen:",
"epic": "Episch",
"rare": "Selten",
"common": "Gewöhnlich"
} as const;

View File

@ -2,4 +2,9 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const common: SimpleTranslationEntries = {
"start": "Start",
"luckIndicator": "Luck:",
"shinyOnHover": "Shiny",
"commonShiny": "Common",
"rareShiny": "Rare",
"epicShiny": "Epic",
} as const;

View File

@ -22,4 +22,7 @@ export const egg: SimpleTranslationEntries = {
"hatchFromTheEgg": "{{pokemonName}} hatched from the egg!",
"eggMoveUnlock": "Egg Move unlocked: {{moveName}}",
"rareEggMoveUnlock": "Rare Egg Move unlocked: {{moveName}}",
"moveUPGacha": "Move UP!",
"shinyUPGacha": "Shiny UP!",
"legendaryUPGacha": "UP!",
} as const;

View File

@ -53,6 +53,5 @@ export const menu: SimpleTranslationEntries = {
"no":"No",
"disclaimer": "DISCLAIMER",
"disclaimerDescription": "This game is an unfinished product; it might have playability issues (including the potential loss of save data),\n change without notice, and may or may not be updated further or completed.",
"choosePokemon": "Choose a Pokémon.",
"errorServerDown": "Oops! There was an issue contacting the server.\n\nYou may leave this window open,\nthe game will automatically reconnect.",
} as const;

View File

@ -1,11 +1,53 @@
import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const partyUiHandler: SimpleTranslationEntries = {
"ALL": "All",
"SEND_OUT": "Send Out",
"SUMMARY": "Summary",
"CANCEL": "Cancel",
"RELEASE": "Release",
"APPLY": "Apply",
"TEACH": "Teach"
"TEACH": "Teach",
"SPLICE": "Splice",
"UNSPLICE": "Unsplice",
"ACTIVATE": "Activate",
"DEACTIVATE": "Deactivate",
"TRANSFER": "Transfer",
"ALL": "All",
"PASS_BATON": "Pass Baton",
"UNPAUSE_EVOLUTION": "Unpause Evolution",
"REVIVE": "Revive",
"choosePokemon": "Choose a Pokémon.",
"doWhatWithThisPokemon": "Do what with this Pokémon?",
"noEnergy": "{{pokemonName}} has no energy\nleft to battle!",
"hasEnergy": "{{pokemonName}} still has energy\nto battle!",
"cantBeUsed": "{{pokemonName}} can't be used in\nthis challenge!",
"tooManyItems": "{{pokemonName}} has too many\nof this item!",
"anyEffect": "It won't have any effect.",
"unpausedEvolutions": "Evolutions have been unpaused for {{pokemonName}}.",
"unspliceConfirmation": "Do you really want to unsplice {{fusionName}}\nfrom {{pokemonName}}? {{fusionName}} will be lost.",
"wasReverted": "{{fusionName}} was reverted to {{pokemonName}}.",
"releaseConfirmation": "Do you really want to release {{pokemonName}}?",
"releaseInBattle": "You can't release a Pokémon that's in battle!",
"selectAMove": "Select a move.",
"changeQuantity": "Select a held item to transfer.\nUse < and > to change the quantity.",
"selectAnotherPokemonToSplice": "Select another Pokémon to splice.",
"cancel": "Cancel",
// Slot TM text
"able": "Able",
"notAble": "Not able",
"learned": "Learned",
// Releasing messages
"goodbye": "Goodbye, {{pokemonName}}!",
"byebye": "Byebye, {{pokemonName}}!",
"farewell": "Farewell, {{pokemonName}}!",
"soLong": "So long, {{pokemonName}}!",
"thisIsWhereWePart": "This is where we part, {{pokemonName}}!",
"illMissYou": "I'll miss you, {{pokemonName}}!",
"illNeverForgetYou": "I'll never forget you, {{pokemonName}}!",
"untilWeMeetAgain": "Until we meet again, {{pokemonName}}!",
"sayonara": "Sayonara, {{pokemonName}}!",
"smellYaLater": "Smell ya later, {{pokemonName}}!",
} as const;

View File

@ -5,8 +5,5 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "Gender:",
"ability": "Ability:",
"nature": "Nature:",
"epic": "Epic",
"rare": "Rare",
"common": "Common",
"form": "Form:"
} as const;

View File

@ -2,4 +2,9 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const common: SimpleTranslationEntries = {
"start": "Start",
"luckIndicator": "Suerte:",
"shinyOnHover": "Shiny",
"commonShiny": "Común",
"rareShiny": "Raro",
"epicShiny": "Épico",
} as const;

View File

@ -22,4 +22,7 @@ export const egg: SimpleTranslationEntries = {
"hatchFromTheEgg": "¡Ha salido un {{pokemonName}} del Huevo!",
"eggMoveUnlock": "Mov. Huevo desbloqueado:\n{{moveName}}",
"rareEggMoveUnlock": "Mov. Huevo Raro desbloqueado:\n{{moveName}}",
"moveUPGacha": "¡Más Mov.\nHuevo Raro!",
"shinyUPGacha": "¡Más Shiny!",
"legendaryUPGacha": ", ¡mayor\nprob.!",
} as const;

View File

@ -53,6 +53,5 @@ export const menu: SimpleTranslationEntries = {
"no":"No",
"disclaimer": "AVISO",
"disclaimerDescription": "Este juego es un producto inacabado; puede tener problemas de jugabilidad (incluyendo la posible pérdida\n de datos de guardado),cambiar sin avisar, y puede o no puede ser actualizado hasta ser completado.",
"choosePokemon": "Choose a Pokémon.",
"errorServerDown": "¡Ups! Ha habido un problema al contactar con el servidor.\n\nPuedes mantener esta ventana abierta,\nel juego se reconectará automáticamente.",
} as const;

View File

@ -6,5 +6,48 @@ export const partyUiHandler: SimpleTranslationEntries = {
"CANCEL": "Cancel",
"RELEASE": "Release",
"APPLY": "Apply",
"TEACH": "Teach"
"TEACH": "Enseñar",
"SPLICE": "Fusionar",
"UNSPLICE": "Separar",
"ACTIVATE": "Activar",
"DEACTIVATE": "Desactivar",
"TRANSFER": "Transferir",
"ALL": "Todo",
"PASS_BATON": "Relevo",
"UNPAUSE_EVOLUTION": "Reanudar Evolución",
"REVIVE": "Revivir",
"choosePokemon": "Elige a un Pokémon.",
"doWhatWithThisPokemon": "¿Que quieres hacer con este Pokémon?",
"noEnergy": "¡A {{pokemonName}} no le quedan\nfuerzas para luchar!",
"hasEnergy": "¡A {{pokemonName}} le quedan\nfuerzas para luchar!",
"cantBeUsed": "¡{{pokemonName}} no puede usarse\nen este desafío!",
"tooManyItems": "¡{{pokemonName}} tiene demasiados\nde este objeto!",
"anyEffect": "No tendría ningún efecto.",
"unpausedEvolutions": "Se reanudó las evoluciones de {{pokemonName}}.",
"unspliceConfirmation": "¿Seguro que quiere separar a {{fusionName}}\nde {{pokemonName}}? {{fusionName}} se perderá.",
"wasReverted": "{{fusionName}} se revirtió a {{pokemonName}}.",
"releaseConfirmation": "¿Quieres liberar a {{pokemonName}}?",
"releaseInBattle": "¡No puedes liberar un Pokémon que está en batalla!",
"selectAMove": "Selecciona un movimiento.",
"changeQuantity": "Selecciona un objeto equipado para transferir.\nUsa < y > para cambiar la cantidad.",
"selectAnotherPokemonToSplice": "Selecciona otro Pokémon para fusionar.",
"cancel": "Salir",
// Slot TM text
"able": "Apto",
"notAble": "No apto",
"learned": "Aprendido",
// Releasing messages
"goodbye": "¡Adiós, {{pokemonName}}!",
"byebye": "¡Chao, {{pokemonName}}!",
"farewell": "¡Hasta luego, {{pokemonName}}!",
"soLong": "¡Nos vemos, {{pokemonName}}!",
"thisIsWhereWePart": "¡Aquí es donde nos despedimos, {{pokemonName}}!",
"illMissYou": "¡Te echaré de menos, {{pokemonName}}!",
"illNeverForgetYou": "¡Nunca te olvidaré, {{pokemonName}}!",
"untilWeMeetAgain": "¡Hasta que nos volvamos a encontrar, {{pokemonName}}!",
"sayonara": "¡Sayonara, {{pokemonName}}!",
"smellYaLater": "¡Nos vemos luego, {{pokemonName}}!",
} as const;

View File

@ -5,7 +5,4 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "Género:",
"ability": "Habilid:",
"nature": "Natur:",
"epic": "Épico",
"rare": "Raro",
"common": "Común"
} as const;

View File

@ -2,4 +2,9 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const common: SimpleTranslationEntries = {
"start": "Lancer",
"luckIndicator": "Chance :",
"shinyOnHover": "Chromatique",
"commonShiny": "Commun",
"rareShiny": "Rare",
"epicShiny": "Épique",
} as const;

View File

@ -22,4 +22,7 @@ export const egg: SimpleTranslationEntries = {
"hatchFromTheEgg": "{{pokemonName}} sort de lŒuf !",
"eggMoveUnlock": "Capacité Œuf débloquée :\n{{moveName}}",
"rareEggMoveUnlock": "Capacité Œuf Rare débloquée :\n{{moveName}}",
"moveUPGacha": "Bonus Capacité\nŒuf Rare !",
"shinyUPGacha": "Bonus\nChromatique !",
"legendaryUPGacha": "Bonus !",
} as const;

View File

@ -48,6 +48,5 @@ export const menu: SimpleTranslationEntries = {
"no":"Non",
"disclaimer": "AVERTISSEMENT",
"disclaimerDescription": "Ce jeu nest pas un produit fini et peut contenir des problèmes de jouabilité, dont de possibles pertes de sauvegardes,\ndes modifications sans avertissement et pourrait ou non encore être mis à jour ou terminé.",
"choosePokemon": "Sélectionnez un Pokémon.",
"errorServerDown": "Oupsi ! Un problème de connexion au serveur est survenu.\n\nVous pouvez garder cette fenêtre ouverte,\nle jeu se reconnectera automatiquement.",
} as const;

View File

@ -1,11 +1,53 @@
import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const partyUiHandler: SimpleTranslationEntries = {
"ALL": "Tout",
"SEND_OUT": "Envoyer",
"SUMMARY": "Résumé",
"CANCEL": "Annuler",
"RELEASE": "Relâcher",
"APPLY": "Appliquer",
"TEACH": "Apprendre"
"TEACH": "Apprendre",
"SPLICE": "Fusionner",
"UNSPLICE": "Séparer",
"ACTIVATE": "Activer",
"DEACTIVATE": "Désactiver",
"TRANSFER": "Transférer",
"ALL": "Tout",
"PASS_BATON": "Relais",
"UNPAUSE_EVOLUTION": "Réactiver Évolution",
"REVIVE": "Ranimer",
"choosePokemon": "Sélectionnez un Pokémon.",
"doWhatWithThisPokemon": "Que faire avec ce Pokémon ?",
"noEnergy": "{{pokemonName}} na plus lénergie\nde se battre !",
"hasEnergy": "{{pokemonName}} peut toujours\nse battre !",
"cantBeUsed": "{{pokemonName}} ne peut pas\nse battre pour ce challenge !",
"tooManyItems": "{{pokemonName}} porte trop\ndexemplaires de cet objet !",
"anyEffect": "Cela naura aucun effet.",
"unpausedEvolutions": "{{pokemonName}} peut de nouveau évoluer.",
"unspliceConfirmation": "Voulez-vous vraiment séparer {{fusionName}}\nde {{pokemonName}} ? {{fusionName}} sera perdu.",
"wasReverted": "{{fusionName}} est redevenu {{pokemonName}}.",
"releaseConfirmation": "Voulez-vous relâcher {{pokemonName}} ?",
"releaseInBattle": "Vous ne pouvez pas relâcher Pokémon en combat !",
"selectAMove": "Sélectionnez une capacité.",
"changeQuantity": "Sélect. un objet à transférer.\nChangez la quantité avec < et >.",
"selectAnotherPokemonToSplice": "Sélectionnez un autre Pokémon à séparer.",
"cancel": "Sortir",
// Slot TM text
"able": "Apte",
"notAble": "Pas Apte",
"learned": "Appris",
// Releasing messages
"goodbye": "Au revoir, {{pokemonName}} !",
"byebye": "Bye-bye, {{pokemonName}} !",
"farewell": "Adieu, {{pokemonName}} !",
"soLong": "Salut, {{pokemonName}} !",
"thisIsWhereWePart": "Cest là quon se sépare, {{pokemonName}}!",
"illMissYou": "Tu vas me manquer, {{pokemonName}} !",
"illNeverForgetYou": "Je ne toublierai pas, {{pokemonName}} !",
"untilWeMeetAgain": "À la prochaine, {{pokemonName}} !",
"sayonara": "Sayonara, {{pokemonName}} !",
"smellYaLater": "À la revoyure, {{pokemonName}} !",
} as const;

View File

@ -5,8 +5,5 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "Sexe :",
"ability": "Talent :",
"nature": "Nature :",
"epic": "Épique",
"rare": "Rare",
"common": "Commun",
"form": "Forme :"
} as const;

View File

@ -2,4 +2,9 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const common: SimpleTranslationEntries = {
"start": "Inizia",
"luckIndicator": "Luck:",
"shinyOnHover": "Shiny",
"commonShiny": "Comune",
"rareShiny": "Raro",
"epicShiny": "Epico",
} as const;

View File

@ -22,4 +22,7 @@ export const egg: SimpleTranslationEntries = {
"hatchFromTheEgg": "DallUovo è nato {{pokemonName}}!",
"eggMoveUnlock": "Egg Move unlocked: {{moveName}}",
"rareEggMoveUnlock": "Rare Egg Move unlocked: {{moveName}}",
"moveUPGacha": "Move UP!",
"shinyUPGacha": "Shiny UP!",
"legendaryUPGacha": "UP!",
} as const;

View File

@ -53,6 +53,5 @@ export const menu: SimpleTranslationEntries = {
"no":"No",
"disclaimer": "DISCLAIMER",
"disclaimerDescription": "Questo gioco è un prodotto incompleto; si potrebbero riscontrare errori (inclusa la perdita dei dati di salvataggio),\ncambiamenti impercettibili, e non è detto che venga aggiornato nel tempo o mai completato del tutto.",
"choosePokemon": "Choose a Pokémon.",
"errorServerDown": "Oops! There was an issue contacting the server.\n\nYou may leave this window open,\nthe game will automatically reconnect.",
} as const;

View File

@ -6,5 +6,48 @@ export const partyUiHandler: SimpleTranslationEntries = {
"CANCEL": "Annulla",
"RELEASE": "Rilascia",
"APPLY": "Applica",
"TEACH": "Insegna"
"TEACH": "Insegna",
"SPLICE": "Splice",
"UNSPLICE": "Unsplice",
"ACTIVATE": "Activate",
"DEACTIVATE": "Deactivate",
"TRANSFER": "Transfer",
"ALL": "All",
"PASS_BATON": "Pass Baton",
"UNPAUSE_EVOLUTION": "Unpause Evolution",
"REVIVE": "Revive",
"choosePokemon": "Choose a Pokémon.",
"doWhatWithThisPokemon": "Do what with this Pokémon?",
"noEnergy": "{{pokemonName}} has no energy\nleft to battle!",
"hasEnergy": "{{pokemonName}} still has energy\nto battle!",
"cantBeUsed": "{{pokemonName}} can't be used in\nthis challenge!",
"tooManyItems": "{{pokemonName}} has too many\nof this item!",
"anyEffect": "It won't have any effect.",
"unpausedEvolutions": "Evolutions have been unpaused for {{pokemonName}}.",
"unspliceConfirmation": "Do you really want to unsplice {{fusionName}}\nfrom {{pokemonName}}? {{fusionName}} will be lost.",
"wasReverted": "{{fusionName}} was reverted to {{pokemonName}}.",
"releaseConfirmation": "Do you really want to release {{pokemonName}}?",
"releaseInBattle": "You can't release a Pokémon that's in battle!",
"selectAMove": "Select a move.",
"changeQuantity": "Select a held item to transfer.\nUse < and > to change the quantity.",
"selectAnotherPokemonToSplice": "Select another Pokémon to splice.",
"cancel": "Cancel",
// Slot TM text
"able": "Able",
"notAble": "Not able",
"learned": "Learned",
// Releasing messages
"goodbye": "Goodbye, {{pokemonName}}!",
"byebye": "Byebye, {{pokemonName}}!",
"farewell": "Farewell, {{pokemonName}}!",
"soLong": "So long, {{pokemonName}}!",
"thisIsWhereWePart": "This is where we part, {{pokemonName}}!",
"illMissYou": "I'll miss you, {{pokemonName}}!",
"illNeverForgetYou": "I'll never forget you, {{pokemonName}}!",
"untilWeMeetAgain": "Until we meet again, {{pokemonName}}!",
"sayonara": "Sayonara, {{pokemonName}}!",
"smellYaLater": "Smell ya later, {{pokemonName}}!",
} as const;

View File

@ -5,7 +5,4 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "Genere:",
"ability": "Abilità:",
"nature": "Natura:",
"epic": "Epico",
"rare": "Raro",
"common": "Comune"
} as const;

View File

@ -2,4 +2,9 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const common: SimpleTranslationEntries = {
"start": "시작",
"luckIndicator": "행운:",
"shinyOnHover": "색이 다른",
"commonShiny": "커먼",
"rareShiny": "레어",
"epicShiny": "에픽",
} as const;

View File

@ -22,4 +22,7 @@ export const egg: SimpleTranslationEntries = {
"hatchFromTheEgg": "알이 부화해서\n{{pokemonName}}[[가]] 태어났다!",
"eggMoveUnlock": "알 기술 {{moveName}}[[를]]\n사용할 수 있게 되었다!",
"rareEggMoveUnlock": "레어 알 기술 {{moveName}}[[를]]\n사용할 수 있게 되었다!",
"moveUPGacha": "기술 UP!",
"shinyUPGacha": "특별색 UP!",
"legendaryUPGacha": "UP!",
} as const;

View File

@ -53,6 +53,5 @@ export const menu: SimpleTranslationEntries = {
"no":"아니오",
"disclaimer": "면책 조항",
"disclaimerDescription": "이 게임은 완전히 개발되지 않았습니다- (세이브 데이터 소실을 포함) 플레이에 지장을 주는 문제가 생길 수 있으며,\n공지 없이 업데이트가 진행 혹은 중지될 수 있습니다.",
"choosePokemon": "포켓몬을 선택하세요.",
"errorServerDown": "서버 연결 중 문제가 발생했습니다.\n\n이 창을 종료하지 않고 두면,\n게임은 자동으로 재접속됩니다.",
} as const;

View File

@ -6,5 +6,48 @@ export const partyUiHandler: SimpleTranslationEntries = {
"CANCEL": "그만둔다",
"RELEASE": "놓아준다",
"APPLY": "사용한다",
"TEACH": "가르친다"
"TEACH": "가르친다",
"SPLICE": "융합",
"UNSPLICE": "융합 해제",
"ACTIVATE": "발동",
"DEACTIVATE": "해제",
"TRANSFER": "건넨다",
"ALL": "전부",
"PASS_BATON": "배턴터치한다",
"UNPAUSE_EVOLUTION": "진화 재개",
"REVIVE": "되살린다",
"choosePokemon": "포켓몬을 선택하세요.",
"doWhatWithThisPokemon": "포켓몬을 어떻게 하겠습니까?",
"noEnergy": "{{pokemonName}}[[는]] 싸울 수 있는\n기력이 남아 있지 않습니다!",
"hasEnergy": "{{pokemonName}}[[는]]\n아직도 힘이 넘친다!",
"cantBeUsed": "{{pokemonName}}[[는]] 이 챌린지에서는\n쓸 수 없습니다.",
"tooManyItems": "{{pokemonName}}[[는]] 지닌 도구의 수가\n너무 많습니다",
"anyEffect": "써도 효과가 없다.",
"unpausedEvolutions": "{{pokemonName}}의 진화가 재개되었다.",
"unspliceConfirmation": "{{pokemonName}}로부터 {{fusionName}}의 융합을 해제하시겠습니까?\n{{fusionName}}는 사라지게 됩니다.",
"wasReverted": "{{fusionName}}은 {{pokemonName}}의 모습으로 돌아갔습니다!",
"releaseConfirmation": "{{pokemonName}}[[를]]\n정말 놓아주겠습니까?",
"releaseInBattle": "전투 중인 포켓몬은\n놓아줄 수 없습니다.",
"selectAMove": "기술을 선택해 주십시오",
"changeQuantity": "건네줄 지닌 도구를 선택해 주십시오.\n< 와 > 로 수량을 변경할 수 있습니다.",
"selectAnotherPokemonToSplice": "융합할 포켓몬을 선택해 주십시오.",
"cancel": "그만둔다",
// Slot TM text
"able": "배울 수 있다",
"notAble": "배울 수 없다",
"learned": "알고 있다",
// Releasing messages
"goodbye": "잘 가, {{pokemonName}}!",
"byebye": "바이바이, {{pokemonName}}!",
"farewell": "작별이야, {{pokemonName}}!",
"soLong": "안녕, {{pokemonName}}!",
"thisIsWhereWePart": "여기서 헤어지자, {{pokemonName}}!",
"illMissYou": "보고 싶을거야, {{pokemonName}}!",
"illNeverForgetYou": "잊지 못할거야, {{pokemonName}}!",
"untilWeMeetAgain": "다시 만날 때까지, {{pokemonName}}!",
"sayonara": "사요나라, {{pokemonName}}!",
"smellYaLater": "또 보자, {{pokemonName}}!",
} as const;

View File

@ -5,8 +5,5 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "성별:",
"ability": "특성:",
"nature": "성격:",
"epic": "에픽",
"rare": "레어",
"common": "커먼",
"form": "폼:"
} as const;

View File

@ -2,4 +2,9 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const common: SimpleTranslationEntries = {
"start": "Iniciar",
"luckIndicator": "Sorte:",
"shinyOnHover": "Shiny",
"commonShiny": "Comum",
"rareShiny": "Raro",
"epicShiny": "Épico",
} as const;

View File

@ -22,4 +22,7 @@ export const egg: SimpleTranslationEntries = {
"hatchFromTheEgg": "{{pokemonName}} nasceu do ovo!",
"eggMoveUnlock": "Movimento de Ovo desbloqueado: {{moveName}}",
"rareEggMoveUnlock": "Movimento Raro de Ovo desbloqueado: {{moveName}}",
"moveUPGacha": "Movimento\nde Ovo Bônus!",
"shinyUPGacha": "Shiny Bônus!",
"legendaryUPGacha": "Bônus!",
} as const;

View File

@ -53,6 +53,5 @@ export const menu: SimpleTranslationEntries = {
"no": "Não",
"disclaimer": "AVISO",
"disclaimerDescription": "Este jogo é um produto inacabado; ele pode ter problemas de jogabilidade (incluindo possíveis\n perdas de dados salvos), sofrer alterações sem aviso prévio e pode ou não ser atualizado ou concluído.",
"choosePokemon": "Escolha um Pokémon.",
"errorServerDown": "Opa! Não foi possível conectar-se ao servidor.\n\nVocê pode deixar essa janela aberta,\npois o jogo irá se reconectar automaticamente.",
} as const;

View File

@ -7,4 +7,47 @@ export const partyUiHandler: SimpleTranslationEntries = {
"RELEASE": "Soltar",
"APPLY": "Aplicar",
"TEACH": "Ensinar",
"SPLICE": "Fundir",
"UNSPLICE": "Separar",
"ACTIVATE": "Ativar",
"DEACTIVATE": "Desativar",
"TRANSFER": "Transferir",
"ALL": "Tudo",
"PASS_BATON": "Passar Bastão",
"UNPAUSE_EVOLUTION": "Ativar Evolução",
"REVIVE": "Reviver",
"choosePokemon": "Escolha um Pokémon.",
"doWhatWithThisPokemon": "O que você deseja fazer?",
"noEnergy": "{{pokemonName}} não pode\nmais batalhar!",
"hasEnergy": "{{pokemonName}} ainda\npode batalhar!",
"cantBeUsed": "{{pokemonName}} não pode\nser usado neste desafio!",
"tooManyItems": "{{pokemonName}} já tem\nmuitos desse item!",
"anyEffect": "Isso não terá nenhum efeito.",
"unpausedEvolutions": "Evoluções foram despausadas para {{pokemonName}}.",
"unspliceConfirmation": "Você realmente deseja desfazer a fusão de {{fusionName}}\ncom {{pokemonName}}? {{fusionName}} será perdido.",
"wasReverted": "{{fusionName}} foi revertido para {{pokemonName}}.",
"releaseConfirmation": "Você realmente deseja soltar {{pokemonName}}?",
"releaseInBattle": "Você não pode soltar um Pokémon que está em batalha!",
"selectAMove": "Selecione um movimento.",
"changeQuantity": "Selecione um item para transferir.\nUse < e > para mudar a quantidade.",
"selectAnotherPokemonToSplice": "Selecione outro Pokémon para fundir.",
"cancel": "Voltar",
// Slot TM text
"able": "Capaz",
"notAble": "Incapaz",
"learned": "Aprendido",
// Releasing messages
"goodbye": "Adeus, {{pokemonName}}!",
"byebye": "Tchau, {{pokemonName}}!",
"farewell": "Até mais, {{pokemonName}}!",
"soLong": "Até logo, {{pokemonName}}!",
"thisIsWhereWePart": "Aqui é onde nos separamos, {{pokemonName}}!",
"illMissYou": "Vou sentir saudades, {{pokemonName}}!",
"illNeverForgetYou": "Nunca vou esquecer de você, {{pokemonName}}!",
"untilWeMeetAgain": "Até nos encontrarmos novamente, {{pokemonName}}!",
"sayonara": "Sayonara, {{pokemonName}}!",
"smellYaLater": "Te vejo depois, {{pokemonName}}!",
} as const;

View File

@ -5,7 +5,5 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "Gênero:",
"ability": "Habilidade:",
"nature": "Natureza:",
"epic": "Épico",
"rare": "Raro",
"common": "Comum",
"form": "Forma:",
} as const;

View File

@ -2,4 +2,9 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const common: SimpleTranslationEntries = {
"start": "开始",
"luckIndicator": "幸运:",
"shinyOnHover": "闪光",
"commonShiny": "常见",
"rareShiny": "稀有",
"epicShiny": "史诗",
} as const;

View File

@ -22,4 +22,7 @@ export const egg: SimpleTranslationEntries = {
"hatchFromTheEgg": "{{pokemonName}} 从蛋中孵化了!",
"eggMoveUnlock": "蛋招式已解锁: {{moveName}}",
"rareEggMoveUnlock": "稀有蛋招式已解锁: {{moveName}}",
"moveUPGacha": "蛋招式UP!",
"shinyUPGacha": "闪光UP!",
"legendaryUPGacha": "UP!",
} as const;

View File

@ -53,6 +53,5 @@ export const menu: SimpleTranslationEntries = {
"no": "否",
"disclaimer": "免责声明",
"disclaimerDescription": "这个游戏尚未完成; 可能存在游戏性问题(包括潜在的丢档风险)、\n 不经通知的调整、 未来可能会更新或完成更多内容",
"choosePokemon": "选择一只宝可梦。",
"errorServerDown": "糟糕!访问服务器时发生了错误。\n\n你可以保持页面开启\n游戏会自动重新连接。",
} as const;

View File

@ -6,5 +6,48 @@ export const partyUiHandler: SimpleTranslationEntries = {
"CANCEL": "取消",
"RELEASE": "放生",
"APPLY": "应用",
"TEACH": "教授"
"TEACH": "教授",
"SPLICE": "融合",
"UNSPLICE": "分离",
"ACTIVATE": "激活",
"DEACTIVATE": "解除",
"TRANSFER": "交换",
"ALL": "全部道具",
"PASS_BATON": "接棒",
"UNPAUSE_EVOLUTION": "接触进化暂停",
"REVIVE": "复活",
"choosePokemon": "选择一只宝可梦。",
"doWhatWithThisPokemon": "要对宝可梦做什么?",
"noEnergy": "{{pokemonName}}没有力气战斗了!",
"hasEnergy": "{{pokemonName}}仍然精神十足!",
"cantBeUsed": "{{pokemonName}}无法在此挑战中使用!",
"tooManyItems": "{{pokemonName}}拥有\n太多这个道具了",
"anyEffect": "即便使用也无效果哦。",
"unpausedEvolutions": "{{pokemonName}}的进化停止了。",
"unspliceConfirmation": "真的要把{{fusionName}}\n从{{pokemonName}}身上分离吗? {{fusionName}}会就此消失。",
"wasReverted": "{{fusionName}}恢复成了{{pokemonName}}。",
"releaseConfirmation": "你真要放生{{pokemonName}}吗?",
"releaseInBattle": "你无法放生正在战斗中的宝可梦!",
"selectAMove": "选择一个招式。",
"changeQuantity": "选择一件道具来交换。\n使用 ← 和 → 来指定数量。",
"selectAnotherPokemonToSplice": "选择另一只宝可梦来融合。",
"cancel": "取消",
// Slot TM text
"able": "能学会!",
"notAble": "无法学习",
"learned": "已习得",
// Releasing messages
"goodbye": "再见,{{pokemonName}}",
"byebye": "拜拜,{{pokemonName}}",
"farewell": "再会了,{{pokemonName}}",
"soLong": "告辞了,{{pokemonName}}",
"thisIsWhereWePart": "就此分别吧,{{pokemonName}}",
"illMissYou": "我会想你的,{{pokemonName}}",
"illNeverForgetYou": "我不会忘记你的,{{pokemonName}}",
"untilWeMeetAgain": "下次再见了,{{pokemonName}}",
"sayonara": "撒由那拉,{{pokemonName}}",
"smellYaLater": "拜拜了您嘞,{{pokemonName}}",
} as const;

View File

@ -5,7 +5,4 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "性别:",
"ability": "特性:",
"nature": "性格:",
"epic": "史诗",
"rare": "稀有",
"common": "常见"
} as const;

View File

@ -2,4 +2,9 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales";
export const common: SimpleTranslationEntries = {
"start": "開始",
"luckIndicator": "Luck:",
"shinyOnHover": "Shiny",
"commonShiny": "常見",
"rareShiny": "稀有",
"epicShiny": "史詩",
} as const;

View File

@ -22,4 +22,7 @@ export const egg: SimpleTranslationEntries = {
"hatchFromTheEgg": "{{pokemonName}} 從蛋中孵化了!",
"eggMoveUnlock": "蛋招式已解鎖: {{moveName}}",
"rareEggMoveUnlock": "稀有蛋招式已解鎖: {{moveName}}",
"moveUPGacha": "蛋招式UP!",
"shinyUPGacha": "闪光UP!",
"legendaryUPGacha": "UP!",
} as const;

View File

@ -53,6 +53,5 @@ export const menu: SimpleTranslationEntries = {
"no":"否",
"disclaimer": "DISCLAIMER",
"disclaimerDescription": "This game is an unfinished product; it might have playability issues (including the potential loss of save data),\n change without notice, and may or may not be updated further or completed.",
"choosePokemon": "Choose a Pokémon.",
"errorServerDown": "Oops! There was an issue contacting the server.\n\nYou may leave this window open,\nthe game will automatically reconnect.",
} as const;

View File

@ -6,5 +6,48 @@ export const partyUiHandler: SimpleTranslationEntries = {
"CANCEL": "取消",
"RELEASE": "放生",
"APPLY": "應用",
"TEACH": "教授"
"TEACH": "教授",
"SPLICE": "Splice",
"UNSPLICE": "Unsplice",
"ACTIVATE": "Activate",
"DEACTIVATE": "Deactivate",
"TRANSFER": "Transfer",
"ALL": "All",
"PASS_BATON": "Pass Baton",
"UNPAUSE_EVOLUTION": "Unpause Evolution",
"REVIVE": "Revive",
"choosePokemon": "Choose a Pokémon.",
"doWhatWithThisPokemon": "Do what with this Pokémon?",
"noEnergy": "{{pokemonName}} has no energy\nleft to battle!",
"hasEnergy": "{{pokemonName}} still has energy\nto battle!",
"cantBeUsed": "{{pokemonName}} can't be used in\nthis challenge!",
"tooManyItems": "{{pokemonName}} has too many\nof this item!",
"anyEffect": "It won't have any effect.",
"unpausedEvolutions": "Evolutions have been unpaused for {{pokemonName}}.",
"unspliceConfirmation": "Do you really want to unsplice {{fusionName}}\nfrom {{pokemonName}}? {{fusionName}} will be lost.",
"wasReverted": "{{fusionName}} was reverted to {{pokemonName}}.",
"releaseConfirmation": "Do you really want to release {{pokemonName}}?",
"releaseInBattle": "You can't release a Pokémon that's in battle!",
"selectAMove": "Select a move.",
"changeQuantity": "Select a held item to transfer.\nUse < and > to change the quantity.",
"selectAnotherPokemonToSplice": "Select another Pokémon to splice.",
"cancel": "Cancel",
// Slot TM text
"able": "Able",
"notAble": "Not able",
"learned": "Learned",
// Releasing messages
"goodbye": "Goodbye, {{pokemonName}}!",
"byebye": "Byebye, {{pokemonName}}!",
"farewell": "Farewell, {{pokemonName}}!",
"soLong": "So long, {{pokemonName}}!",
"thisIsWhereWePart": "This is where we part, {{pokemonName}}!",
"illMissYou": "I'll miss you, {{pokemonName}}!",
"illNeverForgetYou": "I'll never forget you, {{pokemonName}}!",
"untilWeMeetAgain": "Until we meet again, {{pokemonName}}!",
"sayonara": "Sayonara, {{pokemonName}}!",
"smellYaLater": "Smell ya later, {{pokemonName}}!",
} as const;

View File

@ -5,7 +5,4 @@ export const pokemonInfoContainer: SimpleTranslationEntries = {
"gender": "性别:",
"ability": "特性:",
"nature": "性格:",
"epic": "史詩",
"rare": "稀有",
"common": "常見"
} as const;

View File

@ -10,6 +10,7 @@ import { getVariantTint } from "#app/data/variant";
import { BattleStat } from "#app/data/battle-stat";
import BattleFlyout from "./battle-flyout";
import { WindowVariant, addWindow } from "./ui-theme";
import i18next from "i18next";
const battleStatOrder = [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.ACC, BattleStat.EVA, BattleStat.SPD ];
@ -315,9 +316,9 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
this.shinyIcon.setTint(getVariantTint(baseVariant));
if (this.shinyIcon.visible) {
const shinyDescriptor = doubleShiny || baseVariant ?
`${baseVariant === 2 ? "Epic" : baseVariant === 1 ? "Rare" : "Common"}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? "Epic" : pokemon.fusionVariant === 1 ? "Rare" : "Common"}` : ""}`
`${baseVariant === 2 ? i18next.t("common:epicShiny") : baseVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? i18next.t("common:epicShiny") : pokemon.fusionVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}` : ""}`
: "";
this.shinyIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip(null, `Shiny${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`));
this.shinyIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip(null, `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`));
this.shinyIcon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip());
}

View File

@ -96,25 +96,71 @@ export default class EggGachaUiHandler extends MessageUiHandler {
const gachaInfoContainer = this.scene.add.container(160, 46);
const gachaUpLabel = addTextObject(this.scene, 4, 0, "UP!", TextStyle.WINDOW_ALT);
const currentLanguage = i18next.resolvedLanguage;
let gachaTextStyle = TextStyle.WINDOW_ALT;
let gachaX = 4;
let gachaY = 0;
let pokemonIconX = -20;
let pokemonIconY = 6;
if (["de", "es", "fr", "pt-BR"].includes(currentLanguage)) {
gachaTextStyle = TextStyle.SMALLER_WINDOW_ALT;
gachaX = 2;
gachaY = 2;
}
let legendaryLabelX = gachaX;
let legendaryLabelY = gachaY;
if (["de", "es"].includes(currentLanguage)) {
pokemonIconX = -25;
pokemonIconY = 10;
legendaryLabelX = -6;
legendaryLabelY = 0;
}
const gachaUpLabel = addTextObject(this.scene, gachaX, gachaY, i18next.t("egg:legendaryUPGacha"), gachaTextStyle);
gachaUpLabel.setOrigin(0, 0);
gachaInfoContainer.add(gachaUpLabel);
switch (gachaType as GachaType) {
case GachaType.LEGENDARY:
const pokemonIcon = this.scene.add.sprite(-20, 6, "pokemon_icons_0");
if (["de", "es"].includes(currentLanguage)) {
gachaUpLabel.setAlign("center");
gachaUpLabel.setY(0);
}
if (["pt-BR"].includes(currentLanguage)) {
gachaUpLabel.setX(legendaryLabelX - 2);
} else {
gachaUpLabel.setX(legendaryLabelX);
}
gachaUpLabel.setY(legendaryLabelY);
const pokemonIcon = this.scene.add.sprite(pokemonIconX, pokemonIconY, "pokemon_icons_0");
if (["pt-BR"].includes(currentLanguage)) {
pokemonIcon.setX(pokemonIconX - 2);
}
pokemonIcon.setScale(0.5);
pokemonIcon.setOrigin(0, 0.5);
gachaInfoContainer.add(pokemonIcon);
break;
case GachaType.MOVE:
gachaUpLabel.setText("Move UP!");
if (["de", "es", "fr", "pt-BR"].includes(currentLanguage)) {
gachaUpLabel.setAlign("center");
gachaUpLabel.setY(0);
}
gachaUpLabel.setText(i18next.t("egg:moveUPGacha"));
gachaUpLabel.setX(0);
gachaUpLabel.setOrigin(0.5, 0);
break;
case GachaType.SHINY:
gachaUpLabel.setText("Shiny UP!");
if (["de", "fr"].includes(currentLanguage)) {
gachaUpLabel.setAlign("center");
gachaUpLabel.setY(0);
}
gachaUpLabel.setText(i18next.t("egg:shinyUPGacha"));
gachaUpLabel.setX(0);
gachaUpLabel.setOrigin(0.5, 0);
break;

View File

@ -21,7 +21,7 @@ import MoveInfoOverlay from "./move-info-overlay";
import i18next from "i18next";
import { Moves } from "#enums/moves";
const defaultMessage = i18next.t("menu:choosePokemon");
const defaultMessage = i18next.t("partyUiHandler:choosePokemon");
export enum PartyUiMode {
SWITCH,
@ -113,14 +113,14 @@ export default class PartyUiHandler extends MessageUiHandler {
public static FilterNonFainted = (pokemon: PlayerPokemon) => {
if (pokemon.isFainted()) {
return `${pokemon.name} has no energy\nleft to battle!`;
return i18next.t("partyUiHandler:noEnergy", { pokemonName: pokemon.name });
}
return null;
};
public static FilterFainted = (pokemon: PlayerPokemon) => {
if (!pokemon.isFainted()) {
return `${pokemon.name} still has energy\nto battle!`;
return i18next.t("partyUiHandler:hasEnergy", { pokemonName: pokemon.name });
}
return null;
};
@ -134,7 +134,7 @@ export default class PartyUiHandler extends MessageUiHandler {
const challengeAllowed = new Utils.BooleanHolder(true);
applyChallenges(this.scene.gameMode, ChallengeType.POKEMON_IN_BATTLE, pokemon, challengeAllowed);
if (!challengeAllowed.value) {
return `${pokemon.name} can't be used in\nthis challenge!`;
return i18next.t("partyUiHandler:cantBeUsed", { pokemonName: pokemon.name });
}
return null;
};
@ -144,14 +144,14 @@ export default class PartyUiHandler extends MessageUiHandler {
public static FilterItemMaxStacks = (pokemon: PlayerPokemon, modifier: PokemonHeldItemModifier) => {
const matchingModifier = pokemon.scene.findModifier(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id && m.matchType(modifier)) as PokemonHeldItemModifier;
if (matchingModifier && matchingModifier.stackCount === matchingModifier.getMaxStackCount(pokemon.scene)) {
return `${pokemon.name} has too many\nof this item!`;
return i18next.t("partyUiHandler:tooManyItems", { pokemonName: pokemon.name });
}
return null;
};
public static NoEffectMessage = "It won't have any effect.";
public static NoEffectMessage = i18next.t("partyUiHandler:anyEffect");
private localizedOptions = [PartyOption.SEND_OUT, PartyOption.SUMMARY, PartyOption.CANCEL, PartyOption.APPLY, PartyOption.RELEASE, PartyOption.TEACH];
private localizedOptions = [PartyOption.SEND_OUT, PartyOption.SUMMARY, PartyOption.CANCEL, PartyOption.APPLY, PartyOption.RELEASE, PartyOption.TEACH, PartyOption.SPLICE, PartyOption.UNSPLICE, PartyOption.REVIVE, PartyOption.TRANSFER, PartyOption.UNPAUSE_EVOLUTION, PartyOption.PASS_BATON];
constructor(scene: BattleScene) {
super(scene, Mode.PARTY);
@ -376,18 +376,18 @@ export default class PartyUiHandler extends MessageUiHandler {
this.clearOptions();
ui.playSelect();
pokemon.pauseEvolutions = false;
this.showText(`Evolutions have been unpaused for ${pokemon.name}.`, null, () => this.showText(null, 0), null, true);
this.showText(i18next.t("partyUiHandler:unpausedEvolutions", { pokemonName: pokemon.name }), null, () => this.showText(null, 0), null, true);
} else if (option === PartyOption.UNSPLICE) {
this.clearOptions();
ui.playSelect();
this.showText(`Do you really want to unsplice ${pokemon.fusionSpecies.name}\nfrom ${pokemon.name}? ${pokemon.fusionSpecies.name} will be lost.`, null, () => {
this.showText(i18next.t("partyUiHandler:unspliceConfirmation", { fusionName: pokemon.fusionSpecies.name, pokemonName: pokemon.name }), null, () => {
ui.setModeWithoutClear(Mode.CONFIRM, () => {
const fusionName = pokemon.name;
pokemon.unfuse().then(() => {
this.clearPartySlots();
this.populatePartySlots();
ui.setMode(Mode.PARTY);
this.showText(`${fusionName} was reverted to ${pokemon.name}.`, null, () => {
this.showText(i18next.t("partyUiHandler:wasReverted", { fusionName: fusionName, pokemonName: pokemon.name }), null, () => {
ui.setMode(Mode.PARTY);
this.showText(null, 0);
}, null, true);
@ -401,7 +401,7 @@ export default class PartyUiHandler extends MessageUiHandler {
this.clearOptions();
ui.playSelect();
if (this.cursor >= this.scene.currentBattle.getBattlerCount() || !pokemon.isAllowedInBattle()) {
this.showText(`Do you really want to release ${pokemon.name}?`, null, () => {
this.showText(i18next.t("partyUiHandler:releaseConfirmation", { pokemonName: pokemon.name }), null, () => {
ui.setModeWithoutClear(Mode.CONFIRM, () => {
ui.setMode(Mode.PARTY);
this.doRelease(this.cursor);
@ -411,7 +411,7 @@ export default class PartyUiHandler extends MessageUiHandler {
});
});
} else {
this.showText("You can't release a Pokémon that's in battle!", null, () => this.showText(null, 0), null, true);
this.showText(i18next.t("partyUiHandler:releaseInBattle"), null, () => this.showText(null, 0), null, true);
}
return true;
} else if (option === PartyOption.CANCEL) {
@ -651,20 +651,20 @@ export default class PartyUiHandler extends MessageUiHandler {
this.optionsMode = true;
let optionsMessage = "Do what with this Pokémon?";
let optionsMessage = i18next.t("partyUiHandler:doWhatWithThisPokemon");
switch (this.partyUiMode) {
case PartyUiMode.MOVE_MODIFIER:
optionsMessage = "Select a move.";
optionsMessage = i18next.t("partyUiHandler:selectAMove");
break;
case PartyUiMode.MODIFIER_TRANSFER:
if (!this.transferMode) {
optionsMessage = "Select a held item to transfer.\nUse < and > to change the quantity.";
optionsMessage = i18next.t("partyUiHandler:changeQuantity");
}
break;
case PartyUiMode.SPLICE:
if (!this.transferMode) {
optionsMessage = "Select another Pokémon to splice.";
optionsMessage = i18next.t("partyUiHandler:selectAnotherPokemonToSplice");
}
break;
}
@ -847,7 +847,7 @@ export default class PartyUiHandler extends MessageUiHandler {
default:
if (formChangeItemModifiers && option >= PartyOption.FORM_CHANGE_ITEM) {
const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM];
optionName = `${modifier.active ? "Deactivate" : "Activate"} ${modifier.type.name}`;
optionName = `${modifier.active ? i18next.t("partyUiHandler:DEACTIVATE") : i18next.t("partyUiHandler:ACTIVATE")} ${modifier.type.name}`;
} else {
if (this.localizedOptions.includes(option)) {
optionName = i18next.t(`partyUiHandler:${PartyOption[option]}`);
@ -932,25 +932,25 @@ export default class PartyUiHandler extends MessageUiHandler {
getReleaseMessage(pokemonName: string): string {
const rand = Utils.randInt(128);
if (rand < 20) {
return `Goodbye, ${pokemonName}!`;
return i18next.t("partyUiHandler:goodbye", { pokemonName: pokemonName });
} else if (rand < 40) {
return `Byebye, ${pokemonName}!`;
return i18next.t("partyUiHandler:byebye", { pokemonName: pokemonName });
} else if (rand < 60) {
return `Farewell, ${pokemonName}!`;
return i18next.t("partyUiHandler:farewell", { pokemonName: pokemonName });
} else if (rand < 80) {
return `So long, ${pokemonName}!`;
return i18next.t("partyUiHandler:soLong", { pokemonName: pokemonName });
} else if (rand < 100) {
return `This is where we part, ${pokemonName}!`;
return i18next.t("partyUiHandler:thisIsWhereWePart", { pokemonName: pokemonName });
} else if (rand < 108) {
return `I'll miss you, ${pokemonName}!`;
return i18next.t("partyUiHandler:illMissYou", { pokemonName: pokemonName });
} else if (rand < 116) {
return `I'll never forget you, ${pokemonName}!`;
return i18next.t("partyUiHandler:illNeverForgetYou", { pokemonName: pokemonName });
} else if (rand < 124) {
return `Until we meet again, ${pokemonName}!`;
return i18next.t("partyUiHandler:untilWeMeetAgain", { pokemonName: pokemonName });
} else if (rand < 127) {
return `Sayonara, ${pokemonName}!`;
return i18next.t("partyUiHandler:sayonara", { pokemonName: pokemonName });
} else {
return `Smell ya later, ${pokemonName}!`;
return i18next.t("partyUiHandler:smellYaLater", { pokemonName: pokemonName });
}
}
@ -1149,13 +1149,13 @@ class PartySlot extends Phaser.GameObjects.Container {
let slotTmText: string;
switch (true) {
case (this.pokemon.compatibleTms.indexOf(tmMoveId) === -1):
slotTmText = "Not Able";
slotTmText = i18next.t("partyUiHandler:notAble");
break;
case (this.pokemon.getMoveset().filter(m => m?.moveId === tmMoveId).length > 0):
slotTmText = "Learned";
slotTmText = i18next.t("partyUiHandler:learned");
break;
default:
slotTmText = "Able";
slotTmText = i18next.t("partyUiHandler:able");
break;
}
@ -1230,7 +1230,7 @@ class PartyCancelButton extends Phaser.GameObjects.Container {
this.partyCancelPb = partyCancelPb;
const partyCancelText = addTextObject(this.scene, -8, -7, "Cancel", TextStyle.PARTY);
const partyCancelText = addTextObject(this.scene, -8, -7, i18next.t("partyUiHandler:cancel"), TextStyle.PARTY);
this.add(partyCancelText);
}

View File

@ -300,9 +300,9 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container {
this.pokemonShinyIcon.setTint(getVariantTint(baseVariant));
if (this.pokemonShinyIcon.visible) {
const shinyDescriptor = doubleShiny || baseVariant ?
`${baseVariant === 2 ? i18next.t("pokemonInfoContainer:epic") : baseVariant === 1 ? i18next.t("pokemonInfoContainer:rare") : i18next.t("pokemonInfoContainer:common")}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? i18next.t("pokemonInfoContainer:epic") : pokemon.fusionVariant === 1 ? i18next.t("pokemonInfoContainer:rare") : i18next.t("pokemonInfoContainer:common")}` : ""}`
`${baseVariant === 2 ? i18next.t("common:epicShiny") : baseVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? i18next.t("common:epicShiny") : pokemon.fusionVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}` : ""}`
: "";
this.pokemonShinyIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip(null, `Shiny${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, true));
this.pokemonShinyIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip(null, `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, true));
this.pokemonShinyIcon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip());
const newShiny = BigInt(Math.pow(2, (pokemon.shiny ? 1 : 0)));

View File

@ -565,7 +565,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.type2Icon.setOrigin(0, 0);
this.starterSelectContainer.add(this.type2Icon);
this.pokemonLuckLabelText = addTextObject(this.scene, 8, 89, "Luck:", TextStyle.WINDOW_ALT, { fontSize: "56px" });
this.pokemonLuckLabelText = addTextObject(this.scene, 8, 89, i18next.t("common:luckIndicator"), TextStyle.WINDOW_ALT, { fontSize: "56px" });
this.pokemonLuckLabelText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonLuckLabelText);

View File

@ -345,9 +345,9 @@ export default class SummaryUiHandler extends UiHandler {
this.shinyIcon.setTint(getVariantTint(baseVariant));
if (this.shinyIcon.visible) {
const shinyDescriptor = doubleShiny || baseVariant ?
`${baseVariant === 2 ? "Epic" : baseVariant === 1 ? "Rare" : "Common"}${doubleShiny ? `/${this.pokemon.fusionVariant === 2 ? "Epic" : this.pokemon.fusionVariant === 1 ? "Rare" : "Common"}` : ""}`
`${baseVariant === 2 ? i18next.t("common:epicShiny") : baseVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}${doubleShiny ? `/${this.pokemon.fusionVariant === 2 ? i18next.t("common:epicShiny") : this.pokemon.fusionVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}` : ""}`
: "";
this.shinyIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip(null, `Shiny${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, true));
this.shinyIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip(null, `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, true));
this.shinyIcon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip());
}
@ -717,7 +717,7 @@ export default class SummaryUiHandler extends UiHandler {
}
if (this.pokemon.getLuck()) {
const luckLabelText = addTextObject(this.scene, 141, 28, "Luck:", TextStyle.SUMMARY_ALT);
const luckLabelText = addTextObject(this.scene, 141, 28, i18next.t("common:luckIndicator"), TextStyle.SUMMARY_ALT);
luckLabelText.setOrigin(0, 0);
profileContainer.add(luckLabelText);

View File

@ -1,10 +1,10 @@
import { EggTier } from "#enums/egg-type";
import { UiTheme } from "#enums/ui-theme";
import Phaser from "phaser";
import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText";
import InputText from "phaser3-rex-plugins/plugins/inputtext";
import BattleScene from "../battle-scene";
import { ModifierTier } from "../modifier/modifier-tier";
import Phaser from "phaser";
import { EggTier } from "#enums/egg-type";
import { UiTheme } from "#enums/ui-theme";
export enum TextStyle {
MESSAGE,
@ -33,7 +33,8 @@ export enum TextStyle {
MOVE_PP_FULL,
MOVE_PP_HALF_FULL,
MOVE_PP_NEAR_EMPTY,
MOVE_PP_EMPTY
MOVE_PP_EMPTY,
SMALLER_WINDOW_ALT
}
export function addTextObject(scene: Phaser.Scene, x: number, y: number, content: string, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): Phaser.GameObjects.Text {
@ -140,6 +141,11 @@ export function getTextStyleOptions(style: TextStyle, uiTheme: UiTheme, extraSty
shadowXpos = 3;
shadowYpos = 3;
break;
case TextStyle.SMALLER_WINDOW_ALT:
styleOptions.fontSize = defaultFontSize - 36;
shadowXpos = 3;
shadowYpos = 3;
break;
}
const shadowColor = getTextColor(style, true, uiTheme);
@ -227,6 +233,8 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean, uiTheme: Ui
return !shadow ? "#f8b050" : "#c07800";
case TextStyle.SETTINGS_SELECTED:
return !shadow ? "#f88880" : "#f83018";
case TextStyle.SMALLER_WINDOW_ALT:
return !shadow ? "#484848" : "#d0d0c8";
}
}