get description function

This commit is contained in:
AJ Fontaine 2025-04-04 12:57:57 -04:00 committed by Sirz Benjie
parent a3ea1b445a
commit 0ae1553ee7
No known key found for this signature in database
GPG Key ID: 4A524B4D196C759E
1 changed files with 75 additions and 21 deletions

View File

@ -118,7 +118,6 @@ export class SpeciesFormEvolution {
public item: EvolutionItem | null;
public condition: SpeciesEvolutionCondition | null;
public wildDelay: SpeciesWildEvolutionDelay;
public description = "";
constructor(speciesId: Species, preFormKey: string | null, evoFormKey: string | null, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) {
this.speciesId = speciesId;
@ -128,7 +127,9 @@ export class SpeciesFormEvolution {
this.item = item || EvolutionItem.NONE;
this.condition = condition;
this.wildDelay = wildDelay ?? SpeciesWildEvolutionDelay.NONE;
}
get description(): string {
const strings: string[] = [];
if (this.level > 1) {
strings.push(i18next.t("pokemonEvolutions:level") + ` ${this.level}`);
@ -141,7 +142,7 @@ export class SpeciesFormEvolution {
if (this.condition) {
strings.push(this.condition.description);
}
this.description = strings
return strings
.filter(str => str !== "")
.map((str, index) => index > 0 ? str[0].toLowerCase() + str.slice(1) : str)
.join(i18next.t("pokemonEvolutions:connector"));
@ -170,14 +171,16 @@ export class FusionSpeciesFormEvolution extends SpeciesFormEvolution {
export class SpeciesEvolutionCondition {
public predicate: EvolutionConditionPredicate;
public description: string;
public conditionType: EvolutionConditionType;
constructor(predicate: EvolutionConditionPredicate, type: EvolutionConditionType) {
this.predicate = predicate;
this.description = "";
this.conditionType = type;
}
get description(): string {
return "";
}
}
class GenderEvolutionCondition extends SpeciesEvolutionCondition {
@ -185,7 +188,10 @@ class GenderEvolutionCondition extends SpeciesEvolutionCondition {
constructor(gender: Gender) {
super((p => p.gender === gender), gender === Gender.MALE ? EvolutionConditionType.MALE : EvolutionConditionType.FEMALE);
this.gender = gender;
this.description = i18next.t(`pokemonEvolutions:${Gender[gender]}`);
}
get description(): string {
return i18next.t(`pokemonEvolutions:${Gender[this.gender]}`);
}
}
@ -199,7 +205,10 @@ class TimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
super((() => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT), EvolutionConditionType.NIGHT);
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
}
this.description = i18next.t("pokemonEvolutions:timeOfDay", {tod: i18next.t(`pokemonEvolutions:${tod}`)});
}
get description(): string {
return i18next.t("pokemonEvolutions:timeOfDay", {tod: i18next.t(`pokemonEvolutions:${TimeOfDay[this.timesOfDay[1]].toLowerCase()}`)});
}
}
@ -208,7 +217,10 @@ class MoveEvolutionCondition extends SpeciesEvolutionCondition {
constructor(move: Moves) {
super((p => p.moveset.some(m => m.moveId === move)), EvolutionConditionType.MOVE);
this.move = move;
this.description = i18next.t("pokemonEvolutions:move", { move: allMoves[move].name });
}
get description(): string {
return i18next.t("pokemonEvolutions:move", { move: allMoves[this.move].name });
}
}
@ -217,7 +229,10 @@ class FriendshipEvolutionCondition extends SpeciesEvolutionCondition {
constructor(amount: number) {
super((p => p.friendship >= amount), EvolutionConditionType.FRIENDSHIP);
this.amount = amount;
this.description = i18next.t("pokemonEvolutions:friendship");
}
get description(): string {
return i18next.t("pokemonEvolutions:friendship");
}
}
@ -232,9 +247,12 @@ class FriendshipTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
super((p => p.friendship >= amount && (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), EvolutionConditionType.FRIENDSHIP_NIGHT);
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
}
this.description = i18next.t("pokemonEvolutions:friendshipTimeOfDay", { tod: i18next.t(`pokemonEvolutions:${tod}`)});
this.amount = amount;
}
get description(): string {
return i18next.t("pokemonEvolutions:friendshipTimeOfDay", { tod: i18next.t(`pokemonEvolutions:${TimeOfDay[this.timesOfDay[1]].toLowerCase()}`)});
}
}
class FriendshipMoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
@ -244,14 +262,20 @@ class FriendshipMoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
super((p => p.friendship >= amount && !!p.getMoveset().find(m => m?.getMove().type === type)), EvolutionConditionType.FRIENDSHIP_MOVE_TYPE);
this.amount = amount;
this.moveType = type;
this.description = i18next.t("pokemonEvolutions:friendshipMoveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.moveType]}`) });
}
get description(): string {
return i18next.t("pokemonEvolutions:friendshipMoveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.moveType]}`) });
}
}
class ShedinjaEvolutionCondition extends SpeciesEvolutionCondition {
constructor() {
super((() => globalScene.getPlayerParty().length < 6 && globalScene.pokeballCounts[PokeballType.POKEBALL] > 0), EvolutionConditionType.SHEDINJA);
this.description = i18next.t("pokemonEvolutions:shedinja");
}
get description(): string {
return i18next.t("pokemonEvolutions:shedinja");
}
}
@ -260,7 +284,10 @@ class PartyTypeEvolutionCondition extends SpeciesEvolutionCondition {
constructor(type: PokemonType) {
super((() => !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(type) > -1)), EvolutionConditionType.PARTY_MEMBER_TYPE);
this.type = type;
this.description = i18next.t("pokemonEvolutions:partyType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
}
get description(): string {
return i18next.t("pokemonEvolutions:partyType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
}
}
@ -269,7 +296,10 @@ class CaughtEvolutionCondition extends SpeciesEvolutionCondition {
constructor(species: Species) {
super((() => !!globalScene.gameData.dexData[species].caughtAttr), EvolutionConditionType.CAUGHT_SPECIES);
this.species = species;
this.description = i18next.t("pokemonEvolutions:caught", { species: i18next.t(`pokemon:${Species[this.species].toLowerCase()}`) });
}
get description(): string {
return i18next.t("pokemonEvolutions:caught", { species: i18next.t(`pokemon:${Species[this.species].toLowerCase()}`) });
}
}
@ -278,7 +308,10 @@ class WeatherEvolutionCondition extends SpeciesEvolutionCondition {
constructor(weatherTypes: WeatherType[]) {
super((() => weatherTypes.indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1), EvolutionConditionType.WEATHER);
this.weatherTypes = weatherTypes;
this.description = i18next.t("pokemonEvolutions:weather");
}
get description(): string {
return i18next.t("pokemonEvolutions:weather");
}
}
@ -287,7 +320,10 @@ class MoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
constructor(type: PokemonType) {
super((p => p.moveset.filter(m => m?.getMove().type === type).length > 0), EvolutionConditionType.MOVE_TYPE);
this.type = type;
this.description = i18next.t("pokemonEvolutions:moveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
}
get description(): string {
return i18next.t("pokemonEvolutions:moveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
}
}
@ -298,7 +334,10 @@ class TreasureEvolutionCondition extends SpeciesEvolutionCondition {
+ globalScene.findModifiers(m => m instanceof MoneyMultiplierModifier
|| m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length > 9),
EvolutionConditionType.TREASURE);
this.description = i18next.t("pokemonEvolutions:treasure");
}
get description(): string {
return i18next.t("pokemonEvolutions:treasure");
}
}
@ -310,7 +349,10 @@ class TyrogueEvolutionCondition extends SpeciesEvolutionCondition {
EvolutionConditionType.TYROGUE
);
this.move = move;
this.description = i18next.t("pokemonEvolutions:move", { move: allMoves[move].name });
}
get description(): string {
return i18next.t("pokemonEvolutions:move", { move: allMoves[this.move].name });
}
}
@ -319,7 +361,10 @@ class NatureEvolutionCondition extends SpeciesEvolutionCondition {
constructor(natures: Nature[]) {
super((p => natures.includes(p.getNature())), EvolutionConditionType.NATURE);
this.natures = natures;
this.description = i18next.t("pokemonEvolutions:nature");
}
get description(): string {
return i18next.t("pokemonEvolutions:nature");
}
}
@ -336,7 +381,10 @@ class MoveTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
this.move = move;
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
}
this.description = i18next.t("pokemonEvolutions:moveTimeOfDay", { move: allMoves[move].name, tod: i18next.t(`pokemonEvolutions:${tod}`) });
}
get description(): string {
return i18next.t("pokemonEvolutions:moveTimeOfDay", { move: allMoves[this.move].name, tod: i18next.t(`pokemonEvolutions:${TimeOfDay[this.timesOfDay[1]].toLowerCase()}`) });
}
}
@ -345,7 +393,10 @@ class BiomeEvolutionCondition extends SpeciesEvolutionCondition {
constructor(biomes: Biome[]) {
super((() => biomes.filter(b => b === globalScene.arena.biomeType).length > 0), EvolutionConditionType.BIOME);
this.biomes = biomes;
this.description = i18next.t("pokemonEvolutions:biome");
}
get description(): string {
return i18next.t("pokemonEvolutions:biome");
}
}
@ -358,7 +409,10 @@ class DunsparceEvolutionCondition extends SpeciesEvolutionCondition {
}
return ret;
}), EvolutionConditionType.DUNSPARCE);
this.description = i18next.t("pokemonEvolutions:move", { move: allMoves[Moves.HYPER_DRILL].name });
}
get description(): string {
return i18next.t("pokemonEvolutions:move", { move: allMoves[Moves.HYPER_DRILL].name });
}
}