[Hotfix] Fix Eternatus egg tier (#4734)
This commit is contained in:
parent
9a56f080db
commit
dfb42e44a6
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "pokemon-rogue-battle",
|
"name": "pokemon-rogue-battle",
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pokemon-rogue-battle",
|
"name": "pokemon-rogue-battle",
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@material/material-color-utilities": "^0.2.7",
|
"@material/material-color-utilities": "^0.2.7",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "pokemon-rogue-battle",
|
"name": "pokemon-rogue-battle",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "vite",
|
"start": "vite",
|
||||||
|
|
|
@ -497,7 +497,7 @@ export const speciesEggTiers = {
|
||||||
[Species.DREEPY]: EggTier.RARE,
|
[Species.DREEPY]: EggTier.RARE,
|
||||||
[Species.ZACIAN]: EggTier.LEGENDARY,
|
[Species.ZACIAN]: EggTier.LEGENDARY,
|
||||||
[Species.ZAMAZENTA]: EggTier.LEGENDARY,
|
[Species.ZAMAZENTA]: EggTier.LEGENDARY,
|
||||||
[Species.ETERNATUS]: EggTier.COMMON,
|
[Species.ETERNATUS]: EggTier.LEGENDARY,
|
||||||
[Species.KUBFU]: EggTier.EPIC,
|
[Species.KUBFU]: EggTier.EPIC,
|
||||||
[Species.ZARUDE]: EggTier.EPIC,
|
[Species.ZARUDE]: EggTier.EPIC,
|
||||||
[Species.REGIELEKI]: EggTier.EPIC,
|
[Species.REGIELEKI]: EggTier.EPIC,
|
||||||
|
|
|
@ -544,11 +544,15 @@ export class Egg {
|
||||||
////
|
////
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getLegendaryGachaSpeciesForTimestamp(scene: BattleScene, timestamp: number): Species {
|
export function getValidLegendaryGachaSpecies() : Species[] {
|
||||||
const legendarySpecies = Object.entries(speciesEggTiers)
|
return Object.entries(speciesEggTiers)
|
||||||
.filter(s => s[1] === EggTier.LEGENDARY)
|
.filter(s => s[1] === EggTier.LEGENDARY)
|
||||||
.map(s => parseInt(s[0]))
|
.map(s => parseInt(s[0]))
|
||||||
.filter(s => getPokemonSpecies(s).isObtainable());
|
.filter(s => getPokemonSpecies(s).isObtainable() && s !== Species.ETERNATUS);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getLegendaryGachaSpeciesForTimestamp(scene: BattleScene, timestamp: number): Species {
|
||||||
|
const legendarySpecies = getValidLegendaryGachaSpecies();
|
||||||
|
|
||||||
let ret: Species;
|
let ret: Species;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
import { Egg, getLegendaryGachaSpeciesForTimestamp } from "#app/data/egg";
|
import { speciesEggTiers } from "#app/data/balance/species-egg-tiers";
|
||||||
|
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
|
import { Egg, getLegendaryGachaSpeciesForTimestamp, getValidLegendaryGachaSpecies } from "#app/data/egg";
|
||||||
|
import { allSpecies } from "#app/data/pokemon-species";
|
||||||
import { EggSourceType } from "#app/enums/egg-source-types";
|
import { EggSourceType } from "#app/enums/egg-source-types";
|
||||||
import { EggTier } from "#app/enums/egg-type";
|
import { EggTier } from "#app/enums/egg-type";
|
||||||
import { VariantTier } from "#app/enums/variant-tier";
|
import { VariantTier } from "#app/enums/variant-tier";
|
||||||
|
@ -64,6 +67,12 @@ describe("Egg Generation Tests", () => {
|
||||||
expect(gachaSpeciesCount).toBeGreaterThan(0.4 * EGG_HATCH_COUNT);
|
expect(gachaSpeciesCount).toBeGreaterThan(0.4 * EGG_HATCH_COUNT);
|
||||||
expect(gachaSpeciesCount).toBeLessThan(0.6 * EGG_HATCH_COUNT);
|
expect(gachaSpeciesCount).toBeLessThan(0.6 * EGG_HATCH_COUNT);
|
||||||
});
|
});
|
||||||
|
it("should never be allowed to generate Eternatus via the legendary gacha", () => {
|
||||||
|
const validLegendaryGachaSpecies = getValidLegendaryGachaSpecies();
|
||||||
|
expect(validLegendaryGachaSpecies.every(s => speciesEggTiers[s] === EggTier.LEGENDARY)).toBe(true);
|
||||||
|
expect(validLegendaryGachaSpecies.every(s => allSpecies[s].isObtainable())).toBe(true);
|
||||||
|
expect(validLegendaryGachaSpecies.includes(Species.ETERNATUS)).toBe(false);
|
||||||
|
});
|
||||||
it("should hatch an Arceus. Set from species", () => {
|
it("should hatch an Arceus. Set from species", () => {
|
||||||
const scene = game.scene;
|
const scene = game.scene;
|
||||||
const expectedSpecies = Species.ARCEUS;
|
const expectedSpecies = Species.ARCEUS;
|
||||||
|
@ -376,4 +385,23 @@ describe("Egg Generation Tests", () => {
|
||||||
expect(diffShiny).toBe(true);
|
expect(diffShiny).toBe(true);
|
||||||
expect(diffAbility).toBe(true);
|
expect(diffAbility).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// For now, we are using this test to detect oversights in egg tiers.
|
||||||
|
// Delete this test if the balance team rebalances species costs independently of egg tiers.
|
||||||
|
it("should have correct egg tiers based on species costs", () => {
|
||||||
|
const getExpectedEggTier = (starterCost) =>
|
||||||
|
starterCost <= 3 ? EggTier.COMMON
|
||||||
|
: starterCost <= 5 ? EggTier.RARE
|
||||||
|
: starterCost <= 7 ? EggTier.EPIC
|
||||||
|
: EggTier.LEGENDARY;
|
||||||
|
|
||||||
|
allSpecies.forEach(pokemonSpecies => {
|
||||||
|
const rootSpecies = pokemonSpecies.getRootSpeciesId();
|
||||||
|
const speciesCost = speciesStarterCosts[rootSpecies];
|
||||||
|
const expectedEggTier = getExpectedEggTier(speciesCost);
|
||||||
|
const actualEggTier = speciesEggTiers[rootSpecies];
|
||||||
|
|
||||||
|
expect(actualEggTier).toBe(expectedEggTier);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue