diff --git a/public/images/events/pkmnday2025event-de.png b/public/images/events/pkmnday2025event-de.png new file mode 100644 index 00000000000..4cc53546752 Binary files /dev/null and b/public/images/events/pkmnday2025event-de.png differ diff --git a/public/images/events/pkmnday2025event-en.png b/public/images/events/pkmnday2025event-en.png new file mode 100644 index 00000000000..e9caa9e19d6 Binary files /dev/null and b/public/images/events/pkmnday2025event-en.png differ diff --git a/public/images/events/pkmnday2025event-es-ES.png b/public/images/events/pkmnday2025event-es-ES.png new file mode 100644 index 00000000000..e1ab096dffc Binary files /dev/null and b/public/images/events/pkmnday2025event-es-ES.png differ diff --git a/public/images/events/pkmnday2025event-fr.png b/public/images/events/pkmnday2025event-fr.png new file mode 100644 index 00000000000..037d1e06e61 Binary files /dev/null and b/public/images/events/pkmnday2025event-fr.png differ diff --git a/public/images/events/pkmnday2025event-it.png b/public/images/events/pkmnday2025event-it.png new file mode 100644 index 00000000000..f38a60330fa Binary files /dev/null and b/public/images/events/pkmnday2025event-it.png differ diff --git a/public/images/events/pkmnday2025event-ja.png b/public/images/events/pkmnday2025event-ja.png new file mode 100644 index 00000000000..94b02ad93a0 Binary files /dev/null and b/public/images/events/pkmnday2025event-ja.png differ diff --git a/public/images/events/pkmnday2025event-ko.png b/public/images/events/pkmnday2025event-ko.png new file mode 100644 index 00000000000..aed9ee3fb28 Binary files /dev/null and b/public/images/events/pkmnday2025event-ko.png differ diff --git a/public/images/events/pkmnday2025event-pt-BR.png b/public/images/events/pkmnday2025event-pt-BR.png new file mode 100644 index 00000000000..2190bbac535 Binary files /dev/null and b/public/images/events/pkmnday2025event-pt-BR.png differ diff --git a/public/images/events/pkmnday2025event-zh-CN.png b/public/images/events/pkmnday2025event-zh-CN.png new file mode 100644 index 00000000000..a3430482dd0 Binary files /dev/null and b/public/images/events/pkmnday2025event-zh-CN.png differ diff --git a/public/images/pokemon/656.png b/public/images/pokemon/656.png index 6acfe282dca..06a9cd58268 100644 Binary files a/public/images/pokemon/656.png and b/public/images/pokemon/656.png differ diff --git a/public/images/pokemon/variant/656.json b/public/images/pokemon/variant/656.json index 68743a4c9f1..5037f86f22a 100644 --- a/public/images/pokemon/variant/656.json +++ b/public/images/pokemon/variant/656.json @@ -3,12 +3,12 @@ "838394": "4d7dc5", "62ace6": "8363af", "7bcdff": "9c75c2", - "ffec8c": "ddfff9", + "fdea88": "ddfff9", "a1a1c4": "7ab7ec", "c9b241": "97d6e2", - "dfcf77": "bae7e8", + "ccbd70": "bae7e8", "174592": "37408c", - "fdfdfd": "b1e5ff", + "f8f8f8": "b1e5ff", "9c9cc5": "5385c7", "cdcde6": "7eb7e8", "396a83": "362864", @@ -18,12 +18,12 @@ "838394": "cc6845", "62ace6": "c44848", "7bcdff": "dd6155", - "ffec8c": "ddfff9", + "fdea88": "ddfff9", "a1a1c4": "f7c685", "c9b241": "97d6e2", - "dfcf77": "bae7e8", + "ccbd70": "bae7e8", "174592": "198158", - "fdfdfd": "fff4bd", + "f8f8f8": "fff4bd", "9c9cc5": "c96a48", "cdcde6": "f7b785", "396a83": "5c0d33", diff --git a/public/images/pokemon/variant/back/656.json b/public/images/pokemon/variant/back/656.json index 34b11bfab78..f41398f3154 100644 --- a/public/images/pokemon/variant/back/656.json +++ b/public/images/pokemon/variant/back/656.json @@ -1,17 +1,17 @@ { "1": { - "838394": "4d7dc5", + "848496": "4d7dc5", "7bcdff": "9c75c2", "62ace6": "8363af", "ffffff": "b1e5ff", "396a83": "362864", "9c9cc5": "5385c7", "cdcde6": "7eb7e8", - "174592": "198158", + "174592": "37408c", "5a94cd": "7054a4" }, "2": { - "838394": "cc6845", + "848496": "cc6845", "7bcdff": "dd6155", "62ace6": "c44848", "ffffff": "fff4bd", diff --git a/src/data/balance/starters.ts b/src/data/balance/starters.ts index 10263f895b3..3468163c988 100644 --- a/src/data/balance/starters.ts +++ b/src/data/balance/starters.ts @@ -461,7 +461,7 @@ export const speciesStarterCosts = { [Species.GUZZLORD]: 6, [Species.NECROZMA]: 8, [Species.MAGEARNA]: 7, - [Species.MARSHADOW]: 7, + [Species.MARSHADOW]: 8, [Species.POIPOLE]: 8, [Species.STAKATAKA]: 6, [Species.BLACEPHALON]: 7, diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 42b6d0ced11..183b38c49e5 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -251,9 +251,9 @@ export class LoadingScene extends SceneBase { } const availableLangs = [ "en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN" ]; if (lang && availableLangs.includes(lang)) { - this.loadImage("valentines2025event-" + lang, "events"); + this.loadImage("pkmnday2025event-" + lang, "events"); } else { - this.loadImage("valentines2025event-en", "events"); + this.loadImage("pkmnday2025event-en", "events"); } this.loadAtlas("statuses", ""); diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 112a3c9aa35..ae8b9a45c0d 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -2554,7 +2554,7 @@ export function getPartyLuckValue(party: Pokemon[]): number { return DailyLuck.value; } const eventSpecies = globalScene.eventManager.getEventLuckBoostedSpecies(); - const luck = Phaser.Math.Clamp(party.map(p => p.isAllowedInBattle() ? p.getLuck() + (eventSpecies.includes(p.species.speciesId) ? 3 : 0) : 0) + const luck = Phaser.Math.Clamp(party.map(p => p.isAllowedInBattle() ? p.getLuck() + (eventSpecies.includes(p.species.speciesId) ? 1 : 0) : 0) .reduce((total: number, value: number) => total += value, 0), 0, 14); return Math.min(globalScene.eventManager.getEventLuckBoost() + (luck ?? 0), 14); } diff --git a/src/system/version_migration/versions/v1_7_0.ts b/src/system/version_migration/versions/v1_7_0.ts index 2acb9d8151a..bdb9e6aab9f 100644 --- a/src/system/version_migration/versions/v1_7_0.ts +++ b/src/system/version_migration/versions/v1_7_0.ts @@ -1,8 +1,29 @@ -import { getPokemonSpeciesForm } from "#app/data/pokemon-species"; -import type { SessionSaveData } from "#app/system/game-data"; +import { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; +import { globalScene } from "#app/global-scene"; +import { DexAttr, type SessionSaveData, type SystemSaveData } from "#app/system/game-data"; import * as Utils from "#app/utils"; -export const systemMigrators = [] as const; +export const systemMigrators = [ + /** + * If a starter is caught, but the only forms registered as caught are not starterSelectable, + * unlock the default form. + * @param data {@linkcode SystemSaveData} + */ + function migrateUnselectableForms(data: SystemSaveData) { + if (data.starterData && data.dexData) { + Object.keys(data.starterData).forEach(sd => { + const caughtAttr = data.dexData[sd]?.caughtAttr; + const species = getPokemonSpecies(Number(sd)); + if (caughtAttr && species.forms?.length > 1) { + const selectableForms = species.forms.filter((form, formIndex) => form.isStarterSelectable && (caughtAttr & globalScene.gameData.getFormAttr(formIndex))); + if (selectableForms.length === 0) { + data.dexData[sd].caughtAttr += DexAttr.DEFAULT_FORM; + } + } + }); + } + }, +] as const; export const settingsMigrators = [] as const; diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index bebacf87ebc..c12f9d569c0 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -169,7 +169,7 @@ const timedEvents: TimedEvent[] = [ { species: Species.WOOBAT }, { species: Species.FRILLISH }, { species: Species.ALOMOMOLA }, - { species: Species.FURFROU, formIndex: 1 }, // Heart trim + { species: Species.FURFROU, formIndex: 1 }, // Heart Trim { species: Species.ESPURR }, { species: Species.SPRITZEE }, { species: Species.SWIRLIX }, @@ -180,6 +180,33 @@ const timedEvents: TimedEvent[] = [ { species: Species.ENAMORUS } ], luckBoostedSpecies: [ Species.LUVDISC ] + }, + { + name: "PKMNDAY2025", + eventType: EventType.LUCK, + startDate: new Date(Date.UTC(2025, 1, 27)), + endDate: new Date(Date.UTC(2025, 2, 4)), + classicFriendshipMultiplier: 4, + bannerKey: "pkmnday2025event-", + scale: 0.21, + availableLangs: [ "en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN" ], + eventEncounters: [ + { species: Species.PIKACHU, formIndex: 1, blockEvolution: true }, // Partner Form + { species: Species.EEVEE, formIndex: 1, blockEvolution: true }, // Partner Form + { species: Species.CHIKORITA }, + { species: Species.TOTODILE }, + { species: Species.TEPIG } + ], + luckBoostedSpecies: [ + Species.PICHU, Species.PIKACHU, Species.RAICHU, Species.ALOLA_RAICHU, + Species.PSYDUCK, Species.GOLDUCK, + Species.EEVEE, Species.FLAREON, Species.JOLTEON, Species.VAPOREON, Species.ESPEON, Species.UMBREON, Species.LEAFEON, Species.GLACEON, Species.SYLVEON, + Species.CHIKORITA, Species.BAYLEEF, Species.MEGANIUM, + Species.TOTODILE, Species.CROCONAW, Species.FERALIGATR, + Species.TEPIG, Species.PIGNITE, Species.EMBOAR, + Species.ZYGARDE, + Species.ETERNAL_FLOETTE + ] } ];