[Refactor] Change rare egg rate consts to array, rare egg move common egg boosted chance boosted (#6305)

* Change rare egg rate consts to array

* Update rates.ts

1/24 -> 1/16

* Make new arrays use readonly type hint

---------

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
This commit is contained in:
AJ Fontaine 2025-08-20 19:55:16 -04:00 committed by GitHub
parent 4eee569046
commit 030b701910
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 19 deletions

View File

@ -42,10 +42,10 @@ export const SAME_SPECIES_EGG_HA_RATE = 8;
export const MANAPHY_EGG_MANAPHY_RATE = 8; export const MANAPHY_EGG_MANAPHY_RATE = 8;
export const GACHA_EGG_HA_RATE = 192; export const GACHA_EGG_HA_RATE = 192;
// 1/x for legendary eggs, 1/x*2 for epic eggs, 1/x*4 for rare eggs, and 1/x*8 for common eggs // Odds are 1/x
export const GACHA_DEFAULT_RARE_EGGMOVE_RATE = 6; // [COMMON, RARE, EPIC/MANAPHY, LEGEND]
export const SAME_SPECIES_EGG_RARE_EGGMOVE_RATE = 3; export const RARE_EGGMOVE_RATES: readonly number[] = [48, 24, 12, 6];
export const GACHA_MOVE_UP_RARE_EGGMOVE_RATE = 3; export const BOOSTED_RARE_EGGMOVE_RATES: readonly number[] = [16, 12, 6, 3];
// #region Variant properties // #region Variant properties
// The chance x/10 of a shiny being a variant, then of being specifically an epic variant // The chance x/10 of a shiny being a variant, then of being specifically an epic variant

View File

@ -3,17 +3,16 @@ import { globalScene } from "#app/global-scene";
import Overrides from "#app/overrides"; import Overrides from "#app/overrides";
import { pokemonPrevolutions } from "#balance/pokemon-evolutions"; import { pokemonPrevolutions } from "#balance/pokemon-evolutions";
import { import {
BOOSTED_RARE_EGGMOVE_RATES,
EGG_PITY_EPIC_THRESHOLD, EGG_PITY_EPIC_THRESHOLD,
EGG_PITY_LEGENDARY_THRESHOLD, EGG_PITY_LEGENDARY_THRESHOLD,
EGG_PITY_RARE_THRESHOLD, EGG_PITY_RARE_THRESHOLD,
GACHA_DEFAULT_COMMON_EGG_THRESHOLD, GACHA_DEFAULT_COMMON_EGG_THRESHOLD,
GACHA_DEFAULT_EPIC_EGG_THRESHOLD, GACHA_DEFAULT_EPIC_EGG_THRESHOLD,
GACHA_DEFAULT_RARE_EGG_THRESHOLD, GACHA_DEFAULT_RARE_EGG_THRESHOLD,
GACHA_DEFAULT_RARE_EGGMOVE_RATE,
GACHA_DEFAULT_SHINY_RATE, GACHA_DEFAULT_SHINY_RATE,
GACHA_EGG_HA_RATE, GACHA_EGG_HA_RATE,
GACHA_LEGENDARY_UP_THRESHOLD_OFFSET, GACHA_LEGENDARY_UP_THRESHOLD_OFFSET,
GACHA_MOVE_UP_RARE_EGGMOVE_RATE,
GACHA_SHINY_UP_SHINY_RATE, GACHA_SHINY_UP_SHINY_RATE,
HATCH_WAVES_COMMON_EGG, HATCH_WAVES_COMMON_EGG,
HATCH_WAVES_EPIC_EGG, HATCH_WAVES_EPIC_EGG,
@ -21,8 +20,8 @@ import {
HATCH_WAVES_MANAPHY_EGG, HATCH_WAVES_MANAPHY_EGG,
HATCH_WAVES_RARE_EGG, HATCH_WAVES_RARE_EGG,
MANAPHY_EGG_MANAPHY_RATE, MANAPHY_EGG_MANAPHY_RATE,
RARE_EGGMOVE_RATES,
SAME_SPECIES_EGG_HA_RATE, SAME_SPECIES_EGG_HA_RATE,
SAME_SPECIES_EGG_RARE_EGGMOVE_RATE,
SAME_SPECIES_EGG_SHINY_RATE, SAME_SPECIES_EGG_SHINY_RATE,
SHINY_EPIC_CHANCE, SHINY_EPIC_CHANCE,
SHINY_VARIANT_CHANCE, SHINY_VARIANT_CHANCE,
@ -355,21 +354,22 @@ export class Egg {
// #region Private methods // #region Private methods
//// ////
/**
* Rolls which egg move slot the egg will have.
* 1/x chance for rare, (x-1)/3 chance for each common move.
* x is determined by Egg Tier. Boosted rates used for eggs obtained through Move Up Gacha and Candy.
* @returns the slot for the egg move
*/
private rollEggMoveIndex() { private rollEggMoveIndex() {
let baseChance = GACHA_DEFAULT_RARE_EGGMOVE_RATE; const tierNum = this.isManaphyEgg() ? 2 : this.tier;
switch (this._sourceType) { let baseChance: number;
case EggSourceType.SAME_SPECIES_EGG: if (this._sourceType === EggSourceType.SAME_SPECIES_EGG || this._sourceType === EggSourceType.GACHA_MOVE) {
baseChance = SAME_SPECIES_EGG_RARE_EGGMOVE_RATE; baseChance = BOOSTED_RARE_EGGMOVE_RATES[tierNum];
break; } else {
case EggSourceType.GACHA_MOVE: baseChance = RARE_EGGMOVE_RATES[tierNum];
baseChance = GACHA_MOVE_UP_RARE_EGGMOVE_RATE;
break;
default:
break;
} }
const tierMultiplier = this.isManaphyEgg() ? 2 : Math.pow(2, 3 - this.tier); return randSeedInt(baseChance) ? randSeedInt(3) : 3;
return randSeedInt(baseChance * tierMultiplier) ? randSeedInt(3) : 3;
} }
private getEggTierDefaultHatchWaves(eggTier?: EggTier): number { private getEggTierDefaultHatchWaves(eggTier?: EggTier): number {