[Refactor] Move Daily Pokerus Start Generation to its own function in data/pokemon-species (#3501)
* Moving daily Pokerus generation to game-data * Moved pokerus starter generation to pokemon-species * Added JsDocs * Update src/data/pokemon-species.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * boo typedocs boo --------- Co-authored-by: Frutescens <info@laptop> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
This commit is contained in:
parent
828897316e
commit
0cd52b86d2
|
@ -3317,6 +3317,28 @@ export function getStarterValueFriendshipCap(value: integer): integer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to get the daily list of starters with Pokerus.
|
||||||
|
* @param scene {@linkcode BattleScene} used as part of RNG
|
||||||
|
* @returns A list of starters with Pokerus
|
||||||
|
*/
|
||||||
|
export function getPokerusStarters(scene: BattleScene): PokemonSpecies[] {
|
||||||
|
const pokerusStarters: PokemonSpecies[] = [];
|
||||||
|
const date = new Date();
|
||||||
|
const starterCount = 3; //for easy future adjustment!
|
||||||
|
date.setUTCHours(0, 0, 0, 0);
|
||||||
|
scene.executeWithSeedOffset(() => {
|
||||||
|
while (pokerusStarters.length < starterCount) {
|
||||||
|
const randomSpeciesId = parseInt(Utils.randSeedItem(Object.keys(speciesStarters)), 10);
|
||||||
|
const species = getPokemonSpecies(randomSpeciesId);
|
||||||
|
if (!pokerusStarters.includes(species)) {
|
||||||
|
pokerusStarters.push(species);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 0, date.getTime().toString());
|
||||||
|
return pokerusStarters;
|
||||||
|
}
|
||||||
|
|
||||||
export const starterPassiveAbilities = {
|
export const starterPassiveAbilities = {
|
||||||
[Species.BULBASAUR]: Abilities.GRASSY_SURGE,
|
[Species.BULBASAUR]: Abilities.GRASSY_SURGE,
|
||||||
[Species.CHARMANDER]: Abilities.BEAST_BOOST,
|
[Species.CHARMANDER]: Abilities.BEAST_BOOST,
|
||||||
|
|
|
@ -13,7 +13,7 @@ import { allMoves } from "../data/move";
|
||||||
import { Nature, getNatureName } from "../data/nature";
|
import { Nature, getNatureName } from "../data/nature";
|
||||||
import { pokemonFormChanges } from "../data/pokemon-forms";
|
import { pokemonFormChanges } from "../data/pokemon-forms";
|
||||||
import { LevelMoves, pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "../data/pokemon-level-moves";
|
import { LevelMoves, pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "../data/pokemon-level-moves";
|
||||||
import PokemonSpecies, { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from "../data/pokemon-species";
|
import PokemonSpecies, { allSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities, getPokerusStarters } from "../data/pokemon-species";
|
||||||
import { Type } from "../data/type";
|
import { Type } from "../data/type";
|
||||||
import { GameModes } from "../game-mode";
|
import { GameModes } from "../game-mode";
|
||||||
import { AbilityAttr, DexAttr, DexAttrProps, DexEntry, StarterMoveset, StarterAttributes, StarterPreferences, StarterPrefs } from "../system/game-data";
|
import { AbilityAttr, DexAttr, DexAttrProps, DexEntry, StarterMoveset, StarterAttributes, StarterPreferences, StarterPrefs } from "../system/game-data";
|
||||||
|
@ -872,38 +872,6 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
||||||
this.message.setOrigin(0, 0);
|
this.message.setOrigin(0, 0);
|
||||||
this.starterSelectMessageBoxContainer.add(this.message);
|
this.starterSelectMessageBoxContainer.add(this.message);
|
||||||
|
|
||||||
const date = new Date();
|
|
||||||
date.setUTCHours(0, 0, 0, 0);
|
|
||||||
|
|
||||||
this.scene.executeWithSeedOffset(() => {
|
|
||||||
for (let c = 0; c < 3; c++) {
|
|
||||||
let randomSpeciesId: Species;
|
|
||||||
let species: PokemonSpecies | undefined;
|
|
||||||
|
|
||||||
const generateSpecies = () => {
|
|
||||||
randomSpeciesId = Utils.randSeedItem(starterSpecies);
|
|
||||||
species = getPokemonSpecies(randomSpeciesId);
|
|
||||||
};
|
|
||||||
|
|
||||||
let dupe = false;
|
|
||||||
|
|
||||||
do {
|
|
||||||
dupe = false;
|
|
||||||
|
|
||||||
generateSpecies();
|
|
||||||
|
|
||||||
for (let ps = 0; ps < c; ps++) {
|
|
||||||
if (this.pokerusSpecies[ps] === species) {
|
|
||||||
dupe = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} while (dupe);
|
|
||||||
|
|
||||||
this.pokerusSpecies.push(species!); // TODO: is the bang correct?
|
|
||||||
}
|
|
||||||
}, 0, date.getTime().toString());
|
|
||||||
|
|
||||||
this.statsContainer = new StatsContainer(this.scene, 6, 16);
|
this.statsContainer = new StatsContainer(this.scene, 6, 16);
|
||||||
|
|
||||||
this.scene.add.existing(this.statsContainer);
|
this.scene.add.existing(this.statsContainer);
|
||||||
|
@ -934,6 +902,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
||||||
this.starterPreferences = StarterPrefs.load();
|
this.starterPreferences = StarterPrefs.load();
|
||||||
}
|
}
|
||||||
this.moveInfoOverlay.clear(); // clear this when removing a menu; the cancel button doesn't seem to trigger this automatically on controllers
|
this.moveInfoOverlay.clear(); // clear this when removing a menu; the cancel button doesn't seem to trigger this automatically on controllers
|
||||||
|
this.pokerusSpecies = getPokerusStarters(this.scene);
|
||||||
|
|
||||||
if (args.length >= 1 && args[0] instanceof Function) {
|
if (args.length >= 1 && args[0] instanceof Function) {
|
||||||
super.show(args);
|
super.show(args);
|
||||||
this.starterSelectCallback = args[0] as StarterSelectCallback;
|
this.starterSelectCallback = args[0] as StarterSelectCallback;
|
||||||
|
|
Loading…
Reference in New Issue