[BUG] Fixes bug that prevents pokemon with froms from hatching as rare/epic shiny variant and preventing illegal variants from legendary gacha (#2940)

* Changed PokemonSpecies hasVariants function to also include for pokemon with differend forms

* Added check to prevent illegal shiny variants from happening if the egg rolls the gacha legendary and has no variants

* Simplified variant check. Fixed spelling on unit test

* Bugfix for legacy eggs

* Removed formIndex variable

* Changed unit test

* Added new line to unit test function

Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>

---------

Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
This commit is contained in:
sirzento 2024-07-26 01:27:09 +02:00 committed by GitHub
parent 233c926721
commit 7fac3269e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 7 deletions

View File

@ -166,12 +166,12 @@ export class Egg {
if (eggOptions.species) {
this._tier = this.getEggTierFromSpeciesStarterValue();
this._hatchWaves = eggOptions.hatchWaves ?? this.getEggTierDefaultHatchWaves();
// If species has no variant, set variantTier to common. This needs to
// be done because species with no variants get filtered at rollSpecies but since the
// species is set the check never happens
if (!getPokemonSpecies(this.species).hasVariants()) {
this._variantTier = VariantTier.COMMON;
}
}
// If species has no variant, set variantTier to common. This needs to
// be done because species with no variants get filtered at rollSpecies but if the
// species is set via options or the legendary gacha pokemon gets choosen the check never happens
if (this._species && !getPokemonSpecies(this._species).hasVariants()) {
this._variantTier = VariantTier.COMMON;
}
// Needs this._tier so it needs to be generated afer the tier override if bought from same species
this._eggMoveIndex = eggOptions.eggMoveIndex ?? this.rollEggMoveIndex();

View File

@ -853,7 +853,14 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali
}
hasVariants() {
return variantData.hasOwnProperty(this.speciesId);
let variantDataIndex: string | number = this.speciesId;
if (this.forms.length > 0) {
const formKey = this.forms[this.formIndex]?.formKey;
if (formKey) {
variantDataIndex = `${variantDataIndex}-${formKey}`;
}
}
return variantData.hasOwnProperty(variantDataIndex) || variantData.hasOwnProperty(this.speciesId);
}
getFormSpriteKey(formIndex?: integer) {

View File

@ -303,4 +303,11 @@ describe("Egg Generation Tests", () => {
expect(result1).toBe(expectedTier1);
expect(result2).toBe(expectedTier2);
});
it("should generate an epic shiny from pokemon with a different form", () => {
const scene = game.scene;
const egg = new Egg({scene, isShiny: true, variantTier: VariantTier.EPIC, species: Species.MIRAIDON});
expect(egg.variantTier).toBe(VariantTier.EPIC);
});
});