diff --git a/src/locales/de/ability.ts b/src/locales/de/ability.ts index 17472339717..3d83a34754c 100644 --- a/src/locales/de/ability.ts +++ b/src/locales/de/ability.ts @@ -894,27 +894,27 @@ export const ability: AbilityTranslationEntries = { description: "Wechselt seine Fähigkeit zu der eines kampfunfähig gewordenen Mitstreiters.", }, beastBoost: { - name: "BestienBoost", + name: "Bestien-Boost", description: "Erhöht in jeder Runde, in der es ein anderes Pokémon besiegt, seinen höchsten Statuswert.", }, rksSystem: { - name: "AlphaSystem", + name: "Alpha-System", description: "Das Pokémon passt seinen Typ der getragenen Disc an.", }, electricSurge: { - name: "ElektroErzeuger", + name: "Elektro-Erzeuger", description: "Erzeugt bei Kampfantritt ein Elektrofeld.", }, psychicSurge: { - name: "PsychoErzeuger", + name: "Psycho-Erzeuger", description: "Erzeugt bei Kampfantritt ein Psychofeld.", }, mistySurge: { - name: "NebelErzeuger", + name: "Nebel-Erzeuger", description: "Erzeugt bei Kampfantritt ein Nebelfeld.", }, grassySurge: { - name: "GrasErzeuger", + name: "Gras-Erzeuger", description: "Erzeugt bei Kampfantritt ein Grasfeld.", }, fullMetalBody: { diff --git a/src/locales/de/achv.ts b/src/locales/de/achv.ts index 6b0a5cb9b3f..a539091f88e 100644 --- a/src/locales/de/achv.ts +++ b/src/locales/de/achv.ts @@ -2,170 +2,171 @@ import { AchievementTranslationEntries } from "#app/plugins/i18n.js"; export const achv: AchievementTranslationEntries = { "Achievements": { - name: "Achievements", + name: "Errungenschaften", }, "Locked": { - name: "Locked", + name: "Gesperrt", }, + "MoneyAchv": { - description: "Accumulate a total of ₽{{moneyAmount}}", + description:"Häufe eine Gesamtsumme von {{moneyAmount}} ₽ an", }, "10K_MONEY": { - name: "Money Haver", + name: "Geldhüter", }, "100K_MONEY": { - name: "Rich", + name: "Reich", }, "1M_MONEY": { - name: "Millionaire", + name: "Millionär", }, "10M_MONEY": { - name: "One Percenter", + name: "Einprozenter", }, "DamageAchv": { - description: "Inflict {{damageAmount}} damage in one hit", + description: "Füge mit einem Treffer {{damageAmount}} Schaden zu", }, "250_DMG": { - name: "Hard Hitter", + name: "Harte Treffer", }, "1000_DMG": { - name: "Harder Hitter", + name: "Härtere Treffer", }, "2500_DMG": { - name: "That's a Lotta Damage!", + name: "Das ist ne Menge Schaden!", }, "10000_DMG": { - name: "One Punch Man", + name: "Ein-Schlag-Mann", }, "HealAchv": { - description: "Heal {{healAmount}} {{HP}} at once with a move, ability, or held item", + description: "Heile {{healAmount}} {{HP}} auf einmal. Mit einer Attacke, einer Fähigkeit oder einem gehaltenen Gegenstand", }, "250_HEAL": { - name: "Novice Healer", + name: "Anfänger-Heiler", }, "1000_HEAL": { - name: "Big Healer", + name: "Gesundheitsprofi", }, "2500_HEAL": { - name: "Cleric", + name: "Kleriker", }, "10000_HEAL": { - name: "Recovery Master", + name: "Wiederherstellungsmeister", }, "LevelAchv": { - description: "Level up a Pokémon to Lv{{level}}", + description: "Erhöhe das Level eines Pokémon auf {{level}}", }, "LV_100": { - name: "But Wait, There's More!", + name: "Warte, es gibt mehr!", }, "LV_250": { name: "Elite", }, "LV_1000": { - name: "To Go Even Further Beyond", + name: "Geh noch höher hinaus!", }, "RibbonAchv": { - description: "Accumulate a total of {{ribbonAmount}} Ribbons", + description: "Sammle insgesamt {{ribbonAmount}} Bänder", }, "10_RIBBONS": { - name: "Pokémon League Champion", + name: "Champion der Pokémon Liga", }, "25_RIBBONS": { - name: "Great League Champion", + name: "Bänder-Sammler", }, "50_RIBBONS": { - name: "Ultra League Champion", + name: "Bänder-Experte", }, "75_RIBBONS": { - name: "Rogue League Champion", + name: "Bänder-Guru", }, "100_RIBBONS": { - name: "Master League Champion", + name: "Bänder-Meister", }, "TRANSFER_MAX_BATTLE_STAT": { name: "Teamwork", - description: "Baton pass to another party member with at least one stat maxed out", + description: "Nutze Staffette auf ein anderes Teammitglied, während der Anwender mindestens eines Statuswertes maximiert hat", }, "MAX_FRIENDSHIP": { - name: "Friendmaxxing", - description: "Reach max friendship on a Pokémon", + name: "Freundschaftsmaximierung", + description: "Erreiche maximale Freundschaft bei einem Pokémon", }, "MEGA_EVOLVE": { - name: "Megamorph", - description: "Mega evolve a Pokémon", + name: "Megaverwandlung", + description: "Megaentwickle ein Pokémon", }, "GIGANTAMAX": { - name: "Absolute Unit", - description: "Gigantamax a Pokémon", + name: "Absolute Einheit", + description: "Gigadynamaximiere ein Pokémon", }, "TERASTALLIZE": { - name: "STAB Enthusiast", - description: "Terastallize a Pokémon", + name: "Typen-Bonus Enthusiast", + description: "Terrakristallisiere ein Pokémon", }, "STELLAR_TERASTALLIZE": { - name: "The Hidden Type", - description: "Stellar Terastallize a Pokémon", + name: "Der geheime Typ", + description: "Terrakristallisiere ein Pokémon zum Typen Stellar", }, "SPLICE": { - name: "Infinite Fusion", - description: "Splice two Pokémon together with DNA Splicers", + name: "Unendliche Fusion", + description: "Kombiniere zwei Pokémon mit einem DNS-Keil", }, "MINI_BLACK_HOLE": { - name: "A Hole Lot of Items", - description: "Acquire a Mini Black Hole", + name: "Ein Loch voller Items", + description: "Erlange ein Mini-Schwarzes Loch", }, "CATCH_MYTHICAL": { - name: "Mythical", - description: "Catch a mythical Pokémon", + name: "Mysteriöses!", + description: "Fange ein mysteriöses Pokémon", }, "CATCH_SUB_LEGENDARY": { - name: "(Sub-)Legendary", - description: "Catch a sub-legendary Pokémon", + name: "Sub-Legendär", + description: "Fange ein sub-legendäres Pokémon", }, "CATCH_LEGENDARY": { - name: "Legendary", - description: "Catch a legendary Pokémon", + name: "Legendär", + description: "Fange ein legendäres Pokémon", }, "SEE_SHINY": { - name: "Shiny", - description: "Find a shiny Pokémon in the wild", + name: "Schillerndes Licht", + description: "Finde ein wildes schillerndes Pokémon", }, "SHINY_PARTY": { - name: "That's Dedication", - description: "Have a full party of shiny Pokémon", + name: "Das ist Hingabe", + description: "Habe ein Team aus schillernden Pokémon", }, "HATCH_MYTHICAL": { - name: "Mythical Egg", - description: "Hatch a mythical Pokémon from an egg", + name: "Mysteriöses Ei", + description: "Lass ein mysteriöses Pokémon aus einem Ei schlüpfen", }, "HATCH_SUB_LEGENDARY": { - name: "Sub-Legendary Egg", - description: "Hatch a sub-legendary Pokémon from an egg", + name: "Sub-Legendäres Ei", + description: "Lass ein sub-legendäres Pokémon aus einem Ei schlüpfen", }, "HATCH_LEGENDARY": { - name: "Legendary Egg", - description: "Hatch a legendary Pokémon from an egg", + name: "Legendäres Ei", + description: "Lass ein legendäres Pokémon aus einem Ei schlüpfen", }, "HATCH_SHINY": { - name: "Shiny Egg", - description: "Hatch a shiny Pokémon from an egg", + name: "Schillerndes Ei", + description: "Lass ein schillerndes Pokémon aus einem Ei schlüpfen", }, "HIDDEN_ABILITY": { - name: "Hidden Potential", - description: "Catch a Pokémon with a hidden ability", + name: "Geheimes Talent", + description: "Fang ein Pokémon mit versteckter Fähigkeit", }, "PERFECT_IVS": { - name: "Certificate of Authenticity", - description: "Get perfect IVs on a Pokémon", + name: "Zertifikat der Echtheit", + description: "Erhalte ein Pokémon mit perfekten IS-Werten", }, "CLASSIC_VICTORY": { - name: "Undefeated", - description: "Beat the game in classic mode", + name: "Ungeschlagen", + description: "Beende den klassischen Modus erfolgreich", }, } as const; diff --git a/src/locales/de/pokemon-info.ts b/src/locales/de/pokemon-info.ts index 772a09cb656..00c1470f855 100644 --- a/src/locales/de/pokemon-info.ts +++ b/src/locales/de/pokemon-info.ts @@ -2,8 +2,8 @@ import { PokemonInfoTranslationEntries } from "#app/plugins/i18n"; export const pokemonInfo: PokemonInfoTranslationEntries = { Stat: { - "HP": "Max. KP", - "HPshortened": "MaxKP", + "HP": "KP", + "HPshortened": "KP", "ATK": "Angriff", "ATKshortened": "Ang", "DEF": "Verteidigung", diff --git a/src/locales/de/starter-select-ui-handler.ts b/src/locales/de/starter-select-ui-handler.ts index 0723c14ad82..dba6b2f50c5 100644 --- a/src/locales/de/starter-select-ui-handler.ts +++ b/src/locales/de/starter-select-ui-handler.ts @@ -17,7 +17,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = { "gen8": "VIII", "gen9": "IX", "growthRate": "Wachstum:", - "ability": "Fähgkeit:", + "ability": "Fähigkeit:", "passive": "Passiv:", "nature": "Wesen:", "eggMoves": "Ei-Attacken", diff --git a/src/system/achv.ts b/src/system/achv.ts index a4378f29de0..aefb2b72119 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -13,6 +13,7 @@ export enum AchvTier { } export class Achv { + public localizationKey: string; public id: string; public name: string; public description: string; @@ -25,12 +26,13 @@ export class Achv { private conditionFunc: (scene: BattleScene, args: any[]) => boolean; - constructor(name: string, description: string, iconImage: string, score: integer, conditionFunc?: (scene: BattleScene, args: any[]) => boolean) { + constructor(localizationKey:string, name: string, description: string, iconImage: string, score: integer, conditionFunc?: (scene: BattleScene, args: any[]) => boolean) { this.name = name; this.description = description; this.iconImage = iconImage; this.score = score; this.conditionFunc = conditionFunc; + this.localizationKey = localizationKey; } getName(): string { @@ -65,102 +67,191 @@ export class Achv { } export class MoneyAchv extends Achv { - private moneyAmount: integer; - - constructor(name: string, moneyAmount: integer, iconImage: string, score: integer) { - super(name, i18next.t("achv:MoneyAchv.description", {"moneyAmount": moneyAmount.toLocaleString('en-US')}), iconImage, score, (scene: BattleScene, _args: any[]) => scene.money >= this.moneyAmount); + moneyAmount: integer; + constructor(localizationKey: string, name: string, moneyAmount: integer, iconImage: string, score: integer) { + super(localizationKey, name, '', iconImage, score, (scene: BattleScene, _args: any[]) => scene.money >= this.moneyAmount); this.moneyAmount = moneyAmount; } } export class RibbonAchv extends Achv { - private ribbonAmount: integer; - - constructor(name: string, ribbonAmount: integer, iconImage: string, score: integer) { - super(name, i18next.t("achv:RibbonAchv.description", {"ribbonAmount": ribbonAmount.toLocaleString('en-US')}), iconImage, score, (scene: BattleScene, _args: any[]) => scene.gameData.gameStats.ribbonsOwned >= this.ribbonAmount); + ribbonAmount: integer; + constructor(localizationKey: string, name: string, ribbonAmount: integer, iconImage: string, score: integer) { + super(localizationKey, name, '', iconImage, score, (scene: BattleScene, _args: any[]) => scene.gameData.gameStats.ribbonsOwned >= this.ribbonAmount); this.ribbonAmount = ribbonAmount; } } export class DamageAchv extends Achv { - private damageAmount: integer; - - constructor(name: string, damageAmount: integer, iconImage: string, score: integer) { - super(name, i18next.t("achv:DamageAchv.description", {"damageAmount": damageAmount.toLocaleString('en-US')}), iconImage, score, (_scene: BattleScene, args: any[]) => (args[0] as Utils.NumberHolder).value >= this.damageAmount); + damageAmount: integer; + constructor(localizationKey: string, name: string, damageAmount: integer, iconImage: string, score: integer) { + super(localizationKey, name, '', iconImage, score, (_scene: BattleScene, args: any[]) => (args[0] as Utils.NumberHolder).value >= this.damageAmount); this.damageAmount = damageAmount; } } export class HealAchv extends Achv { - private healAmount: integer; - - constructor(name: string, healAmount: integer, iconImage: string, score: integer) { - super(name, i18next.t("achv:HealAchv.description", {"healAmount": healAmount.toLocaleString('en-US'), "HP": i18next.t("pokemonInfo:Stat.HPshortened")}), iconImage, score, (_scene: BattleScene, args: any[]) => (args[0] as Utils.NumberHolder).value >= this.healAmount); + healAmount: integer; + constructor(localizationKey: string, name: string, healAmount: integer, iconImage: string, score: integer) { + super(localizationKey, name, '', iconImage, score, (_scene: BattleScene, args: any[]) => (args[0] as Utils.NumberHolder).value >= this.healAmount); this.healAmount = healAmount; } } export class LevelAchv extends Achv { - private level: integer; - - constructor(name: string, level: integer, iconImage: string, score: integer) { - super(name, i18next.t("achv:LevelAchv.description", {"level": level}), iconImage, score, (scene: BattleScene, args: any[]) => (args[0] as Utils.IntegerHolder).value >= this.level); + level: integer; + constructor(localizationKey: string, name: string, level: integer, iconImage: string, score: integer) { + super(localizationKey, name, '', iconImage, score, (scene: BattleScene, args: any[]) => (args[0] as Utils.IntegerHolder).value >= this.level); this.level = level; } } export class ModifierAchv extends Achv { - constructor(name: string, description: string, iconImage: string, score: integer, modifierFunc: (modifier: Modifier) => boolean) { - super(name, description, iconImage, score, (_scene: BattleScene, args: any[]) => modifierFunc((args[0] as Modifier))); + constructor(localizationKey: string, name: string, description: string, iconImage: string, score: integer, modifierFunc: (modifier: Modifier) => boolean) { + super(localizationKey, name, description, iconImage, score, (_scene: BattleScene, args: any[]) => modifierFunc((args[0] as Modifier))); } } + +/** + * Get the description of an achievement from the localization file with all the necessary variables filled in + * @param localizationKey The localization key of the achievement + * @returns The description of the achievement + */ +export function getAchievementDescription(localizationKey: string): string { + switch (localizationKey) { + case "10K_MONEY": + return i18next.t("achv:MoneyAchv.description", {"moneyAmount": achvs._10K_MONEY.moneyAmount.toLocaleString('en-US')}); + case "100K_MONEY": + return i18next.t("achv:MoneyAchv.description", {"moneyAmount": achvs._100K_MONEY.moneyAmount.toLocaleString('en-US')}); + case "1M_MONEY": + return i18next.t("achv:MoneyAchv.description", {"moneyAmount": achvs._1M_MONEY.moneyAmount.toLocaleString('en-US')}); + case "10M_MONEY": + return i18next.t("achv:MoneyAchv.description", {"moneyAmount": achvs._10M_MONEY.moneyAmount.toLocaleString('en-US')}); + case "250_DMG": + return i18next.t("achv:DamageAchv.description", {"damageAmount": achvs._250_DMG.damageAmount.toLocaleString('en-US')}); + case "1000_DMG": + return i18next.t("achv:DamageAchv.description", {"damageAmount": achvs._1000_DMG.damageAmount.toLocaleString('en-US')}); + case "2500_DMG": + return i18next.t("achv:DamageAchv.description", {"damageAmount": achvs._2500_DMG.damageAmount.toLocaleString('en-US')}); + case "10000_DMG": + return i18next.t("achv:DamageAchv.description", {"damageAmount": achvs._10000_DMG.damageAmount.toLocaleString('en-US')}); + case "250_HEAL": + return i18next.t("achv:HealAchv.description", {"healAmount": achvs._250_HEAL.healAmount.toLocaleString('en-US'), "HP": i18next.t("pokemonInfo:Stat.HPshortened")}); + case "1000_HEAL": + return i18next.t("achv:HealAchv.description", {"healAmount": achvs._1000_HEAL.healAmount.toLocaleString('en-US'), "HP": i18next.t("pokemonInfo:Stat.HPshortened")}); + case "2500_HEAL": + return i18next.t("achv:HealAchv.description", {"healAmount": achvs._2500_HEAL.healAmount.toLocaleString('en-US'), "HP": i18next.t("pokemonInfo:Stat.HPshortened")}); + case "10000_HEAL": + return i18next.t("achv:HealAchv.description", {"healAmount": achvs._10000_HEAL.healAmount.toLocaleString('en-US'), "HP": i18next.t("pokemonInfo:Stat.HPshortened")}); + case "LV_100": + return i18next.t("achv:LevelAchv.description", {"level": achvs.LV_100.level}); + case "LV_250": + return i18next.t("achv:LevelAchv.description", {"level": achvs.LV_250.level}); + case "LV_1000": + return i18next.t("achv:LevelAchv.description", {"level": achvs.LV_1000.level}); + case "10_RIBBONS": + return i18next.t("achv:RibbonAchv.description", {"ribbonAmount": achvs._10_RIBBONS.ribbonAmount.toLocaleString('en-US')}); + case "25_RIBBONS": + return i18next.t("achv:RibbonAchv.description", {"ribbonAmount": achvs._25_RIBBONS.ribbonAmount.toLocaleString('en-US')}); + case "50_RIBBONS": + return i18next.t("achv:RibbonAchv.description", {"ribbonAmount": achvs._50_RIBBONS.ribbonAmount.toLocaleString('en-US')}); + case "75_RIBBONS": + return i18next.t("achv:RibbonAchv.description", {"ribbonAmount": achvs._75_RIBBONS.ribbonAmount.toLocaleString('en-US')}); + case "100_RIBBONS": + return i18next.t("achv:RibbonAchv.description", {"ribbonAmount": achvs._100_RIBBONS.ribbonAmount.toLocaleString('en-US')}); + case "TRANSFER_MAX_BATTLE_STAT": + return i18next.t("achv:TRANSFER_MAX_BATTLE_STAT.description"); + case "MAX_FRIENDSHIP": + return i18next.t("achv:MAX_FRIENDSHIP.description"); + case "MEGA_EVOLVE": + return i18next.t("achv:MEGA_EVOLVE.description"); + case "GIGANTAMAX": + return i18next.t("achv:GIGANTAMAX.description"); + case "TERASTALLIZE": + return i18next.t("achv:TERASTALLIZE.description"); + case "STELLAR_TERASTALLIZE": + return i18next.t("achv:STELLAR_TERASTALLIZE.description"); + case "SPLICE": + return i18next.t("achv:SPLICE.description"); + case "MINI_BLACK_HOLE": + return i18next.t("achv:MINI_BLACK_HOLE.description"); + case "CATCH_MYTHICAL": + return i18next.t("achv:CATCH_MYTHICAL.description"); + case "CATCH_SUB_LEGENDARY": + return i18next.t("achv:CATCH_SUB_LEGENDARY.description"); + case "CATCH_LEGENDARY": + return i18next.t("achv:CATCH_LEGENDARY.description"); + case "SEE_SHINY": + return i18next.t("achv:SEE_SHINY.description"); + case "SHINY_PARTY": + return i18next.t("achv:SHINY_PARTY.description"); + case "HATCH_MYTHICAL": + return i18next.t("achv:HATCH_MYTHICAL.description"); + case "HATCH_SUB_LEGENDARY": + return i18next.t("achv:HATCH_SUB_LEGENDARY.description"); + case "HATCH_LEGENDARY": + return i18next.t("achv:HATCH_LEGENDARY.description"); + case "HATCH_SHINY": + return i18next.t("achv:HATCH_SHINY.description"); + case "HIDDEN_ABILITY": + return i18next.t("achv:HIDDEN_ABILITY.description"); + case "PERFECT_IVS": + return i18next.t("achv:PERFECT_IVS.description"); + case "CLASSIC_VICTORY": + return i18next.t("achv:CLASSIC_VICTORY.description"); + default: + return ""; + } + +} + export const achvs = { - _10K_MONEY: new MoneyAchv(i18next.t("achv:10K_MONEY.name"), 10000, 'nugget', 10), - _100K_MONEY: new MoneyAchv(i18next.t("achv:100K_MONEY.name"), 100000, 'big_nugget', 25).setSecret(true), - _1M_MONEY: new MoneyAchv(i18next.t("achv:1M_MONEY.name"), 1000000, 'relic_gold', 50).setSecret(true), - _10M_MONEY: new MoneyAchv(i18next.t("achv:10M_MONEY.name"), 10000000, 'coin_case', 100).setSecret(true), - _250_DMG: new DamageAchv(i18next.t("achv:250_DMG.name"), 250, 'lucky_punch', 10), - _1000_DMG: new DamageAchv(i18next.t("achv:1000_DMG.name"), 1000, 'lucky_punch_great', 25).setSecret(true), - _2500_DMG: new DamageAchv(i18next.t("achv:2500_DMG.name"), 2500, 'lucky_punch_ultra', 50).setSecret(true), - _10000_DMG: new DamageAchv(i18next.t("achv:10000_DMG.name"), 10000, 'lucky_punch_master', 100).setSecret(true), - _250_HEAL: new HealAchv(i18next.t("achv:250_HEAL.name"), 250, 'potion', 10), - _1000_HEAL: new HealAchv(i18next.t("achv:1000_HEAL.name"), 1000, 'super_potion', 25).setSecret(true), - _2500_HEAL: new HealAchv(i18next.t("achv:2500_HEAL.name"), 2500, 'hyper_potion', 50).setSecret(true), - _10000_HEAL: new HealAchv(i18next.t("achv:10000_HEAL.name"), 10000, 'max_potion', 100).setSecret(true), - LV_100: new LevelAchv(i18next.t("achv:LV_100.name"), 100, 'rare_candy', 25).setSecret(), - LV_250: new LevelAchv(i18next.t("achv:LV_250.name"), 250, 'rarer_candy', 50).setSecret(true), - LV_1000: new LevelAchv(i18next.t("achv:LV_1000.name"), 1000, 'candy_jar', 100).setSecret(true), - _10_RIBBONS: new RibbonAchv(i18next.t("achv:10_RIBBONS.name"), 10, 'bronze_ribbon', 10), - _25_RIBBONS: new RibbonAchv(i18next.t("achv:25_RIBBONS.name"), 25, 'great_ribbon', 25).setSecret(true), - _50_RIBBONS: new RibbonAchv(i18next.t("achv:50_RIBBONS.name"), 50, 'ultra_ribbon', 50).setSecret(true), - _75_RIBBONS: new RibbonAchv(i18next.t("achv:75_RIBBONS.name"), 75, 'rogue_ribbon', 75).setSecret(true), - _100_RIBBONS: new RibbonAchv(i18next.t("achv:100_RIBBONS.name"), 100, 'master_ribbon', 100).setSecret(true), - TRANSFER_MAX_BATTLE_STAT: new Achv(i18next.t("achv:TRANSFER_MAX_BATTLE_STAT.name"), i18next.t("achv:TRANSFER_MAX_BATTLE_STAT.description"), 'stick', 20), - MAX_FRIENDSHIP: new Achv(i18next.t("achv:MAX_FRIENDSHIP.name"), i18next.t("achv:MAX_FRIENDSHIP.description"), 'soothe_bell', 25), - MEGA_EVOLVE: new Achv(i18next.t("achv:MEGA_EVOLVE.name"), i18next.t("achv:MEGA_EVOLVE.description"), 'mega_bracelet', 50), - GIGANTAMAX: new Achv(i18next.t("achv:GIGANTAMAX.name"), i18next.t("achv:GIGANTAMAX.description"), 'dynamax_band', 50), - TERASTALLIZE: new Achv(i18next.t("achv:TERASTALLIZE.name"), i18next.t("achv:TERASTALLIZE.description"), 'tera_orb', 25), - STELLAR_TERASTALLIZE: new Achv(i18next.t("achv:STELLAR_TERASTALLIZE.name"), i18next.t("achv:STELLAR_TERASTALLIZE.description"), 'stellar_tera_shard', 25).setSecret(true), - SPLICE: new Achv(i18next.t("achv:SPLICE.name"), i18next.t("achv:SPLICE.description"), 'dna_splicers', 10), - MINI_BLACK_HOLE: new ModifierAchv(i18next.t("achv:MINI_BLACK_HOLE.name"), i18next.t("achv:MINI_BLACK_HOLE.description"), 'mini_black_hole', 25, modifier => modifier instanceof TurnHeldItemTransferModifier).setSecret(), - CATCH_MYTHICAL: new Achv(i18next.t("achv:CATCH_MYTHICAL.name"), i18next.t("achv:CATCH_MYTHICAL.description"), 'strange_ball', 50).setSecret(), - CATCH_SUB_LEGENDARY: new Achv(i18next.t("achv:CATCH_SUB_LEGENDARY.name"), i18next.t("achv:CATCH_SUB_LEGENDARY.description"), 'rb', 75).setSecret(), - CATCH_LEGENDARY: new Achv(i18next.t("achv:CATCH_LEGENDARY.name"), i18next.t("achv:CATCH_LEGENDARY.description"), 'mb', 100).setSecret(), - SEE_SHINY: new Achv(i18next.t("achv:SEE_SHINY.name"), i18next.t("achv:SEE_SHINY.description"), 'pb_gold', 75), - SHINY_PARTY: new Achv(i18next.t("achv:SHINY_PARTY.name"), i18next.t("achv:SHINY_PARTY.description"), 'shiny_charm', 100).setSecret(true), - HATCH_MYTHICAL: new Achv(i18next.t("achv:HATCH_MYTHICAL.name"), i18next.t("achv:HATCH_MYTHICAL.description"), 'pair_of_tickets', 75).setSecret(), - HATCH_SUB_LEGENDARY: new Achv(i18next.t("achv:HATCH_SUB_LEGENDARY.name"), i18next.t("achv:HATCH_SUB_LEGENDARY.description"), 'mystic_ticket', 100).setSecret(), - HATCH_LEGENDARY: new Achv(i18next.t("achv:HATCH_LEGENDARY.name"), i18next.t("achv:HATCH_LEGENDARY.description"), 'mystic_ticket', 125).setSecret(), - HATCH_SHINY: new Achv(i18next.t("achv:HATCH_SHINY.name"), i18next.t("achv:HATCH_SHINY.description"), 'golden_mystic_ticket', 100).setSecret(), - HIDDEN_ABILITY: new Achv(i18next.t("achv:HIDDEN_ABILITY.name"), i18next.t("achv:HIDDEN_ABILITY.description"), 'ability_charm', 75), - PERFECT_IVS: new Achv(i18next.t("achv:PERFECT_IVS.name"), i18next.t("achv:PERFECT_IVS.description"), 'blunder_policy', 100), - CLASSIC_VICTORY: new Achv(i18next.t("achv:CLASSIC_VICTORY.name"), i18next.t("achv:CLASSIC_VICTORY.description"), 'relic_crown', 150), + _10K_MONEY: new MoneyAchv("10K_MONEY", "",10000, 'nugget', 10), + _100K_MONEY: new MoneyAchv("100K_MONEY", "",100000, 'big_nugget', 25).setSecret(true), + _1M_MONEY: new MoneyAchv("1M_MONEY","", 1000000, 'relic_gold', 50).setSecret(true), + _10M_MONEY: new MoneyAchv("10M_MONEY","", 10000000, 'coin_case', 100).setSecret(true), + _250_DMG: new DamageAchv("250_DMG","", 250, 'lucky_punch', 10), + _1000_DMG: new DamageAchv("1000_DMG","", 1000, 'lucky_punch_great', 25).setSecret(true), + _2500_DMG: new DamageAchv("2500_DMG","", 2500, 'lucky_punch_ultra', 50).setSecret(true), + _10000_DMG: new DamageAchv("10000_DMG","", 10000, 'lucky_punch_master', 100).setSecret(true), + _250_HEAL: new HealAchv("250_HEAL","", 250, 'potion', 10), + _1000_HEAL: new HealAchv("1000_HEAL", "",1000, 'super_potion', 25).setSecret(true), + _2500_HEAL: new HealAchv("2500_HEAL","", 2500, 'hyper_potion', 50).setSecret(true), + _10000_HEAL: new HealAchv("10000_HEAL","", 10000, 'max_potion', 100).setSecret(true), + LV_100: new LevelAchv("LV_100", "",100, 'rare_candy', 25).setSecret(), + LV_250: new LevelAchv("LV_250", "",250, 'rarer_candy', 50).setSecret(true), + LV_1000: new LevelAchv("LV_1000", "",1000, 'candy_jar', 100).setSecret(true), + _10_RIBBONS: new RibbonAchv("10_RIBBONS","", 10, 'bronze_ribbon', 10), + _25_RIBBONS: new RibbonAchv("25_RIBBONS", "",25, 'great_ribbon', 25).setSecret(true), + _50_RIBBONS: new RibbonAchv("50_RIBBONS","", 50, 'ultra_ribbon', 50).setSecret(true), + _75_RIBBONS: new RibbonAchv("75_RIBBONS","", 75, 'rogue_ribbon', 75).setSecret(true), + _100_RIBBONS: new RibbonAchv("100_RIBBONS","", 100, 'master_ribbon', 100).setSecret(true), + TRANSFER_MAX_BATTLE_STAT: new Achv("TRANSFER_MAX_BATTLE_STAT","", "TRANSFER_MAX_BATTLE_STAT.description", 'stick', 20), + MAX_FRIENDSHIP: new Achv("MAX_FRIENDSHIP", "", "MAX_FRIENDSHIP.description", 'soothe_bell', 25), + MEGA_EVOLVE: new Achv("MEGA_EVOLVE", "", "MEGA_EVOLVE.description", 'mega_bracelet', 50), + GIGANTAMAX: new Achv("GIGANTAMAX", "", "GIGANTAMAX.description", 'dynamax_band', 50), + TERASTALLIZE: new Achv("TERASTALLIZE","", "TERASTALLIZE.description", 'tera_orb', 25), + STELLAR_TERASTALLIZE: new Achv("STELLAR_TERASTALLIZE", "", "STELLAR_TERASTALLIZE.description", 'stellar_tera_shard', 25).setSecret(true), + SPLICE: new Achv("SPLICE","", "SPLICE.description", 'dna_splicers', 10), + MINI_BLACK_HOLE: new ModifierAchv("MINI_BLACK_HOLE","", "MINI_BLACK_HOLE.description", 'mini_black_hole', 25, modifier => modifier instanceof TurnHeldItemTransferModifier).setSecret(), + CATCH_MYTHICAL: new Achv("CATCH_MYTHICAL","", "CATCH_MYTHICAL.description", 'strange_ball', 50).setSecret(), + CATCH_SUB_LEGENDARY: new Achv("CATCH_SUB_LEGENDARY","", "CATCH_SUB_LEGENDARY.description", 'rb', 75).setSecret(), + CATCH_LEGENDARY: new Achv("CATCH_LEGENDARY", "", "CATCH_LEGENDARY.description", 'mb', 100).setSecret(), + SEE_SHINY: new Achv("SEE_SHINY", "", "SEE_SHINY.description", 'pb_gold', 75), + SHINY_PARTY: new Achv("SHINY_PARTY", "", "SHINY_PARTY.description", 'shiny_charm', 100).setSecret(true), + HATCH_MYTHICAL: new Achv("HATCH_MYTHICAL", "", "HATCH_MYTHICAL.description", 'pair_of_tickets', 75).setSecret(), + HATCH_SUB_LEGENDARY: new Achv("HATCH_SUB_LEGENDARY","", "HATCH_SUB_LEGENDARY.description", 'mystic_ticket', 100).setSecret(), + HATCH_LEGENDARY: new Achv("HATCH_LEGENDARY","", "HATCH_LEGENDARY.description", 'mystic_ticket', 125).setSecret(), + HATCH_SHINY: new Achv("HATCH_SHINY","", "HATCH_SHINY.description", 'golden_mystic_ticket', 100).setSecret(), + HIDDEN_ABILITY: new Achv("HIDDEN_ABILITY","", "HIDDEN_ABILITY.description", 'ability_charm', 75), + PERFECT_IVS: new Achv("PERFECT_IVS","", "PERFECT_IVS.description", 'blunder_policy', 100), + CLASSIC_VICTORY: new Achv("CLASSIC_VICTORY","", "CLASSIC_VICTORY.description", 'relic_crown', 150), }; { diff --git a/src/ui/achvs-ui-handler.ts b/src/ui/achvs-ui-handler.ts index 59ed1abed94..808fbf0fe68 100644 --- a/src/ui/achvs-ui-handler.ts +++ b/src/ui/achvs-ui-handler.ts @@ -1,7 +1,7 @@ import BattleScene from "../battle-scene"; import { Button } from "../enums/buttons"; import i18next from "../plugins/i18n"; -import { Achv, achvs } from "../system/achv"; +import {Achv, achvs, getAchievementDescription} from "../system/achv"; import MessageUiHandler from "./message-ui-handler"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; @@ -136,10 +136,11 @@ export default class AchvsUiHandler extends MessageUiHandler { } protected showAchv(achv: Achv) { + achv.name = i18next.t(`achv:${achv.localizationKey}.name`) + achv.description = getAchievementDescription(achv.localizationKey) const achvUnlocks = this.scene.gameData.achvUnlocks; const unlocked = achvUnlocks.hasOwnProperty(achv.id); const hidden = !unlocked && achv.secret && (!achv.parentId || !achvUnlocks.hasOwnProperty(achv.parentId)); - this.titleText.setText(unlocked ? achv.name : '???'); this.showText(!hidden ? achv.description : ''); this.scoreText.setText(`${achv.score}pt`); diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index a58fc3900d3..cd2fa893d09 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -55,8 +55,9 @@ const languageSettings: { [key: string]: LanguageSetting } = { instructionTextSize: '42px', }, "de":{ - starterInfoTextSize: '56px', + starterInfoTextSize: '53px', instructionTextSize: '35px', + starterInfoXPos: 35, }, "es":{ starterInfoTextSize: '56px',