From 933309cd000b43923f2865fd69a1effa5bf47a2b Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Thu, 26 Sep 2024 21:48:57 -0700 Subject: [PATCH 1/2] Fix Meloetta-related bugs in mono-type challenges (#4460) Remove Meloetta from the `TYPE_OVERRIDES` array so wrong-form Meloetta can't be sent into battle. This was missed when Meloetta was changed in a previous PR Also disallow Meloetta from being added to the party in starter select if it's in the wrong form for the current mono-type challenge --- src/data/challenge.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/data/challenge.ts b/src/data/challenge.ts index 1afbfc932dc..4cdaef7b1b3 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -527,18 +527,19 @@ interface monotypeOverride { */ export class SingleTypeChallenge extends Challenge { private static TYPE_OVERRIDES: monotypeOverride[] = [ - {species: Species.MELOETTA, type: Type.PSYCHIC, fusion: true}, {species: Species.CASTFORM, type: Type.NORMAL, fusion: false}, ]; + // TODO: Find a solution for all Pokemon with this ssui issue, including Basculin and Burmy + private static SPECIES_OVERRIDES: Species[] = [Species.MELOETTA]; constructor() { super(Challenges.SINGLE_TYPE, 18); } - applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false): boolean { + override applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false): boolean { const speciesForm = getPokemonSpeciesForm(pokemon.speciesId, dexAttr.formIndex); const types = [speciesForm.type1, speciesForm.type2]; - if (soft) { + if (soft && !SingleTypeChallenge.SPECIES_OVERRIDES.includes(pokemon.speciesId)) { const speciesToCheck = [pokemon.speciesId]; while (speciesToCheck.length) { const checking = speciesToCheck.pop(); From b2df7d785bb9376f31d3602a5fd97c57ff8a21bf Mon Sep 17 00:00:00 2001 From: ImperialSympathizer <110984302+ben-lear@users.noreply.github.com> Date: Fri, 27 Sep 2024 00:49:12 -0400 Subject: [PATCH 2/2] fix bug-type superfan's team on waves 160+ (#4459) Co-authored-by: ImperialSympathizer --- .../encounters/bug-type-superfan-encounter.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts index 3a80e92918d..827b2c12478 100644 --- a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts +++ b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts @@ -595,6 +595,8 @@ function getTrainerConfigForWave(waveIndex: number) { })) .setPartyMemberFunc(4, getRandomPartyMemberFunc(POOL_4_POKEMON, TrainerSlot.TRAINER, true)); } else { + pool3Copy = randSeedShuffle(pool3Copy); + const pool3Mon2 = pool3Copy.pop()!; config .setPartyTemplates(new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(4, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG))) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.BEEDRILL ], TrainerSlot.TRAINER, true, p => { @@ -616,9 +618,9 @@ function getTrainerConfigForWave(waveIndex: number) { p.generateName(); } })) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([pool3Mon.species], TrainerSlot.TRAINER, true, p => { - if (!isNullOrUndefined(pool3Mon.formIndex)) { - p.formIndex = pool3Mon.formIndex; + .setPartyMemberFunc(3, getRandomPartyMemberFunc([pool3Mon2.species], TrainerSlot.TRAINER, true, p => { + if (!isNullOrUndefined(pool3Mon2.formIndex)) { + p.formIndex = pool3Mon2.formIndex; p.generateAndPopulateMoveset(); p.generateName(); }