From f3141280c91174cd7e7fef0cf4e1979cec58057d Mon Sep 17 00:00:00 2001 From: Madmadness65 <59298170+Madmadness65@users.noreply.github.com> Date: Tue, 25 Mar 2025 00:51:59 -0500 Subject: [PATCH 1/5] [Balance] Implement more trainer types & add to biomes (#5520) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add more trainer types to biomes This makes the Hooligans, Musician, Pilot, Poké Fan, Rich, and Rich Kid trainer types able to be battled. * Adjusted Rich and Rich Kid $$$ multipliers * Add basic dialogue for trainer types Also added the Clerk's dialogue entries, as that trainer type has localized text, but no entry in the code. * Fix Musician to Pokefan encounter music * Add dialogue entries for new dialogue --------- Co-authored-by: damocleas --- src/data/balance/biomes.ts | 94 ++++++++++++++++++++------------ src/data/dialogue.ts | 107 +++++++++++++++++++++++++++++++++++++ src/data/trainer-config.ts | 48 ++++++++++++++--- 3 files changed, 208 insertions(+), 41 deletions(-) diff --git a/src/data/balance/biomes.ts b/src/data/balance/biomes.ts index a4e051d80c9..3dff1722af6 100644 --- a/src/data/balance/biomes.ts +++ b/src/data/balance/biomes.ts @@ -1659,7 +1659,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { }, [Biome.GRASS]: { [BiomePoolTier.COMMON]: [ TrainerType.BREEDER, TrainerType.SCHOOL_KID ], - [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER ], + [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.POKEFAN ], [BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ], [BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [], @@ -1680,9 +1680,9 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, [Biome.METROPOLIS]: { - [BiomePoolTier.COMMON]: [ TrainerType.CLERK, TrainerType.CYCLIST, TrainerType.OFFICER, TrainerType.WAITER, TrainerType.BEAUTY ], + [BiomePoolTier.COMMON]: [ TrainerType.BEAUTY, TrainerType.CLERK, TrainerType.CYCLIST, TrainerType.OFFICER, TrainerType.WAITER ], [BiomePoolTier.UNCOMMON]: [ TrainerType.BREEDER, TrainerType.DEPOT_AGENT, TrainerType.GUITARIST ], - [BiomePoolTier.RARE]: [ TrainerType.ARTIST ], + [BiomePoolTier.RARE]: [ TrainerType.ARTIST, TrainerType.RICH_KID ], [BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [], [BiomePoolTier.BOSS]: [ TrainerType.WHITNEY, TrainerType.NORMAN, TrainerType.IONO, TrainerType.LARRY ], @@ -1702,7 +1702,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, [Biome.SEA]: { - [BiomePoolTier.COMMON]: [ TrainerType.SWIMMER, TrainerType.SAILOR ], + [BiomePoolTier.COMMON]: [ TrainerType.SAILOR, TrainerType.SWIMMER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], [BiomePoolTier.SUPER_RARE]: [], @@ -1758,7 +1758,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { }, [Biome.MOUNTAIN]: { [BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.BLACK_BELT, TrainerType.HIKER ], - [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER ], + [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.PILOT ], [BiomePoolTier.RARE]: [], [BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [], @@ -1790,7 +1790,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, [Biome.DESERT]: { - [BiomePoolTier.COMMON]: [ TrainerType.SCIENTIST, TrainerType.BACKPACKER ], + [BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.SCIENTIST ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], [BiomePoolTier.SUPER_RARE]: [], @@ -1812,8 +1812,8 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, [Biome.MEADOW]: { - [BiomePoolTier.COMMON]: [ TrainerType.PARASOL_LADY, TrainerType.BEAUTY ], - [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BREEDER, TrainerType.BAKER ], + [BiomePoolTier.COMMON]: [ TrainerType.BEAUTY, TrainerType.MUSICIAN, TrainerType.PARASOL_LADY ], + [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BAKER, TrainerType.BREEDER, TrainerType.POKEFAN ], [BiomePoolTier.RARE]: [], [BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [], @@ -1967,7 +1967,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { }, [Biome.SLUM]: { [BiomePoolTier.COMMON]: [ TrainerType.BIKER, TrainerType.OFFICER, TrainerType.ROUGHNECK ], - [BiomePoolTier.UNCOMMON]: [ TrainerType.BAKER ], + [BiomePoolTier.UNCOMMON]: [ TrainerType.BAKER, TrainerType.HOOLIGANS ], [BiomePoolTier.RARE]: [], [BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [], @@ -1988,8 +1988,8 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, [Biome.ISLAND]: { - [BiomePoolTier.COMMON]: [], - [BiomePoolTier.UNCOMMON]: [], + [BiomePoolTier.COMMON]: [ TrainerType.RICH_KID ], + [BiomePoolTier.UNCOMMON]: [ TrainerType.RICH ], [BiomePoolTier.RARE]: [], [BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [], @@ -7178,7 +7178,8 @@ export function initBiomes() { [ Biome.METROPOLIS, BiomePoolTier.COMMON ], [ Biome.MEADOW, BiomePoolTier.COMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] - ]], + ] + ], [ TrainerType.BIKER, [ [ Biome.SLUM, BiomePoolTier.COMMON ] ] @@ -7208,7 +7209,8 @@ export function initBiomes() { ], [ TrainerType.CLERK, [ [ Biome.METROPOLIS, BiomePoolTier.COMMON ] - ]], + ] + ], [ TrainerType.CYCLIST, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.METROPOLIS, BiomePoolTier.COMMON ] @@ -7217,18 +7219,23 @@ export function initBiomes() { [ TrainerType.DANCER, []], [ TrainerType.DEPOT_AGENT, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ] - ]], + ] + ], [ TrainerType.DOCTOR, []], + [ TrainerType.FIREBREATHER, [ + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] + ], [ TrainerType.FISHERMAN, [ [ Biome.LAKE, BiomePoolTier.COMMON ], [ Biome.BEACH, BiomePoolTier.COMMON ] ] ], - [ TrainerType.RICH, []], [ TrainerType.GUITARIST, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ]], + ] + ], [ TrainerType.HARLEQUIN, []], [ TrainerType.HIKER, [ [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], @@ -7236,13 +7243,24 @@ export function initBiomes() { [ Biome.BADLANDS, BiomePoolTier.COMMON ] ] ], - [ TrainerType.HOOLIGANS, []], + [ TrainerType.HOOLIGANS, [ + [ Biome.SLUM, BiomePoolTier.UNCOMMON ] + ] + ], [ TrainerType.HOOPSTER, []], [ TrainerType.INFIELDER, []], [ TrainerType.JANITOR, []], [ TrainerType.LINEBACKER, []], [ TrainerType.MAID, []], - [ TrainerType.MUSICIAN, []], + [ TrainerType.MUSICIAN, [ + [ Biome.MEADOW, BiomePoolTier.COMMON ] + ] + ], + [ TrainerType.HEX_MANIAC, [ + [ Biome.RUINS, BiomePoolTier.UNCOMMON ], + [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] + ] + ], [ TrainerType.NURSERY_AIDE, []], [ TrainerType.OFFICER, [ [ Biome.METROPOLIS, BiomePoolTier.COMMON ], @@ -7256,8 +7274,15 @@ export function initBiomes() { [ Biome.MEADOW, BiomePoolTier.COMMON ] ] ], - [ TrainerType.PILOT, []], - [ TrainerType.POKEFAN, []], + [ TrainerType.PILOT, [ + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ] + ] + ], + [ TrainerType.POKEFAN, [ + [ Biome.GRASS, BiomePoolTier.UNCOMMON ], + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ] + ] + ], [ TrainerType.PRESCHOOLER, []], [ TrainerType.PSYCHIC, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], @@ -7270,11 +7295,24 @@ export function initBiomes() { [ Biome.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ TrainerType.RICH_KID, []], + [ TrainerType.RICH, [ + [ Biome.ISLAND, BiomePoolTier.UNCOMMON ] + ] + ], + [ TrainerType.RICH_KID, [ + [ Biome.METROPOLIS, BiomePoolTier.RARE ], + [ Biome.ISLAND, BiomePoolTier.COMMON ] + ] + ], [ TrainerType.ROUGHNECK, [ [ Biome.SLUM, BiomePoolTier.COMMON ] ] ], + [ TrainerType.SAILOR, [ + [ Biome.SEA, BiomePoolTier.COMMON ], + [ Biome.BEACH, BiomePoolTier.COMMON ] + ] + ], [ TrainerType.SCIENTIST, [ [ Biome.DESERT, BiomePoolTier.COMMON ], [ Biome.RUINS, BiomePoolTier.COMMON ] @@ -7317,20 +7355,6 @@ export function initBiomes() { [ Biome.TOWN, BiomePoolTier.COMMON ] ] ], - [ TrainerType.HEX_MANIAC, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] - ] - ], - [ TrainerType.FIREBREATHER, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ] - ] - ], - [ TrainerType.SAILOR, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.COMMON ] - ] - ], [ TrainerType.BROCK, [ [ Biome.CAVE, BiomePoolTier.BOSS ] ] diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index 208e269bd9c..0e755d54e15 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -312,6 +312,113 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { victory: ["dialogue:sailor.victory.1", "dialogue:sailor.victory.2", "dialogue:sailor.victory.3"], }, ], + [TrainerType.CLERK]: [ + { + encounter: ["dialogue:clerk.encounter.1", "dialogue:clerk.encounter.2", "dialogue:clerk.encounter.3"], + victory: ["dialogue:clerk.victory.1", "dialogue:clerk.victory.2", "dialogue:clerk.victory.3"], + }, + { + encounter: [ + "dialogue:clerk_female.encounter.1", + "dialogue:clerk_female.encounter.2", + "dialogue:clerk_female.encounter.3", + ], + victory: [ + "dialogue:clerk_female.victory.1", + "dialogue:clerk_female.victory.2", + "dialogue:clerk_female.victory.3", + ], + }, + ], + [TrainerType.HOOLIGANS]: [ + { + encounter: ["dialogue:hooligans.encounter.1", "dialogue:hooligans.encounter.2"], + victory: ["dialogue:hooligans.victory.1", "dialogue:hooligans.victory.2"], + }, + ], + [TrainerType.MUSICIAN]: [ + { + encounter: [ + "dialogue:musician.encounter.1", + "dialogue:musician.encounter.2", + "dialogue:musician.encounter.3", + "dialogue:musician.encounter.4", + ], + victory: ["dialogue:musician.victory.1", "dialogue:musician.victory.2", "dialogue:musician.victory.3"], + }, + ], + [TrainerType.PILOT]: [ + { + encounter: [ + "dialogue:pilot.encounter.1", + "dialogue:pilot.encounter.2", + "dialogue:pilot.encounter.3", + "dialogue:pilot.encounter.4", + ], + victory: [ + "dialogue:pilot.victory.1", + "dialogue:pilot.victory.2", + "dialogue:pilot.victory.3", + "dialogue:pilot.victory.4", + ], + }, + ], + [TrainerType.POKEFAN]: [ + { + encounter: ["dialogue:pokefan.encounter.1", "dialogue:pokefan.encounter.2", "dialogue:pokefan.encounter.3"], + victory: ["dialogue:pokefan.victory.1", "dialogue:pokefan.victory.2", "dialogue:pokefan.victory.3"], + }, + { + encounter: [ + "dialogue:pokefan_female.encounter.1", + "dialogue:pokefan_female.encounter.2", + "dialogue:pokefan_female.encounter.3", + ], + victory: [ + "dialogue:pokefan_female.victory.1", + "dialogue:pokefan_female.victory.2", + "dialogue:pokefan_female.victory.3", + ], + }, + ], + [TrainerType.RICH]: [ + { + encounter: ["dialogue:rich.encounter.1", "dialogue:rich.encounter.2", "dialogue:rich.encounter.3"], + victory: ["dialogue:rich.victory.1", "dialogue:rich.victory.2", "dialogue:rich.victory.3"], + }, + { + encounter: [ + "dialogue:rich_female.encounter.1", + "dialogue:rich_female.encounter.2", + "dialogue:rich_female.encounter.3", + ], + victory: ["dialogue:rich_female.victory.1", "dialogue:rich_female.victory.2", "dialogue:rich_female.victory.3"], + }, + ], + [TrainerType.RICH_KID]: [ + { + encounter: ["dialogue:rich_kid.encounter.1", "dialogue:rich_kid.encounter.2", "dialogue:rich_kid.encounter.3"], + victory: [ + "dialogue:rich_kid.victory.1", + "dialogue:rich_kid.victory.2", + "dialogue:rich_kid.victory.3", + "dialogue:rich_kid.victory.4", + ], + }, + { + encounter: [ + "dialogue:rich_kid_female.encounter.1", + "dialogue:rich_kid_female.encounter.2", + "dialogue:rich_kid_female.encounter.3", + ], + victory: [ + "dialogue:rich_kid_female.victory.1", + "dialogue:rich_kid_female.victory.2", + "dialogue:rich_kid_female.victory.3", + "dialogue:rich_kid_female.victory.4", + ], + }, + ], [TrainerType.ROCKET_GRUNT]: [ { encounter: [ diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index ffe5cdfe04c..0417e7abc32 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -2141,7 +2141,15 @@ export const trainerConfigs: TrainerConfigs = { }), [TrainerType.HOOLIGANS]: new TrainerConfig(++t) .setDoubleOnly() + .setMoneyMultiplier(1.5) .setEncounterBgm(TrainerType.ROUGHNECK) + .setPartyTemplateFunc(() => + getWavePartyTemplate( + trainerPartyTemplates.TWO_WEAK, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.ONE_AVG_ONE_STRONG, + ), + ) .setSpeciesFilter(s => s.isOfType(PokemonType.POISON) || s.isOfType(PokemonType.DARK)), [TrainerType.HOOPSTER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), [TrainerType.INFIELDER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), @@ -2149,7 +2157,14 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.LINEBACKER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), [TrainerType.MAID]: new TrainerConfig(++t).setMoneyMultiplier(1.6).setEncounterBgm(TrainerType.RICH), [TrainerType.MUSICIAN]: new TrainerConfig(++t) - .setEncounterBgm(TrainerType.ROUGHNECK) + .setMoneyMultiplier(1.1) + .setEncounterBgm(TrainerType.POKEFAN) + .setPartyTemplates( + trainerPartyTemplates.FOUR_WEAKER, + trainerPartyTemplates.THREE_WEAK, + trainerPartyTemplates.TWO_WEAK_ONE_AVG, + trainerPartyTemplates.TWO_AVG, + ) .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.SING)), [TrainerType.HEX_MANIAC]: new TrainerConfig(++t) .setMoneyMultiplier(1.5) @@ -2214,7 +2229,14 @@ export const trainerConfigs: TrainerConfigs = { ) || s.getLevelMoves().some(plm => plm[1] === Moves.RAIN_DANCE), ), // Mons with rain abilities or who learn Rain Dance by level [TrainerType.PILOT]: new TrainerConfig(++t) + .setMoneyMultiplier(1.75) .setEncounterBgm(TrainerType.CLERK) + .setPartyTemplates( + trainerPartyTemplates.THREE_WEAK, + trainerPartyTemplates.TWO_WEAK_ONE_AVG, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.THREE_AVG, + ) .setSpeciesFilter(s => tmSpecies[Moves.FLY].indexOf(s.speciesId) > -1), [TrainerType.POKEFAN]: new TrainerConfig(++t) .setMoneyMultiplier(1.4) @@ -2230,7 +2252,8 @@ export const trainerConfigs: TrainerConfigs = { trainerPartyTemplates.FOUR_WEAK_SAME, trainerPartyTemplates.FIVE_WEAK, trainerPartyTemplates.SIX_WEAKER_SAME, - ), + ) + .setSpeciesFilter(s => tmSpecies[Moves.HELPING_HAND].indexOf(s.speciesId) > -1), [TrainerType.PRESCHOOLER]: new TrainerConfig(++t) .setMoneyMultiplier(0.2) .setEncounterBgm(TrainerType.YOUNGSTER) @@ -2352,16 +2375,29 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.SUPER_RARE]: [Species.LARVESTA], }), [TrainerType.RICH]: new TrainerConfig(++t) - .setMoneyMultiplier(5) + .setMoneyMultiplier(3.25) .setName("Gentleman") .setHasGenders("Madame") - .setHasDouble("Rich Couple"), + .setHasDouble("Rich Couple") + .setPartyTemplates( + trainerPartyTemplates.THREE_WEAK, + trainerPartyTemplates.FOUR_WEAK, + trainerPartyTemplates.TWO_WEAK_ONE_AVG, + trainerPartyTemplates.THREE_AVG, + ) + .setSpeciesFilter(s => s.isOfType(PokemonType.NORMAL) || s.isOfType(PokemonType.ELECTRIC)), [TrainerType.RICH_KID]: new TrainerConfig(++t) - .setMoneyMultiplier(3.75) + .setMoneyMultiplier(2.5) .setName("Rich Boy") .setHasGenders("Lady") .setHasDouble("Rich Kids") - .setEncounterBgm(TrainerType.RICH), + .setEncounterBgm(TrainerType.RICH) + .setPartyTemplates( + trainerPartyTemplates.FOUR_WEAKER, + trainerPartyTemplates.THREE_WEAK_SAME, + trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, + ) + .setSpeciesFilter(s => s.baseTotal <= 460), [TrainerType.ROUGHNECK]: new TrainerConfig(++t) .setMoneyMultiplier(1.4) .setEncounterBgm(TrainerType.ROUGHNECK) From 443264a3ea377da4ef4f25554aa156395dc1cf6f Mon Sep 17 00:00:00 2001 From: damocleas Date: Tue, 25 Mar 2025 01:55:26 -0400 Subject: [PATCH 2/5] [i18n] Update locales submodule --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 0e5c6096ba2..cd4057af258 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 0e5c6096ba26f6b87aed1aab3fe9b0b23f6cbb7b +Subproject commit cd4057af258b659ba2c1ed2778bb2793fa1f6141 From f78015d75730d205d4bf08a4fd09547d8b8a8b37 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Tue, 25 Mar 2025 21:06:24 +0100 Subject: [PATCH 3/5] [Localization] Catalan reactivation (#5555) * Add files via upload * Update settings.ts * Add files via upload * Add files via upload * Update starter-select-ui-handler.ts * Update utils.ts with Catalan * Update loading-scene.ts --- public/images/statuses_ca-ES.png | Bin 441 -> 2244 bytes public/images/types_ca-ES.json | 440 ++++++++++++++++++++++++++++ public/images/types_ca-ES.png | Bin 0 -> 6383 bytes src/loading-scene.ts | 2 +- src/system/settings/settings.ts | 8 +- src/ui/starter-select-ui-handler.ts | 2 +- src/utils.ts | 1 + 7 files changed, 447 insertions(+), 6 deletions(-) create mode 100644 public/images/types_ca-ES.json create mode 100644 public/images/types_ca-ES.png diff --git a/public/images/statuses_ca-ES.png b/public/images/statuses_ca-ES.png index d372b989be966007e5fccac5f54fe341457e598b..fe05e243f7a5cd6de4d3b9a340707ebf06cc7e58 100644 GIT binary patch literal 2244 zcmbVO4Nw$i7+$d-vQWaTbkep33$wlbxgYKpP6dtx^U%{%FlENQ-92vOZg<;VjypzY z(EJ~Nl7dMAr=gU>$)rY7F^g=lI#J0&MXpR#RL~-uL4>UD__?&HoZOjjzi)S+?|I+n zec$h$T{}B-den$6eD^xG%Gqdjn5+iGz2A0^+`07$EmP`%jE?#@^js12+Xr)Buj6_tx_uI z;?oOdZf;?wohi&?Oe`{W3Y_Gl0D*^7Y1rp+3ku~kBmKM-SchI?2;2`*^UO$c$RM0; zoeigoG6(B529zOmB%EN<5C+^t>Ry0JoJhd%1dPz4I6>hCN^61#F9cYVStm8e^5UQ^ z@MK0@swzgb^A%B&i?BGGUyQFT4AVvkb<$IS(hO3cwO!tmG0^ zQE`d?LLL5mhXD{;t2J!nAARw7!X^|o%?o4<2IL>nirp`9*c?s~^JRuh^8z^qS6AxWmwDzP^{s3mNIfQj?)Py)L=A{sE*WWQJQejsE%Ru9Em#| zq|-38-y$;kp}Y?5XaDE^SuzjK745!f9#H>(DI8)+28tArIA!p3q|mv8D>pwSBs1hD zVbl|x!>C2I2~GypYjrGYB5@8Sw6vZv7zl%b!IQAiQ2?9Zfz<#J_TLu!3zSOdLmv1C z?at+14SN9h*Ca(Vp|fU2m{5^%EHe0-zvqk$&=$BjK>8o$Hvm&ar&>VETyieR-d&0t z8Q^=96tpQn{Kd^O4+Ej9JMnfKZb*Rz?s+P@tAL=};;g`cZ)t!s$x zG9R1Ov!dfebIQW`?2(F`v)(0RHa8xBuq<+|A{5tH)7PDv9~*e0f$wZ=&Ju5xKNnp^ zM0_3;4m2whkxSm;MYpnBTWWL8UrH&CThm=tbZz*gtxrvcrq%s8u3K~T>=s{K+CFVg zuQ3)nA$wOgZjLq0f8&Vh*`=K^o9iz|Bx+0dc)Aygt72@$ar+Ie{)|b!#fyFZ6^XTH zZY4mi`vY9b?r%sa@?6`~(4oMI%IfMp^e4fY#&aHT@Ipihm#}``8g|E`*@+we_}Du$ z&sJw!l~lB$Ej#Xjj@fwH-#5?ld|-XcjnYQ{&YaR=Pd0P}TTtWoLAW))V?{|s(c7ou zq0|jgO+jUOP;nSDj(W|nw5}Po-Q^c-+ZJA3-1e?_5F|51mtWbF1&%BJZN4 zH@7tBuiKxw=ekp=kPL~?*_XS^gyPo&7hB6KvQ9ZK?L{u4k zRzAISi@v^*#u_SN-kY_VUJE9fk2@I(~mO zK5b{UWnRhXaScoTlHtM_nOSM0{KZO-TQ>G}+I zIn7o0!+Dp;xZJZk++_QIf*BQ_vO9cL>_x7%KzeP1y+B2_I7G_xHE-s8-)5{aFy1?z zvW;$NS#fE(5J*QH>;TO#qj-;m3y@V^jDKUiXB4T~am+que5?h|bD2QvJlYc8%_G~a zG}z~@!Q2dSmt873PQXLUg+O|T!QM`p^A|K=@Suc&?b@)04>kGLv3=K17yh?|Mhx#G)+hhQwMYUUT0RT>1-XbQdPI;dWdHyG07*qoM6N<$g7t5` A=>Px# diff --git a/public/images/types_ca-ES.json b/public/images/types_ca-ES.json new file mode 100644 index 00000000000..fa3abaaf259 --- /dev/null +++ b/public/images/types_ca-ES.json @@ -0,0 +1,440 @@ +{ + "textures": [ + { + "image": "types_ca-ES.png", + "format": "RGBA8888", + "size": { + "w": 32, + "h": 280 + }, + "scale": 1, + "frames": [ + { + "filename": "unknown", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + } + }, + { + "filename": "bug", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 14, + "w": 32, + "h": 14 + } + }, + { + "filename": "dark", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 28, + "w": 32, + "h": 14 + } + }, + { + "filename": "dragon", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 42, + "w": 32, + "h": 14 + } + }, + { + "filename": "electric", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 56, + "w": 32, + "h": 14 + } + }, + { + "filename": "fairy", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 70, + "w": 32, + "h": 14 + } + }, + { + "filename": "fighting", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 84, + "w": 32, + "h": 14 + } + }, + { + "filename": "fire", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 98, + "w": 32, + "h": 14 + } + }, + { + "filename": "flying", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 112, + "w": 32, + "h": 14 + } + }, + { + "filename": "ghost", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 126, + "w": 32, + "h": 14 + } + }, + { + "filename": "grass", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 140, + "w": 32, + "h": 14 + } + }, + { + "filename": "ground", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 154, + "w": 32, + "h": 14 + } + }, + { + "filename": "ice", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 168, + "w": 32, + "h": 14 + } + }, + { + "filename": "normal", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 182, + "w": 32, + "h": 14 + } + }, + { + "filename": "poison", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 196, + "w": 32, + "h": 14 + } + }, + { + "filename": "psychic", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 210, + "w": 32, + "h": 14 + } + }, + { + "filename": "rock", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 224, + "w": 32, + "h": 14 + } + }, + { + "filename": "steel", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 238, + "w": 32, + "h": 14 + } + }, + { + "filename": "water", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 252, + "w": 32, + "h": 14 + } + }, + { + "filename": "stellar", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 32, + "h": 14 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 32, + "h": 14 + }, + "frame": { + "x": 0, + "y": 266, + "w": 32, + "h": 14 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$" + } +} diff --git a/public/images/types_ca-ES.png b/public/images/types_ca-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..e85c84ed9c987049fd9965771a4a64a12dcc6b0b GIT binary patch literal 6383 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 literal 0 HcmV?d00001 diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 295dc318db4..7f05634db48 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -250,7 +250,7 @@ export class LoadingScene extends SceneBase { this.loadAtlas("statuses", ""); this.loadAtlas("types", ""); } - const availableLangs = ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN"]; + const availableLangs = ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN", "zh-TW", "ca-ES"]; if (lang && availableLangs.includes(lang)) { this.loadImage(`pkmnday2025event-${lang}`, "events"); } else { diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index 1a7279d371c..b2b1d3eb298 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -948,10 +948,10 @@ export function setSetting(setting: string, value: number): boolean { label: "日本語", handler: () => changeLocaleHandler("ja"), }, - // { - // label: "Català", - // handler: () => changeLocaleHandler("ca-ES") - // }, + { + label: "Català", + handler: () => changeLocaleHandler("ca-ES") + }, { label: i18next.t("settings:back"), handler: () => cancelHandler(), diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 8265ad827bc..91940d3af76 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -150,7 +150,7 @@ const languageSettings: { [key: string]: LanguageSetting } = { instructionTextSize: "38px", }, "ca-ES": { - starterInfoTextSize: "56px", + starterInfoTextSize: "52px", instructionTextSize: "38px", }, }; diff --git a/src/utils.ts b/src/utils.ts index 7d3dea0247e..fbca8410feb 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -464,6 +464,7 @@ export function hasAllLocalizedSprites(lang?: string): boolean { case "pt-BR": case "ko": case "ja": + case "ca-ES": return true; default: return false; From bba7c1610de9b1b5e0c685f9375214a58cca89fd Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Tue, 25 Mar 2025 21:36:12 +0100 Subject: [PATCH 4/5] =?UTF-8?q?[UI/UX]=20Option=20to=20see=20Pokedex=20ent?= =?UTF-8?q?ry=20after=20catching=20wild=20Pok=C3=A9mon=20(#5538)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * pokedex option after catching * Also changing catching for mystery encounters --- .../utils/encounter-pokemon-utils.ts | 20 ++++++++++++++++ src/phases/attempt-capture-phase.ts | 21 ++++++++++++++++ src/ui/confirm-ui-handler.ts | 24 ++++++++++++------- src/ui/pokedex-page-ui-handler.ts | 15 +++++++++++- src/ui/pokemon-info-container.ts | 2 +- 5 files changed, 72 insertions(+), 10 deletions(-) diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index 275078dbace..a4787e819b8 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -741,6 +741,26 @@ export async function catchPokemon( false, ); }, + () => { + const attributes = { + shiny: pokemon.shiny, + variant: pokemon.variant, + form: pokemon.formIndex, + female: pokemon.gender === Gender.FEMALE, + }; + globalScene.ui.setOverlayMode( + Mode.POKEDEX_PAGE, + pokemon.species, + pokemon.formIndex, + attributes, + null, + () => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { + promptRelease(); + }); + }, + ); + }, () => { globalScene.ui.setMode( Mode.PARTY, diff --git a/src/phases/attempt-capture-phase.ts b/src/phases/attempt-capture-phase.ts index 6b905c2a07f..6e2a2d29af4 100644 --- a/src/phases/attempt-capture-phase.ts +++ b/src/phases/attempt-capture-phase.ts @@ -24,6 +24,7 @@ import type { PokeballType } from "#enums/pokeball"; import { StatusEffect } from "#enums/status-effect"; import i18next from "i18next"; import { globalScene } from "#app/global-scene"; +import { Gender } from "#app/data/gender"; export class AttemptCapturePhase extends PokemonPhase { private pokeballType: PokeballType; @@ -321,6 +322,26 @@ export class AttemptCapturePhase extends PokemonPhase { false, ); }, + () => { + const attributes = { + shiny: pokemon.shiny, + variant: pokemon.variant, + form: pokemon.formIndex, + female: pokemon.gender === Gender.FEMALE, + }; + globalScene.ui.setOverlayMode( + Mode.POKEDEX_PAGE, + pokemon.species, + pokemon.formIndex, + attributes, + null, + () => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { + promptRelease(); + }); + }, + ); + }, () => { globalScene.ui.setMode( Mode.PARTY, diff --git a/src/ui/confirm-ui-handler.ts b/src/ui/confirm-ui-handler.ts index a8710b0ab01..eb7018051b7 100644 --- a/src/ui/confirm-ui-handler.ts +++ b/src/ui/confirm-ui-handler.ts @@ -21,11 +21,12 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { show(args: any[]): boolean { if ( - args.length === 4 && + args.length === 5 && args[0] instanceof Function && args[1] instanceof Function && args[2] instanceof Function && - args[3] === "fullParty" + args[3] instanceof Function && + args[4] === "fullParty" ) { const config: OptionSelectConfig = { options: [ @@ -37,29 +38,36 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { }, }, { - label: i18next.t("menu:yes"), + label: i18next.t("partyUiHandler:POKEDEX"), handler: () => { args[1](); return true; }, }, { - label: i18next.t("menu:no"), + label: i18next.t("menu:yes"), handler: () => { args[2](); return true; }, }, + { + label: i18next.t("menu:no"), + handler: () => { + args[3](); + return true; + }, + }, ], - delay: args.length >= 8 && args[7] !== null ? (args[7] as number) : 0, + delay: args.length >= 9 && args[8] !== null ? (args[8] as number) : 0, }; super.show([config]); - this.switchCheck = args.length >= 5 && args[4] !== null && (args[4] as boolean); + this.switchCheck = args.length >= 6 && args[5] !== null && (args[5] as boolean); - const xOffset = args.length >= 6 && args[5] !== null ? (args[5] as number) : 0; - const yOffset = args.length >= 7 && args[6] !== null ? (args[6] as number) : 0; + const xOffset = args.length >= 7 && args[6] !== null ? (args[6] as number) : 0; + const yOffset = args.length >= 8 && args[7] !== null ? (args[7] as number) : 0; this.optionSelectContainer.setPosition(globalScene.game.canvas.width / 6 - 1 + xOffset, -48 + yOffset); diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index 86460a24fdc..8f96f1e44c2 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -261,6 +261,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler { private unlockedVariants: boolean[]; private canUseCandies: boolean; + private exitCallback; constructor() { super(Mode.POKEDEX_PAGE); @@ -681,6 +682,10 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.filteredIndices = args[2] ?? null; this.starterSetup(); + if (args[4] instanceof Function) { + this.exitCallback = args[4]; + } + this.moveInfoOverlay.clear(); // clear this when removing a menu; the cancel button doesn't seem to trigger this automatically on controllers this.infoOverlay.clear(); @@ -1106,7 +1111,15 @@ export default class PokedexPageUiHandler extends MessageUiHandler { }); this.blockInput = false; } else { - ui.revertMode(); + ui.revertMode() + .then(() => { + console.log("exitCallback", this.exitCallback); + if (this.exitCallback instanceof Function) { + const exitCallback = this.exitCallback; + this.exitCallback = null; + exitCallback(); + } + }); success = true; } } else { diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index 64c743ec88d..56201f38748 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -458,7 +458,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { makeRoomForConfirmUi(speedMultiplier = 1, fromCatch = false): Promise { const xPosition = fromCatch - ? this.initialX - this.infoWindowWidth - 65 + ? this.initialX - this.infoWindowWidth - 67 : this.initialX - this.infoWindowWidth - ConfirmUiHandler.windowWidth; return new Promise(resolve => { globalScene.tweens.add({ From ead1bc6cce6a4ea1d9884f153b227c35988af93a Mon Sep 17 00:00:00 2001 From: damocleas Date: Tue, 25 Mar 2025 21:06:28 -0400 Subject: [PATCH 5/5] [UI/UX] Autofill login text color changed to gray (#5523) Update index.css --- index.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/index.css b/index.css index 49e570bdccc..62ad6266d30 100644 --- a/index.css +++ b/index.css @@ -68,6 +68,10 @@ input:-internal-autofill-selected { background-clip: text; } +input:-webkit-autofill { + -webkit-text-fill-color: #a1a1a1; +} + /* Need adjust input font-size */ input { font-size: 3.2rem;