[Misc] New data structures for pokedex (#5223)
* Introducing catchableStarters in biomes.ts * Introducing SpeciesTmMoves with a list of TM moves for each species * speciesTmMoves now properly accounts for form-specific tms * Removed argument from transverse function * Adding types to passive abilities data structures * Update tms.ts * Update src/data/balance/passives.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: damocleas <damocleas25@gmail.com> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
This commit is contained in:
parent
45f4bf3f13
commit
91a4333e96
|
@ -102,6 +102,18 @@ export interface BiomePokemonPools {
|
||||||
[key: integer]: BiomeTierPokemonPools
|
[key: integer]: BiomeTierPokemonPools
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface BiomeTierTod {
|
||||||
|
biome: Biome,
|
||||||
|
tier: BiomePoolTier,
|
||||||
|
tod: TimeOfDay[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CatchableSpecies{
|
||||||
|
[key: integer]: BiomeTierTod[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export const catchableSpecies: CatchableSpecies = {};
|
||||||
|
|
||||||
export interface BiomeTierTrainerPools {
|
export interface BiomeTierTrainerPools {
|
||||||
[key: integer]: TrainerType[]
|
[key: integer]: TrainerType[]
|
||||||
}
|
}
|
||||||
|
@ -7716,6 +7728,9 @@ export function initBiomes() {
|
||||||
uncatchableSpecies.push(speciesId);
|
uncatchableSpecies.push(speciesId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// array of biome options for the current species
|
||||||
|
catchableSpecies[speciesId] = [];
|
||||||
|
|
||||||
for (const b of biomeEntries) {
|
for (const b of biomeEntries) {
|
||||||
const biome = b[0];
|
const biome = b[0];
|
||||||
const tier = b[1];
|
const tier = b[1];
|
||||||
|
@ -7725,6 +7740,12 @@ export function initBiomes() {
|
||||||
: [ b[2] ]
|
: [ b[2] ]
|
||||||
: [ TimeOfDay.ALL ];
|
: [ TimeOfDay.ALL ];
|
||||||
|
|
||||||
|
catchableSpecies[speciesId].push({
|
||||||
|
biome: biome as Biome,
|
||||||
|
tier: tier as BiomePoolTier,
|
||||||
|
tod: timesOfDay as TimeOfDay[]
|
||||||
|
});
|
||||||
|
|
||||||
for (const tod of timesOfDay) {
|
for (const tod of timesOfDay) {
|
||||||
if (!biomePokemonPools.hasOwnProperty(biome) || !biomePokemonPools[biome].hasOwnProperty(tier) || !biomePokemonPools[biome][tier].hasOwnProperty(tod)) {
|
if (!biomePokemonPools.hasOwnProperty(biome) || !biomePokemonPools[biome].hasOwnProperty(tier) || !biomePokemonPools[biome][tier].hasOwnProperty(tod)) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
import { Abilities } from "#app/enums/abilities";
|
import { Abilities } from "#app/enums/abilities";
|
||||||
import { Species } from "#app/enums/species";
|
import { Species } from "#app/enums/species";
|
||||||
|
|
||||||
export const starterPassiveAbilities = {
|
export interface PassiveAbilities {
|
||||||
|
[key: number]: Abilities
|
||||||
|
}
|
||||||
|
|
||||||
|
interface StarterPassiveAbilities {
|
||||||
|
[key: integer]: PassiveAbilities
|
||||||
|
}
|
||||||
|
|
||||||
|
export const starterPassiveAbilities: StarterPassiveAbilities = {
|
||||||
[Species.BULBASAUR]: { 0: Abilities.GRASSY_SURGE },
|
[Species.BULBASAUR]: { 0: Abilities.GRASSY_SURGE },
|
||||||
[Species.CHARMANDER]: { 0: Abilities.BEAST_BOOST },
|
[Species.CHARMANDER]: { 0: Abilities.BEAST_BOOST },
|
||||||
[Species.SQUIRTLE]: { 0: Abilities.STURDY },
|
[Species.SQUIRTLE]: { 0: Abilities.STURDY },
|
||||||
|
|
|
@ -68433,6 +68433,46 @@ export const tmSpecies: TmSpecies = {
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
interface SpeciesTmMoves {
|
||||||
|
[key: integer]: (Moves | [string | Species, Moves])[];
|
||||||
|
}
|
||||||
|
|
||||||
|
function transposeTmSpecies(): SpeciesTmMoves {
|
||||||
|
const flipped: SpeciesTmMoves = {};
|
||||||
|
|
||||||
|
for (const move in tmSpecies) {
|
||||||
|
const moveKey = Number(move);
|
||||||
|
const speciesList = tmSpecies[move];
|
||||||
|
|
||||||
|
for (const species of speciesList) {
|
||||||
|
|
||||||
|
if (Array.isArray(species)) {
|
||||||
|
// Extract base species and all associated forms
|
||||||
|
const [ baseSpecies, ...forms ] = species;
|
||||||
|
const speciesKey = Number(baseSpecies);
|
||||||
|
|
||||||
|
if (!flipped[speciesKey]) {
|
||||||
|
flipped[speciesKey] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const form of forms) {
|
||||||
|
flipped[speciesKey].push([ form, moveKey ]);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
const speciesKey = Number(species);
|
||||||
|
if (!flipped[speciesKey]) {
|
||||||
|
flipped[speciesKey] = [];
|
||||||
|
}
|
||||||
|
flipped[speciesKey].push(moveKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return flipped;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const speciesTmMoves: SpeciesTmMoves = transposeTmSpecies();
|
||||||
|
|
||||||
interface TmPoolTiers {
|
interface TmPoolTiers {
|
||||||
[key: integer]: ModifierTier
|
[key: integer]: ModifierTier
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue