Simulate evolution chain when generating movesets
This commit is contained in:
1 parent
88e050581e
commit
6feef82fcf
4 files changed
+36
-5
No files matched your search
@@ -4474,7 +4474,6 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
],
|
||||
[Species.SILCOON]: [
|
||||
[ 0, Moves.HARDEN ],
|
||||
[ 1, Moves.HARDEN ],
|
||||
],
|
||||
[Species.BEAUTIFLY]: [
|
||||
[ 0, Moves.GUST ],
|
||||
@@ -4493,7 +4492,6 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
],
|
||||
[Species.CASCOON]: [
|
||||
[ 0, Moves.HARDEN ],
|
||||
[ 1, Moves.HARDEN ],
|
||||
],
|
||||
[Species.DUSTOX]: [
|
||||
[ 0, Moves.GUST ],
|
||||
|
||||
@@ -538,6 +538,27 @@ export default class PokemonSpecies extends PokemonSpeciesForm {
|
||||
return prevolutionLevels;
|
||||
}
|
||||
|
||||
// This could definitely be written better and more accurate to the getSpeciesForLevel logic, but it is only for generating movesets for evolved Pokemon
|
||||
getSimulatedEvolutionChain(currentLevel: integer, forTrainer: boolean = false, isBoss: boolean = false, player: boolean = false) {
|
||||
const ret = [];
|
||||
if (pokemonPrevolutions.hasOwnProperty(this.speciesId)) {
|
||||
const prevolutionLevels = this.getPrevolutionLevels().reverse();
|
||||
const levelDiff = player ? 0 : forTrainer || isBoss ? forTrainer && isBoss ? 2.5 : 5 : 10;
|
||||
ret.push([ prevolutionLevels[0][0], 1 ]);
|
||||
for (let l = 1; l < prevolutionLevels.length; l++) {
|
||||
const evolution = pokemonEvolutions[prevolutionLevels[l - 1][0]].find(e => e.speciesId === prevolutionLevels[l][0]);
|
||||
ret.push([ prevolutionLevels[l][0], Math.min(Math.max(evolution.level + Math.round(Utils.randSeedGauss(0.5, 1 + levelDiff * 0.2) * Math.max(evolution.wildDelay, 0.5) * 5) - 1, 2, evolution.level), currentLevel - 1) ]);
|
||||
}
|
||||
const lastPrevolutionLevel = ret[prevolutionLevels.length - 1][1];
|
||||
const evolution = pokemonEvolutions[prevolutionLevels[prevolutionLevels.length - 1][0]].find(e => e.speciesId === this.speciesId);
|
||||
ret.push([ this.speciesId, Math.min(Math.max(lastPrevolutionLevel + Math.round(Utils.randSeedGauss(0.5, 1 + levelDiff * 0.2) * Math.max(evolution.wildDelay, 0.5) * 5), lastPrevolutionLevel + 1, evolution.level), currentLevel) ]);
|
||||
} else {
|
||||
ret.push([ this.speciesId, 1 ]);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
getCompatibleFusionSpeciesFilter(): PokemonSpeciesFilter {
|
||||
const hasEvolution = pokemonEvolutions.hasOwnProperty(this.speciesId);
|
||||
const hasPrevolution = pokemonPrevolutions.hasOwnProperty(this.speciesId);
|
||||
|
||||
Reference in new issue
Block a user