Merge branch 'beta' into pr-illusion

This commit is contained in:
Lylian BALL 2025-03-26 09:16:22 +01:00 committed by GitHub
commit fe477fe908
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 732 additions and 58 deletions

View File

@ -68,6 +68,10 @@ input:-internal-autofill-selected {
background-clip: text; background-clip: text;
} }
input:-webkit-autofill {
-webkit-text-fill-color: #a1a1a1;
}
/* Need adjust input font-size */ /* Need adjust input font-size */
input { input {
font-size: 3.2rem; font-size: 3.2rem;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 441 B

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -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$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

@ -1 +1 @@
Subproject commit 0e5c6096ba26f6b87aed1aab3fe9b0b23f6cbb7b Subproject commit cd4057af258b659ba2c1ed2778bb2793fa1f6141

View File

@ -1659,7 +1659,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
}, },
[Biome.GRASS]: { [Biome.GRASS]: {
[BiomePoolTier.COMMON]: [ TrainerType.BREEDER, TrainerType.SCHOOL_KID ], [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.RARE]: [ TrainerType.BLACK_BELT ],
[BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.SUPER_RARE]: [],
[BiomePoolTier.ULTRA_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [],
@ -1680,9 +1680,9 @@ export const biomeTrainerPools: BiomeTrainerPools = {
[BiomePoolTier.BOSS_ULTRA_RARE]: [] [BiomePoolTier.BOSS_ULTRA_RARE]: []
}, },
[Biome.METROPOLIS]: { [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.UNCOMMON]: [ TrainerType.BREEDER, TrainerType.DEPOT_AGENT, TrainerType.GUITARIST ],
[BiomePoolTier.RARE]: [ TrainerType.ARTIST ], [BiomePoolTier.RARE]: [ TrainerType.ARTIST, TrainerType.RICH_KID ],
[BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.SUPER_RARE]: [],
[BiomePoolTier.ULTRA_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [],
[BiomePoolTier.BOSS]: [ TrainerType.WHITNEY, TrainerType.NORMAN, TrainerType.IONO, TrainerType.LARRY ], [BiomePoolTier.BOSS]: [ TrainerType.WHITNEY, TrainerType.NORMAN, TrainerType.IONO, TrainerType.LARRY ],
@ -1702,7 +1702,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
[BiomePoolTier.BOSS_ULTRA_RARE]: [] [BiomePoolTier.BOSS_ULTRA_RARE]: []
}, },
[Biome.SEA]: { [Biome.SEA]: {
[BiomePoolTier.COMMON]: [ TrainerType.SWIMMER, TrainerType.SAILOR ], [BiomePoolTier.COMMON]: [ TrainerType.SAILOR, TrainerType.SWIMMER ],
[BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.UNCOMMON]: [],
[BiomePoolTier.RARE]: [], [BiomePoolTier.RARE]: [],
[BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.SUPER_RARE]: [],
@ -1758,7 +1758,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
}, },
[Biome.MOUNTAIN]: { [Biome.MOUNTAIN]: {
[BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.BLACK_BELT, TrainerType.HIKER ], [BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.BLACK_BELT, TrainerType.HIKER ],
[BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.PILOT ],
[BiomePoolTier.RARE]: [], [BiomePoolTier.RARE]: [],
[BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.SUPER_RARE]: [],
[BiomePoolTier.ULTRA_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [],
@ -1790,7 +1790,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
[BiomePoolTier.BOSS_ULTRA_RARE]: [] [BiomePoolTier.BOSS_ULTRA_RARE]: []
}, },
[Biome.DESERT]: { [Biome.DESERT]: {
[BiomePoolTier.COMMON]: [ TrainerType.SCIENTIST, TrainerType.BACKPACKER ], [BiomePoolTier.COMMON]: [ TrainerType.BACKPACKER, TrainerType.SCIENTIST ],
[BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.UNCOMMON]: [],
[BiomePoolTier.RARE]: [], [BiomePoolTier.RARE]: [],
[BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.SUPER_RARE]: [],
@ -1812,8 +1812,8 @@ export const biomeTrainerPools: BiomeTrainerPools = {
[BiomePoolTier.BOSS_ULTRA_RARE]: [] [BiomePoolTier.BOSS_ULTRA_RARE]: []
}, },
[Biome.MEADOW]: { [Biome.MEADOW]: {
[BiomePoolTier.COMMON]: [ TrainerType.PARASOL_LADY, TrainerType.BEAUTY ], [BiomePoolTier.COMMON]: [ TrainerType.BEAUTY, TrainerType.MUSICIAN, TrainerType.PARASOL_LADY ],
[BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BREEDER, TrainerType.BAKER ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BAKER, TrainerType.BREEDER, TrainerType.POKEFAN ],
[BiomePoolTier.RARE]: [], [BiomePoolTier.RARE]: [],
[BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.SUPER_RARE]: [],
[BiomePoolTier.ULTRA_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [],
@ -1967,7 +1967,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
}, },
[Biome.SLUM]: { [Biome.SLUM]: {
[BiomePoolTier.COMMON]: [ TrainerType.BIKER, TrainerType.OFFICER, TrainerType.ROUGHNECK ], [BiomePoolTier.COMMON]: [ TrainerType.BIKER, TrainerType.OFFICER, TrainerType.ROUGHNECK ],
[BiomePoolTier.UNCOMMON]: [ TrainerType.BAKER ], [BiomePoolTier.UNCOMMON]: [ TrainerType.BAKER, TrainerType.HOOLIGANS ],
[BiomePoolTier.RARE]: [], [BiomePoolTier.RARE]: [],
[BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.SUPER_RARE]: [],
[BiomePoolTier.ULTRA_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [],
@ -1988,8 +1988,8 @@ export const biomeTrainerPools: BiomeTrainerPools = {
[BiomePoolTier.BOSS_ULTRA_RARE]: [] [BiomePoolTier.BOSS_ULTRA_RARE]: []
}, },
[Biome.ISLAND]: { [Biome.ISLAND]: {
[BiomePoolTier.COMMON]: [], [BiomePoolTier.COMMON]: [ TrainerType.RICH_KID ],
[BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.UNCOMMON]: [ TrainerType.RICH ],
[BiomePoolTier.RARE]: [], [BiomePoolTier.RARE]: [],
[BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.SUPER_RARE]: [],
[BiomePoolTier.ULTRA_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [],
@ -7178,7 +7178,8 @@ export function initBiomes() {
[ Biome.METROPOLIS, BiomePoolTier.COMMON ], [ Biome.METROPOLIS, BiomePoolTier.COMMON ],
[ Biome.MEADOW, BiomePoolTier.COMMON ], [ Biome.MEADOW, BiomePoolTier.COMMON ],
[ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ]
]], ]
],
[ TrainerType.BIKER, [ [ TrainerType.BIKER, [
[ Biome.SLUM, BiomePoolTier.COMMON ] [ Biome.SLUM, BiomePoolTier.COMMON ]
] ]
@ -7208,7 +7209,8 @@ export function initBiomes() {
], ],
[ TrainerType.CLERK, [ [ TrainerType.CLERK, [
[ Biome.METROPOLIS, BiomePoolTier.COMMON ] [ Biome.METROPOLIS, BiomePoolTier.COMMON ]
]], ]
],
[ TrainerType.CYCLIST, [ [ TrainerType.CYCLIST, [
[ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.PLAINS, BiomePoolTier.UNCOMMON ],
[ Biome.METROPOLIS, BiomePoolTier.COMMON ] [ Biome.METROPOLIS, BiomePoolTier.COMMON ]
@ -7217,18 +7219,23 @@ export function initBiomes() {
[ TrainerType.DANCER, []], [ TrainerType.DANCER, []],
[ TrainerType.DEPOT_AGENT, [ [ TrainerType.DEPOT_AGENT, [
[ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ] [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ]
]], ]
],
[ TrainerType.DOCTOR, []], [ TrainerType.DOCTOR, []],
[ TrainerType.FIREBREATHER, [
[ Biome.VOLCANO, BiomePoolTier.COMMON ]
]
],
[ TrainerType.FISHERMAN, [ [ TrainerType.FISHERMAN, [
[ Biome.LAKE, BiomePoolTier.COMMON ], [ Biome.LAKE, BiomePoolTier.COMMON ],
[ Biome.BEACH, BiomePoolTier.COMMON ] [ Biome.BEACH, BiomePoolTier.COMMON ]
] ]
], ],
[ TrainerType.RICH, []],
[ TrainerType.GUITARIST, [ [ TrainerType.GUITARIST, [
[ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ],
[ Biome.POWER_PLANT, BiomePoolTier.COMMON ] [ Biome.POWER_PLANT, BiomePoolTier.COMMON ]
]], ]
],
[ TrainerType.HARLEQUIN, []], [ TrainerType.HARLEQUIN, []],
[ TrainerType.HIKER, [ [ TrainerType.HIKER, [
[ Biome.MOUNTAIN, BiomePoolTier.COMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON ],
@ -7236,13 +7243,24 @@ export function initBiomes() {
[ Biome.BADLANDS, BiomePoolTier.COMMON ] [ Biome.BADLANDS, BiomePoolTier.COMMON ]
] ]
], ],
[ TrainerType.HOOLIGANS, []], [ TrainerType.HOOLIGANS, [
[ Biome.SLUM, BiomePoolTier.UNCOMMON ]
]
],
[ TrainerType.HOOPSTER, []], [ TrainerType.HOOPSTER, []],
[ TrainerType.INFIELDER, []], [ TrainerType.INFIELDER, []],
[ TrainerType.JANITOR, []], [ TrainerType.JANITOR, []],
[ TrainerType.LINEBACKER, []], [ TrainerType.LINEBACKER, []],
[ TrainerType.MAID, []], [ 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.NURSERY_AIDE, []],
[ TrainerType.OFFICER, [ [ TrainerType.OFFICER, [
[ Biome.METROPOLIS, BiomePoolTier.COMMON ], [ Biome.METROPOLIS, BiomePoolTier.COMMON ],
@ -7256,8 +7274,15 @@ export function initBiomes() {
[ Biome.MEADOW, BiomePoolTier.COMMON ] [ Biome.MEADOW, BiomePoolTier.COMMON ]
] ]
], ],
[ TrainerType.PILOT, []], [ TrainerType.PILOT, [
[ TrainerType.POKEFAN, []], [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ]
]
],
[ TrainerType.POKEFAN, [
[ Biome.GRASS, BiomePoolTier.UNCOMMON ],
[ Biome.MEADOW, BiomePoolTier.UNCOMMON ]
]
],
[ TrainerType.PRESCHOOLER, []], [ TrainerType.PRESCHOOLER, []],
[ TrainerType.PSYCHIC, [ [ TrainerType.PSYCHIC, [
[ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.GRAVEYARD, BiomePoolTier.COMMON ],
@ -7270,11 +7295,24 @@ export function initBiomes() {
[ Biome.JUNGLE, BiomePoolTier.COMMON ] [ 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, [ [ TrainerType.ROUGHNECK, [
[ Biome.SLUM, BiomePoolTier.COMMON ] [ Biome.SLUM, BiomePoolTier.COMMON ]
] ]
], ],
[ TrainerType.SAILOR, [
[ Biome.SEA, BiomePoolTier.COMMON ],
[ Biome.BEACH, BiomePoolTier.COMMON ]
]
],
[ TrainerType.SCIENTIST, [ [ TrainerType.SCIENTIST, [
[ Biome.DESERT, BiomePoolTier.COMMON ], [ Biome.DESERT, BiomePoolTier.COMMON ],
[ Biome.RUINS, BiomePoolTier.COMMON ] [ Biome.RUINS, BiomePoolTier.COMMON ]
@ -7317,20 +7355,6 @@ export function initBiomes() {
[ Biome.TOWN, BiomePoolTier.COMMON ] [ 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, [ [ TrainerType.BROCK, [
[ Biome.CAVE, BiomePoolTier.BOSS ] [ Biome.CAVE, BiomePoolTier.BOSS ]
] ]

View File

@ -312,6 +312,113 @@ export const trainerTypeDialogue: TrainerTypeDialogue = {
victory: ["dialogue:sailor.victory.1", "dialogue:sailor.victory.2", "dialogue:sailor.victory.3"], 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]: [ [TrainerType.ROCKET_GRUNT]: [
{ {
encounter: [ encounter: [

View File

@ -741,6 +741,26 @@ export async function catchPokemon(
false, 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( globalScene.ui.setMode(
Mode.PARTY, Mode.PARTY,

View File

@ -2141,7 +2141,15 @@ export const trainerConfigs: TrainerConfigs = {
}), }),
[TrainerType.HOOLIGANS]: new TrainerConfig(++t) [TrainerType.HOOLIGANS]: new TrainerConfig(++t)
.setDoubleOnly() .setDoubleOnly()
.setMoneyMultiplier(1.5)
.setEncounterBgm(TrainerType.ROUGHNECK) .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)), .setSpeciesFilter(s => s.isOfType(PokemonType.POISON) || s.isOfType(PokemonType.DARK)),
[TrainerType.HOOPSTER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), [TrainerType.HOOPSTER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.INFIELDER]: 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.LINEBACKER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.MAID]: new TrainerConfig(++t).setMoneyMultiplier(1.6).setEncounterBgm(TrainerType.RICH), [TrainerType.MAID]: new TrainerConfig(++t).setMoneyMultiplier(1.6).setEncounterBgm(TrainerType.RICH),
[TrainerType.MUSICIAN]: new TrainerConfig(++t) [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)), .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.SING)),
[TrainerType.HEX_MANIAC]: new TrainerConfig(++t) [TrainerType.HEX_MANIAC]: new TrainerConfig(++t)
.setMoneyMultiplier(1.5) .setMoneyMultiplier(1.5)
@ -2214,7 +2229,14 @@ export const trainerConfigs: TrainerConfigs = {
) || s.getLevelMoves().some(plm => plm[1] === Moves.RAIN_DANCE), ) || s.getLevelMoves().some(plm => plm[1] === Moves.RAIN_DANCE),
), // Mons with rain abilities or who learn Rain Dance by level ), // Mons with rain abilities or who learn Rain Dance by level
[TrainerType.PILOT]: new TrainerConfig(++t) [TrainerType.PILOT]: new TrainerConfig(++t)
.setMoneyMultiplier(1.75)
.setEncounterBgm(TrainerType.CLERK) .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), .setSpeciesFilter(s => tmSpecies[Moves.FLY].indexOf(s.speciesId) > -1),
[TrainerType.POKEFAN]: new TrainerConfig(++t) [TrainerType.POKEFAN]: new TrainerConfig(++t)
.setMoneyMultiplier(1.4) .setMoneyMultiplier(1.4)
@ -2230,7 +2252,8 @@ export const trainerConfigs: TrainerConfigs = {
trainerPartyTemplates.FOUR_WEAK_SAME, trainerPartyTemplates.FOUR_WEAK_SAME,
trainerPartyTemplates.FIVE_WEAK, trainerPartyTemplates.FIVE_WEAK,
trainerPartyTemplates.SIX_WEAKER_SAME, trainerPartyTemplates.SIX_WEAKER_SAME,
), )
.setSpeciesFilter(s => tmSpecies[Moves.HELPING_HAND].indexOf(s.speciesId) > -1),
[TrainerType.PRESCHOOLER]: new TrainerConfig(++t) [TrainerType.PRESCHOOLER]: new TrainerConfig(++t)
.setMoneyMultiplier(0.2) .setMoneyMultiplier(0.2)
.setEncounterBgm(TrainerType.YOUNGSTER) .setEncounterBgm(TrainerType.YOUNGSTER)
@ -2352,16 +2375,29 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.SUPER_RARE]: [Species.LARVESTA], [TrainerPoolTier.SUPER_RARE]: [Species.LARVESTA],
}), }),
[TrainerType.RICH]: new TrainerConfig(++t) [TrainerType.RICH]: new TrainerConfig(++t)
.setMoneyMultiplier(5) .setMoneyMultiplier(3.25)
.setName("Gentleman") .setName("Gentleman")
.setHasGenders("Madame") .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) [TrainerType.RICH_KID]: new TrainerConfig(++t)
.setMoneyMultiplier(3.75) .setMoneyMultiplier(2.5)
.setName("Rich Boy") .setName("Rich Boy")
.setHasGenders("Lady") .setHasGenders("Lady")
.setHasDouble("Rich Kids") .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) [TrainerType.ROUGHNECK]: new TrainerConfig(++t)
.setMoneyMultiplier(1.4) .setMoneyMultiplier(1.4)
.setEncounterBgm(TrainerType.ROUGHNECK) .setEncounterBgm(TrainerType.ROUGHNECK)

View File

@ -250,7 +250,7 @@ export class LoadingScene extends SceneBase {
this.loadAtlas("statuses", ""); this.loadAtlas("statuses", "");
this.loadAtlas("types", ""); 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)) { if (lang && availableLangs.includes(lang)) {
this.loadImage(`pkmnday2025event-${lang}`, "events"); this.loadImage(`pkmnday2025event-${lang}`, "events");
} else { } else {

View File

@ -24,6 +24,7 @@ import type { PokeballType } from "#enums/pokeball";
import { StatusEffect } from "#enums/status-effect"; import { StatusEffect } from "#enums/status-effect";
import i18next from "i18next"; import i18next from "i18next";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Gender } from "#app/data/gender";
export class AttemptCapturePhase extends PokemonPhase { export class AttemptCapturePhase extends PokemonPhase {
private pokeballType: PokeballType; private pokeballType: PokeballType;
@ -321,6 +322,26 @@ export class AttemptCapturePhase extends PokemonPhase {
false, 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( globalScene.ui.setMode(
Mode.PARTY, Mode.PARTY,

View File

@ -948,10 +948,10 @@ export function setSetting(setting: string, value: number): boolean {
label: "日本語", label: "日本語",
handler: () => changeLocaleHandler("ja"), handler: () => changeLocaleHandler("ja"),
}, },
// { {
// label: "Català", label: "Català",
// handler: () => changeLocaleHandler("ca-ES") handler: () => changeLocaleHandler("ca-ES")
// }, },
{ {
label: i18next.t("settings:back"), label: i18next.t("settings:back"),
handler: () => cancelHandler(), handler: () => cancelHandler(),

View File

@ -21,11 +21,12 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler {
show(args: any[]): boolean { show(args: any[]): boolean {
if ( if (
args.length === 4 && args.length === 5 &&
args[0] instanceof Function && args[0] instanceof Function &&
args[1] instanceof Function && args[1] instanceof Function &&
args[2] instanceof Function && args[2] instanceof Function &&
args[3] === "fullParty" args[3] instanceof Function &&
args[4] === "fullParty"
) { ) {
const config: OptionSelectConfig = { const config: OptionSelectConfig = {
options: [ options: [
@ -37,29 +38,36 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler {
}, },
}, },
{ {
label: i18next.t("menu:yes"), label: i18next.t("partyUiHandler:POKEDEX"),
handler: () => { handler: () => {
args[1](); args[1]();
return true; return true;
}, },
}, },
{ {
label: i18next.t("menu:no"), label: i18next.t("menu:yes"),
handler: () => { handler: () => {
args[2](); args[2]();
return true; 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]); 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 xOffset = args.length >= 7 && args[6] !== null ? (args[6] as number) : 0;
const yOffset = 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); this.optionSelectContainer.setPosition(globalScene.game.canvas.width / 6 - 1 + xOffset, -48 + yOffset);

View File

@ -261,6 +261,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
private unlockedVariants: boolean[]; private unlockedVariants: boolean[];
private canUseCandies: boolean; private canUseCandies: boolean;
private exitCallback;
constructor() { constructor() {
super(Mode.POKEDEX_PAGE); super(Mode.POKEDEX_PAGE);
@ -681,6 +682,10 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
this.filteredIndices = args[2] ?? null; this.filteredIndices = args[2] ?? null;
this.starterSetup(); 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.moveInfoOverlay.clear(); // clear this when removing a menu; the cancel button doesn't seem to trigger this automatically on controllers
this.infoOverlay.clear(); this.infoOverlay.clear();
@ -1106,7 +1111,15 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
}); });
this.blockInput = false; this.blockInput = false;
} else { } 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; success = true;
} }
} else { } else {

View File

@ -458,7 +458,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container {
makeRoomForConfirmUi(speedMultiplier = 1, fromCatch = false): Promise<void> { makeRoomForConfirmUi(speedMultiplier = 1, fromCatch = false): Promise<void> {
const xPosition = fromCatch const xPosition = fromCatch
? this.initialX - this.infoWindowWidth - 65 ? this.initialX - this.infoWindowWidth - 67
: this.initialX - this.infoWindowWidth - ConfirmUiHandler.windowWidth; : this.initialX - this.infoWindowWidth - ConfirmUiHandler.windowWidth;
return new Promise<void>(resolve => { return new Promise<void>(resolve => {
globalScene.tweens.add({ globalScene.tweens.add({

View File

@ -150,7 +150,7 @@ const languageSettings: { [key: string]: LanguageSetting } = {
instructionTextSize: "38px", instructionTextSize: "38px",
}, },
"ca-ES": { "ca-ES": {
starterInfoTextSize: "56px", starterInfoTextSize: "52px",
instructionTextSize: "38px", instructionTextSize: "38px",
}, },
}; };

View File

@ -464,6 +464,7 @@ export function hasAllLocalizedSprites(lang?: string): boolean {
case "pt-BR": case "pt-BR":
case "ko": case "ko":
case "ja": case "ja":
case "ca-ES":
return true; return true;
default: default:
return false; return false;