Draft for Hidden Ability Gacha machine
parent
09287c22ba
commit
0265418acc
|
@ -10,7 +10,8 @@ export const EGG_SEED = 1073741824;
|
||||||
export enum GachaType {
|
export enum GachaType {
|
||||||
MOVE,
|
MOVE,
|
||||||
LEGENDARY,
|
LEGENDARY,
|
||||||
SHINY
|
SHINY,
|
||||||
|
ABILITY
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Egg {
|
export class Egg {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import { achvs } from "./system/achv";
|
||||||
import { pokemonPrevolutions } from "./data/pokemon-evolutions";
|
import { pokemonPrevolutions } from "./data/pokemon-evolutions";
|
||||||
import { EggTier } from "./data/enums/egg-type";
|
import { EggTier } from "./data/enums/egg-type";
|
||||||
import PokemonInfoContainer from "./ui/pokemon-info-container";
|
import PokemonInfoContainer from "./ui/pokemon-info-container";
|
||||||
|
import { Abilities } from "./data/enums/abilities";
|
||||||
|
|
||||||
export class EggHatchPhase extends Phase {
|
export class EggHatchPhase extends Phase {
|
||||||
private egg: Egg;
|
private egg: Egg;
|
||||||
|
@ -413,10 +414,10 @@ export class EggHatchPhase extends Phase {
|
||||||
}
|
}
|
||||||
|
|
||||||
const pokemonSpecies = getPokemonSpecies(species);
|
const pokemonSpecies = getPokemonSpecies(species);
|
||||||
|
|
||||||
ret = this.scene.addPlayerPokemon(pokemonSpecies, 1, undefined, undefined, undefined, false);
|
ret = this.scene.addPlayerPokemon(pokemonSpecies, 1, undefined, undefined, undefined, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret.abilityIndex = this.egg.gachaType == GachaType.ABILITY ? ret.abilityIndex : ret.calculateHiddenAbilityIndex(128);
|
||||||
ret.trySetShiny(this.egg.gachaType === GachaType.SHINY ? 1024 : 512);
|
ret.trySetShiny(this.egg.gachaType === GachaType.SHINY ? 1024 : 512);
|
||||||
ret.variant = ret.shiny ? ret.generateVariant() : 0;
|
ret.variant = ret.shiny ? ret.generateVariant() : 0;
|
||||||
|
|
||||||
|
|
|
@ -111,20 +111,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||||
|
|
||||||
if (!species.isObtainable() && this.isPlayer())
|
if (!species.isObtainable() && this.isPlayer())
|
||||||
throw `Cannot create a player Pokemon for species '${species.getName(formIndex)}'`;
|
throw `Cannot create a player Pokemon for species '${species.getName(formIndex)}'`;
|
||||||
|
|
||||||
const hiddenAbilityChance = new Utils.IntegerHolder(256);
|
|
||||||
if (!this.hasTrainer())
|
|
||||||
this.scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance);
|
|
||||||
|
|
||||||
const hasHiddenAbility = !Utils.randSeedInt(hiddenAbilityChance.value);
|
|
||||||
const randAbilityIndex = Utils.randSeedInt(2);
|
|
||||||
|
|
||||||
this.species = species;
|
this.species = species;
|
||||||
this.pokeball = dataSource?.pokeball || PokeballType.POKEBALL;
|
this.pokeball = dataSource?.pokeball || PokeballType.POKEBALL;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
this.abilityIndex = abilityIndex !== undefined
|
this.abilityIndex = abilityIndex != undefined ? abilityIndex : this.calculateHiddenAbilityIndex();
|
||||||
? abilityIndex
|
|
||||||
: (species.abilityHidden && hasHiddenAbility ? species.ability2 ? 2 : 1 : species.ability2 ? randAbilityIndex : 0);
|
|
||||||
if (formIndex !== undefined)
|
if (formIndex !== undefined)
|
||||||
this.formIndex = formIndex;
|
this.formIndex = formIndex;
|
||||||
if (gender !== undefined)
|
if (gender !== undefined)
|
||||||
|
@ -350,6 +340,18 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calculateHiddenAbilityIndex(chanceOverride: number=256): number {
|
||||||
|
const hiddenAbilityChance = new Utils.IntegerHolder(chanceOverride);
|
||||||
|
if (!this.hasTrainer())
|
||||||
|
this.scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance);
|
||||||
|
|
||||||
|
const hasHiddenAbility = !Utils.randSeedInt(hiddenAbilityChance.value);
|
||||||
|
const randAbilityIndex = Utils.randSeedInt(2);
|
||||||
|
|
||||||
|
const abilityIndex = this.species.abilityHidden && hasHiddenAbility ? this.species.ability2 ? 2 : 1 : this.species.ability2 ? randAbilityIndex : 0;
|
||||||
|
return abilityIndex;
|
||||||
|
}
|
||||||
|
|
||||||
getFormKey(): string {
|
getFormKey(): string {
|
||||||
if (!this.species.forms.length || this.species.forms.length <= this.formIndex)
|
if (!this.species.forms.length || this.species.forms.length <= this.formIndex)
|
||||||
return '';
|
return '';
|
||||||
|
|
Loading…
Reference in New Issue