mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-19 13:59:27 +02:00
Merge d05caf443d
into 7131e1fb01
This commit is contained in:
commit
660255c5a8
@ -674,10 +674,10 @@ export class SingleGenerationChallenge extends Challenge {
|
||||
|
||||
getDescription(overrideValue: number = this.value): string {
|
||||
if (overrideValue === 0) {
|
||||
return i18next.t("challenges:singleGeneration.desc_default");
|
||||
return i18next.t("challenges:singleGeneration.descDefault");
|
||||
}
|
||||
return i18next.t("challenges:singleGeneration.desc", {
|
||||
gen: i18next.t(`challenges:singleGeneration.gen_${overrideValue}`),
|
||||
gen: i18next.t(`challenges:singleGeneration.gen${overrideValue}`),
|
||||
});
|
||||
}
|
||||
|
||||
@ -758,7 +758,7 @@ export class SingleTypeChallenge extends Challenge {
|
||||
getDescription(overrideValue: number = this.value): string {
|
||||
const type = i18next.t(`pokemonInfo:type.${toCamelCase(PokemonType[overrideValue - 1])}`);
|
||||
const typeColor = `[color=${TypeColor[PokemonType[overrideValue - 1]]}][shadow=${TypeShadow[PokemonType[this.value - 1]]}]${type}[/shadow][/color]`;
|
||||
const defaultDesc = i18next.t("challenges:singleType.desc_default");
|
||||
const defaultDesc = i18next.t("challenges:singleType.descDefault");
|
||||
const typeDesc = i18next.t("challenges:singleType.desc", {
|
||||
type: typeColor,
|
||||
});
|
||||
|
@ -514,7 +514,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
function getTrainerConfigForWave(waveIndex: number) {
|
||||
// Bug type superfan trainer config
|
||||
const config = trainerConfigs[TrainerType.BUG_TYPE_SUPERFAN].clone();
|
||||
config.name = i18next.t("trainerNames:bug_type_superfan");
|
||||
config.name = i18next.t("trainerNames:bugTypeSuperfan");
|
||||
|
||||
let pool3Copy = POOL_3_POKEMON.slice(0);
|
||||
pool3Copy = randSeedShuffle(pool3Copy);
|
||||
|
@ -33,7 +33,7 @@ import i18next from "i18next";
|
||||
/** the i18n namespace for the encounter */
|
||||
const namespace = "mysteryEncounters/theExpertPokemonBreeder";
|
||||
|
||||
const trainerNameKey = "trainerNames:expert_pokemon_breeder";
|
||||
const trainerNameKey = "trainerNames:expertPokemonBreeder";
|
||||
|
||||
const FIRST_STAGE_EVOLUTION_WAVE = 45;
|
||||
const SECOND_STAGE_EVOLUTION_WAVE = 60;
|
||||
|
@ -100,7 +100,7 @@ const commonSplashMessages = [
|
||||
"liveWoChienReaction",
|
||||
"itsAFeatureNotABug",
|
||||
"theEggsAreNotForEating",
|
||||
"7.8outOf10TooManyWaterBiomes",
|
||||
"tooManyWaterBiomes",
|
||||
"butNothingHappened",
|
||||
"thePowerOfScienceIsAmazing",
|
||||
"freeToPlay",
|
||||
@ -152,7 +152,7 @@ const commonSplashMessages = [
|
||||
"insertTextHere",
|
||||
"endingEndlessNotFound",
|
||||
"iLikeMyEggsVouchered",
|
||||
"YOU",
|
||||
"you",
|
||||
"noAddedSugar",
|
||||
"notSponsored",
|
||||
"notRated",
|
||||
|
@ -43,7 +43,7 @@ import type {
|
||||
} from "#types/trainer-funcs";
|
||||
import { coerceArray, isNullOrUndefined, randSeedInt, randSeedIntRange, randSeedItem } from "#utils/common";
|
||||
import { getPokemonSpecies } from "#utils/pokemon-utils";
|
||||
import { toSnakeCase, toTitleCase } from "#utils/strings";
|
||||
import { toCamelCase, toTitleCase } from "#utils/strings";
|
||||
import i18next from "i18next";
|
||||
|
||||
/** Minimum BST for Pokemon generated onto the Elite Four's teams */
|
||||
@ -193,8 +193,7 @@ export class TrainerConfig {
|
||||
initI18n();
|
||||
}
|
||||
|
||||
// Make the title lowercase and replace spaces with underscores
|
||||
title = title.toLowerCase().replace(/\s/g, "_");
|
||||
title = toCamelCase(title);
|
||||
|
||||
// Get the title from the i18n file
|
||||
this.title = i18next.t(`titles:${title}`);
|
||||
@ -288,7 +287,7 @@ export class TrainerConfig {
|
||||
initI18n();
|
||||
}
|
||||
// Set the localized name for the female rival.
|
||||
this.nameFemale = i18next.t("trainerNames:rival_female");
|
||||
this.nameFemale = i18next.t("trainerNames:rivalFemale");
|
||||
} else {
|
||||
// Otherwise, assign the provided female name.
|
||||
this.nameFemale = nameFemale!; // TODO: is this bang correct?
|
||||
@ -365,8 +364,7 @@ export class TrainerConfig {
|
||||
initI18n();
|
||||
}
|
||||
|
||||
// Make the title lowercase and replace spaces with underscores
|
||||
titleDouble = titleDouble.toLowerCase().replace(/\s/g, "_");
|
||||
titleDouble = toCamelCase(titleDouble);
|
||||
|
||||
// Get the title from the i18n file
|
||||
this.titleDouble = i18next.t(`titles:${titleDouble}`);
|
||||
@ -552,7 +550,7 @@ export class TrainerConfig {
|
||||
this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(coerceArray(speciesPool)));
|
||||
});
|
||||
|
||||
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_");
|
||||
const nameForCall = toCamelCase(this.name);
|
||||
this.name = i18next.t(`trainerNames:${nameForCall}`);
|
||||
this.setHasVoucher(false);
|
||||
this.setTitle(title);
|
||||
@ -577,7 +575,7 @@ export class TrainerConfig {
|
||||
|
||||
this.setPartyTemplates(trainerPartyTemplates.ELITE_FOUR);
|
||||
|
||||
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_");
|
||||
const nameForCall = toCamelCase(this.name);
|
||||
this.name = i18next.t(`trainerNames:${nameForCall}`);
|
||||
this.setMoneyMultiplier(2);
|
||||
this.setBoss();
|
||||
@ -618,7 +616,7 @@ export class TrainerConfig {
|
||||
this.setSpeciesFilter(p => p.isOfType(specialtyType));
|
||||
this.setSpecialtyType(specialtyType);
|
||||
}
|
||||
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_");
|
||||
const nameForCall = toCamelCase(this.name);
|
||||
this.name = i18next.t(`trainerNames:${nameForCall}`);
|
||||
this.setTitle(title);
|
||||
this.setMoneyMultiplier(2.5);
|
||||
@ -665,14 +663,14 @@ export class TrainerConfig {
|
||||
this.setSpeciesFilter(p => p.isOfType(specialtyType));
|
||||
this.setSpecialtyType(specialtyType);
|
||||
|
||||
// Localize the trainer's name by converting it to lowercase and replacing spaces with underscores.
|
||||
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_");
|
||||
// Localize the trainer's name by converting it to camel case.
|
||||
const nameForCall = toCamelCase(this.name);
|
||||
this.name = i18next.t(`trainerNames:${nameForCall}`);
|
||||
|
||||
// Set the title to "gym_leader". (this is the key in the i18n file)
|
||||
this.setTitle("gym_leader");
|
||||
// Set the title to "gymLeader". (this is the key in the i18n file)
|
||||
this.setTitle("gymLeader");
|
||||
if (!isMale) {
|
||||
this.setTitle("gym_leader_female");
|
||||
this.setTitle("gymLeaderFemale");
|
||||
}
|
||||
|
||||
// Configure various properties for the Gym Leader.
|
||||
@ -726,14 +724,14 @@ export class TrainerConfig {
|
||||
this.setSpeciesFilter(p => p.baseTotal >= ELITE_FOUR_MINIMUM_BST);
|
||||
}
|
||||
|
||||
// Localize the trainer's name by converting it to lowercase and replacing spaces with underscores.
|
||||
const nameForCall = toSnakeCase(this.name);
|
||||
// Localize the trainer's name by converting it to camel case.
|
||||
const nameForCall = toCamelCase(this.name);
|
||||
this.name = i18next.t(`trainerNames:${nameForCall}`);
|
||||
|
||||
// Set the title to "elite_four". (this is the key in the i18n file)
|
||||
this.setTitle("elite_four");
|
||||
this.setTitle("eliteFour");
|
||||
if (!isMale) {
|
||||
this.setTitle("elite_four_female");
|
||||
this.setTitle("eliteFourFemale");
|
||||
}
|
||||
|
||||
// Configure various properties for the Elite Four member.
|
||||
@ -763,14 +761,14 @@ export class TrainerConfig {
|
||||
// Set the party templates for the Champion.
|
||||
this.setPartyTemplates(trainerPartyTemplates.CHAMPION);
|
||||
|
||||
// Localize the trainer's name by converting it to lowercase and replacing spaces with underscores.
|
||||
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_");
|
||||
// Localize the trainer's name by converting it to camel case.
|
||||
const nameForCall = toCamelCase(this.name);
|
||||
this.name = i18next.t(`trainerNames:${nameForCall}`);
|
||||
|
||||
// Set the title to "champion". (this is the key in the i18n file)
|
||||
this.setTitle("champion");
|
||||
if (!isMale) {
|
||||
this.setTitle("champion_female");
|
||||
this.setTitle("championFemale");
|
||||
}
|
||||
|
||||
// Configure various properties for the Champion.
|
||||
@ -794,7 +792,7 @@ export class TrainerConfig {
|
||||
if (!getIsInitialized()) {
|
||||
initI18n();
|
||||
}
|
||||
this.name = i18next.t(`trainerNames:${name.toLowerCase().replace(/\s/g, "_")}`);
|
||||
this.name = i18next.t(`trainerNames:${toCamelCase(name)}`);
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -830,9 +828,9 @@ export class TrainerConfig {
|
||||
initI18n();
|
||||
}
|
||||
// Check if the female version exists in the i18n file
|
||||
if (i18next.exists(`trainerClasses:${this.name.toLowerCase()}`)) {
|
||||
if (i18next.exists(`trainerClasses:${toCamelCase(this.name)}Female`)) {
|
||||
// If it does, return
|
||||
return ret + "_female";
|
||||
return ret + "Female";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ import {
|
||||
} from "#trainers/trainer-party-template";
|
||||
import { randSeedInt, randSeedItem, randSeedWeightedItem } from "#utils/common";
|
||||
import { getPokemonSpecies } from "#utils/pokemon-utils";
|
||||
import { toSnakeCase } from "#utils/strings";
|
||||
import { toCamelCase } from "#utils/strings";
|
||||
import i18next from "i18next";
|
||||
|
||||
export class Trainer extends Phaser.GameObjects.Container {
|
||||
@ -170,7 +170,7 @@ export class Trainer extends Phaser.GameObjects.Container {
|
||||
const evilTeamTitles = ["grunt"];
|
||||
if (this.name === "" && evilTeamTitles.some(t => name.toLocaleLowerCase().includes(t))) {
|
||||
// This is a evil team grunt so we localize it by only using the "name" as the title
|
||||
title = i18next.t(`trainerClasses:${toSnakeCase(name)}`);
|
||||
title = i18next.t(`trainerClasses:${toCamelCase(name)}`);
|
||||
console.log("Localized grunt name: " + title);
|
||||
// Since grunts are not named we can just return the title
|
||||
return title;
|
||||
@ -187,7 +187,7 @@ export class Trainer extends Phaser.GameObjects.Container {
|
||||
}
|
||||
// Get the localized trainer class name from the i18n file and set it as the title.
|
||||
// This is used for trainer class names, not titles like "Elite Four, Champion, etc."
|
||||
title = i18next.t(`trainerClasses:${toSnakeCase(name)}`);
|
||||
title = i18next.t(`trainerClasses:${toCamelCase(name)}`);
|
||||
}
|
||||
|
||||
// If no specific trainer slot is set.
|
||||
@ -208,7 +208,7 @@ export class Trainer extends Phaser.GameObjects.Container {
|
||||
|
||||
if (this.config.titleDouble && this.variant === TrainerVariant.DOUBLE && !this.config.doubleOnly) {
|
||||
title = this.config.titleDouble;
|
||||
name = i18next.t(`trainerNames:${toSnakeCase(this.config.nameDouble)}`);
|
||||
name = i18next.t(`trainerNames:${toCamelCase(this.config.nameDouble)}`);
|
||||
}
|
||||
|
||||
console.log(title ? `${title} ${name}` : name);
|
||||
|
@ -197,35 +197,35 @@ export const Setting: Array<Setting> = [
|
||||
options: [
|
||||
{
|
||||
value: "1",
|
||||
label: i18next.t("settings:gameSpeed1x"),
|
||||
label: i18next.t("settings:gameSpeed100x"),
|
||||
},
|
||||
{
|
||||
value: "1.25",
|
||||
label: i18next.t("settings:gameSpeed1_25x"),
|
||||
label: i18next.t("settings:gameSpeed125x"),
|
||||
},
|
||||
{
|
||||
value: "1.5",
|
||||
label: i18next.t("settings:gameSpeed1_5x"),
|
||||
label: i18next.t("settings:gameSpeed150x"),
|
||||
},
|
||||
{
|
||||
value: "2",
|
||||
label: i18next.t("settings:gameSpeed2x"),
|
||||
label: i18next.t("settings:gameSpeed200x"),
|
||||
},
|
||||
{
|
||||
value: "2.5",
|
||||
label: i18next.t("settings:gameSpeed2_5x"),
|
||||
label: i18next.t("settings:gameSpeed250x"),
|
||||
},
|
||||
{
|
||||
value: "3",
|
||||
label: i18next.t("settings:gameSpeed3x"),
|
||||
label: i18next.t("settings:gameSpeed300x"),
|
||||
},
|
||||
{
|
||||
value: "4",
|
||||
label: i18next.t("settings:gameSpeed4x"),
|
||||
label: i18next.t("settings:gameSpeed400x"),
|
||||
},
|
||||
{
|
||||
value: "5",
|
||||
label: i18next.t("settings:gameSpeed5x"),
|
||||
label: i18next.t("settings:gameSpeed500x"),
|
||||
},
|
||||
],
|
||||
default: 3,
|
||||
@ -566,7 +566,7 @@ export const Setting: Array<Setting> = [
|
||||
},
|
||||
{
|
||||
value: "Back",
|
||||
label: i18next.t("settings:timeOfDay_back"),
|
||||
label: i18next.t("settings:timeOfDayBack"),
|
||||
},
|
||||
],
|
||||
default: 0,
|
||||
|
@ -308,8 +308,8 @@ export class GameStatsUiHandler extends UiHandler {
|
||||
private getUsername(): string {
|
||||
const usernameReplacement =
|
||||
globalScene.gameData.gender === PlayerGender.FEMALE
|
||||
? i18next.t("trainerNames:player_f")
|
||||
: i18next.t("trainerNames:player_m");
|
||||
? i18next.t("trainerNames:playerF")
|
||||
: i18next.t("trainerNames:playerM");
|
||||
|
||||
const displayName = !globalScene.hideUsername
|
||||
? (loggedInUser?.username ?? i18next.t("common:guest"))
|
||||
|
@ -5,7 +5,7 @@ import type { ModalConfig } from "./modal-ui-handler";
|
||||
|
||||
export class RenameRunFormUiHandler extends FormModalUiHandler {
|
||||
getModalTitle(_config?: ModalConfig): string {
|
||||
return i18next.t("menu:renamerun");
|
||||
return i18next.t("menu:renameRun");
|
||||
}
|
||||
|
||||
getWidth(_config?: ModalConfig): number {
|
||||
|
@ -337,7 +337,7 @@ class RunEntryContainer extends Phaser.GameObjects.Container {
|
||||
// Because of the interesting mechanics behind rival names, the rival name and title have to be retrieved differently
|
||||
const RIVAL_TRAINER_ID_THRESHOLD = 375;
|
||||
if (data.trainer.trainerType >= RIVAL_TRAINER_ID_THRESHOLD) {
|
||||
const rivalName = tObj.variant === TrainerVariant.FEMALE ? "trainerNames:rival_female" : "trainerNames:rival";
|
||||
const rivalName = tObj.variant === TrainerVariant.FEMALE ? "trainerNames:rivalFemale" : "trainerNames:rival";
|
||||
const gameOutcomeLabel = addTextObject(
|
||||
8,
|
||||
5,
|
||||
|
@ -337,7 +337,7 @@ export class RunInfoUiHandler extends UiHandler {
|
||||
if (this.runInfo.trainer.trainerType >= RIVAL_TRAINER_ID_THRESHOLD) {
|
||||
trainerName =
|
||||
trainerObj.variant === TrainerVariant.FEMALE
|
||||
? i18next.t("trainerNames:rival_female")
|
||||
? i18next.t("trainerNames:rivalFemale")
|
||||
: i18next.t("trainerNames:rival");
|
||||
} else {
|
||||
trainerName = trainerObj.getName(0, true);
|
||||
@ -805,7 +805,7 @@ export class RunInfoUiHandler extends UiHandler {
|
||||
const spdef = i18next.t("pokemonInfo:stat.spdefShortened") + ": " + pStats[4];
|
||||
const speedLabel =
|
||||
currentLanguage === "es-ES" || currentLanguage === "pt_BR"
|
||||
? i18next.t("runHistory:SPDshortened")
|
||||
? i18next.t("runHistory:spdShortened")
|
||||
: i18next.t("pokemonInfo:stat.spdShortened");
|
||||
const speed = speedLabel + ": " + pStats[5];
|
||||
// Column 1: HP Atk Def
|
||||
|
@ -808,8 +808,8 @@ export class SummaryUiHandler extends UiHandler {
|
||||
globalScene.gameData.gender === PlayerGender.FEMALE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE;
|
||||
const usernameReplacement =
|
||||
globalScene.gameData.gender === PlayerGender.FEMALE
|
||||
? i18next.t("trainerNames:player_f")
|
||||
: i18next.t("trainerNames:player_m");
|
||||
? i18next.t("trainerNames:playerF")
|
||||
: i18next.t("trainerNames:playerM");
|
||||
|
||||
// TODO: should add field for original trainer name to Pokemon object, to support gift/traded Pokemon from MEs
|
||||
const trainerText = addBBCodeTextObject(
|
||||
|
@ -122,8 +122,8 @@ export class TitleUiHandler extends OptionSelectUiHandler {
|
||||
genderSplash(): void {
|
||||
if (this.splashMessage === "splashMessages:aprilFools.helloKyleAmber") {
|
||||
globalScene.gameData.gender === PlayerGender.MALE
|
||||
? this.splashMessageText.setText(i18next.t(this.splashMessage, { name: i18next.t("trainerNames:player_m") }))
|
||||
: this.splashMessageText.setText(i18next.t(this.splashMessage, { name: i18next.t("trainerNames:player_f") }));
|
||||
? this.splashMessageText.setText(i18next.t(this.splashMessage, { name: i18next.t("trainerNames:playerM") }))
|
||||
: this.splashMessageText.setText(i18next.t(this.splashMessage, { name: i18next.t("trainerNames:playerF") }));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => {
|
||||
text: `${namespace}:intro`,
|
||||
},
|
||||
{
|
||||
speaker: "trainerNames:expert_pokemon_breeder",
|
||||
speaker: "trainerNames:expertPokemonBreeder",
|
||||
text: `${namespace}:introDialogue`,
|
||||
},
|
||||
]);
|
||||
@ -123,7 +123,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => {
|
||||
buttonTooltip: expect.any(String), // Varies based on pokemon
|
||||
selected: [
|
||||
{
|
||||
speaker: "trainerNames:expert_pokemon_breeder",
|
||||
speaker: "trainerNames:expertPokemonBreeder",
|
||||
text: `${namespace}:option.selected`,
|
||||
},
|
||||
],
|
||||
@ -208,7 +208,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => {
|
||||
buttonTooltip: expect.any(String), // Varies based on pokemon
|
||||
selected: [
|
||||
{
|
||||
speaker: "trainerNames:expert_pokemon_breeder",
|
||||
speaker: "trainerNames:expertPokemonBreeder",
|
||||
text: `${namespace}:option.selected`,
|
||||
},
|
||||
],
|
||||
@ -290,7 +290,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => {
|
||||
buttonTooltip: expect.any(String), // Varies based on pokemon
|
||||
selected: [
|
||||
{
|
||||
speaker: "trainerNames:expert_pokemon_breeder",
|
||||
speaker: "trainerNames:expertPokemonBreeder",
|
||||
text: `${namespace}:option.selected`,
|
||||
},
|
||||
],
|
||||
|
Loading…
Reference in New Issue
Block a user