mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-05-03 06:54:34 +01:00
[Bug][Hotfix] Fix crash when pulling trainer names for (certain) non-English languages (#5608)
* Fix key usage for trainer locales * Update gts * Fix partner name generation --------- Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>
This commit is contained in:
parent
4a4e766135
commit
5416c76ecb
@ -985,12 +985,11 @@ function doTradeReceivedSequence(
|
|||||||
function generateRandomTraderName() {
|
function generateRandomTraderName() {
|
||||||
const length = TrainerType.YOUNGSTER - TrainerType.ACE_TRAINER + 1;
|
const length = TrainerType.YOUNGSTER - TrainerType.ACE_TRAINER + 1;
|
||||||
// +1 avoids TrainerType.UNKNOWN
|
// +1 avoids TrainerType.UNKNOWN
|
||||||
const trainerTypePool = i18next.t("trainersCommon:" + TrainerType[randInt(length) + 1], { returnObjects: true });
|
const classKey = `trainersCommon:${TrainerType[randInt(length) + 1]}`;
|
||||||
// Some trainers have 2 gendered pools, some do not
|
// Some trainers have 2 gendered pools, some do not
|
||||||
const gender = randInt(2) === 0 ? "MALE" : "FEMALE";
|
const genderKey = i18next.exists(`${classKey}.MALE`) ? (randInt(2) === 0 ? ".MALE" : ".FEMALE") : "";
|
||||||
const trainerNameString = randSeedItem(
|
const trainerNameKey = randSeedItem(Object.keys(i18next.t(`${classKey}${genderKey}`, { returnObjects: true })));
|
||||||
Object.values(trainerTypePool.hasOwnProperty(gender) ? trainerTypePool[gender] : trainerTypePool),
|
const trainerNameString = i18next.t(`${classKey}${genderKey}.${trainerNameKey}`);
|
||||||
) as string;
|
|
||||||
// Some names have an '&' symbol and need to be trimmed to a single name instead of a double name
|
// Some names have an '&' symbol and need to be trimmed to a single name instead of a double name
|
||||||
const trainerNames = trainerNameString.split(" & ");
|
const trainerNames = trainerNameString.split(" & ");
|
||||||
return trainerNames[randInt(trainerNames.length)];
|
return trainerNames[randInt(trainerNames.length)];
|
||||||
|
@ -33,14 +33,16 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
|||||||
public partyTemplateIndex: number;
|
public partyTemplateIndex: number;
|
||||||
public name: string;
|
public name: string;
|
||||||
public partnerName: string;
|
public partnerName: string;
|
||||||
|
public nameKey: string;
|
||||||
|
public partnerNameKey: string | undefined;
|
||||||
public originalIndexes: { [key: number]: number } = {};
|
public originalIndexes: { [key: number]: number } = {};
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
trainerType: TrainerType,
|
trainerType: TrainerType,
|
||||||
variant: TrainerVariant,
|
variant: TrainerVariant,
|
||||||
partyTemplateIndex?: number,
|
partyTemplateIndex?: number,
|
||||||
name?: string,
|
nameKey?: string,
|
||||||
partnerName?: string,
|
partnerNameKey?: string,
|
||||||
trainerConfigOverride?: TrainerConfig,
|
trainerConfigOverride?: TrainerConfig,
|
||||||
) {
|
) {
|
||||||
super(globalScene, -72, 80);
|
super(globalScene, -72, 80);
|
||||||
@ -59,28 +61,41 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
|||||||
: Utils.randSeedWeightedItem(this.config.partyTemplates.map((_, i) => i)),
|
: Utils.randSeedWeightedItem(this.config.partyTemplates.map((_, i) => i)),
|
||||||
this.config.partyTemplates.length - 1,
|
this.config.partyTemplates.length - 1,
|
||||||
);
|
);
|
||||||
if (i18next.exists("trainersCommon:" + TrainerType[trainerType], { returnObjects: true })) {
|
const classKey = `trainersCommon:${TrainerType[trainerType]}`;
|
||||||
const namePool = i18next.t("trainersCommon:" + TrainerType[trainerType], { returnObjects: true });
|
if (i18next.exists(classKey, { returnObjects: true })) {
|
||||||
this.name =
|
if (nameKey) {
|
||||||
name ||
|
this.nameKey = nameKey;
|
||||||
Utils.randSeedItem(
|
} else {
|
||||||
Object.values(
|
const genderKey = i18next.exists(`${classKey}.MALE`)
|
||||||
namePool.hasOwnProperty("MALE")
|
? variant === TrainerVariant.FEMALE
|
||||||
? namePool[variant === TrainerVariant.FEMALE ? "FEMALE" : "MALE"]
|
? ".FEMALE"
|
||||||
: namePool,
|
: ".MALE"
|
||||||
),
|
: "";
|
||||||
|
const trainerKey = Utils.randSeedItem(
|
||||||
|
Object.keys(i18next.t(`${classKey}${genderKey}`, { returnObjects: true })),
|
||||||
);
|
);
|
||||||
|
this.nameKey = `${classKey}${genderKey}.${trainerKey}`;
|
||||||
|
}
|
||||||
|
this.name = i18next.t(this.nameKey);
|
||||||
if (variant === TrainerVariant.DOUBLE) {
|
if (variant === TrainerVariant.DOUBLE) {
|
||||||
if (this.config.doubleOnly) {
|
if (this.config.doubleOnly) {
|
||||||
if (partnerName) {
|
if (partnerNameKey) {
|
||||||
this.partnerName = partnerName;
|
this.partnerNameKey = partnerNameKey;
|
||||||
|
this.partnerName = i18next.t(this.partnerNameKey);
|
||||||
} else {
|
} else {
|
||||||
[this.name, this.partnerName] = this.name.split(" & ");
|
[this.name, this.partnerName] = this.name.split(" & ");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.partnerName =
|
const partnerGenderKey = i18next.exists(`${classKey}.FEMALE`) ? ".FEMALE" : "";
|
||||||
partnerName ||
|
const partnerTrainerKey = Utils.randSeedItem(
|
||||||
Utils.randSeedItem(Object.values(namePool.hasOwnProperty("FEMALE") ? namePool["FEMALE"] : namePool));
|
Object.keys(
|
||||||
|
i18next.t(`${classKey}${partnerGenderKey}`, {
|
||||||
|
returnObjects: true,
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
this.partnerNameKey = `${classKey}${partnerGenderKey}.${partnerTrainerKey}`;
|
||||||
|
this.partnerName = i18next.t(this.partnerNameKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@ export default class TrainerData {
|
|||||||
public trainerType: TrainerType;
|
public trainerType: TrainerType;
|
||||||
public variant: TrainerVariant;
|
public variant: TrainerVariant;
|
||||||
public partyTemplateIndex: number;
|
public partyTemplateIndex: number;
|
||||||
public name: string;
|
public nameKey: string;
|
||||||
public partnerName: string;
|
public partnerNameKey: string | undefined;
|
||||||
|
|
||||||
constructor(source: Trainer | any) {
|
constructor(source: Trainer | any) {
|
||||||
const sourceTrainer = source instanceof Trainer ? (source as Trainer) : null;
|
const sourceTrainer = source instanceof Trainer ? (source as Trainer) : null;
|
||||||
@ -17,11 +17,11 @@ export default class TrainerData {
|
|||||||
? TrainerVariant.FEMALE
|
? TrainerVariant.FEMALE
|
||||||
: TrainerVariant.DEFAULT;
|
: TrainerVariant.DEFAULT;
|
||||||
this.partyTemplateIndex = source.partyMemberTemplateIndex;
|
this.partyTemplateIndex = source.partyMemberTemplateIndex;
|
||||||
this.name = source.name;
|
this.nameKey = source.nameKey;
|
||||||
this.partnerName = source.partnerName;
|
this.partnerNameKey = source.partnerNameKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
toTrainer(): Trainer {
|
toTrainer(): Trainer {
|
||||||
return new Trainer(this.trainerType, this.variant, this.partyTemplateIndex, this.name, this.partnerName);
|
return new Trainer(this.trainerType, this.variant, this.partyTemplateIndex, this.nameKey, this.partnerNameKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user