Compare commits

...

8 Commits

Author SHA1 Message Date
fabske0
1c4956ac41
Merge 9b2859b2ca into 98809c28bd 2025-08-16 00:29:54 +02:00
fabske0
9b2859b2ca chnage pokemon evos locales uses 2025-08-16 00:27:15 +02:00
AJ Fontaine
98809c28bd
[Balance] Add TM for Shock Wave (#6274)
Add TM for Shock Wave
2025-08-15 22:23:13 +00:00
damocleas
e0559e03ff Update locales 2025-08-15 17:09:51 -04:00
SmhMyHead
f6b99780fb
[UI/UIX] Dex unseen species filter (#5909)
* [UI/UIX] Dex unseen species filter

* Removed changes to icon visibility rules

* Update src/ui/pokedex-ui-handler.ts

---------

Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>
2025-08-15 19:27:16 +00:00
fabske0
22e77a79c1 change pokemon category locales use 2025-08-15 20:49:03 +02:00
fabske0
c884de339a chnage party ui locales use 2025-08-15 16:11:00 +02:00
fabske0
1b57ee0959 chnage nature locales use 2025-08-14 21:51:09 +02:00
9 changed files with 339 additions and 34 deletions

@ -1 +1 @@
Subproject commit ab2716d5440c25f73986664aa3f3131821c3c392
Subproject commit 1ea8f865e30d1940caa0fceeabf37ae2e4689471

View File

@ -15,6 +15,7 @@ import type { Pokemon } from "#field/pokemon";
import type { SpeciesStatBoosterItem, SpeciesStatBoosterModifierType } from "#modifiers/modifier-type";
import { coerceArray, isNullOrUndefined, randSeedInt } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
import { toCamelCase } from "#utils/strings";
import i18next from "i18next";
export enum SpeciesWildEvolutionDelay {
@ -133,7 +134,7 @@ export class SpeciesEvolutionCondition {
case EvoCondKey.FRIENDSHIP:
return i18next.t("pokemonEvolutions:friendship");
case EvoCondKey.TIME:
return i18next.t(`pokemonEvolutions:timeOfDay.${TimeOfDay[cond.time[cond.time.length - 1]]}`); // For Day and Night evos, the key we want goes last
return i18next.t(`pokemonEvolutions:timeOfDay.${toCamelCase(TimeOfDay[cond.time[cond.time.length - 1]])}`); // For Day and Night evos, the key we want goes last
case EvoCondKey.MOVE_TYPE:
return i18next.t("pokemonEvolutions:moveType", {type: i18next.t(`pokemonInfo:Type.${PokemonType[cond.pkmnType]}`)});
case EvoCondKey.PARTY_TYPE:
@ -156,7 +157,7 @@ export class SpeciesEvolutionCondition {
case EvoCondKey.SPECIES_CAUGHT:
return i18next.t("pokemonEvolutions:caught", {species: getPokemonSpecies(cond.speciesCaught).name});
case EvoCondKey.HELD_ITEM:
return i18next.t(`pokemonEvolutions:heldItem.${cond.itemKey}`);
return i18next.t(`pokemonEvolutions:heldItem.${toCamelCase(cond.itemKey)}`);
}
}).filter(s => !isNullOrUndefined(s)); // Filter out stringless conditions
return this.desc;
@ -245,7 +246,7 @@ export class SpeciesFormEvolution {
}
if (this.item) {
const itemDescription = i18next.t(`modifierType:EvolutionItem.${EvolutionItem[this.item].toUpperCase()}`);
const rarity = this.item > 50 ? i18next.t("pokemonEvolutions:ULTRA") : i18next.t("pokemonEvolutions:GREAT");
const rarity = this.item > 50 ? i18next.t("pokemonEvolutions:ultra") : i18next.t("pokemonEvolutions:great");
strings.push(i18next.t("pokemonEvolutions:using", {item: itemDescription, tier: rarity}));
}
if (this.condition) {

View File

@ -45736,6 +45736,285 @@ export const tmSpecies: TmSpecies = {
SpeciesId.HISUI_ARCANINE,
SpeciesId.HISUI_AVALUGG,
],
[MoveId.SHOCK_WAVE]: [
SpeciesId.RATTATA,
SpeciesId.RATICATE,
SpeciesId.PIKACHU,
SpeciesId.RAICHU,
SpeciesId.NIDORAN_F,
SpeciesId.NIDORINA,
SpeciesId.NIDOQUEEN,
SpeciesId.NIDORAN_M,
SpeciesId.NIDORINO,
SpeciesId.NIDOKING,
SpeciesId.CLEFAIRY,
SpeciesId.CLEFABLE,
SpeciesId.JIGGLYPUFF,
SpeciesId.WIGGLYTUFF,
SpeciesId.MEOWTH,
SpeciesId.PERSIAN,
SpeciesId.ABRA,
SpeciesId.KADABRA,
SpeciesId.ALAKAZAM,
SpeciesId.MAGNEMITE,
SpeciesId.MAGNETON,
SpeciesId.GRIMER,
SpeciesId.MUK,
SpeciesId.VOLTORB,
SpeciesId.ELECTRODE,
SpeciesId.LICKITUNG,
SpeciesId.KOFFING,
SpeciesId.WEEZING,
SpeciesId.RHYHORN,
SpeciesId.RHYDON,
SpeciesId.CHANSEY,
SpeciesId.TANGELA,
SpeciesId.KANGASKHAN,
SpeciesId.MR_MIME,
SpeciesId.ELECTABUZZ,
SpeciesId.TAUROS,
SpeciesId.LAPRAS,
SpeciesId.JOLTEON,
SpeciesId.PORYGON,
SpeciesId.SNORLAX,
SpeciesId.ZAPDOS,
SpeciesId.DRATINI,
SpeciesId.DRAGONAIR,
SpeciesId.DRAGONITE,
SpeciesId.MEWTWO,
SpeciesId.MEW,
SpeciesId.SENTRET,
SpeciesId.FURRET,
SpeciesId.CHINCHOU,
SpeciesId.LANTURN,
SpeciesId.PICHU,
SpeciesId.CLEFFA,
SpeciesId.IGGLYBUFF,
SpeciesId.TOGEPI,
SpeciesId.TOGETIC,
SpeciesId.MAREEP,
SpeciesId.FLAAFFY,
SpeciesId.AMPHAROS,
SpeciesId.AIPOM,
SpeciesId.MISDREAVUS,
SpeciesId.GIRAFARIG,
SpeciesId.DUNSPARCE,
SpeciesId.SNUBBULL,
SpeciesId.GRANBULL,
SpeciesId.QWILFISH,
SpeciesId.PORYGON2,
SpeciesId.STANTLER,
SpeciesId.ELEKID,
SpeciesId.MILTANK,
SpeciesId.BLISSEY,
SpeciesId.RAIKOU,
SpeciesId.TYRANITAR,
SpeciesId.LUGIA,
SpeciesId.HO_OH,
SpeciesId.CELEBI,
SpeciesId.ZIGZAGOON,
SpeciesId.LINOONE,
SpeciesId.WINGULL,
SpeciesId.PELIPPER,
SpeciesId.RALTS,
SpeciesId.KIRLIA,
SpeciesId.GARDEVOIR,
SpeciesId.SLAKOTH,
SpeciesId.VIGOROTH,
SpeciesId.SLAKING,
SpeciesId.WHISMUR,
SpeciesId.LOUDRED,
SpeciesId.EXPLOUD,
SpeciesId.NOSEPASS,
SpeciesId.SKITTY,
SpeciesId.DELCATTY,
SpeciesId.SABLEYE,
SpeciesId.ARON,
SpeciesId.LAIRON,
SpeciesId.AGGRON,
SpeciesId.ELECTRIKE,
SpeciesId.MANECTRIC,
SpeciesId.PLUSLE,
SpeciesId.MINUN,
SpeciesId.VOLBEAT,
SpeciesId.ILLUMISE,
SpeciesId.GULPIN,
SpeciesId.SWALOT,
SpeciesId.SPOINK,
SpeciesId.GRUMPIG,
SpeciesId.SPINDA,
SpeciesId.ZANGOOSE,
SpeciesId.CASTFORM,
SpeciesId.KECLEON,
SpeciesId.SHUPPET,
SpeciesId.BANETTE,
SpeciesId.CHIMECHO,
SpeciesId.ABSOL,
SpeciesId.REGIROCK,
SpeciesId.REGICE,
SpeciesId.REGISTEEL,
SpeciesId.LATIAS,
SpeciesId.LATIOS,
SpeciesId.KYOGRE,
SpeciesId.GROUDON,
SpeciesId.RAYQUAZA,
SpeciesId.JIRACHI,
SpeciesId.DEOXYS,
SpeciesId.BIDOOF,
SpeciesId.BIBAREL,
SpeciesId.SHINX,
SpeciesId.LUXIO,
SpeciesId.LUXRAY,
SpeciesId.CRANIDOS,
SpeciesId.RAMPARDOS,
SpeciesId.SHIELDON,
SpeciesId.BASTIODON,
SpeciesId.PACHIRISU,
SpeciesId.AMBIPOM,
SpeciesId.DRIFLOON,
SpeciesId.DRIFBLIM,
SpeciesId.BUNEARY,
SpeciesId.LOPUNNY,
SpeciesId.MISMAGIUS,
SpeciesId.GLAMEOW,
SpeciesId.PURUGLY,
SpeciesId.CHINGLING,
SpeciesId.MIME_JR,
SpeciesId.HAPPINY,
SpeciesId.SPIRITOMB,
SpeciesId.MUNCHLAX,
SpeciesId.MAGNEZONE,
SpeciesId.LICKILICKY,
SpeciesId.RHYPERIOR,
SpeciesId.TANGROWTH,
SpeciesId.ELECTIVIRE,
SpeciesId.TOGEKISS,
SpeciesId.PORYGON_Z,
SpeciesId.GALLADE,
SpeciesId.PROBOPASS,
SpeciesId.FROSLASS,
SpeciesId.ROTOM,
SpeciesId.UXIE,
SpeciesId.MESPRIT,
SpeciesId.AZELF,
SpeciesId.DIALGA,
SpeciesId.PALKIA,
SpeciesId.REGIGIGAS,
SpeciesId.GIRATINA,
SpeciesId.DARKRAI,
SpeciesId.ARCEUS,
SpeciesId.VICTINI,
SpeciesId.PATRAT,
SpeciesId.WATCHOG,
SpeciesId.LILLIPUP,
SpeciesId.HERDIER,
SpeciesId.STOUTLAND,
SpeciesId.MUNNA,
SpeciesId.MUSHARNA,
SpeciesId.BLITZLE,
SpeciesId.ZEBSTRIKA,
SpeciesId.WOOBAT,
SpeciesId.SWOOBAT,
SpeciesId.SIGILYPH,
SpeciesId.YAMASK,
SpeciesId.COFAGRIGUS,
SpeciesId.MINCCINO,
SpeciesId.CINCCINO,
SpeciesId.GOTHITA,
SpeciesId.GOTHORITA,
SpeciesId.GOTHITELLE,
SpeciesId.SOLOSIS,
SpeciesId.DUOSION,
SpeciesId.REUNICLUS,
SpeciesId.EMOLGA,
SpeciesId.FRILLISH,
SpeciesId.JELLICENT,
SpeciesId.JOLTIK,
SpeciesId.GALVANTULA,
SpeciesId.KLINK,
SpeciesId.KLANG,
SpeciesId.KLINKLANG,
SpeciesId.EELEKTRIK,
SpeciesId.EELEKTROSS,
SpeciesId.ELGYEM,
SpeciesId.BEHEEYEM,
SpeciesId.LITWICK,
SpeciesId.LAMPENT,
SpeciesId.CHANDELURE,
SpeciesId.AXEW,
SpeciesId.FRAXURE,
SpeciesId.HAXORUS,
SpeciesId.STUNFISK,
SpeciesId.DRUDDIGON,
SpeciesId.GOLETT,
SpeciesId.GOLURK,
SpeciesId.DEINO,
SpeciesId.ZWEILOUS,
SpeciesId.HYDREIGON,
SpeciesId.THUNDURUS,
SpeciesId.ZEKROM,
SpeciesId.MELOETTA,
SpeciesId.GENESECT,
SpeciesId.BRAIXEN,
SpeciesId.DELPHOX,
SpeciesId.ESPURR,
SpeciesId.MEOWSTIC,
SpeciesId.HONEDGE,
SpeciesId.DOUBLADE,
SpeciesId.AEGISLASH,
SpeciesId.SKRELP,
SpeciesId.DRAGALGE,
SpeciesId.HELIOPTILE,
SpeciesId.HELIOLISK,
SpeciesId.DEDENNE,
SpeciesId.GOOMY,
SpeciesId.SLIGGOO,
SpeciesId.GOODRA,
SpeciesId.ZYGARDE,
SpeciesId.HOOPA,
SpeciesId.YUNGOOS,
SpeciesId.GUMSHOOS,
SpeciesId.GRUBBIN,
SpeciesId.CHARJABUG,
SpeciesId.VIKAVOLT,
SpeciesId.PASSIMIAN,
SpeciesId.TURTONATOR,
SpeciesId.TOGEDEMARU,
SpeciesId.DRAMPA,
SpeciesId.KOMMO_O,
SpeciesId.TAPU_KOKO,
SpeciesId.SOLGALEO,
SpeciesId.LUNALA,
SpeciesId.PHEROMOSA,
SpeciesId.XURKITREE,
SpeciesId.CELESTEELA,
SpeciesId.GUZZLORD,
SpeciesId.NECROZMA,
SpeciesId.MAGEARNA,
SpeciesId.NAGANADEL,
SpeciesId.ZERAORA,
SpeciesId.TOXTRICITY,
SpeciesId.MR_RIME,
SpeciesId.REGIELEKI,
SpeciesId.WYRDEER,
SpeciesId.FARIGIRAF,
SpeciesId.DUDUNSPARCE,
SpeciesId.MIRAIDON,
SpeciesId.RAGING_BOLT,
SpeciesId.ALOLA_RATTATA,
SpeciesId.ALOLA_RATICATE,
SpeciesId.ALOLA_RAICHU,
SpeciesId.ALOLA_MEOWTH,
SpeciesId.ALOLA_PERSIAN,
SpeciesId.ALOLA_GRAVELER,
SpeciesId.ALOLA_GOLEM,
SpeciesId.ALOLA_GRIMER,
SpeciesId.ALOLA_MUK,
SpeciesId.GALAR_WEEZING,
SpeciesId.GALAR_MR_MIME,
SpeciesId.HISUI_SLIGGOO,
SpeciesId.HISUI_GOODRA,
],
[MoveId.WATER_PULSE]: [
SpeciesId.SQUIRTLE,
SpeciesId.WARTORTLE,
@ -68747,6 +69026,7 @@ export const tmPoolTiers: TmPoolTiers = {
[MoveId.LEAF_BLADE]: ModifierTier.ULTRA,
[MoveId.DRAGON_DANCE]: ModifierTier.GREAT,
[MoveId.ROCK_BLAST]: ModifierTier.GREAT,
[MoveId.SHOCK_WAVE]: ModifierTier.GREAT,
[MoveId.WATER_PULSE]: ModifierTier.GREAT,
[MoveId.ROOST]: ModifierTier.GREAT,
[MoveId.GRAVITY]: ModifierTier.COMMON,

View File

@ -3,7 +3,7 @@ import { EFFECTIVE_STATS, getShortenedStatKey, Stat } from "#enums/stat";
import { TextStyle } from "#enums/text-style";
import { UiTheme } from "#enums/ui-theme";
import { getBBCodeFrag } from "#ui/text";
import { toTitleCase } from "#utils/strings";
import { toCamelCase } from "#utils/strings";
import i18next from "i18next";
export function getNatureName(
@ -13,7 +13,7 @@ export function getNatureName(
ignoreBBCode = false,
uiTheme: UiTheme = UiTheme.DEFAULT,
): string {
let ret = toTitleCase(Nature[nature]);
let ret = toCamelCase(Nature[nature]);
//Translating nature
if (i18next.exists(`nature:${ret}`)) {
ret = i18next.t(`nature:${ret}` as any);

View File

@ -30,7 +30,7 @@ export abstract class SpeciesFormChangeTrigger {
export class SpeciesFormChangeManualTrigger extends SpeciesFormChangeTrigger {}
export class SpeciesFormChangeAbilityTrigger extends SpeciesFormChangeTrigger {
public description: string = i18next.t("pokemonEvolutions:Forms.ability");
public description: string = i18next.t("pokemonEvolutions:forms.ability");
}
export class SpeciesFormChangeCompoundTrigger {
@ -69,10 +69,10 @@ export class SpeciesFormChangeItemTrigger extends SpeciesFormChangeTrigger {
this.item = item;
this.active = active;
this.description = this.active
? i18next.t("pokemonEvolutions:Forms.item", {
? i18next.t("pokemonEvolutions:forms.item", {
item: i18next.t(`modifierType:FormChangeItem.${FormChangeItem[this.item]}`),
})
: i18next.t("pokemonEvolutions:Forms.deactivateItem", {
: i18next.t("pokemonEvolutions:forms.deactivateItem", {
item: i18next.t(`modifierType:FormChangeItem.${FormChangeItem[this.item]}`),
});
}
@ -97,7 +97,7 @@ export class SpeciesFormChangeTimeOfDayTrigger extends SpeciesFormChangeTrigger
constructor(...timesOfDay: TimeOfDay[]) {
super();
this.timesOfDay = timesOfDay;
this.description = i18next.t("pokemonEvolutions:Forms.timeOfDay");
this.description = i18next.t("pokemonEvolutions:orms.timeOfDay");
}
canChange(_pokemon: Pokemon): boolean {
@ -111,8 +111,8 @@ export class SpeciesFormChangeActiveTrigger extends SpeciesFormChangeTrigger {
super();
this.active = active;
this.description = this.active
? i18next.t("pokemonEvolutions:Forms.enter")
: i18next.t("pokemonEvolutions:Forms.leave");
? i18next.t("pokemonEvolutions:forms.enter")
: i18next.t("pokemonEvolutions:forms.leave");
}
canChange(pokemon: Pokemon): boolean {
@ -128,7 +128,7 @@ export class SpeciesFormChangeStatusEffectTrigger extends SpeciesFormChangeTrigg
super();
this.statusEffects = coerceArray(statusEffects);
this.invert = invert;
// this.description = i18next.t("pokemonEvolutions:Forms.statusEffect");
// this.description = i18next.t("pokemonEvolutions:forms.statusEffect");
}
canChange(pokemon: Pokemon): boolean {
@ -146,10 +146,10 @@ export class SpeciesFormChangeMoveLearnedTrigger extends SpeciesFormChangeTrigge
this.known = known;
const moveKey = toCamelCase(MoveId[this.move]);
this.description = known
? i18next.t("pokemonEvolutions:Forms.moveLearned", {
? i18next.t("pokemonEvolutions:forms.moveLearned", {
move: i18next.t(`move:${moveKey}.name`),
})
: i18next.t("pokemonEvolutions:Forms.moveForgotten", {
: i18next.t("pokemonEvolutions:forms.moveForgotten", {
move: i18next.t(`move:${moveKey}.name`),
});
}
@ -171,7 +171,7 @@ export abstract class SpeciesFormChangeMoveTrigger extends SpeciesFormChangeTrig
}
export class SpeciesFormChangePreMoveTrigger extends SpeciesFormChangeMoveTrigger {
description = i18next.t("pokemonEvolutions:Forms.preMove");
description = i18next.t("pokemonEvolutions:forms.preMove");
canChange(pokemon: Pokemon): boolean {
const command = globalScene.currentBattle.turnCommands[pokemon.getBattlerIndex()];
return !!command?.move && this.movePredicate(command.move.move) === this.used;
@ -179,7 +179,7 @@ export class SpeciesFormChangePreMoveTrigger extends SpeciesFormChangeMoveTrigge
}
export class SpeciesFormChangePostMoveTrigger extends SpeciesFormChangeMoveTrigger {
description = i18next.t("pokemonEvolutions:Forms.postMove");
description = i18next.t("pokemonEvolutions:forms.postMove");
canChange(pokemon: Pokemon): boolean {
return (
pokemon.summonData && !!pokemon.getLastXMoves(1).filter(m => this.movePredicate(m.move)).length === this.used
@ -244,7 +244,7 @@ export class SpeciesFormChangeWeatherTrigger extends SpeciesFormChangeTrigger {
super();
this.ability = ability;
this.weathers = weathers;
this.description = i18next.t("pokemonEvolutions:Forms.weather");
this.description = i18next.t("pokemonEvolutions:forms.weather");
}
/**
@ -282,7 +282,7 @@ export class SpeciesFormChangeRevertWeatherFormTrigger extends SpeciesFormChange
super();
this.ability = ability;
this.weathers = weathers;
this.description = i18next.t("pokemonEvolutions:Forms.weatherRevert");
this.description = i18next.t("pokemonEvolutions:forms.weatherRevert");
}
/**

View File

@ -880,7 +880,7 @@ export class PokemonSpecies extends PokemonSpeciesForm implements Localizable {
localize(): void {
this.name = i18next.t(`pokemon:${SpeciesId[this.speciesId].toLowerCase()}`);
this.category = i18next.t(`pokemonCategory:${SpeciesId[this.speciesId].toLowerCase()}_category`);
this.category = i18next.t(`pokemonCategory:${toCamelCase(SpeciesId[this.speciesId])}Category`);
}
getWildSpeciesForLevel(level: number, allowEvolving: boolean, isBoss: boolean, gameMode: GameMode): SpeciesId {

View File

@ -31,14 +31,14 @@ export class ConfirmUiHandler extends AbstractOptionSelectUiHandler {
const config: OptionSelectConfig = {
options: [
{
label: i18next.t("partyUiHandler:SUMMARY"),
label: i18next.t("partyUiHandler:summary"),
handler: () => {
args[0]();
return true;
},
},
{
label: i18next.t("partyUiHandler:POKEDEX"),
label: i18next.t("partyUiHandler:pokedex"),
handler: () => {
args[1]();
return true;

View File

@ -27,7 +27,7 @@ import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text";
import { addWindow } from "#ui/ui-theme";
import { applyChallenges } from "#utils/challenge-utils";
import { BooleanHolder, getLocalizedSpriteKey, randInt } from "#utils/common";
import { toTitleCase } from "#utils/strings";
import { toCamelCase, toTitleCase } from "#utils/strings";
import i18next from "i18next";
import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext";
@ -1573,12 +1573,12 @@ export class PartyUiHandler extends MessageUiHandler {
const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon);
if (formChangeItemModifiers && option >= PartyOption.FORM_CHANGE_ITEM) {
const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM];
optionName = `${modifier.active ? i18next.t("partyUiHandler:DEACTIVATE") : i18next.t("partyUiHandler:ACTIVATE")} ${modifier.type.name}`;
optionName = `${modifier.active ? i18next.t("partyUiHandler:deactivate") : i18next.t("partyUiHandler:activate")} ${modifier.type.name}`;
} else if (option === PartyOption.UNPAUSE_EVOLUTION) {
optionName = `${pokemon.pauseEvolutions ? i18next.t("partyUiHandler:UNPAUSE_EVOLUTION") : i18next.t("partyUiHandler:PAUSE_EVOLUTION")}`;
optionName = `${pokemon.pauseEvolutions ? i18next.t("partyUiHandler:unpausedEvolution") : i18next.t("partyUiHandler:pauseEvolution")}`;
} else {
if (this.localizedOptions.includes(option)) {
optionName = i18next.t(`partyUiHandler:${PartyOption[option]}`);
optionName = i18next.t(`partyUiHandler:${toCamelCase(PartyOption[option])}`);
} else {
optionName = toTitleCase(PartyOption[option]);
}
@ -1595,7 +1595,7 @@ export class PartyUiHandler extends MessageUiHandler {
.getLevelMoves()
.find(plm => plm[1] === move);
} else if (option === PartyOption.ALL) {
optionName = i18next.t("partyUiHandler:ALL");
optionName = i18next.t("partyUiHandler:all");
} else {
const itemModifiers = this.getItemModifiers(pokemon);
const itemModifier = itemModifiers[option];
@ -2190,7 +2190,7 @@ class PartyDiscardModeButton extends Phaser.GameObjects.Container {
setup(party: PartyUiHandler) {
this.transferIcon = globalScene.add.sprite(0, 0, "party_transfer");
this.discardIcon = globalScene.add.sprite(0, 0, "party_discard");
this.textBox = addTextObject(-8, -7, i18next.t("partyUiHandler:TRANSFER"), TextStyle.PARTY);
this.textBox = addTextObject(-8, -7, i18next.t("partyUiHandler:transfer"), TextStyle.PARTY);
this.party = party;
this.add(this.transferIcon);
@ -2238,14 +2238,14 @@ class PartyDiscardModeButton extends Phaser.GameObjects.Container {
this.transferIcon.setVisible(true);
this.discardIcon.setVisible(false);
this.textBox.setVisible(true);
this.textBox.setText(i18next.t("partyUiHandler:TRANSFER"));
this.textBox.setText(i18next.t("partyUiHandler:transfer"));
this.transferIcon.displayWidth = this.textBox.text.length * 9 + 3;
break;
case PartyUiMode.DISCARD:
this.transferIcon.setVisible(false);
this.discardIcon.setVisible(true);
this.textBox.setVisible(true);
this.textBox.setText(i18next.t("partyUiHandler:DISCARD"));
this.textBox.setText(i18next.t("partyUiHandler:discard"));
this.discardIcon.displayWidth = this.textBox.text.length * 9 + 3;
break;
}

View File

@ -410,6 +410,11 @@ export class PokedexUiHandler extends MessageUiHandler {
new DropDownLabel(i18next.t("filterBar:hasHiddenAbility"), undefined, DropDownState.ON),
new DropDownLabel(i18next.t("filterBar:noHiddenAbility"), undefined, DropDownState.EXCLUDE),
];
const seenSpeciesLabels = [
new DropDownLabel(i18next.t("filterBar:seenSpecies"), undefined, DropDownState.OFF),
new DropDownLabel(i18next.t("filterBar:isSeen"), undefined, DropDownState.ON),
new DropDownLabel(i18next.t("filterBar:isUnseen"), undefined, DropDownState.EXCLUDE),
];
const eggLabels = [
new DropDownLabel(i18next.t("filterBar:egg"), undefined, DropDownState.OFF),
new DropDownLabel(i18next.t("filterBar:eggPurchasable"), undefined, DropDownState.ON),
@ -423,6 +428,7 @@ export class PokedexUiHandler extends MessageUiHandler {
new DropDownOption("FAVORITE", favoriteLabels),
new DropDownOption("WIN", winLabels),
new DropDownOption("HIDDEN_ABILITY", hiddenAbilityLabels),
new DropDownOption("SEEN_SPECIES", seenSpeciesLabels),
new DropDownOption("EGG", eggLabels),
new DropDownOption("POKERUS", pokerusLabels),
];
@ -792,13 +798,15 @@ export class PokedexUiHandler extends MessageUiHandler {
this.starterSelectMessageBoxContainer.setVisible(!!text?.length);
}
isSeen(species: PokemonSpecies, dexEntry: DexEntry): boolean {
isSeen(species: PokemonSpecies, dexEntry: DexEntry, seenFilter?: boolean): boolean {
if (dexEntry?.seenAttr) {
return true;
}
const starterDexEntry = globalScene.gameData.dexData[this.getStarterSpeciesId(species.speciesId)];
return !!starterDexEntry?.caughtAttr;
if (!seenFilter) {
const starterDexEntry = globalScene.gameData.dexData[this.getStarterSpeciesId(species.speciesId)];
return !!starterDexEntry?.caughtAttr;
}
return false;
}
/**
@ -1617,6 +1625,21 @@ export class PokedexUiHandler extends MessageUiHandler {
}
});
// Seen Filter
const dexEntry = globalScene.gameData.dexData[species.speciesId];
const isItSeen = this.isSeen(species, dexEntry, true);
const fitsSeen = this.filterBar.getVals(DropDownColumn.MISC).some(misc => {
if (misc.val === "SEEN_SPECIES" && misc.state === DropDownState.ON) {
return isItSeen;
}
if (misc.val === "SEEN_SPECIES" && misc.state === DropDownState.EXCLUDE) {
return !isItSeen;
}
if (misc.val === "SEEN_SPECIES" && misc.state === DropDownState.OFF) {
return true;
}
});
// Egg Purchasable Filter
const isEggPurchasable = this.isSameSpeciesEggAvailable(species.speciesId);
const fitsEgg = this.filterBar.getVals(DropDownColumn.MISC).some(misc => {
@ -1658,6 +1681,7 @@ export class PokedexUiHandler extends MessageUiHandler {
fitsFavorite &&
fitsWin &&
fitsHA &&
fitsSeen &&
fitsEgg &&
fitsPokerus
) {