From 8a8a2e128a8ca8630d66deeb7b22ef72bb5d3f60 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Thu, 16 May 2024 18:09:23 +0200 Subject: [PATCH 01/17] Corrections to French ability.ts (#979) --- src/locales/fr/ability.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/locales/fr/ability.ts b/src/locales/fr/ability.ts index 292467fcad6..49bfeb53acf 100644 --- a/src/locales/fr/ability.ts +++ b/src/locales/fr/ability.ts @@ -1109,7 +1109,7 @@ export const ability: AbilityTranslationEntries = { name: "Turbine Éolienne", description: "Si le Pokémon est touché par une capacité faisant appel au vent, il se charge en électricité.", }, - zerotoHero: { + zeroToHero: { name: "Supermutation", description: "Le Pokémon prend sa Forme Super en quittant le combat.", }, @@ -1129,23 +1129,23 @@ export const ability: AbilityTranslationEntries = { name: "Charge Quantique", description: "Quand un champ électrifié est actif ou que le Pokémon tient une capsule d’Énergie Booster, sa stat la plus élevée augmente.", }, - goodasGold: { + goodAsGold: { name: "Corps en Or", description: "Le corps en or pur et robuste du Pokémon l’immunise contre les capacités de statut des autres Pokémon.", }, - vesselofRuin: { + vesselOfRuin: { name: "Urne du Fléau", description: "Le pouvoir de l’urne qui appelle le fléau affaiblit l’Attaque Spéciale de tous les autres Pokémon.", }, - swordofRuin: { + swordOfRuin: { name: "Épée du Fléau", description: "Le pouvoir de l’épée qui appelle le fléau affaiblit la Défense de tous les autres Pokémon.", }, - tabletsofRuin: { + tabletsOfRuin: { name: "Bois du Fléau", description: "Le pouvoir du bois qui appelle le fléau affaiblit l’Attaque de tous les autres Pokémon.", }, - beadsofRuin: { + beadsOfRuin: { name: "Perles du Fléau", description: "Le pouvoir des perles qui appellent le fléau affaiblit la Défense Spéciale de tous les autres Pokémon.", }, From 192deae33e68803a1a42d12716ed809596957b3e Mon Sep 17 00:00:00 2001 From: Alessandro Bruzzese <69127023+Bruzzii@users.noreply.github.com> Date: Thu, 16 May 2024 22:39:09 +0200 Subject: [PATCH 02/17] Update italian modifier-type.ts (#989) --- src/locales/it/modifier-type.ts | 472 ++++++++++++++++---------------- 1 file changed, 236 insertions(+), 236 deletions(-) diff --git a/src/locales/it/modifier-type.ts b/src/locales/it/modifier-type.ts index 043d7a705d5..7f342309acf 100644 --- a/src/locales/it/modifier-type.ts +++ b/src/locales/it/modifier-type.ts @@ -4,320 +4,320 @@ export const modifierType: ModifierTypeTranslationEntries = { ModifierType: { "AddPokeballModifierType": { name: "{{modifierCount}}x {{pokeballName}}", - description: "Receive {{pokeballName}} x{{modifierCount}} (Inventory: {{pokeballAmount}}) \nCatch Rate: {{catchRate}}", + description: "Ricevi {{pokeballName}} x{{modifierCount}} (Inventario: {{pokeballAmount}}) \nTasso di cattura: {{catchRate}}", }, "AddVoucherModifierType": { name: "{{modifierCount}}x {{voucherTypeName}}", - description: "Receive {{voucherTypeName}} x{{modifierCount}}", + description: "Ricevi {{voucherTypeName}} x{{modifierCount}}", }, "PokemonHeldItemModifierType": { extra: { - "inoperable": "{{pokemonName}} can't take\nthis item!", - "tooMany": "{{pokemonName}} has too many\nof this item!", + "inoperable": "{{pokemonName}} non può prendere\nquesto oggetto!", + "tooMany": "{{pokemonName}} ne ha troppi\ndi questo oggetto!", } }, "PokemonHpRestoreModifierType": { - description: "Restores {{restorePoints}} HP or {{restorePercent}}% HP for one Pokémon, whichever is higher", + description: "Restituisce {{restorePoints}} PS o {{restorePercent}}% PS ad un Pokémon, a seconda del valore più alto", extra: { - "fully": "Fully restores HP for one Pokémon", - "fullyWithStatus": "Fully restores HP for one Pokémon and heals any status ailment", + "fully": "Restituisce tutti gli PS ad un Pokémon", + "fullyWithStatus": "Restituisce tutti gli PS ad un Pokémon e lo cura da ogni stato", } }, "PokemonReviveModifierType": { - description: "Revives one Pokémon and restores {{restorePercent}}% HP", + description: "Rianima un Pokémon esausto e gli restituisce il {{restorePercent}}% PS", }, "PokemonStatusHealModifierType": { - description: "Heals any status ailment for one Pokémon", + description: "Cura tutti i problemi di stato di un Pokémon", }, "PokemonPpRestoreModifierType": { - description: "Restores {{restorePoints}} PP for one Pokémon move", + description: "Restituisce {{restorePoints}} PP per una mossa di un Pokémon ", extra: { - "fully": "Restores all PP for one Pokémon move", + "fully": "Restituisce tutti i PP di una mossa", } }, "PokemonAllMovePpRestoreModifierType": { - description: "Restores {{restorePoints}} PP for all of one Pokémon's moves", + description: "Restituisce {{restorePoints}} PP a tutte le mosse di un Pokémon", extra: { - "fully": "Restores all PP for all of one Pokémon's moves", + "fully": "Restituisce tutti i PP a tutte le mosse di un Pokémon", } }, "PokemonPpUpModifierType": { - description: "Permanently increases PP for one Pokémon move by {{upPoints}} for every 5 maximum PP (maximum 3)", + description: "Aumenta i PP di una mossa di {{upPoints}} per ogni 5 PP (massimo 3)", }, "PokemonNatureChangeModifierType": { - name: "{{natureName}} Mint", - description: "Changes a Pokémon's nature to {{natureName}} and permanently unlocks the nature for the starter.", + name: "Menta {{natureName}}", + description: "Cambia la natura del Pokémon in {{natureName}} e sblocca la natura per il Pokémon iniziale", }, "DoubleBattleChanceBoosterModifierType": { - description: "Doubles the chance of an encounter being a double battle for {{battleCount}} battles", + description: "Raddoppia la possibilità di imbattersi in doppie battaglie per {{battleCount}} battaglie", }, "TempBattleStatBoosterModifierType": { - description: "Increases the {{tempBattleStatName}} of all party members by 1 stage for 5 battles", + description: "Aumenta {{tempBattleStatName}} di un livello a tutti i Pokémon nel gruppo per 5 battaglie", }, "AttackTypeBoosterModifierType": { - description: "Increases the power of a Pokémon's {{moveType}}-type moves by 20%", + description: "Aumenta la potenza delle mosse di tipo {{moveType}} del 20% per un Pokémon", }, "PokemonLevelIncrementModifierType": { - description: "Increases a Pokémon's level by 1", + description: "Fa salire un Pokémon di un livello", }, "AllPokemonLevelIncrementModifierType": { - description: "Increases all party members' level by 1", + description: "Aumenta il livello di tutti i Pokémon nel gruppo di 1", }, "PokemonBaseStatBoosterModifierType": { - description: "Increases the holder's base {{statName}} by 10%. The higher your IVs, the higher the stack limit.", + description: "Aumenta {{statName}} di base del possessore del 10%", }, "AllPokemonFullHpRestoreModifierType": { - description: "Restores 100% HP for all Pokémon", + description: "Recupera il 100% degli PS per tutti i Pokémon", }, "AllPokemonFullReviveModifierType": { - description: "Revives all fainted Pokémon, fully restoring HP", + description: "Rianima tutti i Pokémon esausti restituendogli tutti i PS", }, "MoneyRewardModifierType": { - description: "Grants a {{moneyMultiplier}} amount of money (₽{{moneyAmount}})", + description: "Garantisce una {{moneyMultiplier}} quantità di soldi (₽{{moneyAmount}})", extra: { - "small": "small", - "moderate": "moderate", - "large": "large", + "small": "poca", + "moderate": "moderata", + "large": "grande", }, }, "ExpBoosterModifierType": { - description: "Increases gain of EXP. Points by {{boostPercent}}%", + description: "Aumenta il guadagno di Punti Esperienza del {{boostPercent}}%", }, "PokemonExpBoosterModifierType": { - description: "Increases the holder's gain of EXP. Points by {{boostPercent}}%", + description: "Aumenta il guadagno di Punti Esperienza del possessore del {{boostPercent}}%", }, "PokemonFriendshipBoosterModifierType": { - description: "Increases friendship gain per victory by 50%", + description: "Aumenta del 50% il guadagno di amicizia per vittoria", }, "PokemonMoveAccuracyBoosterModifierType": { - description: "Increases move accuracy by {{accuracyAmount}} (maximum 100)", + description: "Aumenta l'accuratezza delle mosse di {{accuracyAmount}} (massimo 100)", }, "PokemonMultiHitModifierType": { - description: "Attacks hit one additional time at the cost of a 60/75/82.5% power reduction per stack respectively", + description: "Gli attacchi colpiscono una volta in più al costo di una riduzione di potenza del 60/75/82,5% per mossa", }, "TmModifierType": { - name: "TM{{moveId}} - {{moveName}}", - description: "Teach {{moveName}} to a Pokémon", + name: "MT{{moveId}} - {{moveName}}", + description: "Insegna {{moveName}} a un Pokémon", }, "EvolutionItemModifierType": { - description: "Causes certain Pokémon to evolve", + description: "Fa evolvere determinate specie di Pokémon", }, "FormChangeItemModifierType": { - description: "Causes certain Pokémon to change form", + description: "Fa cambiare forma a determinati Pokémon", }, "FusePokemonModifierType": { - description: "Combines two Pokémon (transfers Ability, splits base stats and types, shares move pool)", + description: "Combina due Pokémon (trasferisce i poteri, divide le statistiche e i tipi base, condivide il pool di mosse)", }, "TerastallizeModifierType": { - name: "{{teraType}} Tera Shard", - description: "{{teraType}} Terastallizes the holder for up to 10 battles", + name: "Teralite {{teraType}}", + description: "Teracristallizza in {{teraType}} il possessore per massimo 10 battaglie", }, "ContactHeldItemTransferChanceModifierType": { - description: "Upon attacking, there is a {{chancePercent}}% chance the foe's held item will be stolen", + description: "Quando si attacca, c'è una probabilità del {{chancePercent}}% che l'oggetto in possesso del nemico venga rubato", }, "TurnHeldItemTransferModifierType": { - description: "Every turn, the holder acquires one held item from the foe", + description: "Ogni turno, il possessore acquisisce un oggetto posseduto dal nemico", }, "EnemyAttackStatusEffectChanceModifierType": { - description: "Adds a {{chancePercent}}% chance to inflict {{statusEffect}} with attack moves", + description: "Aggiunge una probabilità del {{chancePercent}}% di infliggere {{statusEffect}} con le mosse d'attacco", }, "EnemyEndureChanceModifierType": { - description: "Adds a {{chancePercent}}% chance of enduring a hit", + description: "Aggiunge una probabilità del {{probabilitàPercent}}% di resistere ad un colpo", }, - "RARE_CANDY": { name: "Rare Candy" }, - "RARER_CANDY": { name: "Rarer Candy" }, + "RARE_CANDY": { name: "Caramella Rara" }, + "RARER_CANDY": { name: "Caramella Molto Rara" }, - "MEGA_BRACELET": { name: "Mega Bracelet", description: "Mega Stones become available" }, - "DYNAMAX_BAND": { name: "Dynamax Band", description: "Max Mushrooms become available" }, - "TERA_ORB": { name: "Tera Orb", description: "Tera Shards become available" }, + "MEGA_BRACELET": { name: "Megapolsiera", description: "Le Megapietre sono disponibili" }, + "DYNAMAX_BAND": { name: "Polsino Dynamax", description: "I Fungomax sono disponibili" }, + "TERA_ORB": { name: "Terasfera", description: "I Teraliti sono disponibili" }, - "MAP": { name: "Map", description: "Allows you to choose your destination at a crossroads" }, + "MAP": { name: "Mappa", description: "Permette di scegliere la propria strada a un bivio" }, - "POTION": { name: "Potion" }, - "SUPER_POTION": { name: "Super Potion" }, - "HYPER_POTION": { name: "Hyper Potion" }, - "MAX_POTION": { name: "Max Potion" }, - "FULL_RESTORE": { name: "Full Restore" }, + "POTION": { name: "Pozione" }, + "SUPER_POTION": { name: "Superpozione" }, + "HYPER_POTION": { name: "Iperpozione" }, + "MAX_POTION": { name: "Pozione Max" }, + "FULL_RESTORE": { name: "Ricarica Totale" }, - "REVIVE": { name: "Revive" }, - "MAX_REVIVE": { name: "Max Revive" }, + "REVIVE": { name: "Revitalizzante" }, + "MAX_REVIVE": { name: "Revitalizzante Max" }, - "FULL_HEAL": { name: "Full Heal" }, + "FULL_HEAL": { name: "Cura Totale" }, - "SACRED_ASH": { name: "Sacred Ash" }, + "SACRED_ASH": { name: "Cenere Magica" }, - "REVIVER_SEED": { name: "Reviver Seed", description: "Revives the holder for 1/2 HP upon fainting" }, + "REVIVER_SEED": { name: "Revitalseme", description: "Il possessore recupera 1/2 di PS in caso di svenimento" }, - "ETHER": { name: "Ether" }, - "MAX_ETHER": { name: "Max Ether" }, + "ETHER": { name: "Etere" }, + "MAX_ETHER": { name: "Etere Max" }, - "ELIXIR": { name: "Elixir" }, - "MAX_ELIXIR": { name: "Max Elixir" }, + "ELIXIR": { name: "Elisir" }, + "MAX_ELIXIR": { name: "Elisir Max" }, - "PP_UP": { name: "PP Up" }, - "PP_MAX": { name: "PP Max" }, + "PP_UP": { name: "PP-su" }, + "PP_MAX": { name: "PP-max" }, - "LURE": { name: "Lure" }, - "SUPER_LURE": { name: "Super Lure" }, - "MAX_LURE": { name: "Max Lure" }, + "LURE": { name: "Profumo Invito" }, + "SUPER_LURE": { name: "Profumo Invito Super" }, + "MAX_LURE": { name: "Profumo Invito Max" }, - "MEMORY_MUSHROOM": { name: "Memory Mushroom", description: "Recall one Pokémon's forgotten move" }, + "MEMORY_MUSHROOM": { name: "Fungo della Memoria", description: "Ricorda la mossa dimenticata di un Pokémon" }, - "EXP_SHARE": { name: "EXP. All", description: "Non-participants receive 20% of a single participant's EXP. Points" }, - "EXP_BALANCE": { name: "EXP. Balance", description: "Weighs EXP. Points received from battles towards lower-leveled party members" }, + "EXP_SHARE": { name: "Condividi Esperienza", description: "Tutti i Pokémon della squadra ricevono il 20% dei Punti Esperienza dalla lotta anche se non vi hanno partecipato" }, + "EXP_BALANCE": { name: "Bilancia Esperienza", description: "Bilancia i Punti Esperienza ricevuti verso i Pokémon del gruppo di livello inferiore" }, - "OVAL_CHARM": { name: "Oval Charm", description: "When multiple Pokémon participate in a battle, each gets an extra 10% of the total EXP" }, + "OVAL_CHARM": { name: "Ovamuleto", description: "Quando più Pokémon partecipano a una battaglia, ognuno di essi riceve il 10% in più dell'esperienza totale" }, - "EXP_CHARM": { name: "EXP. Charm" }, - "SUPER_EXP_CHARM": { name: "Super EXP. Charm" }, - "GOLDEN_EXP_CHARM": { name: "Golden EXP. Charm" }, + "EXP_CHARM": { name: "Esperienzamuleto" }, + "SUPER_EXP_CHARM": { name: "Esperienzamuleto Super" }, + "GOLDEN_EXP_CHARM": { name: "Esperienzamuleto Oro" }, - "LUCKY_EGG": { name: "Lucky Egg" }, - "GOLDEN_EGG": { name: "Golden Egg" }, + "LUCKY_EGG": { name: "Uovo Fortunato" }, + "GOLDEN_EGG": { name: "Uovo d'Oro" }, - "SOOTHE_BELL": { name: "Soothe Bell" }, + "SOOTHE_BELL": { name: "Calmanella" }, - "SOUL_DEW": { name: "Soul Dew", description: "Increases the influence of a Pokémon's nature on its stats by 10% (additive)" }, + "SOUL_DEW": { name: "Cuorugiada", description: "Aumenta del 10% l'influenza della natura di un Pokémon sulle sue statistiche (Aggiuntivo)" }, - "NUGGET": { name: "Nugget" }, - "BIG_NUGGET": { name: "Big Nugget" }, - "RELIC_GOLD": { name: "Relic Gold" }, + "NUGGET": { name: "Pepita" }, + "BIG_NUGGET": { name: "Granpepita" }, + "RELIC_GOLD": { name: " Dobloantico" }, - "AMULET_COIN": { name: "Amulet Coin", description: "Increases money rewards by 20%" }, - "GOLDEN_PUNCH": { name: "Golden Punch", description: "Grants 50% of damage inflicted as money" }, - "COIN_CASE": { name: "Coin Case", description: "After every 10th battle, receive 10% of your money in interest" }, + "AMULET_COIN": { name: "Monetamuleto", description: "Aumenta le ricompense in denaro del 20%" }, + "GOLDEN_PUNCH": { name: "Pugno Dorato", description: "Garantisce il 50% dei danni inflitti come denaro" }, + "COIN_CASE": { name: " Salvadanaio", description: "Dopo ogni 10° battaglia, riceverete il 10% del vostro denaro in interessi" }, - "LOCK_CAPSULE": { name: "Lock Capsule", description: "Allows you to lock item rarities when rerolling items" }, + "LOCK_CAPSULE": { name: "Capsula Scrigno", description: "Permette di bloccare le rarità degli oggetti quando si fa un reroll degli oggetti" }, - "GRIP_CLAW": { name: "Grip Claw" }, - "WIDE_LENS": { name: "Wide Lens" }, + "GRIP_CLAW": { name: "Presartigli" }, + "WIDE_LENS": { name: "Grandelente" }, - "MULTI_LENS": { name: "Multi Lens" }, + "MULTI_LENS": { name: "Multilente" }, - "HEALING_CHARM": { name: "Healing Charm", description: "Increases the effectiveness of HP restoring moves and items by 10% (excludes Revives)" }, - "CANDY_JAR": { name: "Candy Jar", description: "Increases the number of levels added by Rare Candy items by 1" }, + "HEALING_CHARM": { name: "Curamuleto", description: "Aumenta del 10% l'efficacia delle mosse e degli oggetti che ripristinano gli PS (escluse le rianimazioni)" }, + "CANDY_JAR": { name: "Barattolo di caramelle", description: "Aumenta di 1 il numero di livelli aggiunti dalle Caramelle Rare" }, - "BERRY_POUCH": { name: "Berry Pouch", description: "Adds a 25% chance that a used berry will not be consumed" }, + "BERRY_POUCH": { name: "Porta Bacche", description: "Aggiunge il 25% di possibilità che una bacca usata non venga consumata" }, - "FOCUS_BAND": { name: "Focus Band", description: "Adds a 10% chance to survive with 1 HP after being damaged enough to faint" }, + "FOCUS_BAND": { name: "Bandana", description: "Chi ce l'ha ottiene il 10% di possibilità aggiuntivo di evitare un potenziale KO e rimanere con un solo PS" }, - "QUICK_CLAW": { name: "Quick Claw", description: "Adds a 10% chance to move first regardless of speed (after priority)" }, + "QUICK_CLAW": { name: "Rapidartigli", description: "Aggiunge una probabilità del 10% di muoversi per primi, indipendentemente dalla velocità (dopo la priorità)" }, - "KINGS_ROCK": { name: "King's Rock", description: "Adds a 10% chance an attack move will cause the opponent to flinch" }, + "KINGS_ROCK": { name: "Roccia di re", description: "Aggiunge il 10% di possibilità che una mossa d'attacco faccia tentennare l'avversario" }, - "LEFTOVERS": { name: "Leftovers", description: "Heals 1/16 of a Pokémon's maximum HP every turn" }, - "SHELL_BELL": { name: "Shell Bell", description: "Heals 1/8 of a Pokémon's dealt damage" }, + "LEFTOVERS": { name: "Avanzi", description: "Ripristina 1/16 dei PS massimi di un Pokémon ogni turno" }, + "SHELL_BELL": { name: "Conchinella", description: "Guarisce 1/8 del danno inflitto a un Pokémon" }, - "BATON": { name: "Baton", description: "Allows passing along effects when switching Pokémon, which also bypasses traps" }, + "BATON": { name: "Staffetta", description: "Permette di trasmettere gli effetti quando si cambia Pokémon, aggirando anche le trappole" }, - "SHINY_CHARM": { name: "Shiny Charm", description: "Dramatically increases the chance of a wild Pokémon being Shiny" }, - "ABILITY_CHARM": { name: "Ability Charm", description: "Dramatically increases the chance of a wild Pokémon having a Hidden Ability" }, + "SHINY_CHARM": { name: "Cromamuleto", description: "Misterioso amuleto luminoso che aumenta la probabilità di incontrare Pokémon cromatici" }, + "ABILITY_CHARM": { name: "Abilitamuleto", description: "Aumenta drasticamente la possibilità che un Pokémon selvatico abbia un'abilità nascosta" }, - "IV_SCANNER": { name: "IV Scanner", description: "Allows scanning the IVs of wild Pokémon. 2 IVs are revealed per stack. The best IVs are shown first" }, + "IV_SCANNER": { name: "Scanner IV", description: "Permette di scansionare gli IV dei Pokémon selvatici. Vengono rivelati 2 IV per pila. I migliori IV vengono mostrati per primi" }, - "DNA_SPLICERS": { name: "DNA Splicers" }, + "DNA_SPLICERS": { name: " Cuneo DNA" }, - "MINI_BLACK_HOLE": { name: "Mini Black Hole" }, + "MINI_BLACK_HOLE": { name: "Piccolo Buco Nero" }, - "GOLDEN_POKEBALL": { name: "Golden Poké Ball", description: "Adds 1 extra item option at the end of every battle" }, + "GOLDEN_POKEBALL": { name: "Poké Ball Oro", description: "Aggiunge 1 opzione di oggetto extra alla fine di ogni battaglia" }, - "ENEMY_DAMAGE_BOOSTER": { name: "Damage Token", description: "Increases damage by 5%" }, - "ENEMY_DAMAGE_REDUCTION": { name: "Protection Token", description: "Reduces incoming damage by 2.5%" }, - "ENEMY_HEAL": { name: "Recovery Token", description: "Heals 2% of max HP every turn" }, - "ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" }, - "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" }, - "ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 10% chance every turn to heal a status condition" }, - "ENEMY_ENDURE_CHANCE": { name: "Endure Token" }, - "ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Adds a 1% chance that a wild Pokémon will be a fusion" }, + "ENEMY_DAMAGE_BOOSTER": { name: "Gettone del Danno", description: "Aumenta il danno del 5%" }, + "ENEMY_DAMAGE_REDUCTION": { name: "Gettone della Protezione", description: "Riduce i danni ricevuti del 2.5%" }, + "ENEMY_HEAL": { name: "Gettone del Recupero", description: "Cura il 2% dei PS massimi ogni turno" }, + "ENEMY_ATTACK_POISON_CHANCE": { name: "Gettone del Veleno" }, + "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Gettone della Paralisi" }, + "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Gettone del Sonno" }, + "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Gettone del Congelamento" }, + "ENEMY_ATTACK_BURN_CHANCE": { name: "Gettone della Bruciatura" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Gettone Guarigione Completa", description: "Aggiunge una probabilità del 10% a ogni turno di curare una condizione di stato" }, + "ENEMY_ENDURE_CHANCE": { name: "Gettone di Resistenza" }, + "ENEMY_FUSED_CHANCE": { name: "Gettone della fusione", description: "Aggiunge l'1% di possibilità che un Pokémon selvatico sia una fusione" }, }, TempBattleStatBoosterItem: { - "x_attack": "X Attack", - "x_defense": "X Defense", - "x_sp_atk": "X Sp. Atk", - "x_sp_def": "X Sp. Def", - "x_speed": "X Speed", - "x_accuracy": "X Accuracy", - "dire_hit": "Dire Hit", + "x_attack": "Attacco X", + "x_defense": "Difesa X", + "x_sp_atk": "Att. Speciale X", + "x_sp_def": "Dif. Speciale X", + "x_speed": "Velocità X", + "x_accuracy": "Precisione X", + "dire_hit": "Supercolpo", }, AttackTypeBoosterItem: { - "silk_scarf": "Silk Scarf", - "black_belt": "Black Belt", - "sharp_beak": "Sharp Beak", - "poison_barb": "Poison Barb", - "soft_sand": "Soft Sand", - "hard_stone": "Hard Stone", - "silver_powder": "Silver Powder", - "spell_tag": "Spell Tag", - "metal_coat": "Metal Coat", - "charcoal": "Charcoal", - "mystic_water": "Mystic Water", - "miracle_seed": "Miracle Seed", - "magnet": "Magnet", - "twisted_spoon": "Twisted Spoon", - "never_melt_ice": "Never-Melt Ice", - "dragon_fang": "Dragon Fang", - "black_glasses": "Black Glasses", - "fairy_feather": "Fairy Feather", + "silk_scarf": "Sciarpa seta", + "black_belt": "Cinturanera", + "sharp_beak": "Beccaffilato", + "poison_barb": "Velenaculeo", + "soft_sand": "Sabbia soffice", + "hard_stone": "Pietradura", + "silver_powder": "Argenpolvere", + "spell_tag": "Spettrotarga", + "metal_coat": "Metalcopertura", + "charcoal": "Carbonella", + "mystic_water": "Acqua magica", + "miracle_seed": "Miracolseme", + "magnet": "Magnete", + "twisted_spoon": "Cucchiaio torto", + "never_melt_ice": "Gelomai", + "dragon_fang": "Dente di drago", + "black_glasses": "Occhialineri", + "fairy_feather": "Piuma fatata", }, BaseStatBoosterItem: { - "hp_up": "HP Up", - "protein": "Protein", - "iron": "Iron", - "calcium": "Calcium", - "zinc": "Zinc", - "carbos": "Carbos", + "hp_up": "PS-su", + "protein": "Proteina", + "iron": "Ferro", + "calcium": "Calcio", + "zinc": "Zinco", + "carbos": "Carburante", }, EvolutionItem: { - "NONE": "None", + "NONE": "Nessuno", - "LINKING_CORD": "Linking Cord", - "SUN_STONE": "Sun Stone", - "MOON_STONE": "Moon Stone", - "LEAF_STONE": "Leaf Stone", - "FIRE_STONE": "Fire Stone", - "WATER_STONE": "Water Stone", - "THUNDER_STONE": "Thunder Stone", - "ICE_STONE": "Ice Stone", - "DUSK_STONE": "Dusk Stone", - "DAWN_STONE": "Dawn Stone", - "SHINY_STONE": "Shiny Stone", - "CRACKED_POT": "Cracked Pot", - "SWEET_APPLE": "Sweet Apple", - "TART_APPLE": "Tart Apple", - "STRAWBERRY_SWEET": "Strawberry Sweet", - "UNREMARKABLE_TEACUP": "Unremarkable Teacup", + "LINKING_CORD": "Filo dell'unione", + "SUN_STONE": "Pietrasolare", + "MOON_STONE": "Pietralunare", + "LEAF_STONE": "Pietrafoglia", + "FIRE_STONE": "Pietrafocaia", + "WATER_STONE": "Pietraidrica", + "THUNDER_STONE": "Pietratuono", + "ICE_STONE": "Pietragelo", + "DUSK_STONE": "Neropietra", + "DAWN_STONE": "Pietralbore", + "SHINY_STONE": "Pietrabrillo", + "CRACKED_POT": "Teiera rotta", + "SWEET_APPLE": "Dolcepomo", + "TART_APPLE": "Aspropomo", + "STRAWBERRY_SWEET": "Bonbonfragola", + "UNREMARKABLE_TEACUP": "Tazza dozzinale", - "CHIPPED_POT": "Chipped Pot", - "BLACK_AUGURITE": "Black Augurite", - "GALARICA_CUFF": "Galarica Cuff", - "GALARICA_WREATH": "Galarica Wreath", - "PEAT_BLOCK": "Peat Block", - "AUSPICIOUS_ARMOR": "Auspicious Armor", - "MALICIOUS_ARMOR": "Malicious Armor", - "MASTERPIECE_TEACUP": "Masterpiece Teacup", - "METAL_ALLOY": "Metal Alloy", - "SCROLL_OF_DARKNESS": "Scroll Of Darkness", - "SCROLL_OF_WATERS": "Scroll Of Waters", - "SYRUPY_APPLE": "Syrupy Apple", + "CHIPPED_POT": "Teiera crepata", + "BLACK_AUGURITE": "Augite nera", + "GALARICA_CUFF": "Fascia Galarnoce", + "GALARICA_WREATH": "Corona Galarnoce", + "PEAT_BLOCK": "Blocco di torba", + "AUSPICIOUS_ARMOR": "Armatura fausta", + "MALICIOUS_ARMOR": "Armatura infausta", + "MASTERPIECE_TEACUP": "Tazza eccezionale", + "METAL_ALLOY": "Metallo composito", + "SCROLL_OF_DARKNESS": "Rotolo del Buio", + "SCROLL_OF_WATERS": "Rotolo dell'Acqua", + "SYRUPY_APPLE": "Sciroppomo", }, FormChangeItem: { - "NONE": "None", + "NONE": "Nessuno", - "ABOMASITE": "Abomasite", + "ABOMASITE": "Abomasnowite", "ABSOLITE": "Absolite", "AERODACTYLITE": "Aerodactylite", "AGGRONITE": "Aggronite", - "ALAKAZITE": "Alakazite", - "ALTARIANITE": "Altarianite", + "ALAKAZITE": "Alakazamite", + "ALTARIANITE": "Altarite", "AMPHAROSITE": "Ampharosite", "AUDINITE": "Audinite", "BANETTITE": "Banettite", "BEEDRILLITE": "Beedrillite", - "BLASTOISINITE": "Blastoisinite", + "BLASTOISINITE": "Blastoisite", "BLAZIKENITE": "Blazikenite", "CAMERUPTITE": "Cameruptite", "CHARIZARDITE_X": "Charizardite X", @@ -327,83 +327,83 @@ export const modifierType: ModifierTypeTranslationEntries = { "GARCHOMPITE": "Garchompite", "GARDEVOIRITE": "Gardevoirite", "GENGARITE": "Gengarite", - "GLALITITE": "Glalitite", + "GLALITITE": "Glalite", "GYARADOSITE": "Gyaradosite", "HERACRONITE": "Heracronite", - "HOUNDOOMINITE": "Houndoominite", + "HOUNDOOMINITE": "Houndoomite", "KANGASKHANITE": "Kangaskhanite", "LATIASITE": "Latiasite", "LATIOSITE": "Latiosite", "LOPUNNITE": "Lopunnite", - "LUCARIONITE": "Lucarionite", - "MANECTITE": "Manectite", + "LUCARIONITE": "Lucarite", + "MANECTITE": "Manectricite", "MAWILITE": "Mawilite", "MEDICHAMITE": "Medichamite", "METAGROSSITE": "Metagrossite", - "MEWTWONITE_X": "Mewtwonite X", - "MEWTWONITE_Y": "Mewtwonite Y", + "MEWTWONITE_X": "Mewtwoite X", + "MEWTWONITE_Y": "Mewtwoite Y", "PIDGEOTITE": "Pidgeotite", "PINSIRITE": "Pinsirite", "RAYQUAZITE": "Rayquazite", - "SABLENITE": "Sablenite", + "SABLENITE": "Sableyite", "SALAMENCITE": "Salamencite", "SCEPTILITE": "Sceptilite", "SCIZORITE": "Scizorite", - "SHARPEDONITE": "Sharpedonite", - "SLOWBRONITE": "Slowbronite", + "SHARPEDONITE": "Sharpedite", + "SLOWBRONITE": "Slowbroite", "STEELIXITE": "Steelixite", "SWAMPERTITE": "Swampertite", "TYRANITARITE": "Tyranitarite", "VENUSAURITE": "Venusaurite", - "BLUE_ORB": "Blue Orb", - "RED_ORB": "Red Orb", - "SHARP_METEORITE": "Sharp Meteorite", - "HARD_METEORITE": "Hard Meteorite", - "SMOOTH_METEORITE": "Smooth Meteorite", - "ADAMANT_CRYSTAL": "Adamant Crystal", - "LUSTROUS_ORB": "Lustrous Orb", - "GRISEOUS_CORE": "Griseous Core", - "REVEAL_GLASS": "Reveal Glass", + "BLUE_ORB": "Gemma Blu", + "RED_ORB": "Gemma Rossa", + "SHARP_METEORITE": "Meteorite Tagliente", + "HARD_METEORITE": "Meteorite Dura", + "SMOOTH_METEORITE": "Meteorite Liscia", + "ADAMANT_CRYSTAL": "Adamasferoide", + "LUSTROUS_ORB": "Splendisfera", + "GRISEOUS_CORE": "Grigiosferoide", + "REVEAL_GLASS": "Verispecchio", "GRACIDEA": "Gracidea", - "MAX_MUSHROOMS": "Max Mushrooms", - "DARK_STONE": "Dark Stone", - "LIGHT_STONE": "Light Stone", - "PRISON_BOTTLE": "Prison Bottle", - "N_LUNARIZER": "N Lunarizer", - "N_SOLARIZER": "N Solarizer", - "RUSTED_SWORD": "Rusted Sword", - "RUSTED_SHIELD": "Rusted Shield", - "ICY_REINS_OF_UNITY": "Icy Reins Of Unity", - "SHADOW_REINS_OF_UNITY": "Shadow Reins Of Unity", - "WELLSPRING_MASK": "Wellspring Mask", - "HEARTHFLAME_MASK": "Hearthflame Mask", - "CORNERSTONE_MASK": "Cornerstone Mask", - "SHOCK_DRIVE": "Shock Drive", - "BURN_DRIVE": "Burn Drive", - "CHILL_DRIVE": "Chill Drive", - "DOUSE_DRIVE": "Douse Drive", + "MAX_MUSHROOMS": "Fungomax", + "DARK_STONE": "Scurolite", + "LIGHT_STONE": "Chiarolite", + "PRISON_BOTTLE": "Vaso del Vincolo", + "N_LUNARIZER": "Necrolunix", + "N_SOLARIZER": "Necrosolix", + "RUSTED_SWORD": "Spada Rovinata", + "RUSTED_SHIELD": "Scudo Rovinato", + "ICY_REINS_OF_UNITY": "Briglie Legame Giaccio", + "SHADOW_REINS_OF_UNITY": "Briglie legame Ombra", + "WELLSPRING_MASK": "Maschera Pozzo", + "HEARTHFLAME_MASK": "Maschera Focolare", + "CORNERSTONE_MASK": "Maschera Fondamenta", + "SHOCK_DRIVE": "Voltmodulo", + "BURN_DRIVE": "Piromodulo", + "CHILL_DRIVE": "Gelomodulo", + "DOUSE_DRIVE": "Idromodulo", }, TeraType: { - "UNKNOWN": "Unknown", - "NORMAL": "Normal", - "FIGHTING": "Fighting", - "FLYING": "Flying", - "POISON": "Poison", - "GROUND": "Ground", - "ROCK": "Rock", - "BUG": "Bug", - "GHOST": "Ghost", - "STEEL": "Steel", - "FIRE": "Fire", - "WATER": "Water", - "GRASS": "Grass", - "ELECTRIC": "Electric", - "PSYCHIC": "Psychic", - "ICE": "Ice", - "DRAGON": "Dragon", - "DARK": "Dark", - "FAIRY": "Fairy", - "STELLAR": "Stellar", + "UNKNOWN": "Sconosciuto", + "NORMAL": "Normale", + "FIGHTING": "Lotta", + "FLYING": "Volante", + "POISON": "Veleno", + "GROUND": "Terra", + "ROCK": "Roccia", + "BUG": "Coleottero", + "GHOST": "Spettro", + "STEEL": "Acciaio", + "FIRE": "Fuoco", + "WATER": "Acqua", + "GRASS": "Erba", + "ELECTRIC": "Elettro", + "PSYCHIC": "Psico", + "ICE": "Ghiaccio", + "DRAGON": "Drago", + "DARK": "Buio", + "FAIRY": "Folletto", + "STELLAR": "Astrale", }, } as const; \ No newline at end of file From d1431af65f719ad292868063f021331520d22f48 Mon Sep 17 00:00:00 2001 From: Laeticia PIERRE Date: Thu, 16 May 2024 22:46:12 +0200 Subject: [PATCH 03/17] Fix zippyZap fr (#991) --- src/locales/fr/move.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/move.ts b/src/locales/fr/move.ts index e4d7f5e03fa..3a0ce42c44d 100644 --- a/src/locales/fr/move.ts +++ b/src/locales/fr/move.ts @@ -2915,7 +2915,7 @@ export const move: MoveTranslationEntries = { }, "zippyZap": { name: "Pika-Sprint", - effect: "Une attaque électrique rapide comme l’éclair qui auguemente l’esquive. Frappe en priorité." + effect: "Une attaque électrique rapide comme l’éclair qui augmente l’esquive. Frappe en priorité." }, "splishySplash": { name: "Pika-Splash", From bd902f01a54bc4b3a1a4e7b63066737ab5b1c7ef Mon Sep 17 00:00:00 2001 From: Matthew Olker Date: Thu, 16 May 2024 18:19:32 -0400 Subject: [PATCH 04/17] Re-order overrides --- src/overrides.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/overrides.ts b/src/overrides.ts index 704019a1d80..b7307ab2f7f 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -48,6 +48,13 @@ export const POKEBALL_OVERRIDE: { active: boolean, pokeballs: PokeballCounts } = export const STARTER_FORM_OVERRIDE: integer = 0; // default 5 or 20 for Daily export const STARTING_LEVEL_OVERRIDE: integer = 0; +/** + * SPECIES OVERRIDE + * will only apply to the first starter in your party or each enemy pokemon + * default is 0 to not override + * @example SPECIES_OVERRIDE = Species.Bulbasaur; + */ +export const STARTER_SPECIES_OVERRIDE: Species | integer = 0; export const ABILITY_OVERRIDE: Abilities = Abilities.NONE; export const PASSIVE_ABILITY_OVERRIDE: Abilities = Abilities.NONE; export const MOVESET_OVERRIDE: Array = []; @@ -58,21 +65,13 @@ export const VARIANT_OVERRIDE: Variant = 0; * OPPONENT / ENEMY OVERRIDES */ +export const OPP_SPECIES_OVERRIDE: Species | integer = 0; export const OPP_ABILITY_OVERRIDE: Abilities = Abilities.NONE; export const OPP_PASSIVE_ABILITY_OVERRIDE = Abilities.NONE; export const OPP_MOVESET_OVERRIDE: Array = []; export const OPP_SHINY_OVERRIDE: boolean = false; export const OPP_VARIANT_OVERRIDE: Variant = 0; -/** - * SPECIES OVERRIDE - * will only apply to the first starter in your party or each enemy pokemon - * default is 0 to not override - * @example SPECIES_OVERRIDE = Species.Bulbasaur; - */ -export const STARTER_SPECIES_OVERRIDE: Species | integer = 0; -export const OPP_SPECIES_OVERRIDE: Species | integer = 0; - /** * MODIFIER / ITEM OVERRIDES * if count is not provided, it will default to 1 From 5406b68f9a1bd8246b3370f9b171124a5dbe0351 Mon Sep 17 00:00:00 2001 From: Flora <102679854+Odizinne@users.noreply.github.com> Date: Fri, 17 May 2024 00:35:51 +0200 Subject: [PATCH 05/17] Added missing word (#997) --- src/locales/fr/weather.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/weather.ts b/src/locales/fr/weather.ts index e73e51a53a2..f00e7e08a03 100644 --- a/src/locales/fr/weather.ts +++ b/src/locales/fr/weather.ts @@ -39,6 +39,6 @@ export const weather: SimpleTranslationEntries = { "harshSunClearMessage": "Les rayons du soleil s’affaiblissent !", "strongWindsStartMessage": "Un vent mystérieux se lève !", - "strongWindsLapseMessage": "Le vent mystérieux violemment !", + "strongWindsLapseMessage": "Le vent mystérieux souffle violemment !", "strongWindsClearMessage": "Le vent mystérieux s’est dissipé…" } From 3f571a366aac1dafa0bf516285ecf4d1136eee8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Ricardo=20Fleury=20Oliveira?= Date: Thu, 16 May 2024 19:52:01 -0300 Subject: [PATCH 06/17] Organized localization configs (#976) --- src/locales/de/config.ts | 18 ++++++++++-------- src/locales/en/config.ts | 17 ++++++++--------- src/locales/es/config.ts | 16 ++++++++-------- src/locales/fr/config.ts | 17 ++++++++--------- src/locales/it/config.ts | 16 ++++++++-------- src/locales/zh_CN/config.ts | 27 +++++++++++++++------------ 6 files changed, 57 insertions(+), 54 deletions(-) diff --git a/src/locales/de/config.ts b/src/locales/de/config.ts index c9a58bca1ea..44bd5a66f1a 100644 --- a/src/locales/de/config.ts +++ b/src/locales/de/config.ts @@ -13,10 +13,11 @@ import { nature } from "./nature"; import { pokeball } from "./pokeball"; import { pokemon } from "./pokemon"; import { pokemonStat } from "./pokemon-stat"; +import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; -import { titles,trainerClasses,trainerNames } from "./trainers"; -import { splashMessages } from "./splash-messages" +import { weather } from "./weather"; export const deConfig = { @@ -26,19 +27,20 @@ export const deConfig = { commandUiHandler: commandUiHandler, egg: egg, fightUiHandler: fightUiHandler, - menuUiHandler: menuUiHandler, + growth: growth, menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, move: move, + nature: nature, pokeball: pokeball, - pokemonStat: pokemonStat, pokemon: pokemon, + pokemonStat: pokemonStat, + splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, tutorial: tutorial, - splashMessages: splashMessages, - nature: nature, - growth: growth, - modifierType: modifierType, + weather: weather, } diff --git a/src/locales/en/config.ts b/src/locales/en/config.ts index a5d207da932..2962633e26a 100644 --- a/src/locales/en/config.ts +++ b/src/locales/en/config.ts @@ -13,13 +13,12 @@ import { nature } from "./nature"; import { pokeball } from "./pokeball"; import { pokemon } from "./pokemon"; import { pokemonStat } from "./pokemon-stat"; +import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; -import { titles,trainerClasses,trainerNames } from "./trainers"; -import { splashMessages } from "./splash-messages" import { weather } from "./weather"; - export const enConfig = { ability: ability, abilityTriggers: abilityTriggers, @@ -27,20 +26,20 @@ export const enConfig = { commandUiHandler: commandUiHandler, egg: egg, fightUiHandler: fightUiHandler, - menuUiHandler: menuUiHandler, + growth: growth, menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, move: move, + nature: nature, pokeball: pokeball, - pokemonStat: pokemonStat, pokemon: pokemon, + pokemonStat: pokemonStat, + splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, tutorial: tutorial, - splashMessages: splashMessages, - nature: nature, - growth: growth, weather: weather, - modifierType: modifierType, } diff --git a/src/locales/es/config.ts b/src/locales/es/config.ts index 6aac47563ee..a986bbfc75c 100644 --- a/src/locales/es/config.ts +++ b/src/locales/es/config.ts @@ -13,10 +13,10 @@ import { nature } from "./nature"; import { pokeball } from "./pokeball"; import { pokemon } from "./pokemon"; import { pokemonStat } from "./pokemon-stat"; +import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; -import { titles,trainerClasses,trainerNames } from "./trainers"; -import { splashMessages } from "./splash-messages" import { weather } from "./weather"; @@ -27,20 +27,20 @@ export const esConfig = { commandUiHandler: commandUiHandler, egg: egg, fightUiHandler: fightUiHandler, - menuUiHandler: menuUiHandler, + growth: growth, menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, move: move, + nature: nature, pokeball: pokeball, - pokemonStat: pokemonStat, pokemon: pokemon, + pokemonStat: pokemonStat, + splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, tutorial: tutorial, - splashMessages: splashMessages, - nature: nature, - growth: growth, weather: weather, - modifierType: modifierType, } diff --git a/src/locales/fr/config.ts b/src/locales/fr/config.ts index a2bb8430fba..8de3e186d59 100644 --- a/src/locales/fr/config.ts +++ b/src/locales/fr/config.ts @@ -13,14 +13,13 @@ import { nature } from "./nature"; import { pokeball } from "./pokeball"; import { pokemon } from "./pokemon"; import { pokemonStat } from "./pokemon-stat"; +import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; -import { titles,trainerClasses,trainerNames } from "./trainers"; -import { splashMessages } from "./splash-messages" import { weather } from "./weather"; - export const frConfig = { ability: ability, abilityTriggers: abilityTriggers, @@ -28,21 +27,21 @@ export const frConfig = { commandUiHandler: commandUiHandler, egg: egg, fightUiHandler: fightUiHandler, - menuUiHandler: menuUiHandler, + growth: growth, menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, move: move, + nature: nature, pokeball: pokeball, - pokemonStat: pokemonStat, pokemon: pokemon, + pokemonStat: pokemonStat, + splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, tutorial: tutorial, - splashMessages: splashMessages, - nature: nature, - growth: growth, weather: weather, - modifierType: modifierType, } diff --git a/src/locales/it/config.ts b/src/locales/it/config.ts index baa252bcb16..6892c9c8cad 100644 --- a/src/locales/it/config.ts +++ b/src/locales/it/config.ts @@ -13,10 +13,10 @@ import { nature } from "./nature"; import { pokeball } from "./pokeball"; import { pokemon } from "./pokemon"; import { pokemonStat } from "./pokemon-stat"; +import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; -import { titles,trainerClasses,trainerNames } from "./trainers"; -import { splashMessages } from "./splash-messages" import { weather } from "./weather"; @@ -27,20 +27,20 @@ export const itConfig = { commandUiHandler: commandUiHandler, egg: egg, fightUiHandler: fightUiHandler, - menuUiHandler: menuUiHandler, + growth: growth, menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, move: move, + nature: nature, pokeball: pokeball, - pokemonStat: pokemonStat, pokemon: pokemon, + pokemonStat: pokemonStat, + splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, tutorial: tutorial, - splashMessages: splashMessages, - nature: nature, - growth: growth, weather: weather, - modifierType: modifierType, } diff --git a/src/locales/zh_CN/config.ts b/src/locales/zh_CN/config.ts index 957b1e7a482..19afba381b8 100644 --- a/src/locales/zh_CN/config.ts +++ b/src/locales/zh_CN/config.ts @@ -2,20 +2,22 @@ import { ability } from "./ability"; import { abilityTriggers } from "./ability-trigger"; import { battle } from "./battle"; import { commandUiHandler } from "./command-ui-handler"; +// import { egg } from "./egg"; import { fightUiHandler } from "./fight-ui-handler"; +import { growth } from "./growth"; import { menu } from "./menu"; import { menuUiHandler } from "./menu-ui-handler"; +import { modifierType } from "./modifier-type"; import { move } from "./move"; +import { nature } from "./nature"; import { pokeball } from "./pokeball"; import { pokemon } from "./pokemon"; import { pokemonStat } from "./pokemon-stat"; +// import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; -import { titles,trainerClasses,trainerNames } from "./trainers"; -import { nature } from "./nature"; import { weather } from "./weather"; -import { modifierType } from "./modifier-type"; -import { growth } from "./growth"; export const zhCnConfig = { @@ -23,21 +25,22 @@ export const zhCnConfig = { abilityTriggers: abilityTriggers, battle: battle, commandUiHandler: commandUiHandler, + // egg: egg, fightUiHandler: fightUiHandler, - menuUiHandler: menuUiHandler, + growth: growth, menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, move: move, - pokeball: pokeball, - pokemonStat: pokemonStat, - pokemon: pokemon, - starterSelectUiHandler: starterSelectUiHandler, nature: nature, + pokeball: pokeball, + pokemon: pokemon, + pokemonStat: pokemonStat, + // splashMessages: splashMessages, + starterSelectUiHandler: starterSelectUiHandler, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, tutorial: tutorial, - nature: nature, - growth: growth, weather: weather, - modifierType: modifierType, } From 63e165d62adcb3f9d4f7fffeb96b088c9cc483bf Mon Sep 17 00:00:00 2001 From: Lugiad Date: Fri, 17 May 2024 01:12:19 +0200 Subject: [PATCH 07/17] Complete French translation modifier-type.ts (#999) * Complete French translation modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts --- src/locales/fr/modifier-type.ts | 518 ++++++++++++++++---------------- 1 file changed, 259 insertions(+), 259 deletions(-) diff --git a/src/locales/fr/modifier-type.ts b/src/locales/fr/modifier-type.ts index 043d7a705d5..e8b35f146e1 100644 --- a/src/locales/fr/modifier-type.ts +++ b/src/locales/fr/modifier-type.ts @@ -3,407 +3,407 @@ import { ModifierTypeTranslationEntries } from "#app/plugins/i18n"; export const modifierType: ModifierTypeTranslationEntries = { ModifierType: { "AddPokeballModifierType": { - name: "{{modifierCount}}x {{pokeballName}}", - description: "Receive {{pokeballName}} x{{modifierCount}} (Inventory: {{pokeballAmount}}) \nCatch Rate: {{catchRate}}", + name: "{{pokeballName}} x{{modifierCount}}", + description: "Recevez {{modifierCount}} {{pokeballName}}s (Inventaire : {{pokeballAmount}}) \nTaux de capture : {{catchRate}}", }, "AddVoucherModifierType": { - name: "{{modifierCount}}x {{voucherTypeName}}", - description: "Receive {{voucherTypeName}} x{{modifierCount}}", + name: "{{voucherTypeName}} x{{modifierCount}}", + description: "Recevez {{modifierCount}} {{voucherTypeName}}", }, "PokemonHeldItemModifierType": { extra: { - "inoperable": "{{pokemonName}} can't take\nthis item!", - "tooMany": "{{pokemonName}} has too many\nof this item!", + "inoperable": "{{pokemonName}} ne peut pas\nporter cet objet !", + "tooMany": "{{pokemonName}} possède trop\nd’exemplaires de cet objet !", } }, "PokemonHpRestoreModifierType": { - description: "Restores {{restorePoints}} HP or {{restorePercent}}% HP for one Pokémon, whichever is higher", + description: "Restaure {{restorePoints}} PV ou {{restorePercent}}% des PV totaux d’un Pokémon, en fonction duquel des deux est le plus élevé", extra: { - "fully": "Fully restores HP for one Pokémon", - "fullyWithStatus": "Fully restores HP for one Pokémon and heals any status ailment", + "fully": "Restaure tous les PV d’un Pokémon", + "fullyWithStatus": "Restaure tous les PV d’un Pokémon et soigne tous ses problèmes de statut", } }, "PokemonReviveModifierType": { - description: "Revives one Pokémon and restores {{restorePercent}}% HP", + description: "Réanime un Pokémon et restaure {{restorePercent}}% de ses PV", }, "PokemonStatusHealModifierType": { - description: "Heals any status ailment for one Pokémon", + description: "Soigne tous les problèmes de statut d’un Pokémon", }, "PokemonPpRestoreModifierType": { - description: "Restores {{restorePoints}} PP for one Pokémon move", + description: "Restaure {{restorePoints}} PP à une capacité d’un Pokémon", extra: { - "fully": "Restores all PP for one Pokémon move", + "fully": "Restaure tous les PP à une capacité d’un Pokémon", } }, "PokemonAllMovePpRestoreModifierType": { - description: "Restores {{restorePoints}} PP for all of one Pokémon's moves", + description: "Restaure {{restorePoints}} PP à toutes les capacités d’un Pokémon", extra: { - "fully": "Restores all PP for all of one Pokémon's moves", + "fully": "Restaure tous les PP à toutes les capacités d’un Pokémon", } }, "PokemonPpUpModifierType": { - description: "Permanently increases PP for one Pokémon move by {{upPoints}} for every 5 maximum PP (maximum 3)", + description: "Auguemente le max de PP de {{upPoints}} à une capacité d’un Pokémon pour chaque 5 PP max (max : 3)", }, "PokemonNatureChangeModifierType": { - name: "{{natureName}} Mint", - description: "Changes a Pokémon's nature to {{natureName}} and permanently unlocks the nature for the starter.", + name: "Aromate {{natureName}}", + description: "Donne la nature {{natureName}} à un Pokémon et la débloque pour le starter lui étant lié.", }, "DoubleBattleChanceBoosterModifierType": { - description: "Doubles the chance of an encounter being a double battle for {{battleCount}} battles", + description: "Double les chances de tomber sur un combat double pendant {{battleCount}} combats", }, "TempBattleStatBoosterModifierType": { - description: "Increases the {{tempBattleStatName}} of all party members by 1 stage for 5 battles", + description: "{{tempBattleStatName}} auguementée d’1 cran pour tout l’équipe pendant 5 combats", }, "AttackTypeBoosterModifierType": { - description: "Increases the power of a Pokémon's {{moveType}}-type moves by 20%", + description: "Auguemente de 20% la puissance des capacités de type {{moveType}} d’un Pokémon", }, "PokemonLevelIncrementModifierType": { - description: "Increases a Pokémon's level by 1", + description: "Fait monter un Pokémon d’1 niveau", }, "AllPokemonLevelIncrementModifierType": { - description: "Increases all party members' level by 1", + description: "Fait monter toute l’équipe d’1 niveau", }, "PokemonBaseStatBoosterModifierType": { - description: "Increases the holder's base {{statName}} by 10%. The higher your IVs, the higher the stack limit.", + description: "Auguemente de 10% {{statName}} de base de son porteur. Plus les IV sont hauts, plus il peut en porter.", }, "AllPokemonFullHpRestoreModifierType": { - description: "Restores 100% HP for all Pokémon", + description: "Restaure tous les PV de toute l'équipe", }, "AllPokemonFullReviveModifierType": { - description: "Revives all fainted Pokémon, fully restoring HP", + description: "Réanime et restaure tous les PV de tous les Pokémon K.O.", }, "MoneyRewardModifierType": { - description: "Grants a {{moneyMultiplier}} amount of money (₽{{moneyAmount}})", + description: "Octroie une {{moneyMultiplier}} somme d’argent ({{moneyAmount}}₽)", extra: { - "small": "small", - "moderate": "moderate", - "large": "large", + "small": "petite", + "moderate": "moyenne", + "large": "grande", }, }, "ExpBoosterModifierType": { - description: "Increases gain of EXP. Points by {{boostPercent}}%", + description: "Auguemente de {{boostPercent}}% le gain de Points d’Exp", }, "PokemonExpBoosterModifierType": { - description: "Increases the holder's gain of EXP. Points by {{boostPercent}}%", + description: "Auguemente de {{boostPercent}}% le gain de Points d’Exp du porteur", }, "PokemonFriendshipBoosterModifierType": { - description: "Increases friendship gain per victory by 50%", + description: "Auguemente le gain d’amitié de 50% par victoire", }, "PokemonMoveAccuracyBoosterModifierType": { - description: "Increases move accuracy by {{accuracyAmount}} (maximum 100)", + description: "Auguemente de {{accuracyAmount}} la précision des capacités (maximum 100)", }, "PokemonMultiHitModifierType": { - description: "Attacks hit one additional time at the cost of a 60/75/82.5% power reduction per stack respectively", + description: "Frappe une fois de plus en échange d’une baisse de puissance de respectivement 60/75/82,5% par cumul", }, "TmModifierType": { - name: "TM{{moveId}} - {{moveName}}", - description: "Teach {{moveName}} to a Pokémon", + name: "CT{{moveId}} - {{moveName}}", + description: "Apprend la capacité {{moveName}} à un Pokémon", }, "EvolutionItemModifierType": { - description: "Causes certain Pokémon to evolve", + description: "Permet à certains Pokémon d’évoluer", }, "FormChangeItemModifierType": { - description: "Causes certain Pokémon to change form", + description: "Permet à certains Pokémon de changer de forme", }, "FusePokemonModifierType": { - description: "Combines two Pokémon (transfers Ability, splits base stats and types, shares move pool)", + description: "Fusionne deux Pokémon (transfère le Talent, sépare les stats de base et les types, partage le movepool)", }, "TerastallizeModifierType": { - name: "{{teraType}} Tera Shard", - description: "{{teraType}} Terastallizes the holder for up to 10 battles", + name: "Téra-Éclat {{teraType}}", + description: "{{teraType}} Téracristallise son porteur pendant 10 combats", }, "ContactHeldItemTransferChanceModifierType": { - description: "Upon attacking, there is a {{chancePercent}}% chance the foe's held item will be stolen", + description: "{{chancePercent}}% de chances de voler un objet de l’adversaire en l’attaquant", }, "TurnHeldItemTransferModifierType": { - description: "Every turn, the holder acquires one held item from the foe", + description: "À chaque tour, son porteur obtient un objet de son adversaire", }, "EnemyAttackStatusEffectChanceModifierType": { - description: "Adds a {{chancePercent}}% chance to inflict {{statusEffect}} with attack moves", + description: "Ajoute {{chancePercent}}% de chances d’infliger le statut {{statusEffect}} avec des capacités offensives", }, "EnemyEndureChanceModifierType": { - description: "Adds a {{chancePercent}}% chance of enduring a hit", + description: "Ajoute {{chancePercent}}% de chances d’encaisser un coup", }, - "RARE_CANDY": { name: "Rare Candy" }, - "RARER_CANDY": { name: "Rarer Candy" }, + "RARE_CANDY": { name: "Super Bonbon" }, + "RARER_CANDY": { name: "Hyper Bonbon" }, - "MEGA_BRACELET": { name: "Mega Bracelet", description: "Mega Stones become available" }, - "DYNAMAX_BAND": { name: "Dynamax Band", description: "Max Mushrooms become available" }, - "TERA_ORB": { name: "Tera Orb", description: "Tera Shards become available" }, + "MEGA_BRACELET": { name: "Méga-Bracelet", description: "Débloque les Méga-Gemmes" }, + "DYNAMAX_BAND": { name: "Poignet Dynamax", description: "Débloque les Maxi Champis" }, + "TERA_ORB": { name: "Orbe Téracristal", description: "Débloque les Téra-Éclats" }, - "MAP": { name: "Map", description: "Allows you to choose your destination at a crossroads" }, + "MAP": { name: "Carte", description: "Vous permet de choisir votre destination à un croisement" }, "POTION": { name: "Potion" }, "SUPER_POTION": { name: "Super Potion" }, "HYPER_POTION": { name: "Hyper Potion" }, - "MAX_POTION": { name: "Max Potion" }, - "FULL_RESTORE": { name: "Full Restore" }, + "MAX_POTION": { name: "Potion Max" }, + "FULL_RESTORE": { name: "Guérison" }, - "REVIVE": { name: "Revive" }, - "MAX_REVIVE": { name: "Max Revive" }, + "REVIVE": { name: "Rappel" }, + "MAX_REVIVE": { name: "Rappel Max" }, - "FULL_HEAL": { name: "Full Heal" }, + "FULL_HEAL": { name: "Total Soin" }, - "SACRED_ASH": { name: "Sacred Ash" }, + "SACRED_ASH": { name: "Cendres Sacrées" }, - "REVIVER_SEED": { name: "Reviver Seed", description: "Revives the holder for 1/2 HP upon fainting" }, + "REVIVER_SEED": { name: "Résugraine", description: "Réanime et restaure la moitié des PV de son porteur s’il tombe K.O." }, - "ETHER": { name: "Ether" }, - "MAX_ETHER": { name: "Max Ether" }, + "ETHER": { name: "Huile" }, + "MAX_ETHER": { name: "Huile Max" }, - "ELIXIR": { name: "Elixir" }, - "MAX_ELIXIR": { name: "Max Elixir" }, + "ELIXIR": { name: "Élixir" }, + "MAX_ELIXIR": { name: "Élixir Max" }, - "PP_UP": { name: "PP Up" }, + "PP_UP": { name: "PP Plus" }, "PP_MAX": { name: "PP Max" }, - "LURE": { name: "Lure" }, - "SUPER_LURE": { name: "Super Lure" }, - "MAX_LURE": { name: "Max Lure" }, + "LURE": { name: "Parfum" }, + "SUPER_LURE": { name: "Super Parfum" }, + "MAX_LURE": { name: "Parfum Max" }, - "MEMORY_MUSHROOM": { name: "Memory Mushroom", description: "Recall one Pokémon's forgotten move" }, + "MEMORY_MUSHROOM": { name: "Champignon Mémoriel", description: "Remémore une capacité à un Pokémon" }, - "EXP_SHARE": { name: "EXP. All", description: "Non-participants receive 20% of a single participant's EXP. Points" }, - "EXP_BALANCE": { name: "EXP. Balance", description: "Weighs EXP. Points received from battles towards lower-leveled party members" }, + "EXP_SHARE": { name: "Multi Exp", description: "Tous les non-participants recoivent 20% des Points d’Exp d’un participant" }, + "EXP_BALANCE": { name: "Équilibr’Exp.", description: "Équilibre les Points d’Exp à l’avantage des membres de l’équipe aux plus bas niveaux" }, - "OVAL_CHARM": { name: "Oval Charm", description: "When multiple Pokémon participate in a battle, each gets an extra 10% of the total EXP" }, + "OVAL_CHARM": { name: "Charme Ovale", description: "Quand plusieurs Pokémon sont en combat, chacun gagne 10% supplémentaires du total d’Exp" }, - "EXP_CHARM": { name: "EXP. Charm" }, - "SUPER_EXP_CHARM": { name: "Super EXP. Charm" }, - "GOLDEN_EXP_CHARM": { name: "Golden EXP. Charm" }, + "EXP_CHARM": { name: "Charme Exp" }, + "SUPER_EXP_CHARM": { name: "Super Charme Exp" }, + "GOLDEN_EXP_CHARM": { name: "Charme Exp Doré" }, - "LUCKY_EGG": { name: "Lucky Egg" }, - "GOLDEN_EGG": { name: "Golden Egg" }, + "LUCKY_EGG": { name: "Œuf Chance" }, + "GOLDEN_EGG": { name: "Œuf d’Or" }, - "SOOTHE_BELL": { name: "Soothe Bell" }, + "SOOTHE_BELL": { name: "Grelot Zen" }, - "SOUL_DEW": { name: "Soul Dew", description: "Increases the influence of a Pokémon's nature on its stats by 10% (additive)" }, + "SOUL_DEW": { name: "Rosée Âme", description: "Auguemente de 10% l’influence de la nature d’un Pokémon sur ses statistiques (cumulatif)" }, - "NUGGET": { name: "Nugget" }, - "BIG_NUGGET": { name: "Big Nugget" }, - "RELIC_GOLD": { name: "Relic Gold" }, + "NUGGET": { name: "Pépite" }, + "BIG_NUGGET": { name: "Maxi Pépite" }, + "RELIC_GOLD": { name: "Vieux Ducat" }, - "AMULET_COIN": { name: "Amulet Coin", description: "Increases money rewards by 20%" }, - "GOLDEN_PUNCH": { name: "Golden Punch", description: "Grants 50% of damage inflicted as money" }, - "COIN_CASE": { name: "Coin Case", description: "After every 10th battle, receive 10% of your money in interest" }, + "AMULET_COIN": { name: "Pièce Rune", description: "Auguemente de 20% les gains d’argent" }, + "GOLDEN_PUNCH": { name: "Poing Doré", description: "50% des dégâts infligés sont convertis en argent" }, + "COIN_CASE": { name: "Boite Jetons", description: "Tous les 10 combats, recevez 10% de votre argent en intérêts" }, - "LOCK_CAPSULE": { name: "Lock Capsule", description: "Allows you to lock item rarities when rerolling items" }, + "LOCK_CAPSULE": { name: "Poké Écrin", description: "Permet de verouiller des objets rares si vous relancez les objets proposés" }, - "GRIP_CLAW": { name: "Grip Claw" }, - "WIDE_LENS": { name: "Wide Lens" }, + "GRIP_CLAW": { name: "Accro Griffe" }, + "WIDE_LENS": { name: "Loupe" }, - "MULTI_LENS": { name: "Multi Lens" }, + "MULTI_LENS": { name: "Multi Loupe" }, - "HEALING_CHARM": { name: "Healing Charm", description: "Increases the effectiveness of HP restoring moves and items by 10% (excludes Revives)" }, - "CANDY_JAR": { name: "Candy Jar", description: "Increases the number of levels added by Rare Candy items by 1" }, + "HEALING_CHARM": { name: "Charme Soin", description: "Auguemente de 10% l’efficacité des capacités et objets de soin de PV (hors Rappels)" }, + "CANDY_JAR": { name: "Jarre de Bonbons", description: "Auguemente de 1 le nombre de niveaux gagnés à l’utilisation d’Super Bonbon" }, - "BERRY_POUCH": { name: "Berry Pouch", description: "Adds a 25% chance that a used berry will not be consumed" }, + "BERRY_POUCH": { name: "Sac à Baies", description: "Ajoute 25% de chances qu’une Baie utilisée ne soit pas consomée" }, - "FOCUS_BAND": { name: "Focus Band", description: "Adds a 10% chance to survive with 1 HP after being damaged enough to faint" }, + "FOCUS_BAND": { name: "Bandeau", description: "Ajoute 10% de chances de suvivre avec 1 PV si les dégâts reçus pouvaient mettre K.O." }, - "QUICK_CLAW": { name: "Quick Claw", description: "Adds a 10% chance to move first regardless of speed (after priority)" }, + "QUICK_CLAW": { name: "Vive Griffe", description: "Ajoute 10% de chances d’agir en premier, indépendamment de la vitesse (après la priorité)" }, - "KINGS_ROCK": { name: "King's Rock", description: "Adds a 10% chance an attack move will cause the opponent to flinch" }, + "KINGS_ROCK": { name: "Roche Royale", description: "Ajoute 10% de chances qu’une capacité offensive apeure l’adversaire" }, - "LEFTOVERS": { name: "Leftovers", description: "Heals 1/16 of a Pokémon's maximum HP every turn" }, - "SHELL_BELL": { name: "Shell Bell", description: "Heals 1/8 of a Pokémon's dealt damage" }, + "LEFTOVERS": { name: "Restes", description: "Soigne à chaque tour 1/16 des PV max d’un Pokémon" }, + "SHELL_BELL": { name: "Grelot Coque", description: "Soigne 1/8 des dégâts infligés par un Pokémon" }, - "BATON": { name: "Baton", description: "Allows passing along effects when switching Pokémon, which also bypasses traps" }, + "BATON": { name: "Bâton", description: "Permet de transmettre les effets en cas de changement de Pokémon. Ignore les pièges." }, - "SHINY_CHARM": { name: "Shiny Charm", description: "Dramatically increases the chance of a wild Pokémon being Shiny" }, - "ABILITY_CHARM": { name: "Ability Charm", description: "Dramatically increases the chance of a wild Pokémon having a Hidden Ability" }, + "SHINY_CHARM": { name: "Charme Chroma", description: "Auguemente énormément les chances de rencontrer un Pokémon sauvage chromatique" }, + "ABILITY_CHARM": { name: "Charme Talent", description: "Auguemente énormément les chances de rencontrer un Pokémon sauvage avec un Talent Caché" }, - "IV_SCANNER": { name: "IV Scanner", description: "Allows scanning the IVs of wild Pokémon. 2 IVs are revealed per stack. The best IVs are shown first" }, + "IV_SCANNER": { name: "Scanner d’IV", description: "Scanne les IV d’un Pokémon sauvage. 2 IV sont révélées par Scanner. Les meilleurs sont montrés en 1er." }, - "DNA_SPLICERS": { name: "DNA Splicers" }, + "DNA_SPLICERS": { name: "Pointeau ADN" }, - "MINI_BLACK_HOLE": { name: "Mini Black Hole" }, + "MINI_BLACK_HOLE": { name: "Mini Trou Noir" }, - "GOLDEN_POKEBALL": { name: "Golden Poké Ball", description: "Adds 1 extra item option at the end of every battle" }, + "GOLDEN_POKEBALL": { name: "Poké Ball Dorée", description: "Ajoute 1 choix d’objet à la fin de chaque combat" }, - "ENEMY_DAMAGE_BOOSTER": { name: "Damage Token", description: "Increases damage by 5%" }, - "ENEMY_DAMAGE_REDUCTION": { name: "Protection Token", description: "Reduces incoming damage by 2.5%" }, - "ENEMY_HEAL": { name: "Recovery Token", description: "Heals 2% of max HP every turn" }, - "ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" }, - "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" }, - "ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 10% chance every turn to heal a status condition" }, - "ENEMY_ENDURE_CHANCE": { name: "Endure Token" }, - "ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Adds a 1% chance that a wild Pokémon will be a fusion" }, + "ENEMY_DAMAGE_BOOSTER": { name: "Jeton Dégâts", description: "Auguemente les dégâts de 5%" }, + "ENEMY_DAMAGE_REDUCTION": { name: "Jeton Protection", description: "Diminue les dégâts reçus de 2,5%" }, + "ENEMY_HEAL": { name: "Jeton Soin", description: "Soigne 2% des PV max à chaque tour" }, + "ENEMY_ATTACK_POISON_CHANCE": { name: "Jeton Poison" }, + "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Jeton Paralysie" }, + "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Jeton Sommeil" }, + "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Jeton Gel" }, + "ENEMY_ATTACK_BURN_CHANCE": { name: "Jeton Brulure" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Jeton Total Soin", description: "Ajoute 10% de chances à chaque tour de se soigner d’un problème de statut." }, + "ENEMY_ENDURE_CHANCE": { name: "Jeton Ténacité" }, + "ENEMY_FUSED_CHANCE": { name: "Jeton Fusion", description: "Ajoute 1% de chances qu’un Pokémon sauvage soit une fusion." }, }, TempBattleStatBoosterItem: { - "x_attack": "X Attack", - "x_defense": "X Defense", - "x_sp_atk": "X Sp. Atk", - "x_sp_def": "X Sp. Def", - "x_speed": "X Speed", - "x_accuracy": "X Accuracy", - "dire_hit": "Dire Hit", + "x_attack": "Attaque +", + "x_defense": "Defense +", + "x_sp_atk": "Atq. Spé. +", + "x_sp_def": "Déf. Spé. +", + "x_speed": "Vitesse +", + "x_accuracy": "Précision +", + "dire_hit": "Muscle +", }, AttackTypeBoosterItem: { - "silk_scarf": "Silk Scarf", - "black_belt": "Black Belt", - "sharp_beak": "Sharp Beak", - "poison_barb": "Poison Barb", - "soft_sand": "Soft Sand", - "hard_stone": "Hard Stone", - "silver_powder": "Silver Powder", - "spell_tag": "Spell Tag", - "metal_coat": "Metal Coat", - "charcoal": "Charcoal", - "mystic_water": "Mystic Water", - "miracle_seed": "Miracle Seed", - "magnet": "Magnet", - "twisted_spoon": "Twisted Spoon", - "never_melt_ice": "Never-Melt Ice", - "dragon_fang": "Dragon Fang", - "black_glasses": "Black Glasses", - "fairy_feather": "Fairy Feather", + "silk_scarf": "Mouchoir Soie", + "black_belt": "Ceinture Noire", + "sharp_beak": "Bec Pointu", + "poison_barb": "Pic Venin", + "soft_sand": "Sable Doux", + "hard_stone": "Pierre Dure", + "silver_powder": "Poudre Argentée", + "spell_tag": "Rune Sort", + "metal_coat": "Peau Métal", + "charcoal": "Charbon", + "mystic_water": "Eau Mystique", + "miracle_seed": "Graine Miracle", + "magnet": "Aimant", + "twisted_spoon": "Cuillère Tordue", + "never_melt_ice": "Glace Éternelle", + "dragon_fang": "Croc Dragon", + "black_glasses": "Lunettes Noires", + "fairy_feather": "Plume Enchantée", }, BaseStatBoosterItem: { - "hp_up": "HP Up", - "protein": "Protein", - "iron": "Iron", + "hp_up": "PP Plus", + "protein": "Protéine", + "iron": "Fer", "calcium": "Calcium", "zinc": "Zinc", - "carbos": "Carbos", + "carbos": "Carbone", }, EvolutionItem: { - "NONE": "None", + "NONE": "Aucun", - "LINKING_CORD": "Linking Cord", - "SUN_STONE": "Sun Stone", - "MOON_STONE": "Moon Stone", - "LEAF_STONE": "Leaf Stone", - "FIRE_STONE": "Fire Stone", - "WATER_STONE": "Water Stone", - "THUNDER_STONE": "Thunder Stone", - "ICE_STONE": "Ice Stone", - "DUSK_STONE": "Dusk Stone", - "DAWN_STONE": "Dawn Stone", - "SHINY_STONE": "Shiny Stone", - "CRACKED_POT": "Cracked Pot", - "SWEET_APPLE": "Sweet Apple", - "TART_APPLE": "Tart Apple", - "STRAWBERRY_SWEET": "Strawberry Sweet", - "UNREMARKABLE_TEACUP": "Unremarkable Teacup", + "LINKING_CORD": "Fil de Liaison", + "SUN_STONE": "Pierre Soleil", + "MOON_STONE": "Pierre Lune", + "LEAF_STONE": "Pierre Plante", + "FIRE_STONE": "Pierre Feu", + "WATER_STONE": "Pierre Eau", + "THUNDER_STONE": "Pierre Foudre", + "ICE_STONE": "Pierre Glace", + "DUSK_STONE": "Pierre Nuit", + "DAWN_STONE": "Pierre Aube", + "SHINY_STONE": "Pierre Éclat", + "CRACKED_POT": "Théière Fêlée", + "SWEET_APPLE": "Pomme Sucrée", + "TART_APPLE": "Pomme Acidulée", + "STRAWBERRY_SWEET": "Fraise en Sucre", + "UNREMARKABLE_TEACUP": "Bol Médiocre", - "CHIPPED_POT": "Chipped Pot", - "BLACK_AUGURITE": "Black Augurite", - "GALARICA_CUFF": "Galarica Cuff", - "GALARICA_WREATH": "Galarica Wreath", - "PEAT_BLOCK": "Peat Block", - "AUSPICIOUS_ARMOR": "Auspicious Armor", - "MALICIOUS_ARMOR": "Malicious Armor", - "MASTERPIECE_TEACUP": "Masterpiece Teacup", - "METAL_ALLOY": "Metal Alloy", - "SCROLL_OF_DARKNESS": "Scroll Of Darkness", - "SCROLL_OF_WATERS": "Scroll Of Waters", - "SYRUPY_APPLE": "Syrupy Apple", + "CHIPPED_POT": "Théière Ébréchée", + "BLACK_AUGURITE": "Obsidienne", + "GALARICA_CUFF": "Bracelet Galanoa", + "GALARICA_WREATH": "Couronne Galanoa", + "PEAT_BLOCK": "Bloc de Tourbe", + "AUSPICIOUS_ARMOR": "Armure de la Fortune", + "MALICIOUS_ARMOR": "Armure de la Rancune", + "MASTERPIECE_TEACUP": "Bol Exceptionnel", + "METAL_ALLOY": "Métal Composite", + "SCROLL_OF_DARKNESS": "Rouleau des Ténèbres", + "SCROLL_OF_WATERS": "Rouleau de l’Eau", + "SYRUPY_APPLE": "Pomme Nectar", }, FormChangeItem: { - "NONE": "None", + "NONE": "Aucun", - "ABOMASITE": "Abomasite", + "ABOMASITE": "Blizzarite", "ABSOLITE": "Absolite", - "AERODACTYLITE": "Aerodactylite", - "AGGRONITE": "Aggronite", - "ALAKAZITE": "Alakazite", - "ALTARIANITE": "Altarianite", - "AMPHAROSITE": "Ampharosite", - "AUDINITE": "Audinite", - "BANETTITE": "Banettite", - "BEEDRILLITE": "Beedrillite", - "BLASTOISINITE": "Blastoisinite", - "BLAZIKENITE": "Blazikenite", - "CAMERUPTITE": "Cameruptite", - "CHARIZARDITE_X": "Charizardite X", - "CHARIZARDITE_Y": "Charizardite Y", + "AERODACTYLITE": "Ptéraïte", + "AGGRONITE": "Galekingite", + "ALAKAZITE": "Alakazamite", + "ALTARIANITE": "Altarite", + "AMPHAROSITE": "Pharampite", + "AUDINITE": "Nanméouïte", + "BANETTITE": "Branettite", + "BEEDRILLITE": "Dardargnite", + "BLASTOISINITE": "Tortankite", + "BLAZIKENITE": "Braségalite", + "CAMERUPTITE": "Caméruptite", + "CHARIZARDITE_X": "Dracaufite X", + "CHARIZARDITE_Y": "Dracaufite Y", "DIANCITE": "Diancite", - "GALLADITE": "Galladite", - "GARCHOMPITE": "Garchompite", + "GALLADITE": "Gallamite", + "GARCHOMPITE": "Carchacrokite", "GARDEVOIRITE": "Gardevoirite", - "GENGARITE": "Gengarite", - "GLALITITE": "Glalitite", - "GYARADOSITE": "Gyaradosite", - "HERACRONITE": "Heracronite", - "HOUNDOOMINITE": "Houndoominite", - "KANGASKHANITE": "Kangaskhanite", + "GENGARITE": "Ectoplasmite", + "GLALITITE": "Oniglalite", + "GYARADOSITE": "Léviatorite", + "HERACRONITE": "Scarhinoïte", + "HOUNDOOMINITE": "Démolossite", + "KANGASKHANITE": "Kangourexite", "LATIASITE": "Latiasite", "LATIOSITE": "Latiosite", - "LOPUNNITE": "Lopunnite", - "LUCARIONITE": "Lucarionite", - "MANECTITE": "Manectite", - "MAWILITE": "Mawilite", - "MEDICHAMITE": "Medichamite", - "METAGROSSITE": "Metagrossite", - "MEWTWONITE_X": "Mewtwonite X", - "MEWTWONITE_Y": "Mewtwonite Y", - "PIDGEOTITE": "Pidgeotite", - "PINSIRITE": "Pinsirite", + "LOPUNNITE": "Lockpinite", + "LUCARIONITE": "Lucarite", + "MANECTITE": "Élecsprintite", + "MAWILITE": "Mysdibulite", + "MEDICHAMITE": "Charminite", + "METAGROSSITE": "Métalossite", + "MEWTWONITE_X": "Mewtwoïte X", + "MEWTWONITE_Y": "Mewtwoïte Y", + "PIDGEOTITE": "Roucarnagite", + "PINSIRITE": "Scarabruite", "RAYQUAZITE": "Rayquazite", - "SABLENITE": "Sablenite", - "SALAMENCITE": "Salamencite", - "SCEPTILITE": "Sceptilite", - "SCIZORITE": "Scizorite", - "SHARPEDONITE": "Sharpedonite", - "SLOWBRONITE": "Slowbronite", + "SABLENITE": "Ténéfixite", + "SALAMENCITE": "Drattakite", + "SCEPTILITE": "Jungkite", + "SCIZORITE": "Cizayoxite", + "SHARPEDONITE": "Sharpedite", + "SLOWBRONITE": "Flagadossite", "STEELIXITE": "Steelixite", - "SWAMPERTITE": "Swampertite", - "TYRANITARITE": "Tyranitarite", - "VENUSAURITE": "Venusaurite", + "SWAMPERTITE": "Laggronite", + "TYRANITARITE": "Tyranocivite", + "VENUSAURITE": "Florizarrite", - "BLUE_ORB": "Blue Orb", - "RED_ORB": "Red Orb", - "SHARP_METEORITE": "Sharp Meteorite", - "HARD_METEORITE": "Hard Meteorite", - "SMOOTH_METEORITE": "Smooth Meteorite", - "ADAMANT_CRYSTAL": "Adamant Crystal", - "LUSTROUS_ORB": "Lustrous Orb", - "GRISEOUS_CORE": "Griseous Core", - "REVEAL_GLASS": "Reveal Glass", - "GRACIDEA": "Gracidea", - "MAX_MUSHROOMS": "Max Mushrooms", - "DARK_STONE": "Dark Stone", - "LIGHT_STONE": "Light Stone", - "PRISON_BOTTLE": "Prison Bottle", - "N_LUNARIZER": "N Lunarizer", - "N_SOLARIZER": "N Solarizer", - "RUSTED_SWORD": "Rusted Sword", - "RUSTED_SHIELD": "Rusted Shield", - "ICY_REINS_OF_UNITY": "Icy Reins Of Unity", - "SHADOW_REINS_OF_UNITY": "Shadow Reins Of Unity", - "WELLSPRING_MASK": "Wellspring Mask", - "HEARTHFLAME_MASK": "Hearthflame Mask", - "CORNERSTONE_MASK": "Cornerstone Mask", - "SHOCK_DRIVE": "Shock Drive", - "BURN_DRIVE": "Burn Drive", - "CHILL_DRIVE": "Chill Drive", - "DOUSE_DRIVE": "Douse Drive", + "BLUE_ORB": "Gemme Bleue", + "RED_ORB": "Gemme Rouge", + "SHARP_METEORITE": "Méteorite Aiguisée", + "HARD_METEORITE": "Méteorite Solide", + "SMOOTH_METEORITE": "Méteorite Lisse", + "ADAMANT_CRYSTAL": "Globe Adamant", + "LUSTROUS_ORB": "Orbe Perlé", + "GRISEOUS_CORE": "Globe Platiné", + "REVEAL_GLASS": "Miroir Sacré", + "GRACIDEA": "Gracidée", + "MAX_MUSHROOMS": "Maxi Champis", + "DARK_STONE": "Galet Noir", + "LIGHT_STONE": "Galet Blanc", + "PRISON_BOTTLE": "Vase Scellé", + "N_LUNARIZER": "Necroluna", + "N_SOLARIZER": "Necrosol", + "RUSTED_SWORD": "Épée Rouillée", + "RUSTED_SHIELD": "Bouclier Rouillé", + "ICY_REINS_OF_UNITY": "Rênes de l’Unité du Froid", + "SHADOW_REINS_OF_UNITY": "Rênes de l’Unité d’Effoi", + "WELLSPRING_MASK": "Masque du Puits", + "HEARTHFLAME_MASK": "Masque du Fourneau", + "CORNERSTONE_MASK": "Masque de la Pierre", + "SHOCK_DRIVE": "Module Choc", + "BURN_DRIVE": "Module Pyro", + "CHILL_DRIVE": "Module Aqua", + "DOUSE_DRIVE": "Module Choc", }, TeraType: { - "UNKNOWN": "Unknown", + "UNKNOWN": "Inconnu", "NORMAL": "Normal", - "FIGHTING": "Fighting", - "FLYING": "Flying", + "FIGHTING": "Combat", + "FLYING": "Vol", "POISON": "Poison", - "GROUND": "Ground", - "ROCK": "Rock", - "BUG": "Bug", - "GHOST": "Ghost", - "STEEL": "Steel", - "FIRE": "Fire", - "WATER": "Water", - "GRASS": "Grass", - "ELECTRIC": "Electric", - "PSYCHIC": "Psychic", - "ICE": "Ice", + "GROUND": "Sol", + "ROCK": "Roche", + "BUG": "Insecte", + "GHOST": "Spectre", + "STEEL": "Acier", + "FIRE": "Feu", + "WATER": "Eau", + "GRASS": "Plante", + "ELECTRIC": "Électrik", + "PSYCHIC": "Psy", + "ICE": "Glace", "DRAGON": "Dragon", - "DARK": "Dark", - "FAIRY": "Fairy", - "STELLAR": "Stellar", + "DARK": "Ténèbres", + "FAIRY": "Fée", + "STELLAR": "Stellaire", }, -} as const; \ No newline at end of file +} as const; From 429e66357fd0ea2c0dd8978c715e3ccf50c0961d Mon Sep 17 00:00:00 2001 From: Matthew Olker Date: Thu, 16 May 2024 19:13:52 -0400 Subject: [PATCH 08/17] fix splash message config --- src/data/splash-messages.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/data/splash-messages.ts b/src/data/splash-messages.ts index 3a40429e9b6..c650b038287 100644 --- a/src/data/splash-messages.ts +++ b/src/data/splash-messages.ts @@ -8,14 +8,14 @@ export function getSplashMessages(): string[] { const splashMessages = Array(10).fill(getBattleCountSplashMessage()); splashMessages.push(...[ i18next.t('splashMessages:joinTheDiscord'), - i18next.t('splashMessages:infiniteLevel'), + i18next.t('splashMessages:infiniteLevels'), i18next.t('splashMessages:everythingStacks'), i18next.t('splashMessages:optionalSaveScumming'), i18next.t('splashMessages:biomes'), i18next.t('splashMessages:openSource'), - i18next.t('splashMessages:playWith5xSpeed'), + i18next.t('splashMessages:playWithSpeed'), i18next.t('splashMessages:liveBugTesting'), - i18next.t('splashMessages:heavyRoR2Influence'), + i18next.t('splashMessages:heavyInfluence'), i18next.t('splashMessages:pokemonRiskAndPokemonRain'), i18next.t('splashMessages:nowWithMoreSalt'), i18next.t('splashMessages:infiniteFusionAtHome'), From 78fffaad9d96b71345544c221b3ac4a007e9696c Mon Sep 17 00:00:00 2001 From: Lugiad Date: Fri, 17 May 2024 01:31:09 +0200 Subject: [PATCH 09/17] French modifier-type.ts corrections and adjustments (#1000) --- src/locales/fr/modifier-type.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/fr/modifier-type.ts b/src/locales/fr/modifier-type.ts index e8b35f146e1..45b46a996ce 100644 --- a/src/locales/fr/modifier-type.ts +++ b/src/locales/fr/modifier-type.ts @@ -64,7 +64,7 @@ export const modifierType: ModifierTypeTranslationEntries = { description: "Fait monter toute l’équipe d’1 niveau", }, "PokemonBaseStatBoosterModifierType": { - description: "Auguemente de 10% {{statName}} de base de son porteur. Plus les IV sont hauts, plus il peut en porter.", + description: "{{statName}} de base de base de son porteur augumentée de 10%. Plus les IV sont hauts, plus il peut en porter.", }, "AllPokemonFullHpRestoreModifierType": { description: "Restaure tous les PV de toute l'équipe", @@ -165,7 +165,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "MEMORY_MUSHROOM": { name: "Champignon Mémoriel", description: "Remémore une capacité à un Pokémon" }, "EXP_SHARE": { name: "Multi Exp", description: "Tous les non-participants recoivent 20% des Points d’Exp d’un participant" }, - "EXP_BALANCE": { name: "Équilibr’Exp.", description: "Équilibre les Points d’Exp à l’avantage des membres de l’équipe aux plus bas niveaux" }, + "EXP_BALANCE": { name: "Équilibr’Exp", description: "Équilibre les Points d’Exp à l’avantage des membres de l’équipe aux plus bas niveaux" }, "OVAL_CHARM": { name: "Charme Ovale", description: "Quand plusieurs Pokémon sont en combat, chacun gagne 10% supplémentaires du total d’Exp" }, @@ -196,7 +196,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "MULTI_LENS": { name: "Multi Loupe" }, "HEALING_CHARM": { name: "Charme Soin", description: "Auguemente de 10% l’efficacité des capacités et objets de soin de PV (hors Rappels)" }, - "CANDY_JAR": { name: "Jarre de Bonbons", description: "Auguemente de 1 le nombre de niveaux gagnés à l’utilisation d’Super Bonbon" }, + "CANDY_JAR": { name: "Jarre de Bonbons", description: "Auguemente de 1 le nombre de niveaux gagnés à l’utilisation d’un Super Bonbon" }, "BERRY_POUCH": { name: "Sac à Baies", description: "Ajoute 25% de chances qu’une Baie utilisée ne soit pas consomée" }, From 45663ceae0a10083788dff6955633b3af9c0eaea Mon Sep 17 00:00:00 2001 From: Lugiad Date: Fri, 17 May 2024 01:45:23 +0200 Subject: [PATCH 10/17] French typo corrections modifier-type.ts (#1001) * French typo corrections modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts --- src/locales/fr/modifier-type.ts | 38 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/locales/fr/modifier-type.ts b/src/locales/fr/modifier-type.ts index 45b46a996ce..826d51bd3a2 100644 --- a/src/locales/fr/modifier-type.ts +++ b/src/locales/fr/modifier-type.ts @@ -42,7 +42,7 @@ export const modifierType: ModifierTypeTranslationEntries = { } }, "PokemonPpUpModifierType": { - description: "Auguemente le max de PP de {{upPoints}} à une capacité d’un Pokémon pour chaque 5 PP max (max : 3)", + description: "Augmente le max de PP de {{upPoints}} à une capacité d’un Pokémon pour chaque 5 PP max (max : 3)", }, "PokemonNatureChangeModifierType": { name: "Aromate {{natureName}}", @@ -52,10 +52,10 @@ export const modifierType: ModifierTypeTranslationEntries = { description: "Double les chances de tomber sur un combat double pendant {{battleCount}} combats", }, "TempBattleStatBoosterModifierType": { - description: "{{tempBattleStatName}} auguementée d’1 cran pour tout l’équipe pendant 5 combats", + description: "{{tempBattleStatName}} augmentée d’1 cran pour tout l’équipe pendant 5 combats", }, "AttackTypeBoosterModifierType": { - description: "Auguemente de 20% la puissance des capacités de type {{moveType}} d’un Pokémon", + description: "Augmente de 20% la puissance des capacités de type {{moveType}} d’un Pokémon", }, "PokemonLevelIncrementModifierType": { description: "Fait monter un Pokémon d’1 niveau", @@ -64,7 +64,7 @@ export const modifierType: ModifierTypeTranslationEntries = { description: "Fait monter toute l’équipe d’1 niveau", }, "PokemonBaseStatBoosterModifierType": { - description: "{{statName}} de base de base de son porteur augumentée de 10%. Plus les IV sont hauts, plus il peut en porter.", + description: "{{statName}} de base de base de son porteur augmentée de 10%. Plus les IV sont hauts, plus il peut en porter.", }, "AllPokemonFullHpRestoreModifierType": { description: "Restaure tous les PV de toute l'équipe", @@ -81,16 +81,16 @@ export const modifierType: ModifierTypeTranslationEntries = { }, }, "ExpBoosterModifierType": { - description: "Auguemente de {{boostPercent}}% le gain de Points d’Exp", + description: "Augmente de {{boostPercent}}% le gain de Points d’Exp", }, "PokemonExpBoosterModifierType": { - description: "Auguemente de {{boostPercent}}% le gain de Points d’Exp du porteur", + description: "Augmente de {{boostPercent}}% le gain de Points d’Exp du porteur", }, "PokemonFriendshipBoosterModifierType": { - description: "Auguemente le gain d’amitié de 50% par victoire", + description: "Augmente le gain d’amitié de 50% par victoire", }, "PokemonMoveAccuracyBoosterModifierType": { - description: "Auguemente de {{accuracyAmount}} la précision des capacités (maximum 100)", + description: "Augmente de {{accuracyAmount}} la précision des capacités (maximum 100)", }, "PokemonMultiHitModifierType": { description: "Frappe une fois de plus en échange d’une baisse de puissance de respectivement 60/75/82,5% par cumul", @@ -164,7 +164,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "MEMORY_MUSHROOM": { name: "Champignon Mémoriel", description: "Remémore une capacité à un Pokémon" }, - "EXP_SHARE": { name: "Multi Exp", description: "Tous les non-participants recoivent 20% des Points d’Exp d’un participant" }, + "EXP_SHARE": { name: "Multi Exp", description: "Tous les non-participants reçoivent 20% des Points d’Exp d’un participant" }, "EXP_BALANCE": { name: "Équilibr’Exp", description: "Équilibre les Points d’Exp à l’avantage des membres de l’équipe aux plus bas niveaux" }, "OVAL_CHARM": { name: "Charme Ovale", description: "Quand plusieurs Pokémon sont en combat, chacun gagne 10% supplémentaires du total d’Exp" }, @@ -178,29 +178,29 @@ export const modifierType: ModifierTypeTranslationEntries = { "SOOTHE_BELL": { name: "Grelot Zen" }, - "SOUL_DEW": { name: "Rosée Âme", description: "Auguemente de 10% l’influence de la nature d’un Pokémon sur ses statistiques (cumulatif)" }, + "SOUL_DEW": { name: "Rosée Âme", description: "Augmente de 10% l’influence de la nature d’un Pokémon sur ses statistiques (cumulatif)" }, "NUGGET": { name: "Pépite" }, "BIG_NUGGET": { name: "Maxi Pépite" }, "RELIC_GOLD": { name: "Vieux Ducat" }, - "AMULET_COIN": { name: "Pièce Rune", description: "Auguemente de 20% les gains d’argent" }, + "AMULET_COIN": { name: "Pièce Rune", description: "Augmente de 20% les gains d’argent" }, "GOLDEN_PUNCH": { name: "Poing Doré", description: "50% des dégâts infligés sont convertis en argent" }, "COIN_CASE": { name: "Boite Jetons", description: "Tous les 10 combats, recevez 10% de votre argent en intérêts" }, - "LOCK_CAPSULE": { name: "Poké Écrin", description: "Permet de verouiller des objets rares si vous relancez les objets proposés" }, + "LOCK_CAPSULE": { name: "Poké Écrin", description: "Permet de verrouiller des objets rares si vous relancez les objets proposés" }, "GRIP_CLAW": { name: "Accro Griffe" }, "WIDE_LENS": { name: "Loupe" }, "MULTI_LENS": { name: "Multi Loupe" }, - "HEALING_CHARM": { name: "Charme Soin", description: "Auguemente de 10% l’efficacité des capacités et objets de soin de PV (hors Rappels)" }, - "CANDY_JAR": { name: "Jarre de Bonbons", description: "Auguemente de 1 le nombre de niveaux gagnés à l’utilisation d’un Super Bonbon" }, + "HEALING_CHARM": { name: "Charme Soin", description: "Augmente de 10% l’efficacité des capacités et objets de soin de PV (hors Rappels)" }, + "CANDY_JAR": { name: "Jarre de Bonbons", description: "Augmente de 1 le nombre de niveaux gagnés à l’utilisation d’un Super Bonbon" }, - "BERRY_POUCH": { name: "Sac à Baies", description: "Ajoute 25% de chances qu’une Baie utilisée ne soit pas consomée" }, + "BERRY_POUCH": { name: "Sac à Baies", description: "Ajoute 25% de chances qu’une Baie utilisée ne soit pas consommée" }, - "FOCUS_BAND": { name: "Bandeau", description: "Ajoute 10% de chances de suvivre avec 1 PV si les dégâts reçus pouvaient mettre K.O." }, + "FOCUS_BAND": { name: "Bandeau", description: "Ajoute 10% de chances de survivre avec 1 PV si les dégâts reçus pouvaient mettre K.O." }, "QUICK_CLAW": { name: "Vive Griffe", description: "Ajoute 10% de chances d’agir en premier, indépendamment de la vitesse (après la priorité)" }, @@ -211,8 +211,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "BATON": { name: "Bâton", description: "Permet de transmettre les effets en cas de changement de Pokémon. Ignore les pièges." }, - "SHINY_CHARM": { name: "Charme Chroma", description: "Auguemente énormément les chances de rencontrer un Pokémon sauvage chromatique" }, - "ABILITY_CHARM": { name: "Charme Talent", description: "Auguemente énormément les chances de rencontrer un Pokémon sauvage avec un Talent Caché" }, + "SHINY_CHARM": { name: "Charme Chroma", description: "Augmente énormément les chances de rencontrer un Pokémon sauvage chromatique" }, + "ABILITY_CHARM": { name: "Charme Talent", description: "Augmente énormément les chances de rencontrer un Pokémon sauvage avec un Talent Caché" }, "IV_SCANNER": { name: "Scanner d’IV", description: "Scanne les IV d’un Pokémon sauvage. 2 IV sont révélées par Scanner. Les meilleurs sont montrés en 1er." }, @@ -222,7 +222,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "GOLDEN_POKEBALL": { name: "Poké Ball Dorée", description: "Ajoute 1 choix d’objet à la fin de chaque combat" }, - "ENEMY_DAMAGE_BOOSTER": { name: "Jeton Dégâts", description: "Auguemente les dégâts de 5%" }, + "ENEMY_DAMAGE_BOOSTER": { name: "Jeton Dégâts", description: "Augmente les dégâts de 5%" }, "ENEMY_DAMAGE_REDUCTION": { name: "Jeton Protection", description: "Diminue les dégâts reçus de 2,5%" }, "ENEMY_HEAL": { name: "Jeton Soin", description: "Soigne 2% des PV max à chaque tour" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Jeton Poison" }, From 883524f441f1e3daa32eef07ce316218def71565 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Fri, 17 May 2024 02:07:26 +0200 Subject: [PATCH 11/17] Even more French typos in modifier-type.ts (#1002) * Even more French typos in modifier-type.ts * Update modifier-type.ts --- src/locales/fr/modifier-type.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/locales/fr/modifier-type.ts b/src/locales/fr/modifier-type.ts index 826d51bd3a2..2b5e7a54415 100644 --- a/src/locales/fr/modifier-type.ts +++ b/src/locales/fr/modifier-type.ts @@ -64,7 +64,7 @@ export const modifierType: ModifierTypeTranslationEntries = { description: "Fait monter toute l’équipe d’1 niveau", }, "PokemonBaseStatBoosterModifierType": { - description: "{{statName}} de base de base de son porteur augmentée de 10%. Plus les IV sont hauts, plus il peut en porter.", + description: "{{statName}} de base de son porteur augmentée de 10%. Plus les IV sont hauts, plus il peut en porter.", }, "AllPokemonFullHpRestoreModifierType": { description: "Restaure tous les PV de toute l'équipe", @@ -214,7 +214,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "SHINY_CHARM": { name: "Charme Chroma", description: "Augmente énormément les chances de rencontrer un Pokémon sauvage chromatique" }, "ABILITY_CHARM": { name: "Charme Talent", description: "Augmente énormément les chances de rencontrer un Pokémon sauvage avec un Talent Caché" }, - "IV_SCANNER": { name: "Scanner d’IV", description: "Scanne les IV d’un Pokémon sauvage. 2 IV sont révélées par Scanner. Les meilleurs sont montrés en 1er." }, + "IV_SCANNER": { name: "Scanner d’IV", description: "Scanne les IV d’un Pokémon sauvage. 2 IV sont révélés par Scanner. Les meilleurs sont montrés en 1er." }, "DNA_SPLICERS": { name: "Pointeau ADN" }, @@ -236,7 +236,7 @@ export const modifierType: ModifierTypeTranslationEntries = { }, TempBattleStatBoosterItem: { "x_attack": "Attaque +", - "x_defense": "Defense +", + "x_defense": "Défense +", "x_sp_atk": "Atq. Spé. +", "x_sp_def": "Déf. Spé. +", "x_speed": "Vitesse +", @@ -375,7 +375,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "RUSTED_SWORD": "Épée Rouillée", "RUSTED_SHIELD": "Bouclier Rouillé", "ICY_REINS_OF_UNITY": "Rênes de l’Unité du Froid", - "SHADOW_REINS_OF_UNITY": "Rênes de l’Unité d’Effoi", + "SHADOW_REINS_OF_UNITY": "Rênes de l’Unité d’Effroi", "WELLSPRING_MASK": "Masque du Puits", "HEARTHFLAME_MASK": "Masque du Fourneau", "CORNERSTONE_MASK": "Masque de la Pierre", From 4d804d787c0f2dfd914ad689cd73108eed766f67 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Fri, 17 May 2024 03:14:09 +0200 Subject: [PATCH 12/17] Minor French modifier-type.ts edits (#1004) * Minor correction French modifier-type.ts * Update modifier-type.ts * Update modifier-type.ts --- src/locales/fr/modifier-type.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/fr/modifier-type.ts b/src/locales/fr/modifier-type.ts index 2b5e7a54415..96aeeccf4f8 100644 --- a/src/locales/fr/modifier-type.ts +++ b/src/locales/fr/modifier-type.ts @@ -52,7 +52,7 @@ export const modifierType: ModifierTypeTranslationEntries = { description: "Double les chances de tomber sur un combat double pendant {{battleCount}} combats", }, "TempBattleStatBoosterModifierType": { - description: "{{tempBattleStatName}} augmentée d’1 cran pour tout l’équipe pendant 5 combats", + description: "Augmente d’1 cran {{tempBattleStatName}} pour tout l’équipe pendant 5 combats", }, "AttackTypeBoosterModifierType": { description: "Augmente de 20% la puissance des capacités de type {{moveType}} d’un Pokémon", @@ -64,7 +64,7 @@ export const modifierType: ModifierTypeTranslationEntries = { description: "Fait monter toute l’équipe d’1 niveau", }, "PokemonBaseStatBoosterModifierType": { - description: "{{statName}} de base de son porteur augmentée de 10%. Plus les IV sont hauts, plus il peut en porter.", + description: "Augmente de 10% {{statName}} de base de son porteur. Plus les IV sont hauts, plus il peut en porter.", }, "AllPokemonFullHpRestoreModifierType": { description: "Restaure tous les PV de toute l'équipe", @@ -162,7 +162,7 @@ export const modifierType: ModifierTypeTranslationEntries = { "SUPER_LURE": { name: "Super Parfum" }, "MAX_LURE": { name: "Parfum Max" }, - "MEMORY_MUSHROOM": { name: "Champignon Mémoriel", description: "Remémore une capacité à un Pokémon" }, + "MEMORY_MUSHROOM": { name: "Champi Mémoriel", description: "Remémore une capacité à un Pokémon" }, "EXP_SHARE": { name: "Multi Exp", description: "Tous les non-participants reçoivent 20% des Points d’Exp d’un participant" }, "EXP_BALANCE": { name: "Équilibr’Exp", description: "Équilibre les Points d’Exp à l’avantage des membres de l’équipe aux plus bas niveaux" }, From 71d9f11d9401cd6d7536e2e315bab36fa053149e Mon Sep 17 00:00:00 2001 From: Madmadness65 Date: Thu, 16 May 2024 20:19:16 -0500 Subject: [PATCH 13/17] Allow Dada Zarude to be encountered MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Another cosmetic Pokémon form for a mythical is now available. --- src/battle-scene.ts | 1 + src/data/battler-tags.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index f15cf1a52e2..0f75447a500 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1013,6 +1013,7 @@ export default class BattleScene extends SceneBase { case Species.FURFROU: case Species.ORICORIO: case Species.MAGEARNA: + case Species.ZARUDE: case Species.SQUAWKABILLY: case Species.TATSUGIRI: case Species.PALDEA_TAUROS: diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index f66b5b2a0d9..3dca2a3cadf 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -14,7 +14,7 @@ import { BattlerTagType } from "./enums/battler-tag-type"; import { TerrainType } from "./terrain"; import { WeatherType } from "./weather"; import { BattleStat } from "./battle-stat"; -import { allAbilities } from "./ability" +import { allAbilities } from "./ability"; export enum BattlerTagLapseType { FAINT, From 7561521020d29eb7e2191f00dc38294a8c3f1b34 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 16 May 2024 21:41:38 -0400 Subject: [PATCH 14/17] Add endings for classic mode --- public/images/cg/end_f.png | Bin 0 -> 53035 bytes public/images/cg/end_m.png | Bin 0 -> 41829 bytes src/data/dialogue.ts | 19 ++++ src/loading-scene.ts | 3 + src/phases.ts | 152 ++++++++++++++++++++-------- src/ui/battle-message-ui-handler.ts | 2 +- 6 files changed, 132 insertions(+), 44 deletions(-) create mode 100644 public/images/cg/end_f.png create mode 100644 public/images/cg/end_m.png diff --git a/public/images/cg/end_f.png b/public/images/cg/end_f.png new file mode 100644 index 0000000000000000000000000000000000000000..84f94d7e05d30cca31929a24dc43d05a2fa4ffdb GIT binary patch literal 53035 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 z�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 z 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 literal 0 HcmV?d00001 diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index 055e5627a52..e54196d9e25 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -2290,6 +2290,25 @@ export const battleSpecDialogue = { } }; +export const miscDialogue = { + ending: [ + `@c{smile}Oh? You won?@d{96} @c{smile_eclosed}I guess I should've known.\nBut, you're back now. + $@c{smile}It's over.@d{64} You ended the loop. + $@c{serious_smile_fists}You fulfilled your dream too, didn't you?\nYou didn't lose even once. + $@c{neutral}I'm the only one who'll remember what you did.@d{96}\nI guess that's okay, isn't it? + $@c{serious_smile_fists}Your legend will always live on in our hearts. + $@c{smile_eclosed}Anyway, I've had about enough of this place, haven't you? Let's head home. + $@c{serious_smile_fists}Maybe when we get back, we can have another battle?\nIf you're up to it.`, + `@c{shock}You're back?@d{32} Does that mean…@d{96} you won?!\n@c{smile_ehalf}I should have known you had it in you. + $@c{smile_eclosed}Of course… I always had that feeling.\n@c{smile}It's over now, right? You ended the loop. + $@c{smile_ehalf}You fulfilled your dream too, didn't you?\nYou didn't lose even once. + $I'll be the only one to remember what you did.\n@c{angry_mopen}I'll try not to forget! + $@c{smile_wave_wink}Just kidding!@d{64} @c{smile}I'd never forget.@d{32}\nYour legend will live on in our hearts. + $@c{smile_wave}Anyway,@d{64} it's getting late…@d{96} I think?\nIt's hard to tell in this place. + $Let's go home. @c{smile_wave_wink}Maybe tomorrow, we can have another battle, for old time's sake?` + ] +} + export function getCharVariantFromDialogue(message: string): string { const variantMatch = /@c\{(.*?)\}/.exec(message); if (variantMatch) diff --git a/src/loading-scene.ts b/src/loading-scene.ts index a49fed480e6..56d0ab47f13 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -209,6 +209,9 @@ export class LoadingScene extends SceneBase { this.loadImage('egg_list_bg', 'ui'); + this.loadImage('end_m', 'cg'); + this.loadImage('end_f', 'cg'); + for (let i = 0; i < 10; i++) { this.loadAtlas(`pokemon_icons_${i}`, ''); if (i) diff --git a/src/phases.ts b/src/phases.ts index f44b4bcaa0b..89b4974b853 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -37,7 +37,7 @@ import { BattleType, BattlerIndex, TurnCommand } from "./battle"; import { BattleSpec } from "./enums/battle-spec"; import { Species } from "./data/enums/species"; import { HealAchv, LevelAchv, achvs } from "./system/achv"; -import { TrainerSlot, trainerConfigs } from "./data/trainer-config"; +import { TrainerConfig, TrainerSlot, trainerConfigs } from "./data/trainer-config"; import { TrainerType } from "./data/enums/trainer-type"; import { EggHatchPhase } from "./egg-hatch-phase"; import { Egg } from "./data/egg"; @@ -46,7 +46,7 @@ import { loggedInUser, updateUserInfo } from "./account"; import { PlayerGender, SessionSaveData } from "./system/game-data"; import { addPokeballCaptureStars, addPokeballOpenParticles } from "./field/anims"; import { SpeciesFormChangeActiveTrigger, SpeciesFormChangeManualTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangePreMoveTrigger } from "./data/pokemon-forms"; -import { battleSpecDialogue, getCharVariantFromDialogue } from "./data/dialogue"; +import { battleSpecDialogue, getCharVariantFromDialogue, miscDialogue } from "./data/dialogue"; import ModifierSelectUiHandler, { SHOP_OPTIONS_ROW_LIMIT } from "./ui/modifier-select-ui-handler"; import { Setting } from "./system/settings"; import { Tutorial, handleTutorial } from "./tutorial"; @@ -59,6 +59,7 @@ import PokemonSpecies, { getPokemonSpecies, getPokemonSpeciesForm, speciesStarte import i18next from './plugins/i18n'; import { Abilities } from "./data/enums/abilities"; import * as Overrides from './overrides'; +import { TextStyle, addTextObject } from "./ui/text"; export class LoginPhase extends Phase { private showText: boolean; @@ -160,7 +161,6 @@ export class TitlePhase extends Phase { this.scene.gameData.getSession(loggedInUser.lastSessionSlot).then(sessionData => { if (sessionData) { this.lastSessionData = sessionData; - console.log(sessionData); const biomeKey = getBiomeKey(sessionData.arena.biome); const bgTexture = `${biomeKey}_bg`; this.scene.arenaBg.setTexture(bgTexture); @@ -3219,11 +3219,10 @@ export class FaintPhase extends PokemonPhase { if (defeatSource?.isOnField()) { applyPostVictoryAbAttrs(PostVictoryAbAttr, defeatSource); const pvmove = allMoves[pokemon.turnData.attacksReceived[0].move]; - const pvattrs = pvmove.getAttrs(PostVictoryStatChangeAttr); + const pvattrs = pvmove.getAttrs(PostVictoryStatChangeAttr) as PostVictoryStatChangeAttr[]; if (pvattrs.length) { - for (let pvattr of pvattrs) { + for (let pvattr of pvattrs) pvattr.applyPostVictory(defeatSource, defeatSource, pvmove); - } } } } @@ -3537,12 +3536,10 @@ export class GameOverModifierRewardPhase extends ModifierRewardPhase { this.scene.addModifier(newModifier).then(() => { this.scene.playSound('level_up_fanfare'); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.fadeIn(250).then(() => { - this.scene.ui.showText(`You received\n${newModifier.type.name}!`, null, () => { - this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); - resolve(); - }, null, true, 1500); - }); + this.scene.ui.showText(`You received\n${newModifier.type.name}!`, null, () => { + this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); + resolve(); + }, null, true, 1500); }); }) } @@ -3563,11 +3560,9 @@ export class RibbonModifierRewardPhase extends ModifierRewardPhase { this.scene.addModifier(newModifier).then(() => { this.scene.playSound('level_up_fanfare'); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.fadeIn(250).then(() => { - this.scene.ui.showText(`${this.species.name} beat ${this.scene.gameMode.getName()} Mode for the first time!\nYou received ${newModifier.type.name}!`, null, () => { - resolve(); - }, null, true, 1500); - }); + this.scene.ui.showText(`${this.species.name} beat ${this.scene.gameMode.getName()} Mode for the first time!\nYou received ${newModifier.type.name}!`, null, () => { + resolve(); + }, null, true, 1500); }); }) } @@ -3619,6 +3614,7 @@ export class GameOverPhase extends BattlePhase { handleGameOver(): void { const doGameOver = (newClear: boolean) => { + this.scene.disableMenu = true; this.scene.time.delayedCall(1000, () => { let firstClear = false; if (this.victory && newClear) { @@ -3640,20 +3636,40 @@ export class GameOverPhase extends BattlePhase { const activeBattlers = this.scene.getField().filter(p => p?.isActive(true)); activeBattlers.map(p => p.hideInfo()); this.scene.ui.fadeOut(fadeDuration).then(() => { - [ this.scene.field, ...activeBattlers ].map(a => a.setVisible(false)); + activeBattlers.map(a => a.setVisible(false)); this.scene.setFieldScale(1, true); this.scene.clearPhaseQueue(); this.scene.ui.clearText(); - if (newClear) - this.handleUnlocks(); - if (this.victory && newClear) { - for (let species of this.firstRibbons) - this.scene.unshiftPhase(new RibbonModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PLUS, species)); - if (!firstClear) - this.scene.unshiftPhase(new GameOverModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PREMIUM)); + + const clear = (endCardPhase?: EndCardPhase) => { + if (newClear) + this.handleUnlocks(); + if (this.victory && newClear) { + for (let species of this.firstRibbons) + this.scene.unshiftPhase(new RibbonModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PLUS, species)); + if (!firstClear) + this.scene.unshiftPhase(new GameOverModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PREMIUM)); + } + this.scene.pushPhase(new PostGameOverPhase(this.scene, endCardPhase)); + this.end(); } - this.scene.pushPhase(new PostGameOverPhase(this.scene)); - this.end(); + + if (this.victory) { + this.scene.ui.fadeIn(500).then(() => { + this.scene.charSprite.showCharacter(`rival_${this.scene.gameData.gender === PlayerGender.FEMALE ? 'm' : 'f'}`, getCharVariantFromDialogue(miscDialogue.ending[this.scene.gameData.gender === PlayerGender.FEMALE ? 0 : 1])).then(() => { + this.scene.ui.showDialogue(miscDialogue.ending[this.scene.gameData.gender === PlayerGender.FEMALE ? 0 : 1], this.scene.gameData.gender === PlayerGender.FEMALE ? trainerConfigs[TrainerType.RIVAL].name : trainerConfigs[TrainerType.RIVAL].nameFemale, null, () => { + this.scene.ui.fadeOut(500).then(() => { + this.scene.charSprite.hide().then(() => { + const endCardPhase = new EndCardPhase(this.scene); + this.scene.unshiftPhase(endCardPhase); + clear(endCardPhase); + }); + }); + }); + }); + }); + } else + clear(); }); }); }; @@ -3696,6 +3712,41 @@ export class GameOverPhase extends BattlePhase { } } +export class EndCardPhase extends Phase { + public endCard: Phaser.GameObjects.Image; + public text: Phaser.GameObjects.Text; + + constructor(scene: BattleScene) { + super(scene); + } + + start(): void { + super.start(); + + this.scene.ui.getMessageHandler().bg.setVisible(false); + this.scene.ui.getMessageHandler().nameBoxContainer.setVisible(false); + + this.endCard = this.scene.add.image(0, 0, `end_${this.scene.gameData.gender === PlayerGender.FEMALE ? 'f' : 'm'}`); + this.endCard.setOrigin(0); + this.endCard.setScale(0.5); + this.scene.field.add(this.endCard); + + this.text = addTextObject(this.scene, this.scene.game.canvas.width / 12, (this.scene.game.canvas.height / 6) - 16, 'Congratulations!', TextStyle.SUMMARY, { fontSize: '128px' }); + this.text.setOrigin(0.5); + this.scene.field.add(this.text); + + this.scene.ui.clearText(); + + this.scene.ui.fadeIn(1000).then(() => { + + this.scene.ui.showText('', null, () => { + this.scene.ui.getMessageHandler().bg.setVisible(true); + this.end(); + }, null, true); + }); + } +} + export class UnlockPhase extends Phase { private unlockable: Unlockables; @@ -3710,35 +3761,50 @@ export class UnlockPhase extends Phase { this.scene.gameData.unlocks[this.unlockable] = true; this.scene.playSound('level_up_fanfare'); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.fadeIn(250).then(() => { - this.scene.ui.showText(`${getUnlockableName(this.unlockable)}\nhas been unlocked.`, null, () => { - this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); - this.end(); - }, null, true, 1500); - }); + this.scene.ui.showText(`${getUnlockableName(this.unlockable)}\nhas been unlocked.`, null, () => { + this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); + this.end(); + }, null, true, 1500); }); } } export class PostGameOverPhase extends Phase { - constructor(scene: BattleScene) { + private endCardPhase: EndCardPhase; + + constructor(scene: BattleScene, endCardPhase: EndCardPhase) { super(scene); + + this.endCardPhase = endCardPhase; } start() { super.start(); - this.scene.gameData.saveAll(this.scene, true, true, true).then(success => { - if (!success) - return this.scene.reset(true); - this.scene.gameData.tryClearSession(this.scene, this.scene.sessionSlotId).then((success: boolean | [boolean, boolean]) => { - if (!success[0]) + const saveAndReset = () => { + this.scene.gameData.saveAll(this.scene, true, true, true).then(success => { + if (!success) return this.scene.reset(true); - this.scene.reset(); - this.scene.unshiftPhase(new TitlePhase(this.scene)); - this.end(); + this.scene.gameData.tryClearSession(this.scene, this.scene.sessionSlotId).then((success: boolean | [boolean, boolean]) => { + if (!success[0]) + return this.scene.reset(true); + this.scene.reset(); + this.scene.unshiftPhase(new TitlePhase(this.scene)); + this.end(); + }); }); - }); + }; + + if (this.endCardPhase) { + this.scene.ui.fadeOut(500).then(() => { + this.scene.ui.getMessageHandler().bg.setVisible(true); + + this.endCardPhase.endCard.destroy(); + this.endCardPhase.text.destroy(); + saveAndReset(); + }); + } else + saveAndReset(); } } diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts index d04a98ea810..abcf04b7cc8 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -31,7 +31,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { this.textCallbackTimer = null; const bg = this.scene.add.sprite(0, 0, 'bg', this.scene.windowType); - bg.setOrigin(0, 1); + bg.setOrigin(0, 1); ui.add(bg); this.bg = bg; From e035e85811d8f515370268f21e3310b5a8de02c3 Mon Sep 17 00:00:00 2001 From: Vaner42 <94883874+Vaner42@users.noreply.github.com> Date: Fri, 17 May 2024 10:42:12 +0800 Subject: [PATCH 15/17] Translate 'trainer' into Simplified Chinese. (#1006) Co-authored-by: Junhan --- src/locales/zh_CN/trainers.ts | 506 +++++++++++++++++++--------------- 1 file changed, 282 insertions(+), 224 deletions(-) diff --git a/src/locales/zh_CN/trainers.ts b/src/locales/zh_CN/trainers.ts index a02383a4f54..b3b89d0057d 100644 --- a/src/locales/zh_CN/trainers.ts +++ b/src/locales/zh_CN/trainers.ts @@ -2,239 +2,297 @@ import {SimpleTranslationEntries} from "#app/plugins/i18n"; // Titles of special trainers like gym leaders, elite four, and the champion export const titles: SimpleTranslationEntries = { - "elite_four": "Elite Four", - "gym_leader": "Gym Leader", - "gym_leader_female": "Gym Leader", - "champion": "Champion", - "rival": "Rival", - "professor": "Professor", - "frontier_brain": "Frontier Brain", + "elite_four": "四天王", + "gym_leader": "道馆馆主", + "gym_leader_female": "道馆馆主", + "champion": "冠军", + "rival": "劲敌", + "professor": "博士", + "frontier_brain": "开拓头脑", // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. } as const; // Titles of trainers like "Youngster" or "Lass" export const trainerClasses: SimpleTranslationEntries = { - "ace_trainer": "Ace Trainer", - "ace_trainer_female": "Ace Trainer", - "ace_duo": "Ace Duo", - "artist": "Artist", - "artist_female": "Artist", - "backers": "Backers", - "backpacker": "Backpacker", - "backpacker_female": "Backpacker", - "backpackers": "Backpackers", - "baker": "Baker", - "battle_girl": "Battle Girl", - "beauty": "Beauty", - "beginners": "Beginners", - "biker": "Biker", - "black_belt": "Black Belt", - "breeder": "Breeder", - "breeder_female": "Breeder", - "breeders": "Breeders", - "clerk": "Clerk", - "clerk_female": "Clerk", - "colleagues": "Colleagues", - "crush_kin": "Crush Kin", - "cyclist": "Cyclist", - "cyclist_female": "Cyclist", - "cyclists": "Cyclists", - "dancer": "Dancer", - "dancer_female": "Dancer", - "depot_agent": "Depot Agent", - "doctor": "Doctor", - "doctor_female": "Doctor", - "fishermen": "Fishermen", - "fishermen_female": "Fishermen", - "gentleman": "Gentleman", - "guitarist": "Guitarist", - "guitarist_female": "Guitarist", - "harlequin": "Harlequin", - "hiker": "Hiker", - "hooligans": "Hooligans", - "hoopster": "Hoopster", - "infielder": "Infielder", - "janitor": "Janitor", - "lady": "Lady", - "lass": "Lass", - "linebacker": "Linebacker", - "maid": "Maid", - "madame": "Madame", - "medical_team": "Medical Team", - "musican": "Musician", - "hex_maniac": "Hex Maniac", - "nurse": "Nurse", - "nursery_aide": "Nursery Aide", - "officer": "Officer", - "parasol_lady": "Parasol Lady", - "pilot": "Pilot", - "poké_fan": "Poké Fan", - "poké_fan_family": "Poké Fan Family", - "preschooler": "Preschooler", - "preschooler_female": "Preschooler", - "preschoolers": "Preschoolers", - "psychic": "Psychic", - "psychic_female": "Psychic", - "psychics": "Psychics", - "pokémon_ranger": "Pokémon Ranger", - "pokémon_rangers": "Pokémon Ranger", - "ranger": "Ranger", - "restaurant_staff": "Restaurant Staff", - "rich_boy": "Rich Boy", - "rich_couple": "Rich Couple", - "rich_kids": "Rich Kids", - "roughneck": "Roughneck", - "scientist": "Scientist", - "scientist_female": "Scientist", - "scientists": "Scientists", - "smasher": "Smasher", - "snow_worker": "Snow Worker", - "snow_worker_female": "Snow Worker", - "striker": "Striker", - "school_kid": "School Kid", - "school_kid_female": "School Kid", - "school_kids": "School Kids", - "swimmer": "Swimmer", - "swimmer_female": "Swimmer", - "swimmers": "Swimmers", - "twins": "Twins", - "veteran": "Veteran", - "veteran_female": "Veteran", - "veteran_duo": "Veteran Duo", - "waiter": "Waiter", - "waitress": "Waitress", - "worker": "Worker", - "worker_female": "Worker", - "workers": "Workers", - "youngster": "Youngster" + "ace_trainer": "精英训练家", + "ace_trainer_female": "精英训练家", + "ace_duo": "精英组合", + "artist": "艺术家", + "artist_female": "艺术家", + "backers": "啦啦队", + "backpacker": "背包客", + "backpacker_female": "背包客", + "backpackers": "背包客组合", + "baker": "面包师", + "battle_girl": "对战少女", + "beauty": "大姐姐", + "beginners": "新人训练家组合", + "biker": "飙车族", + "black_belt": "空手道王", + "breeder": "宝可梦培育家", + "breeder_female": "宝可梦培育家", + "breeders": "宝可梦培育家组合", + "clerk": "商务人士", + "clerk_female": "职场OL", + "colleagues": "商务伙伴", + "crush_kin": "格斗姐弟", + "cyclist": "自行车手", + "cyclist_female": "自行车手", + "cyclists": "自行车手组合", + "dancer": "舞者", + "dancer_female": "舞者", + "depot_agent": "铁路员工", + "doctor": "医生", + "doctor_female": "医生", + "fishermen": "垂钓者", + "fishermen_female": "垂钓者", + "gentleman": "绅士", + "guitarist": "吉他手", + "guitarist_female": "吉他手", + "harlequin": "滑稽演员", + "hiker": "登山男", + "hooligans": "坏组合", + "hoopster": "篮球选手", + "infielder": "棒球选手", + "janitor": "清洁员", + "lady": "千金小姐", + "lass": "迷你裙", + "linebacker": "美式橄榄球选手", + "maid": "女仆", + "madame": "女士", + "medical_team": "医疗团队", + "musican": "音乐家", + "hex_maniac": "灵异迷", + "nurse": "护士", + "nursery_aide": "幼儿园老师", + "officer": "警察", + "parasol_lady": "阳伞姐姐", + "pilot": "飞行员", + "poké_fan": "发烧友俱乐部", + "poké_fan_family": "同好夫妇", + "preschooler": "幼儿园小朋友", + "preschooler_female": "幼儿园小朋友", + "preschoolers": "幼儿园小朋友组合", + "psychic": "超能力者", + "psychic_female": "超能力者", + "psychics": "超能力者组合", + "pokémon_ranger": "宝可梦巡护员", + "pokémon_rangers": "宝可梦巡护员组合", + "ranger": "巡护员", + "restaurant_staff": "服务生组合", + "rich_boy": "富家少爷", + "rich_couple": "富豪夫妇", + "rich_kids": "富二代组合", + "roughneck": "光头男", + "scientist": "研究员", + "scientist_female": "研究员", + "scientists": "研究员组合", + "smasher": "网球选手", + "snow_worker": "雪地工人", + "snow_worker_female": "雪地工人", + "striker": "足球选手", + "school_kid": "补习班学生", + "school_kid_female": "补习班学生", + "school_kids": "补习班学生组合", + "swimmer": "泳裤小伙子", + "swimmer_female": "比基尼大姐姐", + "swimmers": "泳装情侣", + "twins": "双胞胎", + "veteran": "资深训练家", + "veteran_female": "资深训练家", + "veteran_duo": "资深组合", + "waiter": "服务生", + "waitress": "女服务生", + "worker": "工人", + "worker_female": "工人", + "workers": "工人组合", + "youngster": "短裤小子" } as const; // Names of special trainers like gym leaders, elite four, and the champion export const trainerNames: SimpleTranslationEntries = { - "brock": "Brock", - "misty": "Misty", - "lt_surge": "Lt Surge", - "erika": "Erika", - "janine": "Janine", - "sabrina": "Sabrina", - "blaine": "Blaine", - "giovanni": "Giovanni", - "falkner": "Falkner", - "bugsy": "Bugsy", - "whitney": "Whitney", - "morty": "Morty", - "chuck": "Chuck", - "jasmine": "Jasmine", - "pryce": "Pryce", - "clair": "Clair", - "roxanne": "Roxanne", - "brawly": "Brawly", - "wattson": "Wattson", - "flannery": "Flannery", - "norman": "Norman", - "winona": "Winona", - "tate": "Tate", - "liza": "Liza", - "juan": "Juan", - "roark": "Roark", - "gardenia": "Gardenia", - "maylene": "Maylene", - "crasher_wake": "Crasher Wake", - "fantina": "Fantina", - "byron": "Byron", - "candice": "Candice", - "volkner": "Volkner", - "cilan": "Cilan", - "chili": "Chili", - "cress": "Cress", - "cheren": "Cheren", - "lenora": "Lenora", - "roxie": "Roxie", - "burgh": "Burgh", - "elesa": "Elesa", - "clay": "Clay", - "skyla": "Skyla", - "brycen": "Brycen", - "drayden": "Drayden", - "marlon": "Marlon", - "viola": "Viola", - "grant": "Grant", - "korrina": "Korrina", - "ramos": "Ramos", - "clemont": "Clemont", - "valerie": "Valerie", - "olympia": "Olympia", - "wulfric": "Wulfric", - "milo": "Milo", - "nessa": "Nessa", - "kabu": "Kabu", - "bea": "Bea", - "allister": "Allister", - "opal": "Opal", - "bede": "Bede", - "gordie": "Gordie", - "melony": "Melony", - "piers": "Piers", - "marnie": "Marnie", - "raihan": "Raihan", - "katy": "Katy", - "brassius": "Brassius", - "iono": "Iono", - "kofu": "Kofu", - "larry": "Larry", - "ryme": "Ryme", - "tulip": "Tulip", - "grusha": "Grusha", - "lorelei": "Lorelei", - "bruno": "Bruno", - "agatha": "Agatha", - "lance": "Lance", - "will": "Will", - "koga": "Koga", - "karen": "Karen", - "sidney": "Sidney", - "phoebe": "Phoebe", - "glacia": "Glacia", - "drake": "Drake", - "aaron": "Aaron", - "bertha": "Bertha", - "flint": "Flint", - "lucian": "Lucian", - "shauntal": "Shauntal", - "marshal": "Marshal", - "grimsley": "Grimsley", - "caitlin": "Caitlin", - "malva": "Malva", - "siebold": "Siebold", - "wikstrom": "Wikstrom", - "drasna": "Drasna", - "hala": "Hala", - "molayne": "Molayne", - "olivia": "Olivia", - "acerola": "Acerola", - "kahili": "Kahili", - "rika": "Rika", - "poppy": "Poppy", - "larry_elite": "Larry", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here) - "hassel": "Hassel", - "crispin": "Crispin", - "amarys": "Amarys", - "lacey": "Lacey", - "drayton": "Drayton", - "blue": "Blue", - "red": "Red", - "lance_champion": "Lance", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here) - "steven": "Steven", - "wallace": "Wallace", - "cynthia": "Cynthia", - "alder": "Alder", - "iris": "Iris", - "diantha": "Diantha", + // ---- 馆主 Gym leader ---- + // 关都地区 Kanto Region + "brock": "小刚", + "misty": "小霞", + "lt_surge": "马志士", + "erika": "莉佳", + "janine": "阿杏", + "sabrina": "娜姿", + "blaine": "夏伯", + "giovanni": "坂木", + + // 城都地区 Johto Region + "falkner": "阿速", + "bugsy": "阿笔", + "whitney": "小茜", + "morty": "松叶", + "chuck": "阿四", + "jasmine": "阿蜜", + "pryce": "柳伯", + "clair": "小椿", + + // 丰缘地区 Hoenn Region + "roxanne": "杜娟", + "brawly": "藤树", + "wattson": "铁旋", + "flannery": "亚莎", + "norman": "千里", + "winona": "娜琪", + "tate": "小枫", + "liza": "小南", + "juan": "亚当", + + // 神奥地区 Sinnoh Region + "roark": "瓢太", + "gardenia": "菜种", + "maylene": "阿李", + "crasher_wake": "吉宪", + "fantina": "梅丽莎", + "byron": "东瓜", + "candice": "小菘", + "volkner": "电次", + + // 合众地区 Unova Region + "cilan": "天桐", + "chili": "伯特", + "cress": "寇恩", + "cheren": "黑连", + "lenora": "芦荟", + "roxie": "霍米加", + "burgh": "亚堤", + "elesa": "小菊儿", + "clay": "菊老大", + "skyla": "风露", + "brycen": "哈奇库", + "drayden": "夏卡", + "marlon": "西子伊", + + // 卡洛斯地区 Kalos Region + "viola": "紫罗兰", + "grant": "查克洛", + "korrina": "可尔妮", + "ramos": "福爷", + "clemont": "希特隆", + "valerie": "玛绣", + "olympia": "葛吉花", + "wulfric": "得抚", + + // 伽勒尔地区 Galar Region + "milo": "亚洛", + "nessa": "露璃娜", + "kabu": "卡芜", + "bea": "彩豆", + "allister": "欧尼奥", + "opal": "波普菈", + "bede": "彼特", + "gordie": "玛瓜", + "melony": "美蓉", + "piers": "聂梓", + "marnie": "玛俐", + "raihan": "奇巴纳", + + // 帕底亚地区 Paldea Region + "katy": "阿枫", + "brassius": "寇沙", + "iono": "奇树", + "kofu": "海岱", + "larry": "青木", + "ryme": "莱姆", + "tulip": "莉普", + "grusha": "古鲁夏", + + // ---- 四天王 Elite Four ---- + // 关都地区 Kanto Region + "lorelei": "科拿", + "bruno": "希巴", + "agatha": "菊子", + "lance": "阿渡", + + // 城都地区 Johto Region + "will": "一树", + "koga": "阿桔", + "karen": "梨花", + + // 丰都地区 Hoenn Region + "sidney": "花月", + "phoebe": "芙蓉", + "glacia": "波妮", + "drake": "源治", + + // 神奥地区 Sinnoh Region + "aaron": "阿柳", + "bertha": "菊野", + "flint": "大叶", + "lucian": "悟松", + + // 合众地区 Unova Region + "shauntal": "婉龙", + "marshal": "连武", + "grimsley": "越橘", + "caitlin": "嘉德丽雅", + + // 卡洛斯地区 Kalos Region + "malva": "帕琦拉", + "siebold": "志米", + "wikstrom": "雁铠", + "drasna": "朵拉塞娜", + + // 阿罗拉地区 Alola Region + "hala": "哈拉", + "molayne": "马睿因", + "olivia": "丽姿", + "acerola": "阿塞萝拉", + "kahili": "卡希丽", + + // 帕底亚地区 Paldea Region + "rika": "辛俐", + "poppy": "波琵", + "larry_elite": "青木", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here) + "hassel": "八朔", + + // 蓝莓学院 Blueberry Academy + "crispin": "赤松", + "amarys": "纳莉", + "lacey": "紫竽", + "drayton": "杜若", + + // ---- 冠军 Champion ---- + // 关都地区 Kanto Region + "blue": "青绿", + "red": "赤红", + + // 城都地区 Johto Region + "lance_champion": "阿渡", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here) + + // 丰缘地区 Hoenn Region + "steven": "大吾", + "wallace": "米可利", + + // 神奥地区 Sinnoh Region + "cynthia": "竹兰", + + // 合众地区 Unova Region + "alder": "阿戴克", + "iris": "艾莉丝", + + // 卡洛斯地区 Kalos Region + "diantha": "哈乌", + + // 阿罗拉地区 Alola Region "hau": "Hau", - "geeta": "Geeta", - "nemona": "Nemona", - "kieran": "Kieran", + + // 伽勒尔地区 Galar Region "leon": "Leon", - "rival": "Finn", - "rival_female": "Ivy", + + // 帕底亚地区 paldea Region + "geeta": "也慈", + "nemona": "妮莫", + + // 蓝莓学院 Blueberry academy + "kieran": "乌栗", + + // 劲敌 rival + "rival": "芬恩", + "rival_female": "艾薇", } as const; From dd3d38b5d86ea21817f0dd7b2dd89d95b163c41b Mon Sep 17 00:00:00 2001 From: Vaner42 <94883874+Vaner42@users.noreply.github.com> Date: Fri, 17 May 2024 11:03:26 +0800 Subject: [PATCH 16/17] =?UTF-8?q?fixed=20translate=20'hau'=E3=80=81=20?= =?UTF-8?q?=E2=80=98diantha=E2=80=99=20=E3=80=81=E2=80=98leon=E2=80=99=20i?= =?UTF-8?q?nto=20Simplified=20Chinese.=20(#1009)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Translate 'trainer' into Simplified Chinese. * fixed translate 'hau'、 ‘diantha’ 、‘leon’ into Simplified Chinese. --------- Co-authored-by: Junhan --- src/locales/zh_CN/trainers.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/zh_CN/trainers.ts b/src/locales/zh_CN/trainers.ts index b3b89d0057d..5db37c78a6b 100644 --- a/src/locales/zh_CN/trainers.ts +++ b/src/locales/zh_CN/trainers.ts @@ -277,13 +277,13 @@ export const trainerNames: SimpleTranslationEntries = { "iris": "艾莉丝", // 卡洛斯地区 Kalos Region - "diantha": "哈乌", + "diantha": "卡露妮", // 阿罗拉地区 Alola Region - "hau": "Hau", + "hau": "哈乌", // 伽勒尔地区 Galar Region - "leon": "Leon", + "leon": "丹帝", // 帕底亚地区 paldea Region "geeta": "也慈", From 1bd3ec2fd662d966c70526d067bc7dc4acf42005 Mon Sep 17 00:00:00 2001 From: Charlie Giang <146129103+charliegiang@users.noreply.github.com> Date: Thu, 16 May 2024 22:09:40 -0500 Subject: [PATCH 17/17] Fix ingrain for Phantump and Trevenant (#856) (#998) --- src/data/battler-tags.ts | 7 ++++++- src/phases.ts | 11 ++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 3dca2a3cadf..6ab249864cd 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -15,6 +15,7 @@ import { TerrainType } from "./terrain"; import { WeatherType } from "./weather"; import { BattleStat } from "./battle-stat"; import { allAbilities } from "./ability"; +import { Species } from "./enums/species"; export enum BattlerTagLapseType { FAINT, @@ -117,7 +118,11 @@ export class TrappedTag extends BattlerTag { } canAdd(pokemon: Pokemon): boolean { - return !pokemon.isOfType(Type.GHOST) && !pokemon.getTag(BattlerTagType.TRAPPED); + const isGhost = pokemon.isOfType(Type.GHOST); + const isTrapped = pokemon.getTag(BattlerTagType.TRAPPED); + const isAllowedGhostType = pokemon.species.speciesId === Species.PHANTUMP || pokemon.species.speciesId === Species.TREVENANT; + + return !isTrapped && (!isGhost || isAllowedGhostType); } onAdd(pokemon: Pokemon): void { diff --git a/src/phases.ts b/src/phases.ts index 89b4974b853..90d9a54d288 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -60,6 +60,8 @@ import i18next from './plugins/i18n'; import { Abilities } from "./data/enums/abilities"; import * as Overrides from './overrides'; import { TextStyle, addTextObject } from "./ui/text"; +import { Type } from "./data/type"; + export class LoginPhase extends Phase { private showText: boolean; @@ -1816,7 +1818,14 @@ export class CommandPhase extends FieldPhase { if (!isSwitch && this.fieldIndex) this.scene.currentBattle.turnCommands[this.fieldIndex - 1].skip = true; } else if (trapTag) { - if (!isSwitch) { + if(trapTag.sourceMove === Moves.INGRAIN && this.scene.getPokemonById(trapTag.sourceId).isOfType(Type.GHOST)) { + success = true; + this.scene.currentBattle.turnCommands[this.fieldIndex] = isSwitch + ? { command: Command.POKEMON, cursor: cursor, args: args } + : { command: Command.RUN }; + break; + } + if (!isSwitch) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); }