diff --git a/public/images/events/spr25event-de.png b/public/images/events/spr25event-de.png new file mode 100644 index 00000000000..1ccd9557460 Binary files /dev/null and b/public/images/events/spr25event-de.png differ diff --git a/public/images/events/spr25event-en.png b/public/images/events/spr25event-en.png new file mode 100644 index 00000000000..0e73f9247e3 Binary files /dev/null and b/public/images/events/spr25event-en.png differ diff --git a/public/images/events/spr25event-es-ES.png b/public/images/events/spr25event-es-ES.png new file mode 100644 index 00000000000..137f1c6e743 Binary files /dev/null and b/public/images/events/spr25event-es-ES.png differ diff --git a/public/images/events/spr25event-es-MX.png b/public/images/events/spr25event-es-MX.png new file mode 100644 index 00000000000..137f1c6e743 Binary files /dev/null and b/public/images/events/spr25event-es-MX.png differ diff --git a/public/images/events/spr25event-fr.png b/public/images/events/spr25event-fr.png new file mode 100644 index 00000000000..e7089eee4a1 Binary files /dev/null and b/public/images/events/spr25event-fr.png differ diff --git a/public/images/events/spr25event-it.png b/public/images/events/spr25event-it.png new file mode 100644 index 00000000000..2664b4367cc Binary files /dev/null and b/public/images/events/spr25event-it.png differ diff --git a/public/images/events/spr25event-ja.png b/public/images/events/spr25event-ja.png new file mode 100644 index 00000000000..90b02af8050 Binary files /dev/null and b/public/images/events/spr25event-ja.png differ diff --git a/public/images/events/spr25event-ko.png b/public/images/events/spr25event-ko.png new file mode 100644 index 00000000000..a8fe279617a Binary files /dev/null and b/public/images/events/spr25event-ko.png differ diff --git a/public/images/events/spr25event-pt-BR.png b/public/images/events/spr25event-pt-BR.png new file mode 100644 index 00000000000..ae195fecc97 Binary files /dev/null and b/public/images/events/spr25event-pt-BR.png differ diff --git a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts index bfba553af5d..bab0c44db7d 100644 --- a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts @@ -106,7 +106,7 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui * If an event with more than 1 valid event encounter species is active, you have 20% chance to get one of those * If the rolled species has no HA, and there are valid event encounters, you will get one of those * If the rolled species has no HA and there are no valid event encounters, you will get Shiny Magikarp - * Mons rolled from the event encounter pool get 2 extra shiny rolls + * Mons rolled from the event encounter pool get 3 extra shiny rolls */ if ( r === 0 || @@ -120,12 +120,13 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui (validEventEncounters.length > 0 && (r <= EVENT_THRESHOLD || (isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE))) ) { - // If you roll 20%, give event encounter with 2 extra shiny rolls and its HA, if it has one + // If you roll 20%, give event encounter with 3 extra shiny rolls and its HA, if it has one const enc = randSeedItem(validEventEncounters); species = getPokemonSpecies(enc.species); pokemon = new PlayerPokemon(species, 5, species.abilityHidden === Abilities.NONE ? undefined : 2, enc.formIndex); pokemon.trySetShinySeed(); pokemon.trySetShinySeed(); + pokemon.trySetShinySeed(); } else { pokemon = new PlayerPokemon(species, 5, 2, species.formIndex); } diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index 8f5a9c75428..3f5e0393ff7 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -310,6 +310,48 @@ const timedEvents: TimedEvent[] = [ }, ], }, + { + name: "Shining Spring", + eventType: EventType.SHINY, + startDate: new Date(Date.UTC(2025, 4, 2)), + endDate: new Date(Date.UTC(2025, 4, 12)), + bannerKey: "spr25event", + scale: 0.21, + availableLangs: ["en", "de", "it", "fr", "ja", "ko", "es-ES", "es-MX", "pt-BR", "zh-CN"], + shinyMultiplier: 2, + upgradeUnlockedVouchers: true, + eventEncounters: [ + { species: Species.HOPPIP }, + { species: Species.CELEBI }, + { species: Species.VOLBEAT }, + { species: Species.ILLUMISE }, + { species: Species.SPOINK }, + { species: Species.LILEEP }, + { species: Species.SHINX }, + { species: Species.PACHIRISU }, + { species: Species.CHERUBI }, + { species: Species.MUNCHLAX }, + { species: Species.TEPIG }, + { species: Species.PANSAGE }, + { species: Species.PANSEAR }, + { species: Species.PANPOUR }, + { species: Species.DARUMAKA }, + { species: Species.ARCHEN }, + { species: Species.DEERLING, formIndex: 0 }, // Spring Deerling + { species: Species.CLAUNCHER }, + { species: Species.WISHIWASHI }, + { species: Species.MUDBRAY }, + { species: Species.DRAMPA }, + { species: Species.JANGMO_O }, + { species: Species.APPLIN }, + ], + classicWaveRewards: [ + { wave: 8, type: "SHINY_CHARM" }, + { wave: 8, type: "ABILITY_CHARM" }, + { wave: 8, type: "CATCHING_CHARM" }, + { wave: 25, type: "SHINY_CHARM" }, + ], + } ]; export class TimedEventManager {