From e30b9607c5fa695df7805c6649c8eaf855c24b28 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:56:01 -0700 Subject: [PATCH 1/4] [Misc] Removes the temporary save-fix code that swaps abilities (#3274) --- src/system/game-data.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/system/game-data.ts b/src/system/game-data.ts index bbc74ee13e3..6b8f183e94a 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -41,7 +41,6 @@ import { Moves } from "#enums/moves"; import { PlayerGender } from "#enums/player-gender"; import { Species } from "#enums/species"; import { applyChallenges, ChallengeType } from "#app/data/challenge.js"; -import { Abilities } from "#app/enums/abilities.js"; export const defaultStarterSpecies: Species[] = [ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, @@ -852,14 +851,6 @@ export class GameData { const handleSessionData = async (sessionDataStr: string) => { try { const sessionData = this.parseSessionData(sessionDataStr); - for (let i = 0; i <= 5; i++) { - const speciesToCheck = getPokemonSpecies(sessionData.party[i]?.species); - if (sessionData.party[i]?.abilityIndex === 1) { - if (speciesToCheck.ability1 === speciesToCheck.ability2 && speciesToCheck.abilityHidden !== Abilities.NONE && speciesToCheck.abilityHidden !== speciesToCheck.ability1) { - sessionData.party[i].abilityIndex = 2; - } - } - } resolve(sessionData); } catch (err) { reject(err); From fdbdb862bcf8e52fac55bda13b8f813a7300a6b7 Mon Sep 17 00:00:00 2001 From: Opaque02 <66582645+Opaque02@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:50:47 +1000 Subject: [PATCH 2/4] [QoL] Making the transfer button show which pokemon can have items be transferred to them (#2503) * Basic version of code for updating party ui name to be red when at max stack * Updated text to be red when pokemon is at max stack * Removed some comments and fixed a private property issue * Fixed a const instead of a let statement, and added some comments on the logic * Accidentally broke last commit. Intentionally fixed this commit * Updated the code to not have red text for pokemon name as that was too confusing with fainted pokemon. Now the party slot has a descriptor label which can be used to set the text to show if the pokemon is able/not able to receive the transfer items * Updated transfer logic to use new isTransferrable property instead of getTransferrable method and merged with latest --- src/ui/party-ui-handler.ts | 116 ++++++++++++++++++++++++++++--------- 1 file changed, 88 insertions(+), 28 deletions(-) diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 9bb8162ce2a..80ce318532b 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -288,6 +288,36 @@ export default class PartyUiHandler extends MessageUiHandler { const pokemon = this.scene.getParty()[this.cursor]; if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode && option !== PartyOption.CANCEL) { this.startTransfer(); + + let ableToTransfer: string; + for (let p = 0; p < this.scene.getParty().length; p++) { // this fore look goes through each of the party pokemon + const newPokemon = this.scene.getParty()[p]; + // this next line gets all of the transferable items from pokemon [p]; it does this by getting all the held modifiers that are transferable and checking to see if they belong to pokemon [p] + const getTransferrableItemsFromPokemon = (newPokemon: PlayerPokemon) => + this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).isTransferrable && (m as PokemonHeldItemModifier).pokemonId === newPokemon.id) as PokemonHeldItemModifier[]; + // this next bit checks to see if the the selected item from the original transfer pokemon exists on the new pokemon [p]; this returns undefined if the new pokemon doesn't have the item at all, otherwise it returns the pokemonHeldItemModifier for that item + const matchingModifier = newPokemon.scene.findModifier(m => m instanceof PokemonHeldItemModifier && m.pokemonId === newPokemon.id && m.matchType(getTransferrableItemsFromPokemon(pokemon)[this.transferOptionCursor])) as PokemonHeldItemModifier; + const partySlot = this.partySlots.filter(m => m.getPokemon() === newPokemon)[0]; // this gets pokemon [p] for us + if (p !== this.transferCursor) { // this skips adding the able/not able labels on the pokemon doing the transfer + if (matchingModifier) { // if matchingModifier exists then the item exists on the new pokemon + if (matchingModifier.getMaxStackCount(this.scene) === matchingModifier.stackCount) { // checks to see if the stack of items is at max stack; if so, set the description label to "Not able" + ableToTransfer = "Not able"; + } else { // if the pokemon isn't at max stack, make the label "Able" + ableToTransfer = "Able"; + } + } else { // if matchingModifier doesn't exist, that means the pokemon doesn't have any of the item, and we need to show "Able" + ableToTransfer = "Able"; + } + } else { // this else relates to the transfer pokemon. We set the text to be blank so there's no "Able"/"Not able" text + ableToTransfer = ""; + } + partySlot.slotHpBar.setVisible(false); + partySlot.slotHpOverlay.setVisible(false); + partySlot.slotHpText.setVisible(false); + partySlot.slotDescriptionLabel.setText(ableToTransfer); + partySlot.slotDescriptionLabel.setVisible(true); + } + this.clearOptions(); ui.playSelect(); return true; @@ -947,6 +977,12 @@ export default class PartyUiHandler extends MessageUiHandler { this.transferMode = false; this.transferAll = false; this.partySlots[this.transferCursor].setTransfer(false); + for (let i = 0; i < this.partySlots.length; i++) { + this.partySlots[i].slotDescriptionLabel.setVisible(false); + this.partySlots[i].slotHpBar.setVisible(true); + this.partySlots[i].slotHpOverlay.setVisible(true); + this.partySlots[i].slotHpText.setVisible(true); + } } doRelease(slotIndex: integer): void { @@ -1041,6 +1077,12 @@ class PartySlot extends Phaser.GameObjects.Container { private slotBg: Phaser.GameObjects.Image; private slotPb: Phaser.GameObjects.Sprite; + public slotName: Phaser.GameObjects.Text; + public slotHpBar: Phaser.GameObjects.Image; + public slotHpOverlay: Phaser.GameObjects.Sprite; + public slotHpText: Phaser.GameObjects.Text; + public slotDescriptionLabel: Phaser.GameObjects.Text; // this is used to show text instead of the HP bar i.e. for showing "Able"/"Not Able" for TMs when you try to learn them + private pokemonIcon: Phaser.GameObjects.Container; private iconAnimHandler: PokemonIconAnimHandler; @@ -1057,6 +1099,10 @@ class PartySlot extends Phaser.GameObjects.Container { this.setup(partyUiMode, tmMoveId); } + getPokemon(): PlayerPokemon { + return this.pokemon; + } + setup(partyUiMode: PartyUiMode, tmMoveId: Moves) { const battlerCount = (this.scene as BattleScene).currentBattle.getBattlerCount(); @@ -1095,19 +1141,19 @@ class PartySlot extends Phaser.GameObjects.Container { nameSizeTest.destroy(); - const slotName = addTextObject(this.scene, 0, 0, displayName, TextStyle.PARTY); - slotName.setPositionRelative(slotBg, this.slotIndex >= battlerCount ? 21 : 24, this.slotIndex >= battlerCount ? 2 : 10); - slotName.setOrigin(0, 0); + this.slotName = addTextObject(this.scene, 0, 0, displayName, TextStyle.PARTY); + this.slotName.setPositionRelative(slotBg, this.slotIndex >= battlerCount ? 21 : 24, this.slotIndex >= battlerCount ? 2 : 10); + this.slotName.setOrigin(0, 0); const slotLevelLabel = this.scene.add.image(0, 0, "party_slot_overlay_lv"); - slotLevelLabel.setPositionRelative(slotName, 8, 12); + slotLevelLabel.setPositionRelative(this.slotName, 8, 12); slotLevelLabel.setOrigin(0, 0); const slotLevelText = addTextObject(this.scene, 0, 0, this.pokemon.level.toString(), this.pokemon.level < (this.scene as BattleScene).getMaxExpLevel() ? TextStyle.PARTY : TextStyle.PARTY_RED); slotLevelText.setPositionRelative(slotLevelLabel, 9, 0); slotLevelText.setOrigin(0, 0.25); - slotInfoContainer.add([ slotName, slotLevelLabel, slotLevelText ]); + slotInfoContainer.add([this.slotName, slotLevelLabel, slotLevelText ]); const genderSymbol = getGenderSymbol(this.pokemon.getGender(true)); @@ -1118,7 +1164,7 @@ class PartySlot extends Phaser.GameObjects.Container { if (this.slotIndex >= battlerCount) { slotGenderText.setPositionRelative(slotLevelLabel, 36, 0); } else { - slotGenderText.setPositionRelative(slotName, 76 - (this.pokemon.fusionSpecies ? 8 : 0), 3); + slotGenderText.setPositionRelative(this.slotName, 76 - (this.pokemon.fusionSpecies ? 8 : 0), 3); } slotGenderText.setOrigin(0, 0.25); @@ -1132,7 +1178,7 @@ class PartySlot extends Phaser.GameObjects.Container { if (this.slotIndex >= battlerCount) { splicedIcon.setPositionRelative(slotLevelLabel, 36 + (genderSymbol ? 8 : 0), 0.5); } else { - splicedIcon.setPositionRelative(slotName, 76, 3.5); + splicedIcon.setPositionRelative(this.slotName, 76, 3.5); } slotInfoContainer.add(splicedIcon); @@ -1152,7 +1198,7 @@ class PartySlot extends Phaser.GameObjects.Container { const shinyStar = this.scene.add.image(0, 0, `shiny_star_small${doubleShiny ? "_1" : ""}`); shinyStar.setOrigin(0, 0); - shinyStar.setPositionRelative(slotName, -9, 3); + shinyStar.setPositionRelative(this.slotName, -9, 3); shinyStar.setTint(getVariantTint(!doubleShiny ? this.pokemon.getVariant() : this.pokemon.variant)); slotInfoContainer.add(shinyStar); @@ -1167,24 +1213,40 @@ class PartySlot extends Phaser.GameObjects.Container { } } + this.slotHpBar = this.scene.add.image(0, 0, "party_slot_hp_bar"); + this.slotHpBar.setPositionRelative(slotBg, this.slotIndex >= battlerCount ? 72 : 8, this.slotIndex >= battlerCount ? 6 : 31); + this.slotHpBar.setOrigin(0, 0); + this.slotHpBar.setVisible(false); + + const hpRatio = this.pokemon.getHpRatio(); + + this.slotHpOverlay = this.scene.add.sprite(0, 0, "party_slot_hp_overlay", hpRatio > 0.5 ? "high" : hpRatio > 0.25 ? "medium" : "low"); + this.slotHpOverlay.setPositionRelative(this.slotHpBar, 16, 2); + this.slotHpOverlay.setOrigin(0, 0); + this.slotHpOverlay.setScale(hpRatio, 1); + this.slotHpOverlay.setVisible(false); + + this.slotHpText = addTextObject(this.scene, 0, 0, `${this.pokemon.hp}/${this.pokemon.getMaxHp()}`, TextStyle.PARTY); + this.slotHpText.setPositionRelative(this.slotHpBar, this.slotHpBar.width - 3, this.slotHpBar.height - 2); + this.slotHpText.setOrigin(1, 0); + this.slotHpText.setVisible(false); + + this.slotDescriptionLabel = addTextObject(this.scene, 0, 0, "", TextStyle.MESSAGE); + this.slotDescriptionLabel.setPositionRelative(slotBg, this.slotIndex >= battlerCount ? 94 : 32, this.slotIndex >= battlerCount ? 16 : 46); + this.slotDescriptionLabel.setOrigin(0, 1); + this.slotDescriptionLabel.setVisible(false); + + slotInfoContainer.add([this.slotHpBar, this.slotHpOverlay, this.slotHpText, this.slotDescriptionLabel]); + if (partyUiMode !== PartyUiMode.TM_MODIFIER) { - const slotHpBar = this.scene.add.image(0, 0, "party_slot_hp_bar"); - slotHpBar.setPositionRelative(slotBg, this.slotIndex >= battlerCount ? 72 : 8, this.slotIndex >= battlerCount ? 6 : 31); - slotHpBar.setOrigin(0, 0); - - const hpRatio = this.pokemon.getHpRatio(); - - const slotHpOverlay = this.scene.add.sprite(0, 0, "party_slot_hp_overlay", hpRatio > 0.5 ? "high" : hpRatio > 0.25 ? "medium" : "low"); - slotHpOverlay.setPositionRelative(slotHpBar, 16, 2); - slotHpOverlay.setOrigin(0, 0); - slotHpOverlay.setScale(hpRatio, 1); - - const slotHpText = addTextObject(this.scene, 0, 0, `${this.pokemon.hp}/${this.pokemon.getMaxHp()}`, TextStyle.PARTY); - slotHpText.setPositionRelative(slotHpBar, slotHpBar.width - 3, slotHpBar.height - 2); - slotHpText.setOrigin(1, 0); - - slotInfoContainer.add([ slotHpBar, slotHpOverlay, slotHpText ]); + this.slotDescriptionLabel.setVisible(false); + this.slotHpBar.setVisible(true); + this.slotHpOverlay.setVisible(true); + this.slotHpText.setVisible(true); } else { + this.slotHpBar.setVisible(false); + this.slotHpOverlay.setVisible(false); + this.slotHpText.setVisible(false); let slotTmText: string; switch (true) { case (this.pokemon.compatibleTms.indexOf(tmMoveId) === -1): @@ -1198,11 +1260,9 @@ class PartySlot extends Phaser.GameObjects.Container { break; } - const slotTmLabel = addTextObject(this.scene, 0, 0, slotTmText, TextStyle.MESSAGE); - slotTmLabel.setPositionRelative(slotBg, this.slotIndex >= battlerCount ? 94 : 32, this.slotIndex >= battlerCount ? 16 : 46); - slotTmLabel.setOrigin(0, 1); + this.slotDescriptionLabel.setText(slotTmText); + this.slotDescriptionLabel.setVisible(true); - slotInfoContainer.add(slotTmLabel); } } From 1d616d075601b0be1371c839ce5f8bdffc2785b7 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Thu, 1 Aug 2024 03:52:11 +0200 Subject: [PATCH 3/4] [Localization] Some missing French translations in menu-ui-handler and achv (#3276) * Update menu-ui-handler.ts * Update achv.ts --- src/locales/fr/achv.ts | 281 +++++++++++++++++++++++++++++- src/locales/fr/menu-ui-handler.ts | 8 +- 2 files changed, 276 insertions(+), 13 deletions(-) diff --git a/src/locales/fr/achv.ts b/src/locales/fr/achv.ts index 4ff9bf20f51..bc6a862942d 100644 --- a/src/locales/fr/achv.ts +++ b/src/locales/fr/achv.ts @@ -22,7 +22,7 @@ export const PGMachv: AchievementTranslationEntries = { name: "Banquier", }, "10M_MONEY": { - name: "Évadé·e fiscal·e", + name: "Évadé fiscal", }, "DamageAchv": { @@ -45,7 +45,7 @@ export const PGMachv: AchievementTranslationEntries = { description: "Soigner {{healAmount}} {{HP}} en une fois avec une capacité, un talent ou un objet tenu", }, "250_HEAL": { - name: "Infirmier·ère", + name: "Infirmier", }, "1000_HEAL": { name: "Médecin", @@ -74,19 +74,19 @@ export const PGMachv: AchievementTranslationEntries = { description: "Accumuler un total de {{ribbonAmount}} Rubans", }, "10_RIBBONS": { - name: "Maitre·sse de la Ligue", + name: "Maitre de la Ligue", }, "25_RIBBONS": { - name: "Super Maitre·sse de la Ligue", + name: "Super Maitre de la Ligue", }, "50_RIBBONS": { - name: "Hyper Maitre·sse de la Ligue", + name: "Hyper Maitre de la Ligue", }, "75_RIBBONS": { - name: "Rogue Maitre·sse de la Ligue", + name: "Rogue Maitre de la Ligue", }, "100_RIBBONS": { - name: "Master Maitre·sse de la Ligue", + name: "Master Maitre de la Ligue", }, "TRANSFER_MAX_BATTLE_STAT": { @@ -166,7 +166,7 @@ export const PGMachv: AchievementTranslationEntries = { description: "Avoir des IV parfaits sur un Pokémon", }, "CLASSIC_VICTORY": { - name: "Invaincu·e", + name: "Invaincu", description: "Terminer le jeu en mode classique", }, @@ -267,4 +267,267 @@ export const PGMachv: AchievementTranslationEntries = { } as const; // Achievement translations for the when the player character is female (it for now uses the same translations as the male version) -export const PGFachv: AchievementTranslationEntries = PGMachv; +export const PGFachv: AchievementTranslationEntries = { + "Achievements": { + name: "Succès", + }, + "Locked": { + name: "Verrouillé", + }, + + "MoneyAchv": { + description: "Récolter un total de {{moneyAmount}} ₽", + }, + "10K_MONEY": { + name: "Épargnante", + }, + "100K_MONEY": { + name: "Je possède des thunes", + }, + "1M_MONEY": { + name: "Banquière", + }, + "10M_MONEY": { + name: "Évadée fiscale", + }, + + "DamageAchv": { + description: "Infliger {{damageAmount}} de dégâts en un coup", + }, + "250_DMG": { + name: "Caïd", + }, + "1000_DMG": { + name: "Boxeuse", + }, + "2500_DMG": { + name: "Distributrice de pains", + }, + "10000_DMG": { + name: "One Punch Woman", + }, + + "HealAchv": { + description: "Soigner {{healAmount}} {{HP}} en une fois avec une capacité, un talent ou un objet tenu", + }, + "250_HEAL": { + name: "Infirmière", + }, + "1000_HEAL": { + name: "Médecin", + }, + "2500_HEAL": { + name: "Clerc", + }, + "10000_HEAL": { + name: "Centre Pokémon", + }, + + "LevelAchv": { + description: "Monter un Pokémon au N.{{level}}", + }, + "LV_100": { + name: "Et c’est pas fini !", + }, + "LV_250": { + name: "Élite", + }, + "LV_1000": { + name: "Vers l’infini et au-delà", + }, + + "RibbonAchv": { + description: "Accumuler un total de {{ribbonAmount}} Rubans", + }, + "10_RIBBONS": { + name: "Maitresse de la Ligue", + }, + "25_RIBBONS": { + name: "Super Maitresse de la Ligue", + }, + "50_RIBBONS": { + name: "Hyper Maitresse de la Ligue", + }, + "75_RIBBONS": { + name: "Rogue Maitresse de la Ligue", + }, + "100_RIBBONS": { + name: "Master Maitresse de la Ligue", + }, + + "TRANSFER_MAX_BATTLE_STAT": { + name: "Travail d’équipe", + description: "Utiliser Relais avec au moins une statistique montée à fond", + }, + "MAX_FRIENDSHIP": { + name: "Copinage", + description: "Atteindre le niveau de bonheur maximal avec un Pokémon", + }, + "MEGA_EVOLVE": { + name: "Mégamorph", + description: "Méga-évoluer un Pokémon", + }, + "GIGANTAMAX": { + name: "Kaijū", + description: "Gigamaxer un Pokémon", + }, + "TERASTALLIZE": { + name: "J’aime les STAB", + description: "Téracristalliser un Pokémon", + }, + "STELLAR_TERASTALLIZE": { + name: "Le type enfoui", + description: "Téracristalliser un Pokémon en type Stellaire", + }, + "SPLICE": { + name: "Infinite Fusion", + description: "Fusionner deux Pokémon avec le Pointeau ADN", + }, + "MINI_BLACK_HOLE": { + name: "Item-stellar", + description: "Obtenir un Mini Trou Noir", + }, + "CATCH_MYTHICAL": { + name: "Fabuleux", + description: "Capturer un Pokémon fabuleux", + }, + "CATCH_SUB_LEGENDARY": { + name: "(Semi-)Légendaire", + description: "Capturer un Pokémon semi-légendaire", + }, + "CATCH_LEGENDARY": { + name: "Légendaire", + description: "Capturer un Pokémon légendaire", + }, + "SEE_SHINY": { + name: "Chromatique", + description: "Trouver un Pokémon sauvage chromatique", + }, + "SHINY_PARTY": { + name: "Shasseuse", + description: "Avoir une équipe exclusivement composée de Pokémon chromatiques", + }, + "HATCH_MYTHICAL": { + name: "Œuf fabuleux", + description: "Obtenir un Pokémon fabuleux dans un Œuf", + }, + "HATCH_SUB_LEGENDARY": { + name: "Œuf semi-légendaire", + description: "Obtenir un Pokémon semi-légendaire dans un Œuf", + }, + "HATCH_LEGENDARY": { + name: "Œuf légendaire", + description: "Obtenir un Pokémon légendaire dans un Œuf", + }, + "HATCH_SHINY": { + name: "Œuf chromatique", + description: "Obtenir un Pokémon chromatique dans un Œuf", + }, + "HIDDEN_ABILITY": { + name: "Potentiel enfoui", + description: "Capturer un Pokémon possédant un talent caché", + }, + "PERFECT_IVS": { + name: "Certificat d’authenticité", + description: "Avoir des IV parfaits sur un Pokémon", + }, + "CLASSIC_VICTORY": { + name: "Invaincue", + description: "Terminer le jeu en mode classique", + }, + + "MONO_GEN_ONE": { + name: "Le rival originel", + description: "Terminer un challenge avec uniquement des Pokémon de 1re génération.", + }, + "MONO_GEN_TWO": { + name: "Entre tradition et modernité", + description: "Terminer un challenge avec uniquement des Pokémon de 2e génération.", + }, + "MONO_GEN_THREE": { + name: "Too much water ?", + description: "Terminer un challenge avec uniquement des Pokémon de 3e génération.", + }, + "MONO_GEN_FOUR": { + name: "Réellement la plus difficile ?", + description: "Terminer un challenge avec uniquement des Pokémon de 4e génération.", + }, + "MONO_GEN_FIVE": { + name: "Recast complet", + description: "Terminer un challenge avec uniquement des Pokémon de 5e génération.", + }, + "MONO_GEN_SIX": { + name: "Aristocrate", + description: "Terminer un challenge avec uniquement des Pokémon de 6e génération.", + }, + "MONO_GEN_SEVEN": { + name: "Seulement techniquement", + description: "Terminer un challenge avec uniquement des Pokémon de 7e génération.", + }, + "MONO_GEN_EIGHT": { + name: "L’heure de gloire", + description: "Terminer un challenge avec uniquement des Pokémon de 8e génération.", + }, + "MONO_GEN_NINE": { + name: "Ça va, c’était EZ", + description: "Terminer un challenge avec uniquement des Pokémon de 9e génération.", + }, + + "MonoType": { + description: "Terminer un challenge en monotype {{type}}.", + }, + "MONO_NORMAL": { + name: "Extraordinairement banal", + }, + "MONO_FIGHTING": { + name: "Je connais le kung-fu", + }, + "MONO_FLYING": { + name: "Angry Birds", + }, + "MONO_POISON": { + name: "Touche moi je t’empoisonne !", + }, + "MONO_GROUND": { + name: "Prévisions : Séisme", + }, + "MONO_ROCK": { + name: "Comme un roc", + }, + "MONO_BUG": { + name: "Une chenille !", + }, + "MONO_GHOST": { + name: "SOS Fantômes", + }, + "MONO_STEEL": { + name: "De type Acier !", + }, + "MONO_FIRE": { + name: "Allumer le feu", + }, + "MONO_WATER": { + name: "Vacances en Bretagne", + }, + "MONO_GRASS": { + name: "Ne pas toucher !", + }, + "MONO_ELECTRIC": { + name: "À la masse", + }, + "MONO_PSYCHIC": { + name: "Grocervo", + }, + "MONO_ICE": { + name: "Froid comme la glace", + }, + "MONO_DRAGON": { + name: "Légendes du club, ou presque", + }, + "MONO_DARK": { + name: "Ça va lui passer", + }, + "MONO_FAIRY": { + name: "Hey ! Listen !", + }, +} as const; diff --git a/src/locales/fr/menu-ui-handler.ts b/src/locales/fr/menu-ui-handler.ts index 70cf05fe984..1270ce6d361 100644 --- a/src/locales/fr/menu-ui-handler.ts +++ b/src/locales/fr/menu-ui-handler.ts @@ -18,10 +18,10 @@ export const menuUiHandler: SimpleTranslationEntries = { "exportSlotSelect": "Sélectionnez l’emplacement depuis lequel exporter les données.", "importData": "Importer données", "exportData": "Exporter données", - "linkDiscord": "Link Discord", - "unlinkDiscord": "Unlink Discord", - "linkGoogle": "Link Google", - "unlinkGoogle": "Unlink Google", + "linkDiscord": "Lier à Discord", + "unlinkDiscord": "Délier Discord", + "linkGoogle": "Lier à Google", + "unlinkGoogle": "Délier Google", "cancel": "Retour", "losingProgressionWarning": "Vous allez perdre votre progression depuis le début du combat. Continuer ?", "noEggs": "Vous ne faites actuellement\néclore aucun Œuf !" From 7dda6f5cc2d207fe04241a190ff95efc485ea70e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Ricardo=20Fleury=20Oliveira?= Date: Wed, 31 Jul 2024 22:57:20 -0300 Subject: [PATCH 4/4] [Localization] Update pt_br arena-tag.ts and fixed typo in modifier.ts (#3277) --- src/locales/pt_BR/arena-tag.ts | 92 +++++++++++++++++----------------- src/locales/pt_BR/modifier.ts | 2 +- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/src/locales/pt_BR/arena-tag.ts b/src/locales/pt_BR/arena-tag.ts index 8bc2302368a..0d3b8ff587f 100644 --- a/src/locales/pt_BR/arena-tag.ts +++ b/src/locales/pt_BR/arena-tag.ts @@ -1,50 +1,50 @@ import { SimpleTranslationEntries } from "#app/interfaces/locales"; export const arenaTag: SimpleTranslationEntries = { - "yourTeam": "your team", - "opposingTeam": "the opposing team", - "arenaOnRemove": "{{moveName}}'s effect wore off.", - "arenaOnRemovePlayer": "{{moveName}}'s effect wore off\non your side.", - "arenaOnRemoveEnemy": "{{moveName}}'s effect wore off\non the foe's side.", - "mistOnAdd": "{{pokemonNameWithAffix}}'s team became\nshrouded in mist!", - "mistApply": "The mist prevented\nthe lowering of stats!", - "reflectOnAdd": "Reflect reduced the damage of physical moves.", - "reflectOnAddPlayer": "Reflect reduced the damage of physical moves on your side.", - "reflectOnAddEnemy": "Reflect reduced the damage of physical moves on the foe's side.", - "lightScreenOnAdd": "Light Screen reduced the damage of special moves.", - "lightScreenOnAddPlayer": "Light Screen reduced the damage of special moves on your side.", - "lightScreenOnAddEnemy": "Light Screen reduced the damage of special moves on the foe's side.", - "auroraVeilOnAdd": "Aurora Veil reduced the damage of moves.", - "auroraVeilOnAddPlayer": "Aurora Veil reduced the damage of moves on your side.", - "auroraVeilOnAddEnemy": "Aurora Veil reduced the damage of moves on the foe's side.", - "conditionalProtectOnAdd": "{{moveName}} protected team!", - "conditionalProtectOnAddPlayer": "{{moveName}} protected your team!", - "conditionalProtectOnAddEnemy": "{{moveName}} protected the\nopposing team!", - "conditionalProtectApply": "{{moveName}} protected {{pokemonNameWithAffix}}!", - "matBlockOnAdd": "{{pokemonNameWithAffix}} intends to flip up a mat\nand block incoming attacks!", - "wishTagOnAdd": "{{pokemonNameWithAffix}}'s wish\ncame true!", - "mudSportOnAdd": "Electricity's power was weakened!", - "mudSportOnRemove": "The effects of Mud Sport\nhave faded.", - "waterSportOnAdd": "Fire's power was weakened!", - "waterSportOnRemove": "The effects of Water Sport\nhave faded.", - "spikesOnAdd": "{{moveName}} were scattered\nall around {{opponentDesc}}'s feet!", - "spikesActivateTrap": "{{pokemonNameWithAffix}} is hurt\nby the spikes!", - "toxicSpikesOnAdd": "{{moveName}} were scattered\nall around {{opponentDesc}}'s feet!", - "toxicSpikesActivateTrapPoison": "{{pokemonNameWithAffix}} absorbed the {{moveName}}!", - "stealthRockOnAdd": "Pointed stones float in the air\naround {{opponentDesc}}!", - "stealthRockActivateTrap": "Pointed stones dug into\n{{pokemonNameWithAffix}}!", - "stickyWebOnAdd": "A {{moveName}} has been laid out on the ground around the opposing team!", - "stickyWebActivateTrap": "The opposing {{pokemonName}} was caught in a sticky web!", - "trickRoomOnAdd": "{{pokemonNameWithAffix}} twisted\nthe dimensions!", - "trickRoomOnRemove": "The twisted dimensions\nreturned to normal!", - "gravityOnAdd": "Gravity intensified!", - "gravityOnRemove": "Gravity returned to normal!", - "tailwindOnAdd": "The Tailwind blew from behind team!", - "tailwindOnAddPlayer": "The Tailwind blew from behind\nyour team!", - "tailwindOnAddEnemy": "The Tailwind blew from behind\nthe opposing team!", - "tailwindOnRemove": "Team's Tailwind petered out!", - "tailwindOnRemovePlayer": "Your team's Tailwind petered out!", - "tailwindOnRemoveEnemy": "The opposing team's Tailwind petered out!", - "happyHourOnAdd": "Everyone is caught up in the happy atmosphere!", - "happyHourOnRemove": "The atmosphere returned to normal.", + "yourTeam": "sua equipe", + "opposingTeam": "a equipe adversária", + "arenaOnRemove": "O efeito de {{moveName}} acabou.", + "arenaOnRemovePlayer": "O efeito de {{moveName}} acabou\nem sua equipe.", + "arenaOnRemoveEnemy": "O efeito de {{moveName}} acabou\nna equipe adversária.", + "mistOnAdd": "A equipe de {{pokemonNameWithAffix}} está protegida\npela névoa!", + "mistApply": "A névoa previne\na diminuição de atributos!", + "reflectOnAdd": "Reflect reduziu o dano de movimentos físicos.", + "reflectOnAddPlayer": "Reflect reduziu o dano de movimentos físicos em sua equipe.", + "reflectOnAddEnemy": "Reflect reduziu o dano de movimentos físicos na equipe adversária.", + "lightScreenOnAdd": "Light Screen reduziu o dano de movimentos especiais.", + "lightScreenOnAddPlayer": "Light Screen reduziu o dano de movimentos especiais em sua equipe.", + "lightScreenOnAddEnemy": "Light Screen reduziu o dano de movimentos especiais na equipe adversária.", + "auroraVeilOnAdd": "Aurora Veil reduziu o dano de movimentos.", + "auroraVeilOnAddPlayer": "Aurora Veil reduziu o dano de movimentos em sua equipe.", + "auroraVeilOnAddEnemy": "Aurora Veil reduziu o dano de movimentos na equipe adversária.", + "conditionalProtectOnAdd": "{{moveName}} protegeu a equipe!", + "conditionalProtectOnAddPlayer": "{{moveName}} protegeu sua equipe!", + "conditionalProtectOnAddEnemy": "{{moveName}} protegeu a\nequipe adversária!", + "conditionalProtectApply": "{{moveName}} protegeu {{pokemonNameWithAffix}}!", + "matBlockOnAdd": "{{pokemonNameWithAffix}} pretende levantar um tapete\npara bloquear ataques!", + "wishTagOnAdd": "O desejo de {{pokemonNameWithAffix}}\nfoi concedido!", + "mudSportOnAdd": "O poder de movimentos elétricos foi enfraquecido!", + "mudSportOnRemove": "Os efeitos de Mud Sport\nsumiram.", + "waterSportOnAdd": "O poder de movimentos de fogo foi enfraquecido!", + "waterSportOnRemove": "Os efeitos de Water Sport\nsumiram.", + "spikesOnAdd": "{{moveName}} foram espalhados\nno chão ao redor de {{opponentDesc}}!", + "spikesActivateTrap": "{{pokemonNameWithAffix}} foi ferido\npelos espinhos!", + "toxicSpikesOnAdd": "{{moveName}} foram espalhados\nno chão ao redor de {{opponentDesc}}!", + "toxicSpikesActivateTrapPoison": "{{pokemonNameWithAffix}} absorveu os {{moveName}}!", + "stealthRockOnAdd": "Pedras pontiagudas estão flutuando\nao redor de {{opponentDesc}}!", + "stealthRockActivateTrap": "{{pokemonNameWithAffix}} foi atingido\npor pedras pontiagudas!", + "stickyWebOnAdd": "Uma {{moveName}} foi espalhada no chão ao redor da equipe adversária!", + "stickyWebActivateTrap": "{{pokemonName}} adversário foi pego por uma Sticky Web!", + "trickRoomOnAdd": "{{pokemonNameWithAffix}} distorceu\nas dimensões!", + "trickRoomOnRemove": "As dimensões distorcidas\nretornaram ao normal!", + "gravityOnAdd": "A gravidade aumentou!", + "gravityOnRemove": "A gravidade retornou ao normal!", + "tailwindOnAdd": "O Tailwind soprou de trás de sua equipe!", + "tailwindOnAddPlayer": "O Tailwind soprou de trás de\nsua equipe!", + "tailwindOnAddEnemy": "O Tailwind soprou de trás da\nequipe adversária!", + "tailwindOnRemove": "O Tailwind de sua equipe acabou!", + "tailwindOnRemovePlayer": "O Tailwind de sua equipe acabou!", + "tailwindOnRemoveEnemy": "O Tailwind da equipe adversária acabou!", + "happyHourOnAdd": "Todos foram envolvidos por uma atmosfera alegre!", + "happyHourOnRemove": "A atmosfera retornou ao normal.", } as const; diff --git a/src/locales/pt_BR/modifier.ts b/src/locales/pt_BR/modifier.ts index eef08db25ae..168665205c3 100644 --- a/src/locales/pt_BR/modifier.ts +++ b/src/locales/pt_BR/modifier.ts @@ -10,5 +10,5 @@ export const modifier: SimpleTranslationEntries = { "turnHeldItemTransferApply": "{{itemName}} de {{pokemonNameWithAffix}} foi absorvido(a)\npelo {{typeName}} de {{pokemonName}}!", "contactHeldItemTransferApply": "{{itemName}} de {{pokemonNameWithAffix}} foi pego(a)\npela {{typeName}} de {{pokemonName}}!", "enemyTurnHealApply": "{{pokemonNameWithAffix}}\nrestaurou um pouco de seus PS!", - "bypassSpeedChanceApply": "{{pokemonName}} se move mais rápido que o normal graças a sua {{itemName}}!", + "bypassSpeedChanceApply": "{{pokemonName}} se move mais rápido que o normal graças à sua {{itemName}}!", } as const;