mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2024-11-26 00:36:25 +00:00
Add generation 7 Pokemon and new biomes
This commit is contained in:
parent
3da558f2f8
commit
982e9c7e1e
BIN
public/audio/bgm/island.mp3
Normal file
BIN
public/audio/bgm/island.mp3
Normal file
Binary file not shown.
BIN
public/audio/bgm/laboratory.mp3
Normal file
BIN
public/audio/bgm/laboratory.mp3
Normal file
Binary file not shown.
21
src/arena.ts
21
src/arena.ts
@ -135,6 +135,16 @@ export class Arena {
|
||||
case Species.SPEWPA:
|
||||
case Species.VIVILLON:
|
||||
return 0;
|
||||
case Species.LYCANROC:
|
||||
switch (this.biomeType) {
|
||||
case Biome.CAVE:
|
||||
case Biome.ICE_CAVE:
|
||||
case Biome.FAIRY_CAVE:
|
||||
return 2;
|
||||
default:
|
||||
if (!this.isDaytime())
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -169,6 +179,7 @@ export class Arena {
|
||||
return Type.ICE;
|
||||
case Biome.MEADOW:
|
||||
case Biome.FAIRY_CAVE:
|
||||
case Biome.ISLAND:
|
||||
return Type.FAIRY;
|
||||
case Biome.POWER_PLANT:
|
||||
return Type.ELECTRIC;
|
||||
@ -287,7 +298,7 @@ export class Arena {
|
||||
case Biome.MEADOW:
|
||||
case Biome.DOJO:
|
||||
case Biome.CONSTRUCTION_SITE:
|
||||
case Biome.FAIRY_CAVE:
|
||||
case Biome.ISLAND:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -393,6 +404,10 @@ export class Arena {
|
||||
return 4.542;
|
||||
case Biome.TEMPLE:
|
||||
return 2.547;
|
||||
case Biome.ISLAND:
|
||||
return 2.751;
|
||||
case Biome.LABORATORY:
|
||||
return 0.797;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -408,6 +423,10 @@ export function getBiomeKey(biome: Biome): string {
|
||||
return 'tall_grass';
|
||||
case Biome.FAIRY_CAVE:
|
||||
return 'cave';
|
||||
case Biome.ISLAND:
|
||||
return 'beach';
|
||||
case Biome.LABORATORY:
|
||||
return 'factory';
|
||||
case Biome.END:
|
||||
return 'wasteland';
|
||||
}
|
||||
|
@ -534,8 +534,13 @@ export class SelectBiomePhase extends BattlePhase {
|
||||
else if (this.scene.gameMode !== GameMode.CLASSIC)
|
||||
setNextBiome(this.generateNextBiome());
|
||||
else if (Array.isArray(biomeLinks[currentBiome])) {
|
||||
const biomes = biomeLinks[currentBiome] as Biome[];
|
||||
if (this.scene.findModifier(m => m instanceof MapModifier)) {
|
||||
let biomes: Biome[];
|
||||
this.scene.executeWithSeedOffset(() => {
|
||||
biomes = (biomeLinks[currentBiome] as (Biome | [Biome, integer])[])
|
||||
.filter(b => !Array.isArray(b) || !Utils.randSeedInt(b[1]))
|
||||
.map(b => !Array.isArray(b) ? b : b[0]);
|
||||
}, this.scene.currentBattle.waveIndex);
|
||||
if (biomes.length > 1 && this.scene.findModifier(m => m instanceof MapModifier)) {
|
||||
this.scene.ui.setMode(Mode.BIOME_SELECT, currentBiome, (biomeIndex: integer) => {
|
||||
this.scene.ui.setMode(Mode.MESSAGE);
|
||||
setNextBiome(biomes[biomeIndex]);
|
||||
@ -551,14 +556,14 @@ export class SelectBiomePhase extends BattlePhase {
|
||||
return Biome.END;
|
||||
else {
|
||||
const relWave = this.scene.currentBattle.waveIndex % 250;
|
||||
const biomes = Utils.getEnumValues(Biome).slice(1, -1);
|
||||
const maxDepth = biomeDepths[Biome.END] - 2;
|
||||
const biomes = Utils.getEnumValues(Biome).slice(1, Utils.getEnumValues(Biome).filter(b => b >= 40).length * -1);
|
||||
const maxDepth = biomeDepths[Biome.END][0] - 2;
|
||||
const depthWeights = new Array(maxDepth + 1).fill(null)
|
||||
.map((_, i: integer) => ((1 - Math.min(Math.abs((i / (maxDepth - 1)) - (relWave / 250)) + 0.25, 1)) / 0.75) * 250);
|
||||
const biomeThresholds: integer[] = [];
|
||||
let totalWeight = 0;
|
||||
for (let biome of biomes) {
|
||||
totalWeight += depthWeights[biomeDepths[biome] - 1];
|
||||
totalWeight += Math.ceil(depthWeights[biomeDepths[biome][0] - 1] / biomeDepths[biome][1]);
|
||||
biomeThresholds.push(totalWeight);
|
||||
}
|
||||
|
||||
|
@ -750,6 +750,7 @@ export default class BattleScene extends Phaser.Scene {
|
||||
case Species.UNOWN:
|
||||
case Species.DEERLING:
|
||||
case Species.SAWSBUCK:
|
||||
case Species.ORICORIO:
|
||||
return Utils.randSeedInt(species.forms.length);
|
||||
}
|
||||
|
||||
@ -853,13 +854,13 @@ export default class BattleScene extends Phaser.Scene {
|
||||
randomSpecies(waveIndex: integer, level: integer, fromArenaPool?: boolean, speciesFilter?: PokemonSpeciesFilter, filterAllEvolutions?: boolean): PokemonSpecies {
|
||||
if (fromArenaPool)
|
||||
return this.arena.randomSpecies(waveIndex, level);
|
||||
const filteredSpecies = speciesFilter ? [...new Set(allSpecies.filter(s => s.generation <= 6).filter(speciesFilter).map(s => {
|
||||
const filteredSpecies = speciesFilter ? [...new Set(allSpecies.filter(s => s.generation <= 7).filter(speciesFilter).map(s => {
|
||||
if (!filterAllEvolutions) {
|
||||
while (pokemonPrevolutions.hasOwnProperty(s.speciesId))
|
||||
s = getPokemonSpecies(pokemonPrevolutions[s.speciesId]);
|
||||
}
|
||||
return s;
|
||||
}))] : allSpecies.filter(s => s.generation <= 6);
|
||||
}))] : allSpecies.filter(s => s.generation <= 7);
|
||||
let ret = filteredSpecies[Utils.randSeedInt(filteredSpecies.length)];
|
||||
if (!filterAllEvolutions)
|
||||
ret = getPokemonSpecies(ret.getSpeciesForLevel(level, true));
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -10,6 +10,7 @@ import { Type } from "./type";
|
||||
import * as Utils from "../utils";
|
||||
import { SpeciesFormKey } from "./pokemon-species";
|
||||
import { WeatherType } from "./weather";
|
||||
import { Biome } from "./biome";
|
||||
|
||||
export enum SpeciesWildEvolutionDelay {
|
||||
NONE,
|
||||
@ -17,7 +18,8 @@ export enum SpeciesWildEvolutionDelay {
|
||||
MEDIUM,
|
||||
LONG,
|
||||
VERY_LONG,
|
||||
MEGA
|
||||
MEGA,
|
||||
NEVER
|
||||
}
|
||||
|
||||
export enum EvolutionItem {
|
||||
@ -256,6 +258,7 @@ export const pokemonEvolutions: PokemonEvolutions = {
|
||||
new SpeciesEvolution(Species.ELECTRODE, 30, null, null)
|
||||
],
|
||||
[Species.CUBONE]: [
|
||||
new SpeciesEvolution(Species.ALOLA_EXEGGUTOR, 28, null, new SpeciesEvolutionCondition((p: Pokemon) => p.scene.arena.biomeType === Biome.ISLAND), SpeciesWildEvolutionDelay.NEVER),
|
||||
new SpeciesEvolution(Species.MAROWAK, 28, null, null)
|
||||
],
|
||||
[Species.TYROGUE]: [
|
||||
@ -896,7 +899,99 @@ export const pokemonEvolutions: PokemonEvolutions = {
|
||||
[Species.NOIBAT]: [
|
||||
new SpeciesEvolution(Species.NOIVERN, 48, null, null)
|
||||
],
|
||||
[Species.ROWLET]: [
|
||||
new SpeciesEvolution(Species.DARTRIX, 17, null, null)
|
||||
],
|
||||
[Species.DARTRIX]: [
|
||||
new SpeciesEvolution(Species.DECIDUEYE, 36, null, null)
|
||||
],
|
||||
[Species.LITTEN]: [
|
||||
new SpeciesEvolution(Species.TORRACAT, 17, null, null)
|
||||
],
|
||||
[Species.TORRACAT]: [
|
||||
new SpeciesEvolution(Species.INCINEROAR, 36, null, null)
|
||||
],
|
||||
[Species.POPPLIO]: [
|
||||
new SpeciesEvolution(Species.BRIONNE, 17, null, null)
|
||||
],
|
||||
[Species.BRIONNE]: [
|
||||
new SpeciesEvolution(Species.PRIMARINA, 36, null, null)
|
||||
],
|
||||
[Species.PIKIPEK]: [
|
||||
new SpeciesEvolution(Species.TRUMBEAK, 14, null, null)
|
||||
],
|
||||
[Species.TRUMBEAK]: [
|
||||
new SpeciesEvolution(Species.TOUCANNON, 36, null, null)
|
||||
],
|
||||
[Species.YUNGOOS]: [
|
||||
new SpeciesEvolution(Species.GUMSHOOS, 20, null, new SpeciesEvolutionCondition((p: Pokemon) => p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.GRUBBIN]: [
|
||||
new SpeciesEvolution(Species.CHARJABUG, 20, null, null)
|
||||
],
|
||||
[Species.CUTIEFLY]: [
|
||||
new SpeciesEvolution(Species.RIBOMBEE, 25, null, null)
|
||||
],
|
||||
[Species.MAREANIE]: [
|
||||
new SpeciesEvolution(Species.TOXAPEX, 38, null, null)
|
||||
],
|
||||
[Species.MUDBRAY]: [
|
||||
new SpeciesEvolution(Species.MUDSDALE, 30, null, null)
|
||||
],
|
||||
[Species.DEWPIDER]: [
|
||||
new SpeciesEvolution(Species.ARAQUANID, 22, null, null)
|
||||
],
|
||||
[Species.FOMANTIS]: [
|
||||
new SpeciesEvolution(Species.LURANTIS, 34, null, new SpeciesEvolutionCondition((p: Pokemon) => p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.MORELULL]: [
|
||||
new SpeciesEvolution(Species.SHIINOTIC, 24, null, null)
|
||||
],
|
||||
[Species.SALANDIT]: [
|
||||
new SpeciesEvolution(Species.SALAZZLE, 33, null, new SpeciesEvolutionCondition((p: Pokemon) => p.gender === Gender.FEMALE, (p: Pokemon) => p.gender = Gender.FEMALE), null)
|
||||
],
|
||||
[Species.STUFFUL]: [
|
||||
new SpeciesEvolution(Species.BEWEAR, 27, null, null)
|
||||
],
|
||||
[Species.BOUNSWEET]: [
|
||||
new SpeciesEvolution(Species.STEENEE, 18, null, null)
|
||||
],
|
||||
[Species.WIMPOD]: [
|
||||
new SpeciesEvolution(Species.GOLISOPOD, 30, null, null)
|
||||
],
|
||||
[Species.SANDYGAST]: [
|
||||
new SpeciesEvolution(Species.PALOSSAND, 48, null, null)
|
||||
],
|
||||
[Species.JANGMO_O]: [
|
||||
new SpeciesEvolution(Species.HAKAMO_O, 35, null, null)
|
||||
],
|
||||
[Species.HAKAMO_O]: [
|
||||
new SpeciesEvolution(Species.KOMMO_O, 45, null, null)
|
||||
],
|
||||
[Species.COSMOG]: [
|
||||
new SpeciesEvolution(Species.COSMOEM, 43, null, null)
|
||||
],
|
||||
[Species.COSMOEM]: [
|
||||
new SpeciesEvolution(Species.SOLGALEO, 53, null, new SpeciesEvolutionCondition((p: Pokemon) => p.scene.arena.biomeType !== Biome.SPACE && p.scene.arena.isDaytime()), null),
|
||||
new SpeciesEvolution(Species.LUNALA, 53, null, new SpeciesEvolutionCondition((p: Pokemon) => p.scene.arena.biomeType !== Biome.SPACE && !p.scene.arena.isDaytime()), null)
|
||||
],
|
||||
[Species.MELTAN]: [
|
||||
new SpeciesEvolution(Species.MELMETAL, 48, null, null)
|
||||
],
|
||||
[Species.ALOLA_RATTATA]: [
|
||||
new SpeciesEvolution(Species.ALOLA_RATICATE, 20, null, new SpeciesEvolutionCondition((p: Pokemon) => !p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.ALOLA_DIGLETT]: [
|
||||
new SpeciesEvolution(Species.ALOLA_DUGTRIO, 26, null, null)
|
||||
],
|
||||
[Species.ALOLA_GEODUDE]: [
|
||||
new SpeciesEvolution(Species.ALOLA_GRAVELER, 25, null, null)
|
||||
],
|
||||
[Species.ALOLA_GRIMER]: [
|
||||
new SpeciesEvolution(Species.ALOLA_MUK, 38, null, null)
|
||||
],
|
||||
[Species.PIKACHU]: [
|
||||
new SpeciesEvolution(Species.ALOLA_RAICHU, 1, EvolutionItem.THUNDER_STONE, new SpeciesEvolutionCondition((p: Pokemon) => p.scene.arena.biomeType === Biome.ISLAND), SpeciesWildEvolutionDelay.NEVER),
|
||||
new SpeciesEvolution(Species.RAICHU, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.NIDORINA]: [
|
||||
@ -935,6 +1030,7 @@ export const pokemonEvolutions: PokemonEvolutions = {
|
||||
new SpeciesEvolution(Species.CLOYSTER, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.EXEGGCUTE]: [
|
||||
new SpeciesEvolution(Species.ALOLA_EXEGGUTOR, 1, EvolutionItem.LEAF_STONE, new SpeciesEvolutionCondition((p: Pokemon) => p.scene.arena.biomeType === Biome.ISLAND), SpeciesWildEvolutionDelay.NEVER),
|
||||
new SpeciesEvolution(Species.EXEGGUTOR, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.TANGELA]: [
|
||||
@ -1043,6 +1139,29 @@ export const pokemonEvolutions: PokemonEvolutions = {
|
||||
[Species.HELIOPTILE]: [
|
||||
new SpeciesEvolution(Species.HELIOLISK, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.CHARJABUG]: [
|
||||
new SpeciesEvolution(Species.VIKAVOLT, 1, EvolutionItem.THUNDER_STONE, null)
|
||||
],
|
||||
[Species.CRABRAWLER]: [
|
||||
new SpeciesEvolution(Species.CRABOMINABLE, 1, EvolutionItem.ICE_STONE, null)
|
||||
],
|
||||
[Species.ROCKRUFF]: [
|
||||
new SpeciesFormEvolution(Species.LYCANROC, '', 'midday', 25, null, new SpeciesEvolutionCondition((p: Pokemon) => p.scene.arena.isDaytime()), null),
|
||||
new SpeciesFormEvolution(Species.LYCANROC, '', 'dusk', 25, null, new SpeciesEvolutionCondition((p: Pokemon) => p.scene.getSpeciesFormIndex(p.species) === 2), null),
|
||||
new SpeciesFormEvolution(Species.LYCANROC, '', 'midnight', 25, null, new SpeciesEvolutionCondition((p: Pokemon) => !p.scene.arena.isDaytime()), null)
|
||||
],
|
||||
[Species.STEENEE]: [
|
||||
new SpeciesEvolution(Species.TSAREENA, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.moveset.filter(m => m.moveId === Moves.STOMP).length > 0), SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.POIPOLE]: [
|
||||
new SpeciesEvolution(Species.NAGANADEL, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.moveset.filter(m => m.moveId === Moves.DRAGON_PULSE).length > 0), SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.ALOLA_SANDSHREW]: [
|
||||
new SpeciesEvolution(Species.ALOLA_SANDSLASH, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.ALOLA_VULPIX]: [
|
||||
new SpeciesEvolution(Species.ALOLA_NINETALES, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.KADABRA]: [
|
||||
new SpeciesEvolution(Species.ALAKAZAM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
@ -1117,6 +1236,9 @@ export const pokemonEvolutions: PokemonEvolutions = {
|
||||
[Species.PUMPKABOO]: [
|
||||
new SpeciesEvolution(Species.GOURGEIST, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.ALOLA_GRAVELER]: [
|
||||
new SpeciesEvolution(Species.ALOLA_GOLEM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.PRIMEAPE]: [
|
||||
new SpeciesEvolution(Species.ANNIHILAPE, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.moveset.filter(m => m.moveId === Moves.RAGE_FIST).length > 0), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
@ -1165,6 +1287,12 @@ export const pokemonEvolutions: PokemonEvolutions = {
|
||||
[Species.SWADLOON]: [
|
||||
new SpeciesEvolution(Species.LEAVANNY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.TYPE_NULL]: [
|
||||
new SpeciesEvolution(Species.SILVALLY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 100), SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.ALOLA_MEOWTH]: [
|
||||
new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.VENUSAUR]: [
|
||||
new SpeciesFormEvolution(Species.VENUSAUR, '', SpeciesFormKey.MEGA, 1, EvolutionItem.VENUSAURITE, null, SpeciesWildEvolutionDelay.MEGA)
|
||||
],
|
||||
|
@ -7,6 +7,8 @@ import { Type } from './type';
|
||||
import { LevelMoves, pokemonFormLevelMoves as pokemonSpeciesFormLevelMoves, pokemonSpeciesLevelMoves } from './pokemon-level-moves';
|
||||
|
||||
export function getPokemonSpecies(species: Species): PokemonSpecies {
|
||||
if (species >= 2000)
|
||||
return allSpecies.find(s => s.speciesId === species);
|
||||
return allSpecies[species - 1];
|
||||
}
|
||||
|
||||
@ -104,7 +106,7 @@ export abstract class PokemonSpeciesForm {
|
||||
}
|
||||
|
||||
isObtainable() {
|
||||
return (this.generation <= 6 || pokemonPrevolutions.hasOwnProperty(this.speciesId));
|
||||
return (this.generation <= 7 || pokemonPrevolutions.hasOwnProperty(this.speciesId));
|
||||
}
|
||||
|
||||
getSpriteAtlasPath(female: boolean, formIndex?: integer, shiny?: boolean): string {
|
||||
@ -324,7 +326,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm {
|
||||
let noEvolutionChance = 1;
|
||||
|
||||
for (let ev of evolutions) {
|
||||
if (ev.level > level)
|
||||
if (ev.level > level || ev.wildDelay === SpeciesWildEvolutionDelay.NEVER)
|
||||
continue;
|
||||
|
||||
let evolutionChance: number;
|
||||
@ -2045,9 +2047,9 @@ export function initSpecies() {
|
||||
new PokemonForm("Hearthflame Mask", "hearthflame-mask", Type.GRASS, Type.FIRE, 1.2, 39.8, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 0, null),
|
||||
new PokemonForm("Cornerstone Mask", "cornerstone-mask", Type.GRASS, Type.ROCK, 1.2, 39.8, Abilities.STURDY, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 0, null),
|
||||
),
|
||||
new PokemonSpecies(Species.ALOLA_RATTATA, "Rattata", 7, false, false, false, "Mouse Pokémon", Type.DARK, null, 0.3, 3.8, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, true),
|
||||
new PokemonSpecies(Species.ALOLA_RATICATE, "Raticate", 7, false, false, false, "Mouse Pokémon", Type.DARK, null, 0.7, 25.5, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 413, 75, 71, 70, 40, 80, 77, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, true),
|
||||
new PokemonSpecies(Species.ALOLA_RAICHU, "Raichu", 7, false, false, false, "Mouse Pokémon", Type.ELECTRIC, Type.PSYCHIC, 0.7, 21, Abilities.SURGE_SURFER, Abilities.NONE, Abilities.NONE, 485, 60, 85, 50, 95, 85, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, true),
|
||||
new PokemonSpecies(Species.ALOLA_RATTATA, "Rattata", 7, false, false, false, "Mouse Pokémon", Type.DARK, null, 0.3, 3.8, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(Species.ALOLA_RATICATE, "Raticate", 7, false, false, false, "Mouse Pokémon", Type.DARK, null, 0.7, 25.5, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 413, 75, 71, 70, 40, 80, 77, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(Species.ALOLA_RAICHU, "Raichu", 7, false, false, false, "Mouse Pokémon", Type.ELECTRIC, Type.PSYCHIC, 0.7, 21, Abilities.SURGE_SURFER, Abilities.NONE, Abilities.NONE, 485, 60, 85, 50, 95, 85, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(Species.ALOLA_SANDSHREW, "Sandshrew", 7, false, false, false, "Mouse Pokémon", Type.ICE, Type.STEEL, 0.7, 40, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SLUSH_RUSH, 300, 50, 75, 90, 10, 35, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(Species.ALOLA_SANDSLASH, "Sandslash", 7, false, false, false, "Mouse Pokémon", Type.ICE, Type.STEEL, 1.2, 55, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SLUSH_RUSH, 450, 75, 100, 120, 25, 65, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(Species.ALOLA_VULPIX, "Vulpix", 7, false, false, false, "Fox Pokémon", Type.ICE, null, 0.6, 9.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SNOW_WARNING, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false),
|
||||
@ -2406,7 +2408,7 @@ export const speciesStarters = {
|
||||
[Species.DUCKLETT]: 3,
|
||||
[Species.VANILLITE]: 3,
|
||||
[Species.DEERLING]: 3,
|
||||
[Species.EMOLGA]: 4,
|
||||
[Species.EMOLGA]: 3,
|
||||
[Species.KARRABLAST]: 3,
|
||||
[Species.FOONGUS]: 3,
|
||||
[Species.FRILLISH]: 3,
|
||||
@ -2469,7 +2471,7 @@ export const speciesStarters = {
|
||||
[Species.TYRUNT]: 3,
|
||||
[Species.AMAURA]: 3,
|
||||
[Species.HAWLUCHA]: 4,
|
||||
[Species.DEDENNE]: 3,
|
||||
[Species.DEDENNE]: 4,
|
||||
[Species.CARBINK]: 4,
|
||||
[Species.GOOMY]: 4,
|
||||
[Species.KLEFKI]: 4,
|
||||
@ -2484,6 +2486,69 @@ export const speciesStarters = {
|
||||
[Species.HOOPA]: 7,
|
||||
[Species.VOLCANION]: 7,
|
||||
|
||||
[Species.ROWLET]: 3,
|
||||
[Species.LITTEN]: 3,
|
||||
[Species.POPPLIO]: 3,
|
||||
[Species.PIKIPEK]: 3,
|
||||
[Species.YUNGOOS]: 2,
|
||||
[Species.GRUBBIN]: 2,
|
||||
[Species.CRABRAWLER]: 4,
|
||||
[Species.ORICORIO]: 3,
|
||||
[Species.CUTIEFLY]: 3,
|
||||
[Species.ROCKRUFF]: 3,
|
||||
[Species.WISHIWASHI]: 3,
|
||||
[Species.MAREANIE]: 3,
|
||||
[Species.MUDBRAY]: 3,
|
||||
[Species.DEWPIDER]: 3,
|
||||
[Species.FOMANTIS]: 3,
|
||||
[Species.MORELULL]: 3,
|
||||
[Species.SALANDIT]: 3,
|
||||
[Species.STUFFUL]: 3,
|
||||
[Species.BOUNSWEET]: 3,
|
||||
[Species.COMFEY]: 4,
|
||||
[Species.ORANGURU]: 5,
|
||||
[Species.PASSIMIAN]: 5,
|
||||
[Species.WIMPOD]: 3,
|
||||
[Species.SANDYGAST]: 3,
|
||||
[Species.PYUKUMUKU]: 3,
|
||||
[Species.TYPE_NULL]: 5,
|
||||
[Species.MINIOR]: 5,
|
||||
[Species.KOMALA]: 5,
|
||||
[Species.TURTONATOR]: 5,
|
||||
[Species.TOGEDEMARU]: 4,
|
||||
[Species.MIMIKYU]: 5,
|
||||
[Species.BRUXISH]: 5,
|
||||
[Species.DRAMPA]: 5,
|
||||
[Species.DHELMISE]: 5,
|
||||
[Species.JANGMO_O]: 4,
|
||||
[Species.TAPU_KOKO]: 6,
|
||||
[Species.TAPU_LELE]: 6,
|
||||
[Species.TAPU_BULU]: 6,
|
||||
[Species.TAPU_FINI]: 6,
|
||||
[Species.COSMOG]: 7,
|
||||
[Species.NIHILEGO]: 7,
|
||||
[Species.BUZZWOLE]: 7,
|
||||
[Species.PHEROMOSA]: 7,
|
||||
[Species.XURKITREE]: 7,
|
||||
[Species.CELESTEELA]: 7,
|
||||
[Species.KARTANA]: 7,
|
||||
[Species.GUZZLORD]: 7,
|
||||
[Species.NECROZMA]: 8,
|
||||
[Species.MAGEARNA]: 7,
|
||||
[Species.MARSHADOW]: 7,
|
||||
[Species.POIPOLE]: 7,
|
||||
[Species.STAKATAKA]: 7,
|
||||
[Species.BLACEPHALON]: 7,
|
||||
[Species.ZERAORA]: 7,
|
||||
[Species.MELTAN]: 6,
|
||||
[Species.ALOLA_RATTATA]: 2,
|
||||
[Species.ALOLA_SANDSHREW]: 4,
|
||||
[Species.ALOLA_VULPIX]: 4,
|
||||
[Species.ALOLA_DIGLETT]: 3,
|
||||
[Species.ALOLA_MEOWTH]: 4,
|
||||
[Species.ALOLA_GEODUDE]: 3,
|
||||
[Species.ALOLA_GRIMER]: 3,
|
||||
|
||||
[Species.ETERNATUS]: 10,
|
||||
};
|
||||
|
||||
@ -2491,7 +2556,7 @@ export const speciesStarters = {
|
||||
{
|
||||
//setTimeout(() => {
|
||||
/*for (let tc of Object.keys(trainerConfigs)) {
|
||||
console.log(TrainerType[tc], !trainerConfigs[tc].speciesFilter ? 'all' : [...new Set(allSpecies.filter(s => s.generation <= 6).filter(trainerConfigs[tc].speciesFilter).map(s => {
|
||||
console.log(TrainerType[tc], !trainerConfigs[tc].speciesFilter ? 'all' : [...new Set(allSpecies.filter(s => s.generation <= 7).filter(trainerConfigs[tc].speciesFilter).map(s => {
|
||||
while (pokemonPrevolutions.hasOwnProperty(s.speciesId))
|
||||
s = getPokemonSpecies(pokemonPrevolutions[s.speciesId]);
|
||||
return s;
|
||||
@ -2499,7 +2564,7 @@ export const speciesStarters = {
|
||||
}
|
||||
|
||||
const speciesFilter = (species: PokemonSpecies) => !species.legendary && !species.pseudoLegendary && !species.mythical && species.baseTotal >= 540;
|
||||
console.log(!speciesFilter ? 'all' : [...new Set(allSpecies.filter(s => s.generation <= 6).filter(speciesFilter).map(s => {
|
||||
console.log(!speciesFilter ? 'all' : [...new Set(allSpecies.filter(s => s.generation <= 7).filter(speciesFilter).map(s => {
|
||||
while (pokemonPrevolutions.hasOwnProperty(s.speciesId))
|
||||
s = getPokemonSpecies(pokemonPrevolutions[s.speciesId]);
|
||||
return s;
|
||||
|
@ -569,7 +569,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
.setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.ONE_WEAK_ONE_STRONG, trainerPartyTemplates.ONE_AVG_ONE_STRONG)
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.RHYHORN, Species.AIPOM, Species.MAKUHITA, Species.MAWILE, Species.NUMEL, Species.LILLIPUP, Species.SANDILE, /* Species.WOOLOO */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.GIRAFARIG, Species.ZANGOOSE, Species.SEVIPER, Species.CUBCHOO, Species.PANCHAM, /*Species.SKIDDO*/ /* Species.MUDBRAY */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.GIRAFARIG, Species.ZANGOOSE, Species.SEVIPER, Species.CUBCHOO, Species.PANCHAM, Species.SKIDDO, Species.MUDBRAY ],
|
||||
[TrainerPoolTier.RARE]: [ Species.TAUROS, Species.STANTLER, Species.DARUMAKA, Species.BOUFFALANT, Species.DEERLING, /*Species.IMPIDIMP, */ ],
|
||||
[TrainerPoolTier.SUPER_RARE]: [ /* Species.GALAR_DARUMAKA */ /* Species.TEDDIURSA */ ]
|
||||
}),
|
||||
@ -580,9 +580,9 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK_ONE_AVG, trainerPartyTemplates.TWO_WEAK_ONE_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_ONE_STRONG, trainerPartyTemplates.THREE_AVG, trainerPartyTemplates.TWO_AVG_ONE_STRONG)
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.NIDORAN_F, Species.NIDORAN_M, Species.MACHOP, Species.MAKUHITA, Species.MEDITITE, Species.CROAGUNK, Species.TIMBURR ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.MANKEY, Species.POLIWRATH, Species.TYROGUE, Species.BRELOOM, Species.SCRAGGY, Species.MIENFOO, Species.PANCHAM, /* Species.STUFFUL */ /* Species.CRABRAWLER, */ ],
|
||||
[TrainerPoolTier.RARE]: [ Species.HERACROSS, Species.RIOLU, Species.THROH, Species.SAWK, /* Species.CLOBBOPUS, */ /* Species.PASSIMIAN, */ ],
|
||||
[TrainerPoolTier.SUPER_RARE]: [ Species.INFERNAPE, Species.GALLADE, Species.HITMONTOP, Species.HAWLUCHA, /* Species.HAKAMO_O, */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.MANKEY, Species.POLIWRATH, Species.TYROGUE, Species.BRELOOM, Species.SCRAGGY, Species.MIENFOO, Species.PANCHAM, Species.STUFFUL, Species.CRABRAWLER ],
|
||||
[TrainerPoolTier.RARE]: [ Species.HERACROSS, Species.RIOLU, Species.THROH, Species.SAWK, /* Species.CLOBBOPUS, */ Species.PASSIMIAN ],
|
||||
[TrainerPoolTier.SUPER_RARE]: [ Species.INFERNAPE, Species.GALLADE, Species.HITMONTOP, Species.HAWLUCHA, Species.HAKAMO_O ],
|
||||
[TrainerPoolTier.ULTRA_RARE]: [ Species.KUBFU ]
|
||||
}),
|
||||
[TrainerType.BREEDER]: new TrainerConfig(++t).setMoneyMultiplier(1.325).setEncounterBgm(TrainerType.POKEFAN).setHasGenders().setDouble()
|
||||
@ -591,8 +591,8 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_ONE_AVG)
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.MEOWTH, Species.PSYDUCK, Species.BUDEW, Species.PIDOVE, Species.CINCCINO, Species.LITLEO ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.JIGGLYPUFF, Species.MAGNEMITE, Species.MARILL, Species.COTTONEE, /* Species.SKIDDO */ ],
|
||||
[TrainerPoolTier.RARE]: [ Species.BUIZEL, Species.SNEASEL, Species.KLEFKI, /* Species.INDEEDEE, */ ]
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.JIGGLYPUFF, Species.MAGNEMITE, Species.MARILL, Species.COTTONEE, Species.SKIDDO ],
|
||||
[TrainerPoolTier.RARE]: [ Species.BUIZEL, Species.SNEASEL, Species.KLEFKI, Species.INDEEDEE ]
|
||||
}),
|
||||
[TrainerType.CYCLIST]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setHasGenders().setEncounterBgm(TrainerType.CYCLIST).setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.QUICK_ATTACK))
|
||||
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.ONE_AVG)
|
||||
@ -607,16 +607,16 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.RALTS, Species.SPOINK, Species.LOTAD, Species.BUDEW ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.SPINDA, Species.SWABLU, Species.MARACTUS,],
|
||||
[TrainerPoolTier.RARE]: [ Species.BELLOSSOM, Species.HITMONTOP, Species.MIME_JR, /* Species.ORICORIO, */ ],
|
||||
[TrainerPoolTier.SUPER_RARE]: [ /* Species.POPPLIO */ ]
|
||||
[TrainerPoolTier.RARE]: [ Species.BELLOSSOM, Species.HITMONTOP, Species.MIME_JR, Species.ORICORIO ],
|
||||
[TrainerPoolTier.SUPER_RARE]: [ Species.POPPLIO ]
|
||||
}),
|
||||
[TrainerType.DEPOT_AGENT]: new TrainerConfig(++t).setMoneyMultiplier(1.45).setEncounterBgm(TrainerType.CLERK),
|
||||
[TrainerType.DOCTOR]: new TrainerConfig(++t).setMoneyMultiplier(3).setEncounterBgm(TrainerType.CLERK),
|
||||
[TrainerType.FISHERMAN]: new TrainerConfig(++t).setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.BACKPACKER)
|
||||
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.THREE_WEAK_SAME, trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.SIX_WEAKER)
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.TENTACOOL, Species.MAGIKARP, Species.GOLDEEN, Species.STARYU, Species.REMORAID, /* Species.SKRELP, */ /* Species.CLAUNCHER */ /* Species.ARROKUDA */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.POLIWAG, Species.SHELLDER, Species.KRABBY, Species.HORSEA, Species.CARVANHA, Species.BARBOACH, Species.CORPHISH, Species.FINNEON, Species.TYMPOLE, Species.BASCULIN, Species.FRILLISH, /* Species.INKAY */ ],
|
||||
[TrainerPoolTier.COMMON]: [ Species.TENTACOOL, Species.MAGIKARP, Species.GOLDEEN, Species.STARYU, Species.REMORAID, Species.SKRELP, Species.CLAUNCHER, /* Species.ARROKUDA */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.POLIWAG, Species.SHELLDER, Species.KRABBY, Species.HORSEA, Species.CARVANHA, Species.BARBOACH, Species.CORPHISH, Species.FINNEON, Species.TYMPOLE, Species.BASCULIN, Species.FRILLISH, Species.INKAY ],
|
||||
[TrainerPoolTier.RARE]: [ Species.CHINCHOU, Species.CORSOLA, Species.WAILMER, Species.BARBOACH, Species.CLAMPERL, Species.LUVDISC, Species.MANTYKE, Species.ALOMOMOLA, /* Species.TATSUGIRI */ /* Species.VELUZA */ ],
|
||||
[TrainerPoolTier.SUPER_RARE]: [ Species.LAPRAS, Species.FEEBAS, Species.RELICANTH, /* Species.DONDOZO */ ]
|
||||
}),
|
||||
@ -627,7 +627,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.SANDSHREW, Species.DIGLETT, Species.GEODUDE, Species.MACHOP, Species.ARON, Species.ROGGENROLA, Species.DRILBUR, /* Species.NACLI */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.ZUBAT, Species.RHYHORN, Species.ONIX, Species.CUBONE, Species.WOOBAT, Species.SWINUB, Species.NOSEPASS, Species.HIPPOPOTAS, Species.DWEBBLE, /* Species.KLAWF */ /* Species.TOEDSCOOL */ ],
|
||||
[TrainerPoolTier.RARE]: [ Species.TORKOAL, Species.TRAPINCH, Species.BARBOACH, Species.GOLETT, /* Species.ALOLA_DIGLETT */ /* Species.ALOLA_GEODUDE, */ /* Species.GALAR_STUNFISK */ /* Species.PALDEA_WOOPER */ ],
|
||||
[TrainerPoolTier.RARE]: [ Species.TORKOAL, Species.TRAPINCH, Species.BARBOACH, Species.GOLETT, Species.ALOLA_DIGLETT, Species.ALOLA_GEODUDE, /* Species.GALAR_STUNFISK */ /* Species.PALDEA_WOOPER */ ],
|
||||
[TrainerPoolTier.SUPER_RARE]: [ Species.MAGBY, Species.LARVITAR ]
|
||||
}),
|
||||
[TrainerType.HOOLIGANS]: new TrainerConfig(++t).setDouble().setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(Type.POISON) || s.isOfType(Type.DARK)),
|
||||
@ -643,7 +643,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
.setPartyTemplates(trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, )
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.VULPIX, Species.GROWLITHE, Species.SNUBBULL, Species.POOCHYENA, Species.ELECTRIKE, Species.LILLIPUP, /* Species.YAMPER */ /* , Species.FIDOUGH */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.HOUNDOUR /*, Species.ROCKRUFF */ /*, Species.MASCHIFF */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.HOUNDOUR, Species.ROCKRUFF /*, Species.MASCHIFF */ ],
|
||||
[TrainerPoolTier.RARE]: [ Species.JOLTEON, Species.RIOLU ],
|
||||
[TrainerPoolTier.SUPER_RARE]: [],
|
||||
[TrainerPoolTier.ULTRA_RARE]: [ Species.ENTEI, Species.SUICUNE, Species.RAIKOU ]
|
||||
@ -663,8 +663,8 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
[TrainerType.PSYCHIC]: new TrainerConfig(++t).setHasGenders().setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.PSYCHIC)
|
||||
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.TWO_WEAK_SAME_TWO_WEAK_SAME, trainerPartyTemplates.ONE_STRONGER)
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.ABRA, Species.DROWZEE, Species.RALTS, Species.SPOINK, Species.GOTHITA, Species.SOLOSIS, /* Species.BLIPBUG, Species.ESPURR, Species.HATTENA */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.MIME_JR, Species.EXEGGCUTE, Species.MEDITITE, Species.NATU, Species.EXEGGCUTE, Species.WOOBAT, /* Species.INKAY, Species.ORANGURU, */],
|
||||
[TrainerPoolTier.COMMON]: [ Species.ABRA, Species.DROWZEE, Species.RALTS, Species.SPOINK, Species.GOTHITA, Species.SOLOSIS, Species.BLIPBUG, Species.ESPURR, /* Species.HATTENA */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.MIME_JR, Species.EXEGGCUTE, Species.MEDITITE, Species.NATU, Species.EXEGGCUTE, Species.WOOBAT, Species.INKAY, Species.ORANGURU ],
|
||||
[TrainerPoolTier.RARE]: [ Species.ELGYEM, Species.SIGILYPH, Species.BALTOY, Species.GIRAFARIG, Species.MEOWSTIC ],
|
||||
[TrainerPoolTier.SUPER_RARE]: [ Species.BELDUM, Species.ESPEON /* Species.WYRDEER, */ ],
|
||||
}),
|
||||
@ -681,7 +681,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
[TrainerType.SCIENTIST]: new TrainerConfig(++t).setHasGenders().setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.SCIENTIST)
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.MAGNEMITE, Species.GRIMER, Species.DROWZEE, Species.VOLTORB, Species.KOFFING ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.BALTOY, Species.BRONZOR, Species.FERROSEED, Species.KLINK, /* Species.CHARJABUG */ /* Species.BLIPBUG */ /* Species.HELIOPTILE */ ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.BALTOY, Species.BRONZOR, Species.FERROSEED, Species.KLINK, Species.CHARJABUG, Species.BLIPBUG, Species.HELIOPTILE ],
|
||||
[TrainerPoolTier.RARE ]: [ Species.ABRA, Species.DITTO, Species.PORYGON, Species.ELEKID, Species.SOLOSIS, /* Species.GALAR_WEEZING */ ],
|
||||
[TrainerPoolTier.SUPER_RARE ]: [ Species.OMANYTE, Species.KABUTO, Species.AERODACTYL, Species.LILEEP, Species.ANORITH, Species.CRANIDOS, Species.SHIELDON, Species.TIRTOUGA, Species.ARCHEN, /* Species.ARCTOVISH, Species.ARCTOZOLT, Species.DRACOVISH, Species.DRACOZOLT */ ],
|
||||
[TrainerPoolTier.ULTRA_RARE]: [ Species.ROTOM, /* Species.MELTAN */ ]
|
||||
@ -904,8 +904,8 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
$Just kidding! I lost fair and square, and now I know you'll do fine out there.
|
||||
$By the way, the professor wanted me to give you some items. Hopefully they're helpful!
|
||||
$Do your best like always! I believe in you!`
|
||||
]).setModifierRewardFuncs(() => modifierTypes.SUPER_EXP_CHARM, () => modifierTypes.EXP_SHARE).setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, Species.CHIKORITA, Species.CYNDAQUIL, Species.TOTODILE, Species.TREECKO, Species.TORCHIC, Species.MUDKIP, Species.TURTWIG, Species.CHIMCHAR, Species.PIPLUP, Species.SNIVY, Species.TEPIG, Species.OSHAWOTT ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEY, Species.HOOTHOOT, Species.TAILLOW, Species.STARLY, Species.PIDOVE ])),
|
||||
]).setModifierRewardFuncs(() => modifierTypes.SUPER_EXP_CHARM, () => modifierTypes.EXP_SHARE).setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, Species.CHIKORITA, Species.CYNDAQUIL, Species.TOTODILE, Species.TREECKO, Species.TORCHIC, Species.MUDKIP, Species.TURTWIG, Species.CHIMCHAR, Species.PIPLUP, Species.SNIVY, Species.TEPIG, Species.OSHAWOTT, Species.CHESPIN, Species.FENNEKIN, Species.FROAKIE, Species.ROWLET, Species.LITTEN, Species.POPPLIO ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEY, Species.TAILLOW, Species.STARLY, Species.PIDOVE, Species.FLETCHLING, Species.PIKIPEK ])),
|
||||
[TrainerType.RIVAL_2]: new TrainerConfig(++t).setStaticParty().setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_2).setEncounterMessages([
|
||||
`Oh, fancy meeting you here. Looks like you're still undefeated. Right on!
|
||||
$I know what you're thinking, and no, I wasn't following you. I just happened to be in the area.
|
||||
@ -914,8 +914,8 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
$In any case, I've been training hard for our rematch, so you'd better give it your all!`
|
||||
]).setVictoryMessages([
|
||||
`I… wasn't supposed to lose that time…`
|
||||
]).setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.IVYSAUR, Species.CHARMELEON, Species.WARTORTLE, Species.BAYLEEF, Species.QUILAVA, Species.CROCONAW, Species.GROVYLE, Species.COMBUSKEN, Species.MARSHTOMP, Species.GROTLE, Species.MONFERNO, Species.PRINPLUP, Species.SERVINE, Species.PIGNITE, Species.DEWOTT ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOTTO, Species.HOOTHOOT, Species.TAILLOW, Species.STARAVIA, Species.TRANQUILL ]))
|
||||
]).setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.IVYSAUR, Species.CHARMELEON, Species.WARTORTLE, Species.BAYLEEF, Species.QUILAVA, Species.CROCONAW, Species.GROVYLE, Species.COMBUSKEN, Species.MARSHTOMP, Species.GROTLE, Species.MONFERNO, Species.PRINPLUP, Species.SERVINE, Species.PIGNITE, Species.DEWOTT, Species.QUILLADIN, Species.BRAIXEN, Species.FROGADIER, Species.DARTRIX, Species.TORRACAT, Species.BRIONNE ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOTTO, Species.TAILLOW, Species.STARAVIA, Species.TRANQUILL, Species.FLETCHINDER, Species.TRUMBEAK ]))
|
||||
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)),
|
||||
[TrainerType.RIVAL_3]: new TrainerConfig(++t).setStaticParty().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_3).setEncounterMessages([
|
||||
`Long time no see! Still haven't lost, huh.\nYou're starting to get on my nerves. Just kidding!
|
||||
@ -924,8 +924,8 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
$And when you do, I'll be there for you like always.\nNow, let me show you how strong I've become!`
|
||||
]).setVictoryMessages([
|
||||
`After all that… it wasn't enough…?`
|
||||
]).setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT ]))
|
||||
]).setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON ]))
|
||||
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450))
|
||||
.setSpeciesFilter(species => species.baseTotal >= 540),
|
||||
[TrainerType.RIVAL_4]: new TrainerConfig(++t).setBoss().setStaticParty().setMoneyMultiplier(1.75).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_2').setPartyTemplates(trainerPartyTemplates.RIVAL_4).setEncounterMessages([
|
||||
@ -938,19 +938,19 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
$Prepare yourself.`
|
||||
]).setVictoryMessages([
|
||||
`What…@d{64} what are you?`
|
||||
]).setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT ]))
|
||||
]).setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON ]))
|
||||
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450))
|
||||
.setSpeciesFilter(species => species.baseTotal >= 540),
|
||||
[TrainerType.RIVAL_5]: new TrainerConfig(++t).setBoss().setStaticParty().setMoneyMultiplier(2.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_5).setEncounterMessages([ `…` ]).setVictoryMessages([ '…' ])
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT ]))
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON ]))
|
||||
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450))
|
||||
.setSpeciesFilter(species => species.baseTotal >= 540)
|
||||
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.RAYQUAZA ])),
|
||||
[TrainerType.RIVAL_6]: new TrainerConfig(++t).setBoss().setStaticParty().setMoneyMultiplier(3).setEncounterBgm('final').setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_6)
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT ]))
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA ]))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON ]))
|
||||
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450))
|
||||
.setSpeciesFilter(species => species.baseTotal >= 540)
|
||||
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.RAYQUAZA ], p => p.formIndex = 1)),
|
||||
|
@ -3,6 +3,7 @@ import { Biome, biomeLinks, getBiomeName } from "../data/biome";
|
||||
import { addTextObject, TextStyle } from "./text";
|
||||
import { Mode } from "./ui";
|
||||
import UiHandler from "./uiHandler";
|
||||
import * as Utils from "../utils";
|
||||
|
||||
export default class BiomeSelectUiHandler extends UiHandler {
|
||||
private biomeSelectContainer: Phaser.GameObjects.Container;
|
||||
@ -38,10 +39,17 @@ export default class BiomeSelectUiHandler extends UiHandler {
|
||||
if (args.length >= 2 && typeof(args[0]) === 'number' && args[1] instanceof Function) {
|
||||
super.show(args);
|
||||
|
||||
if (!Array.isArray(biomeLinks[args[0]]))
|
||||
this.scene.executeWithSeedOffset(() => {
|
||||
this.biomeChoices = (!Array.isArray(biomeLinks[args[0]])
|
||||
? [ biomeLinks[args[0]] as Biome ]
|
||||
: biomeLinks[args[0]] as (Biome | [Biome, integer])[])
|
||||
.filter((b, i) => !Array.isArray(b) || !Utils.randSeedInt(b[1]))
|
||||
.map(b => Array.isArray(b) ? b[0] : b);
|
||||
}, this.scene.currentBattle.waveIndex);
|
||||
|
||||
if (this.biomeChoices.length <= 1)
|
||||
return;
|
||||
|
||||
this.biomeChoices = biomeLinks[args[0]] as Biome[];
|
||||
this.biomeSelectBg.setTexture(`option_select_window_${this.biomeChoices.length}`)
|
||||
this.biomesText.setText(this.biomeChoices.map(b => getBiomeName(b)).join('\n'));
|
||||
this.biomesText.setPositionRelative(this.biomeSelectBg, 16, 9);
|
||||
|
@ -22,7 +22,7 @@ export interface Starter {
|
||||
pokerus: boolean;
|
||||
}
|
||||
|
||||
const gens = [ 'I', 'II', 'III', 'IV', 'V', 'VI' ];
|
||||
const gens = [ 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII' ];
|
||||
const ivChartSize = 24;
|
||||
const ivChartStatCoordMultipliers = [ [ 0, 1 ], [ 0.825, 0.5 ], [ 0.825, -0.5 ], [ 0, -1 ], [ -0.825, -0.5 ], [ -0.825, 0.5 ] ];
|
||||
const defaultIvChartData = new Array(12).fill(null).map(() => 0);
|
||||
@ -198,8 +198,6 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
||||
this.genSpecies.push([]);
|
||||
|
||||
for (let species of allSpecies) {
|
||||
if (species.generation > gens.length)
|
||||
break;
|
||||
if (!speciesStarterValues.hasOwnProperty(species.speciesId) || species.generation !== g + 1)
|
||||
continue;
|
||||
starterSpecies.push(species.speciesId);
|
||||
|
Loading…
Reference in New Issue
Block a user