Merge pull request #1 from CodeTappert/deLocale+AchvFix

Fixed Achivment Localization, Added german localization and fixes som…
This commit is contained in:
José Ricardo Fleury Oliveira 2024-05-20 18:12:11 -03:00 committed by GitHub
commit 325b927dd3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 234 additions and 140 deletions

View File

@ -894,27 +894,27 @@ export const ability: AbilityTranslationEntries = {
description: "Wechselt seine Fähigkeit zu der eines kampfunfähig gewordenen Mitstreiters.", description: "Wechselt seine Fähigkeit zu der eines kampfunfähig gewordenen Mitstreiters.",
}, },
beastBoost: { beastBoost: {
name: "BestienBoost", name: "Bestien-Boost",
description: "Erhöht in jeder Runde, in der es ein anderes Pokémon besiegt, seinen höchsten Statuswert.", description: "Erhöht in jeder Runde, in der es ein anderes Pokémon besiegt, seinen höchsten Statuswert.",
}, },
rksSystem: { rksSystem: {
name: "AlphaSystem", name: "Alpha-System",
description: "Das Pokémon passt seinen Typ der getragenen Disc an.", description: "Das Pokémon passt seinen Typ der getragenen Disc an.",
}, },
electricSurge: { electricSurge: {
name: "ElektroErzeuger", name: "Elektro-Erzeuger",
description: "Erzeugt bei Kampfantritt ein Elektrofeld.", description: "Erzeugt bei Kampfantritt ein Elektrofeld.",
}, },
psychicSurge: { psychicSurge: {
name: "PsychoErzeuger", name: "Psycho-Erzeuger",
description: "Erzeugt bei Kampfantritt ein Psychofeld.", description: "Erzeugt bei Kampfantritt ein Psychofeld.",
}, },
mistySurge: { mistySurge: {
name: "NebelErzeuger", name: "Nebel-Erzeuger",
description: "Erzeugt bei Kampfantritt ein Nebelfeld.", description: "Erzeugt bei Kampfantritt ein Nebelfeld.",
}, },
grassySurge: { grassySurge: {
name: "GrasErzeuger", name: "Gras-Erzeuger",
description: "Erzeugt bei Kampfantritt ein Grasfeld.", description: "Erzeugt bei Kampfantritt ein Grasfeld.",
}, },
fullMetalBody: { fullMetalBody: {

View File

@ -2,170 +2,171 @@ import { AchievementTranslationEntries } from "#app/plugins/i18n.js";
export const achv: AchievementTranslationEntries = { export const achv: AchievementTranslationEntries = {
"Achievements": { "Achievements": {
name: "Achievements", name: "Errungenschaften",
}, },
"Locked": { "Locked": {
name: "Locked", name: "Gesperrt",
}, },
"MoneyAchv": { "MoneyAchv": {
description: "Accumulate a total of ₽{{moneyAmount}}", description:"Häufe eine Gesamtsumme von {{moneyAmount}} ₽ an",
}, },
"10K_MONEY": { "10K_MONEY": {
name: "Money Haver", name: "Geldhüter",
}, },
"100K_MONEY": { "100K_MONEY": {
name: "Rich", name: "Reich",
}, },
"1M_MONEY": { "1M_MONEY": {
name: "Millionaire", name: "Millionär",
}, },
"10M_MONEY": { "10M_MONEY": {
name: "One Percenter", name: "Einprozenter",
}, },
"DamageAchv": { "DamageAchv": {
description: "Inflict {{damageAmount}} damage in one hit", description: "Füge mit einem Treffer {{damageAmount}} Schaden zu",
}, },
"250_DMG": { "250_DMG": {
name: "Hard Hitter", name: "Harte Treffer",
}, },
"1000_DMG": { "1000_DMG": {
name: "Harder Hitter", name: "Härtere Treffer",
}, },
"2500_DMG": { "2500_DMG": {
name: "That's a Lotta Damage!", name: "Das ist ne Menge Schaden!",
}, },
"10000_DMG": { "10000_DMG": {
name: "One Punch Man", name: "Ein-Schlag-Mann",
}, },
"HealAchv": { "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": { "250_HEAL": {
name: "Novice Healer", name: "Anfänger-Heiler",
}, },
"1000_HEAL": { "1000_HEAL": {
name: "Big Healer", name: "Gesundheitsprofi",
}, },
"2500_HEAL": { "2500_HEAL": {
name: "Cleric", name: "Kleriker",
}, },
"10000_HEAL": { "10000_HEAL": {
name: "Recovery Master", name: "Wiederherstellungsmeister",
}, },
"LevelAchv": { "LevelAchv": {
description: "Level up a Pokémon to Lv{{level}}", description: "Erhöhe das Level eines Pokémon auf {{level}}",
}, },
"LV_100": { "LV_100": {
name: "But Wait, There's More!", name: "Warte, es gibt mehr!",
}, },
"LV_250": { "LV_250": {
name: "Elite", name: "Elite",
}, },
"LV_1000": { "LV_1000": {
name: "To Go Even Further Beyond", name: "Geh noch höher hinaus!",
}, },
"RibbonAchv": { "RibbonAchv": {
description: "Accumulate a total of {{ribbonAmount}} Ribbons", description: "Sammle insgesamt {{ribbonAmount}} Bänder",
}, },
"10_RIBBONS": { "10_RIBBONS": {
name: "Pokémon League Champion", name: "Champion der Pokémon Liga",
}, },
"25_RIBBONS": { "25_RIBBONS": {
name: "Great League Champion", name: "Bänder-Sammler",
}, },
"50_RIBBONS": { "50_RIBBONS": {
name: "Ultra League Champion", name: "Bänder-Experte",
}, },
"75_RIBBONS": { "75_RIBBONS": {
name: "Rogue League Champion", name: "Bänder-Guru",
}, },
"100_RIBBONS": { "100_RIBBONS": {
name: "Master League Champion", name: "Bänder-Meister",
}, },
"TRANSFER_MAX_BATTLE_STAT": { "TRANSFER_MAX_BATTLE_STAT": {
name: "Teamwork", 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": { "MAX_FRIENDSHIP": {
name: "Friendmaxxing", name: "Freundschaftsmaximierung",
description: "Reach max friendship on a Pokémon", description: "Erreiche maximale Freundschaft bei einem Pokémon",
}, },
"MEGA_EVOLVE": { "MEGA_EVOLVE": {
name: "Megamorph", name: "Megaverwandlung",
description: "Mega evolve a Pokémon", description: "Megaentwickle ein Pokémon",
}, },
"GIGANTAMAX": { "GIGANTAMAX": {
name: "Absolute Unit", name: "Absolute Einheit",
description: "Gigantamax a Pokémon", description: "Gigadynamaximiere ein Pokémon",
}, },
"TERASTALLIZE": { "TERASTALLIZE": {
name: "STAB Enthusiast", name: "Typen-Bonus Enthusiast",
description: "Terastallize a Pokémon", description: "Terrakristallisiere ein Pokémon",
}, },
"STELLAR_TERASTALLIZE": { "STELLAR_TERASTALLIZE": {
name: "The Hidden Type", name: "Der geheime Typ",
description: "Stellar Terastallize a Pokémon", description: "Terrakristallisiere ein Pokémon zum Typen Stellar",
}, },
"SPLICE": { "SPLICE": {
name: "Infinite Fusion", name: "Unendliche Fusion",
description: "Splice two Pokémon together with DNA Splicers", description: "Kombiniere zwei Pokémon mit einem DNS-Keil",
}, },
"MINI_BLACK_HOLE": { "MINI_BLACK_HOLE": {
name: "A Hole Lot of Items", name: "Ein Loch voller Items",
description: "Acquire a Mini Black Hole", description: "Erlange ein Mini-Schwarzes Loch",
}, },
"CATCH_MYTHICAL": { "CATCH_MYTHICAL": {
name: "Mythical", name: "Mysteriöses!",
description: "Catch a mythical Pokémon", description: "Fange ein mysteriöses Pokémon",
}, },
"CATCH_SUB_LEGENDARY": { "CATCH_SUB_LEGENDARY": {
name: "(Sub-)Legendary", name: "Sub-Legendär",
description: "Catch a sub-legendary Pokémon", description: "Fange ein sub-legendäres Pokémon",
}, },
"CATCH_LEGENDARY": { "CATCH_LEGENDARY": {
name: "Legendary", name: "Legendär",
description: "Catch a legendary Pokémon", description: "Fange ein legendäres Pokémon",
}, },
"SEE_SHINY": { "SEE_SHINY": {
name: "Shiny", name: "Schillerndes Licht",
description: "Find a shiny Pokémon in the wild", description: "Finde ein wildes schillerndes Pokémon",
}, },
"SHINY_PARTY": { "SHINY_PARTY": {
name: "That's Dedication", name: "Das ist Hingabe",
description: "Have a full party of shiny Pokémon", description: "Habe ein Team aus schillernden Pokémon",
}, },
"HATCH_MYTHICAL": { "HATCH_MYTHICAL": {
name: "Mythical Egg", name: "Mysteriöses Ei",
description: "Hatch a mythical Pokémon from an egg", description: "Lass ein mysteriöses Pokémon aus einem Ei schlüpfen",
}, },
"HATCH_SUB_LEGENDARY": { "HATCH_SUB_LEGENDARY": {
name: "Sub-Legendary Egg", name: "Sub-Legendäres Ei",
description: "Hatch a sub-legendary Pokémon from an egg", description: "Lass ein sub-legendäres Pokémon aus einem Ei schlüpfen",
}, },
"HATCH_LEGENDARY": { "HATCH_LEGENDARY": {
name: "Legendary Egg", name: "Legendäres Ei",
description: "Hatch a legendary Pokémon from an egg", description: "Lass ein legendäres Pokémon aus einem Ei schlüpfen",
}, },
"HATCH_SHINY": { "HATCH_SHINY": {
name: "Shiny Egg", name: "Schillerndes Ei",
description: "Hatch a shiny Pokémon from an egg", description: "Lass ein schillerndes Pokémon aus einem Ei schlüpfen",
}, },
"HIDDEN_ABILITY": { "HIDDEN_ABILITY": {
name: "Hidden Potential", name: "Geheimes Talent",
description: "Catch a Pokémon with a hidden ability", description: "Fang ein Pokémon mit versteckter Fähigkeit",
}, },
"PERFECT_IVS": { "PERFECT_IVS": {
name: "Certificate of Authenticity", name: "Zertifikat der Echtheit",
description: "Get perfect IVs on a Pokémon", description: "Erhalte ein Pokémon mit perfekten IS-Werten",
}, },
"CLASSIC_VICTORY": { "CLASSIC_VICTORY": {
name: "Undefeated", name: "Ungeschlagen",
description: "Beat the game in classic mode", description: "Beende den klassischen Modus erfolgreich",
}, },
} as const; } as const;

View File

@ -2,8 +2,8 @@ import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
export const pokemonInfo: PokemonInfoTranslationEntries = { export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: { Stat: {
"HP": "Max. KP", "HP": "KP",
"HPshortened": "MaxKP", "HPshortened": "KP",
"ATK": "Angriff", "ATK": "Angriff",
"ATKshortened": "Ang", "ATKshortened": "Ang",
"DEF": "Verteidigung", "DEF": "Verteidigung",

View File

@ -17,7 +17,7 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
"gen8": "VIII", "gen8": "VIII",
"gen9": "IX", "gen9": "IX",
"growthRate": "Wachstum:", "growthRate": "Wachstum:",
"ability": "Fähgkeit:", "ability": "Fähigkeit:",
"passive": "Passiv:", "passive": "Passiv:",
"nature": "Wesen:", "nature": "Wesen:",
"eggMoves": "Ei-Attacken", "eggMoves": "Ei-Attacken",

View File

@ -13,6 +13,7 @@ export enum AchvTier {
} }
export class Achv { export class Achv {
public localizationKey: string;
public id: string; public id: string;
public name: string; public name: string;
public description: string; public description: string;
@ -25,12 +26,13 @@ export class Achv {
private conditionFunc: (scene: BattleScene, args: any[]) => boolean; 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.name = name;
this.description = description; this.description = description;
this.iconImage = iconImage; this.iconImage = iconImage;
this.score = score; this.score = score;
this.conditionFunc = conditionFunc; this.conditionFunc = conditionFunc;
this.localizationKey = localizationKey;
} }
getName(): string { getName(): string {
@ -65,102 +67,191 @@ export class Achv {
} }
export class MoneyAchv extends Achv { export class MoneyAchv extends Achv {
private moneyAmount: integer; 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);
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; this.moneyAmount = moneyAmount;
} }
} }
export class RibbonAchv extends Achv { export class RibbonAchv extends Achv {
private ribbonAmount: integer; 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);
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; this.ribbonAmount = ribbonAmount;
} }
} }
export class DamageAchv extends Achv { export class DamageAchv extends Achv {
private damageAmount: integer; 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);
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; this.damageAmount = damageAmount;
} }
} }
export class HealAchv extends Achv { export class HealAchv extends Achv {
private healAmount: integer; 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);
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; this.healAmount = healAmount;
} }
} }
export class LevelAchv extends Achv { export class LevelAchv extends Achv {
private level: integer; 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);
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; this.level = level;
} }
} }
export class ModifierAchv extends Achv { export class ModifierAchv extends Achv {
constructor(name: string, description: string, iconImage: string, score: integer, modifierFunc: (modifier: Modifier) => boolean) { constructor(localizationKey: string, 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))); 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 = { export const achvs = {
_10K_MONEY: new MoneyAchv(i18next.t("achv:10K_MONEY.name"), 10000, 'nugget', 10), _10K_MONEY: new MoneyAchv("10K_MONEY", "",10000, 'nugget', 10),
_100K_MONEY: new MoneyAchv(i18next.t("achv:100K_MONEY.name"), 100000, 'big_nugget', 25).setSecret(true), _100K_MONEY: new MoneyAchv("100K_MONEY", "",100000, 'big_nugget', 25).setSecret(true),
_1M_MONEY: new MoneyAchv(i18next.t("achv:1M_MONEY.name"), 1000000, 'relic_gold', 50).setSecret(true), _1M_MONEY: new MoneyAchv("1M_MONEY","", 1000000, 'relic_gold', 50).setSecret(true),
_10M_MONEY: new MoneyAchv(i18next.t("achv:10M_MONEY.name"), 10000000, 'coin_case', 100).setSecret(true), _10M_MONEY: new MoneyAchv("10M_MONEY","", 10000000, 'coin_case', 100).setSecret(true),
_250_DMG: new DamageAchv(i18next.t("achv:250_DMG.name"), 250, 'lucky_punch', 10), _250_DMG: new DamageAchv("250_DMG","", 250, 'lucky_punch', 10),
_1000_DMG: new DamageAchv(i18next.t("achv:1000_DMG.name"), 1000, 'lucky_punch_great', 25).setSecret(true), _1000_DMG: new DamageAchv("1000_DMG","", 1000, 'lucky_punch_great', 25).setSecret(true),
_2500_DMG: new DamageAchv(i18next.t("achv:2500_DMG.name"), 2500, 'lucky_punch_ultra', 50).setSecret(true), _2500_DMG: new DamageAchv("2500_DMG","", 2500, 'lucky_punch_ultra', 50).setSecret(true),
_10000_DMG: new DamageAchv(i18next.t("achv:10000_DMG.name"), 10000, 'lucky_punch_master', 100).setSecret(true), _10000_DMG: new DamageAchv("10000_DMG","", 10000, 'lucky_punch_master', 100).setSecret(true),
_250_HEAL: new HealAchv(i18next.t("achv:250_HEAL.name"), 250, 'potion', 10), _250_HEAL: new HealAchv("250_HEAL","", 250, 'potion', 10),
_1000_HEAL: new HealAchv(i18next.t("achv:1000_HEAL.name"), 1000, 'super_potion', 25).setSecret(true), _1000_HEAL: new HealAchv("1000_HEAL", "",1000, 'super_potion', 25).setSecret(true),
_2500_HEAL: new HealAchv(i18next.t("achv:2500_HEAL.name"), 2500, 'hyper_potion', 50).setSecret(true), _2500_HEAL: new HealAchv("2500_HEAL","", 2500, 'hyper_potion', 50).setSecret(true),
_10000_HEAL: new HealAchv(i18next.t("achv:10000_HEAL.name"), 10000, 'max_potion', 100).setSecret(true), _10000_HEAL: new HealAchv("10000_HEAL","", 10000, 'max_potion', 100).setSecret(true),
LV_100: new LevelAchv(i18next.t("achv:LV_100.name"), 100, 'rare_candy', 25).setSecret(), LV_100: new LevelAchv("LV_100", "",100, 'rare_candy', 25).setSecret(),
LV_250: new LevelAchv(i18next.t("achv:LV_250.name"), 250, 'rarer_candy', 50).setSecret(true), LV_250: new LevelAchv("LV_250", "",250, 'rarer_candy', 50).setSecret(true),
LV_1000: new LevelAchv(i18next.t("achv:LV_1000.name"), 1000, 'candy_jar', 100).setSecret(true), LV_1000: new LevelAchv("LV_1000", "",1000, 'candy_jar', 100).setSecret(true),
_10_RIBBONS: new RibbonAchv(i18next.t("achv:10_RIBBONS.name"), 10, 'bronze_ribbon', 10), _10_RIBBONS: new RibbonAchv("10_RIBBONS","", 10, 'bronze_ribbon', 10),
_25_RIBBONS: new RibbonAchv(i18next.t("achv:25_RIBBONS.name"), 25, 'great_ribbon', 25).setSecret(true), _25_RIBBONS: new RibbonAchv("25_RIBBONS", "",25, 'great_ribbon', 25).setSecret(true),
_50_RIBBONS: new RibbonAchv(i18next.t("achv:50_RIBBONS.name"), 50, 'ultra_ribbon', 50).setSecret(true), _50_RIBBONS: new RibbonAchv("50_RIBBONS","", 50, 'ultra_ribbon', 50).setSecret(true),
_75_RIBBONS: new RibbonAchv(i18next.t("achv:75_RIBBONS.name"), 75, 'rogue_ribbon', 75).setSecret(true), _75_RIBBONS: new RibbonAchv("75_RIBBONS","", 75, 'rogue_ribbon', 75).setSecret(true),
_100_RIBBONS: new RibbonAchv(i18next.t("achv:100_RIBBONS.name"), 100, 'master_ribbon', 100).setSecret(true), _100_RIBBONS: new RibbonAchv("100_RIBBONS","", 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), TRANSFER_MAX_BATTLE_STAT: new Achv("TRANSFER_MAX_BATTLE_STAT","", "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), MAX_FRIENDSHIP: new Achv("MAX_FRIENDSHIP", "", "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), MEGA_EVOLVE: new Achv("MEGA_EVOLVE", "", "MEGA_EVOLVE.description", 'mega_bracelet', 50),
GIGANTAMAX: new Achv(i18next.t("achv:GIGANTAMAX.name"), i18next.t("achv:GIGANTAMAX.description"), 'dynamax_band', 50), GIGANTAMAX: new Achv("GIGANTAMAX", "", "GIGANTAMAX.description", 'dynamax_band', 50),
TERASTALLIZE: new Achv(i18next.t("achv:TERASTALLIZE.name"), i18next.t("achv:TERASTALLIZE.description"), 'tera_orb', 25), TERASTALLIZE: new Achv("TERASTALLIZE","", "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), STELLAR_TERASTALLIZE: new Achv("STELLAR_TERASTALLIZE", "", "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), SPLICE: new Achv("SPLICE","", "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(), 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(i18next.t("achv:CATCH_MYTHICAL.name"), i18next.t("achv:CATCH_MYTHICAL.description"), 'strange_ball', 50).setSecret(), CATCH_MYTHICAL: new Achv("CATCH_MYTHICAL","", "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_SUB_LEGENDARY: new Achv("CATCH_SUB_LEGENDARY","", "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(), CATCH_LEGENDARY: new Achv("CATCH_LEGENDARY", "", "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), SEE_SHINY: new Achv("SEE_SHINY", "", "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), SHINY_PARTY: new Achv("SHINY_PARTY", "", "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_MYTHICAL: new Achv("HATCH_MYTHICAL", "", "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_SUB_LEGENDARY: new Achv("HATCH_SUB_LEGENDARY","", "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_LEGENDARY: new Achv("HATCH_LEGENDARY","", "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(), HATCH_SHINY: new Achv("HATCH_SHINY","", "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), HIDDEN_ABILITY: new Achv("HIDDEN_ABILITY","", "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), PERFECT_IVS: new Achv("PERFECT_IVS","", "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), CLASSIC_VICTORY: new Achv("CLASSIC_VICTORY","", "CLASSIC_VICTORY.description", 'relic_crown', 150),
}; };
{ {

View File

@ -1,7 +1,7 @@
import BattleScene from "../battle-scene"; import BattleScene from "../battle-scene";
import { Button } from "../enums/buttons"; import { Button } from "../enums/buttons";
import i18next from "../plugins/i18n"; 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 MessageUiHandler from "./message-ui-handler";
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui"; import { Mode } from "./ui";
@ -136,10 +136,11 @@ export default class AchvsUiHandler extends MessageUiHandler {
} }
protected showAchv(achv: Achv) { protected showAchv(achv: Achv) {
achv.name = i18next.t(`achv:${achv.localizationKey}.name`)
achv.description = getAchievementDescription(achv.localizationKey)
const achvUnlocks = this.scene.gameData.achvUnlocks; const achvUnlocks = this.scene.gameData.achvUnlocks;
const unlocked = achvUnlocks.hasOwnProperty(achv.id); const unlocked = achvUnlocks.hasOwnProperty(achv.id);
const hidden = !unlocked && achv.secret && (!achv.parentId || !achvUnlocks.hasOwnProperty(achv.parentId)); const hidden = !unlocked && achv.secret && (!achv.parentId || !achvUnlocks.hasOwnProperty(achv.parentId));
this.titleText.setText(unlocked ? achv.name : '???'); this.titleText.setText(unlocked ? achv.name : '???');
this.showText(!hidden ? achv.description : ''); this.showText(!hidden ? achv.description : '');
this.scoreText.setText(`${achv.score}pt`); this.scoreText.setText(`${achv.score}pt`);

View File

@ -55,8 +55,9 @@ const languageSettings: { [key: string]: LanguageSetting } = {
instructionTextSize: '42px', instructionTextSize: '42px',
}, },
"de":{ "de":{
starterInfoTextSize: '56px', starterInfoTextSize: '53px',
instructionTextSize: '35px', instructionTextSize: '35px',
starterInfoXPos: 35,
}, },
"es":{ "es":{
starterInfoTextSize: '56px', starterInfoTextSize: '56px',