pokerogue/src/data/balance/pokemon-evolutions.ts
Sirz Benjie 5854b21da0
[Refactor] Remove circular imports part 1 (#5663)
* Extract Mode enum out of UI and into its own file

Reduces circular imports from 909 to 773

* Move around utility files

Reduces cyclical dependencies from 773 to 765

* Remove starterColors and bypassLogin from battle-scene

Reduces cyclical dependencies from 765 to 623

* Fix test runner error

* Update import for bypassLogin in test

* Update mocks for utils in tests

* Fix broken tests

* Update selectWithTera override

* Update path for utils in ab-attr.ts

* Update path for utils in ability-class.ts

* Fix utils import path in healer.test.ts
2025-04-19 11:57:03 +00:00

1925 lines
74 KiB
TypeScript

import { globalScene } from "#app/global-scene";
import { Gender } from "#app/data/gender";
import { PokeballType } from "#enums/pokeball";
import type Pokemon from "#app/field/pokemon";
import { PokemonType } from "#enums/pokemon-type";
import { randSeedInt } from "#app/utils/common";
import { WeatherType } from "#enums/weather-type";
import { Nature } from "#enums/nature";
import { Biome } from "#enums/biome";
import { Moves } from "#enums/moves";
import { Species } from "#enums/species";
import { TimeOfDay } from "#enums/time-of-day";
import { DamageMoneyRewardModifier, ExtraModifierModifier, MoneyMultiplierModifier, TempExtraModifierModifier } from "#app/modifier/modifier";
import { SpeciesFormKey } from "#enums/species-form-key";
import { speciesStarterCosts } from "./starters";
import i18next from "i18next";
import { initI18n } from "#app/plugins/i18n";
export enum SpeciesWildEvolutionDelay {
NONE,
SHORT,
MEDIUM,
LONG,
VERY_LONG,
NEVER
}
export enum EvolutionItem {
NONE,
LINKING_CORD,
SUN_STONE,
MOON_STONE,
LEAF_STONE,
FIRE_STONE,
WATER_STONE,
THUNDER_STONE,
ICE_STONE,
DUSK_STONE,
DAWN_STONE,
SHINY_STONE,
CRACKED_POT,
SWEET_APPLE,
TART_APPLE,
STRAWBERRY_SWEET,
UNREMARKABLE_TEACUP,
UPGRADE,
DUBIOUS_DISC,
DRAGON_SCALE,
PRISM_SCALE,
RAZOR_CLAW,
RAZOR_FANG,
REAPER_CLOTH,
ELECTIRIZER,
MAGMARIZER,
PROTECTOR,
SACHET,
WHIPPED_DREAM,
SYRUPY_APPLE,
CHIPPED_POT,
GALARICA_CUFF,
GALARICA_WREATH,
AUSPICIOUS_ARMOR,
MALICIOUS_ARMOR,
MASTERPIECE_TEACUP,
SUN_FLUTE,
MOON_FLUTE,
BLACK_AUGURITE = 51,
PEAT_BLOCK,
METAL_ALLOY,
SCROLL_OF_DARKNESS,
SCROLL_OF_WATERS,
LEADERS_CREST
}
/**
* Pokemon Evolution tuple type consisting of:
* @property 0 {@linkcode Species} The species of the Pokemon.
* @property 1 {@linkcode number} The level at which the Pokemon evolves.
*/
export type EvolutionLevel = [species: Species, level: number];
export type EvolutionConditionPredicate = (p: Pokemon) => boolean;
export type EvolutionConditionEnforceFunc = (p: Pokemon) => void;
export class SpeciesFormEvolution {
public speciesId: Species;
public preFormKey: string | null;
public evoFormKey: string | null;
public level: number;
public item: EvolutionItem | null;
public condition: SpeciesEvolutionCondition | null;
public wildDelay: SpeciesWildEvolutionDelay;
public description = "";
constructor(speciesId: Species, preFormKey: string | null, evoFormKey: string | null, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) {
if (!i18next.isInitialized) {
initI18n();
}
this.speciesId = speciesId;
this.preFormKey = preFormKey;
this.evoFormKey = evoFormKey;
this.level = level;
this.item = item || EvolutionItem.NONE;
this.condition = condition;
this.wildDelay = wildDelay ?? SpeciesWildEvolutionDelay.NONE;
const strings: string[] = [];
if (this.level > 1) {
strings.push(i18next.t("pokemonEvolutions:level") + ` ${this.level}`);
}
if (this.item) {
const itemDescription = i18next.t(`modifierType:EvolutionItem.${EvolutionItem[this.item].toUpperCase()}`);
const rarity = this.item > 50 ? i18next.t("pokemonEvolutions:ULTRA") : i18next.t("pokemonEvolutions:GREAT");
strings.push(i18next.t("pokemonEvolutions:using") + itemDescription + ` (${rarity})`);
}
if (this.condition) {
strings.push(this.condition.description);
}
this.description = strings
.filter(str => str !== "")
.map((str, index) => index > 0 ? str[0].toLowerCase() + str.slice(1) : str)
.join(i18next.t("pokemonEvolutions:connector"));
}
}
export class SpeciesEvolution extends SpeciesFormEvolution {
constructor(speciesId: Species, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) {
super(speciesId, null, null, level, item, condition, wildDelay);
}
}
export class FusionSpeciesFormEvolution extends SpeciesFormEvolution {
public primarySpeciesId: Species;
constructor(primarySpeciesId: Species, evolution: SpeciesFormEvolution) {
super(evolution.speciesId, evolution.preFormKey, evolution.evoFormKey, evolution.level, evolution.item, evolution.condition, evolution.wildDelay);
this.primarySpeciesId = primarySpeciesId;
}
}
export class SpeciesEvolutionCondition {
public predicate: EvolutionConditionPredicate;
public enforceFunc?: EvolutionConditionEnforceFunc;
public description: string;
constructor(predicate: EvolutionConditionPredicate, enforceFunc?: EvolutionConditionEnforceFunc) {
this.predicate = predicate;
this.enforceFunc = enforceFunc;
this.description = "";
}
}
class GenderEvolutionCondition extends SpeciesEvolutionCondition {
public gender: Gender;
constructor(gender: Gender) {
super(p => p.gender === gender, p => p.gender = gender);
this.gender = gender;
this.description = i18next.t("pokemonEvolutions:gender", { gender: i18next.t(`pokemonEvolutions:${Gender[gender]}`) });
}
}
class TimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
public timesOfDay: TimeOfDay[];
constructor(tod: "day" | "night") {
if (tod === "day") {
super(() => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY);
this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ];
} else if (tod === "night") {
super(() => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT);
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
} else {
super(() => false);
this.timesOfDay = [];
}
this.description = i18next.t("pokemonEvolutions:timeOfDay", { tod: i18next.t(`pokemonEvolutions:${tod}`) });
}
}
class MoveEvolutionCondition extends SpeciesEvolutionCondition {
public move: Moves;
constructor(move: Moves) {
super(p => p.moveset.filter(m => m.moveId === move).length > 0);
this.move = move;
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) });
}
}
class FriendshipEvolutionCondition extends SpeciesEvolutionCondition {
public amount: number;
constructor(amount: number) {
super(p => p.friendship >= amount);
this.amount = amount;
this.description = i18next.t("pokemonEvolutions:friendship");
}
}
class FriendshipTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
public amount: number;
public timesOfDay: TimeOfDay[];
constructor(amount: number, tod: "day" | "night") {
if (tod === "day") {
super(p => p.friendship >= amount && (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY));
this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ];
} else if (tod === "night") {
super(p => p.friendship >= amount && (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT));
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
} else {
super(_p => false);
this.timesOfDay = [];
}
this.amount = amount;
this.description = i18next.t("pokemonEvolutions:friendshipTimeOfDay", { tod: i18next.t(`pokemonEvolutions:${tod}`) });
}
}
class FriendshipMoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
public amount: number;
public type: PokemonType;
constructor(amount: number, type: PokemonType) {
super(p => p.friendship >= amount && !!p.getMoveset().find(m => m?.getMove().type === type));
this.amount = amount;
this.type = type;
this.description = i18next.t("pokemonEvolutions:friendshipMoveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
}
}
class ShedinjaEvolutionCondition extends SpeciesEvolutionCondition {
constructor() {
super(() => globalScene.getPlayerParty().length < 6 && globalScene.pokeballCounts[PokeballType.POKEBALL] > 0);
this.description = i18next.t("pokemonEvolutions:shedinja");
}
}
class PartyTypeEvolutionCondition extends SpeciesEvolutionCondition {
public type: PokemonType;
constructor(type: PokemonType) {
super(() => !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(type) > -1));
this.type = type;
this.description = i18next.t("pokemonEvolutions:partyType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
}
}
class CaughtEvolutionCondition extends SpeciesEvolutionCondition {
public species: Species;
constructor(species: Species) {
super(() => !!globalScene.gameData.dexData[species].caughtAttr);
this.species = species;
this.description = i18next.t("pokemonEvolutions:caught", { species: i18next.t(`pokemon:${Species[this.species].toLowerCase()}`) });
}
}
class WeatherEvolutionCondition extends SpeciesEvolutionCondition {
public weatherTypes: WeatherType[];
constructor(weatherTypes: WeatherType[]) {
super(() => weatherTypes.indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1);
this.weatherTypes = weatherTypes;
this.description = i18next.t("pokemonEvolutions:weather");
}
}
class MoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
public type: PokemonType;
constructor(type: PokemonType) {
super(p => p.moveset.filter(m => m?.getMove().type === type).length > 0);
this.type = type;
this.description = i18next.t("pokemonEvolutions:moveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
}
}
class TreasureEvolutionCondition extends SpeciesEvolutionCondition {
constructor() {
super(p => p.evoCounter
+ p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length
+ globalScene.findModifiers(m => m instanceof MoneyMultiplierModifier
|| m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length > 9);
this.description = i18next.t("pokemonEvolutions:treasure");
}
}
class TyrogueEvolutionCondition extends SpeciesEvolutionCondition {
public move: Moves;
constructor(move: Moves) {
super(p =>
p.getMoveset(true).find(m => m && [ Moves.LOW_SWEEP, Moves.MACH_PUNCH, Moves.RAPID_SPIN ].includes(m.moveId))?.moveId === move);
this.move = move;
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) });
}
}
class NatureEvolutionCondition extends SpeciesEvolutionCondition {
public natures: Nature[];
constructor(natures: Nature[]) {
super(p => natures.indexOf(p.getNature()) > -1);
this.natures = natures;
this.description = i18next.t("pokemonEvolutions:nature");
}
}
class MoveTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
public move: Moves;
public timesOfDay: TimeOfDay[];
constructor(move: Moves, tod: "day" | "night") {
if (tod === "day") {
super(p => p.moveset.filter(m => m.moveId === move).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY));
this.move = move;
this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ];
} else if (tod === "night") {
super(p => p.moveset.filter(m => m.moveId === move).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT));
this.move = move;
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
} else {
super(() => false);
this.timesOfDay = [];
}
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
this.description = i18next.t("pokemonEvolutions:moveTimeOfDay", { move: i18next.t(`move:${moveKey}.name`), tod: i18next.t(`pokemonEvolutions:${tod}`) });
}
}
class BiomeEvolutionCondition extends SpeciesEvolutionCondition {
public biomes: Biome[];
constructor(biomes: Biome[]) {
super(() => biomes.filter(b => b === globalScene.arena.biomeType).length > 0);
this.biomes = biomes;
this.description = i18next.t("pokemonEvolutions:biome");
}
}
class DunsparceEvolutionCondition extends SpeciesEvolutionCondition {
constructor() {
super(p => {
let ret = false;
if (p.moveset.filter(m => m.moveId === Moves.HYPER_DRILL).length > 0) {
globalScene.executeWithSeedOffset(() => ret = !randSeedInt(4), p.id);
}
return ret;
});
const moveKey = Moves[Moves.HYPER_DRILL].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) });
}
}
class TandemausEvolutionCondition extends SpeciesEvolutionCondition {
constructor() {
super(p => {
let ret = false;
globalScene.executeWithSeedOffset(() => ret = !randSeedInt(4), p.id);
return ret;
});
}
}
interface PokemonEvolutions {
[key: string]: SpeciesFormEvolution[]
}
export const pokemonEvolutions: PokemonEvolutions = {
[Species.BULBASAUR]: [
new SpeciesEvolution(Species.IVYSAUR, 16, null, null)
],
[Species.IVYSAUR]: [
new SpeciesEvolution(Species.VENUSAUR, 32, null, null)
],
[Species.CHARMANDER]: [
new SpeciesEvolution(Species.CHARMELEON, 16, null, null)
],
[Species.CHARMELEON]: [
new SpeciesEvolution(Species.CHARIZARD, 36, null, null)
],
[Species.SQUIRTLE]: [
new SpeciesEvolution(Species.WARTORTLE, 16, null, null)
],
[Species.WARTORTLE]: [
new SpeciesEvolution(Species.BLASTOISE, 36, null, null)
],
[Species.CATERPIE]: [
new SpeciesEvolution(Species.METAPOD, 7, null, null)
],
[Species.METAPOD]: [
new SpeciesEvolution(Species.BUTTERFREE, 10, null, null)
],
[Species.WEEDLE]: [
new SpeciesEvolution(Species.KAKUNA, 7, null, null)
],
[Species.KAKUNA]: [
new SpeciesEvolution(Species.BEEDRILL, 10, null, null)
],
[Species.PIDGEY]: [
new SpeciesEvolution(Species.PIDGEOTTO, 18, null, null)
],
[Species.PIDGEOTTO]: [
new SpeciesEvolution(Species.PIDGEOT, 36, null, null)
],
[Species.RATTATA]: [
new SpeciesEvolution(Species.RATICATE, 20, null, null)
],
[Species.SPEAROW]: [
new SpeciesEvolution(Species.FEAROW, 20, null, null)
],
[Species.EKANS]: [
new SpeciesEvolution(Species.ARBOK, 22, null, null)
],
[Species.SANDSHREW]: [
new SpeciesEvolution(Species.SANDSLASH, 22, null, null)
],
[Species.NIDORAN_F]: [
new SpeciesEvolution(Species.NIDORINA, 16, null, null)
],
[Species.NIDORAN_M]: [
new SpeciesEvolution(Species.NIDORINO, 16, null, null)
],
[Species.ZUBAT]: [
new SpeciesEvolution(Species.GOLBAT, 22, null, null)
],
[Species.ODDISH]: [
new SpeciesEvolution(Species.GLOOM, 21, null, null)
],
[Species.PARAS]: [
new SpeciesEvolution(Species.PARASECT, 24, null, null)
],
[Species.VENONAT]: [
new SpeciesEvolution(Species.VENOMOTH, 31, null, null)
],
[Species.DIGLETT]: [
new SpeciesEvolution(Species.DUGTRIO, 26, null, null)
],
[Species.MEOWTH]: [
new SpeciesFormEvolution(Species.PERSIAN, "", "", 28, null, null)
],
[Species.PSYDUCK]: [
new SpeciesEvolution(Species.GOLDUCK, 33, null, null)
],
[Species.MANKEY]: [
new SpeciesEvolution(Species.PRIMEAPE, 28, null, null)
],
[Species.POLIWAG]: [
new SpeciesEvolution(Species.POLIWHIRL, 25, null, null)
],
[Species.ABRA]: [
new SpeciesEvolution(Species.KADABRA, 16, null, null)
],
[Species.MACHOP]: [
new SpeciesEvolution(Species.MACHOKE, 28, null, null)
],
[Species.BELLSPROUT]: [
new SpeciesEvolution(Species.WEEPINBELL, 21, null, null)
],
[Species.TENTACOOL]: [
new SpeciesEvolution(Species.TENTACRUEL, 30, null, null)
],
[Species.GEODUDE]: [
new SpeciesEvolution(Species.GRAVELER, 25, null, null)
],
[Species.PONYTA]: [
new SpeciesEvolution(Species.RAPIDASH, 40, null, null)
],
[Species.SLOWPOKE]: [
new SpeciesEvolution(Species.SLOWBRO, 37, null, null),
new SpeciesEvolution(Species.SLOWKING, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.MAGNEMITE]: [
new SpeciesEvolution(Species.MAGNETON, 30, null, null)
],
[Species.DODUO]: [
new SpeciesEvolution(Species.DODRIO, 31, null, null)
],
[Species.SEEL]: [
new SpeciesEvolution(Species.DEWGONG, 34, null, null)
],
[Species.GRIMER]: [
new SpeciesEvolution(Species.MUK, 38, null, null)
],
[Species.GASTLY]: [
new SpeciesEvolution(Species.HAUNTER, 25, null, null)
],
[Species.DROWZEE]: [
new SpeciesEvolution(Species.HYPNO, 26, null, null)
],
[Species.KRABBY]: [
new SpeciesEvolution(Species.KINGLER, 28, null, null)
],
[Species.VOLTORB]: [
new SpeciesEvolution(Species.ELECTRODE, 30, null, null)
],
[Species.CUBONE]: [
new SpeciesEvolution(Species.ALOLA_MAROWAK, 28, null, new TimeOfDayEvolutionCondition("night")),
new SpeciesEvolution(Species.MAROWAK, 28, null, new TimeOfDayEvolutionCondition("day"))
],
[Species.TYROGUE]: [
/**
* Custom: Evolves into Hitmonlee, Hitmonchan or Hitmontop at level 20
* if it knows Low Sweep, Mach Punch, or Rapid Spin, respectively.
* If Tyrogue knows multiple of these moves, its evolution is based on
* the first qualifying move in its moveset.
*/
new SpeciesEvolution(Species.HITMONLEE, 20, null, new TyrogueEvolutionCondition(Moves.LOW_SWEEP)),
new SpeciesEvolution(Species.HITMONCHAN, 20, null, new TyrogueEvolutionCondition(Moves.MACH_PUNCH)),
new SpeciesEvolution(Species.HITMONTOP, 20, null, new TyrogueEvolutionCondition(Moves.RAPID_SPIN)),
],
[Species.KOFFING]: [
new SpeciesEvolution(Species.GALAR_WEEZING, 35, null, new TimeOfDayEvolutionCondition("night")),
new SpeciesEvolution(Species.WEEZING, 35, null, new TimeOfDayEvolutionCondition("day"))
],
[Species.RHYHORN]: [
new SpeciesEvolution(Species.RHYDON, 42, null, null)
],
[Species.HORSEA]: [
new SpeciesEvolution(Species.SEADRA, 32, null, null)
],
[Species.GOLDEEN]: [
new SpeciesEvolution(Species.SEAKING, 33, null, null)
],
[Species.SMOOCHUM]: [
new SpeciesEvolution(Species.JYNX, 30, null, null)
],
[Species.ELEKID]: [
new SpeciesEvolution(Species.ELECTABUZZ, 30, null, null)
],
[Species.MAGBY]: [
new SpeciesEvolution(Species.MAGMAR, 30, null, null)
],
[Species.MAGIKARP]: [
new SpeciesEvolution(Species.GYARADOS, 20, null, null)
],
[Species.OMANYTE]: [
new SpeciesEvolution(Species.OMASTAR, 40, null, null)
],
[Species.KABUTO]: [
new SpeciesEvolution(Species.KABUTOPS, 40, null, null)
],
[Species.DRATINI]: [
new SpeciesEvolution(Species.DRAGONAIR, 30, null, null)
],
[Species.DRAGONAIR]: [
new SpeciesEvolution(Species.DRAGONITE, 55, null, null)
],
[Species.CHIKORITA]: [
new SpeciesEvolution(Species.BAYLEEF, 16, null, null)
],
[Species.BAYLEEF]: [
new SpeciesEvolution(Species.MEGANIUM, 32, null, null)
],
[Species.CYNDAQUIL]: [
new SpeciesEvolution(Species.QUILAVA, 14, null, null)
],
[Species.QUILAVA]: [
new SpeciesEvolution(Species.HISUI_TYPHLOSION, 36, null, new TimeOfDayEvolutionCondition("night")),
new SpeciesEvolution(Species.TYPHLOSION, 36, null, new TimeOfDayEvolutionCondition("day"))
],
[Species.TOTODILE]: [
new SpeciesEvolution(Species.CROCONAW, 18, null, null)
],
[Species.CROCONAW]: [
new SpeciesEvolution(Species.FERALIGATR, 30, null, null)
],
[Species.SENTRET]: [
new SpeciesEvolution(Species.FURRET, 15, null, null)
],
[Species.HOOTHOOT]: [
new SpeciesEvolution(Species.NOCTOWL, 20, null, null)
],
[Species.LEDYBA]: [
new SpeciesEvolution(Species.LEDIAN, 18, null, null)
],
[Species.SPINARAK]: [
new SpeciesEvolution(Species.ARIADOS, 22, null, null)
],
[Species.CHINCHOU]: [
new SpeciesEvolution(Species.LANTURN, 27, null, null)
],
[Species.NATU]: [
new SpeciesEvolution(Species.XATU, 25, null, null)
],
[Species.MAREEP]: [
new SpeciesEvolution(Species.FLAAFFY, 15, null, null)
],
[Species.FLAAFFY]: [
new SpeciesEvolution(Species.AMPHAROS, 30, null, null)
],
[Species.MARILL]: [
new SpeciesEvolution(Species.AZUMARILL, 18, null, null)
],
[Species.HOPPIP]: [
new SpeciesEvolution(Species.SKIPLOOM, 18, null, null)
],
[Species.SKIPLOOM]: [
new SpeciesEvolution(Species.JUMPLUFF, 27, null, null)
],
[Species.WOOPER]: [
new SpeciesEvolution(Species.QUAGSIRE, 20, null, null)
],
[Species.WYNAUT]: [
new SpeciesEvolution(Species.WOBBUFFET, 15, null, null)
],
[Species.PINECO]: [
new SpeciesEvolution(Species.FORRETRESS, 31, null, null)
],
[Species.SNUBBULL]: [
new SpeciesEvolution(Species.GRANBULL, 23, null, null)
],
[Species.TEDDIURSA]: [
new SpeciesEvolution(Species.URSARING, 30, null, null)
],
[Species.SLUGMA]: [
new SpeciesEvolution(Species.MAGCARGO, 38, null, null)
],
[Species.SWINUB]: [
new SpeciesEvolution(Species.PILOSWINE, 33, null, null)
],
[Species.REMORAID]: [
new SpeciesEvolution(Species.OCTILLERY, 25, null, null)
],
[Species.HOUNDOUR]: [
new SpeciesEvolution(Species.HOUNDOOM, 24, null, null)
],
[Species.PHANPY]: [
new SpeciesEvolution(Species.DONPHAN, 25, null, null)
],
[Species.LARVITAR]: [
new SpeciesEvolution(Species.PUPITAR, 30, null, null)
],
[Species.PUPITAR]: [
new SpeciesEvolution(Species.TYRANITAR, 55, null, null)
],
[Species.TREECKO]: [
new SpeciesEvolution(Species.GROVYLE, 16, null, null)
],
[Species.GROVYLE]: [
new SpeciesEvolution(Species.SCEPTILE, 36, null, null)
],
[Species.TORCHIC]: [
new SpeciesEvolution(Species.COMBUSKEN, 16, null, null)
],
[Species.COMBUSKEN]: [
new SpeciesEvolution(Species.BLAZIKEN, 36, null, null)
],
[Species.MUDKIP]: [
new SpeciesEvolution(Species.MARSHTOMP, 16, null, null)
],
[Species.MARSHTOMP]: [
new SpeciesEvolution(Species.SWAMPERT, 36, null, null)
],
[Species.POOCHYENA]: [
new SpeciesEvolution(Species.MIGHTYENA, 18, null, null)
],
[Species.ZIGZAGOON]: [
new SpeciesEvolution(Species.LINOONE, 20, null, null)
],
[Species.WURMPLE]: [
new SpeciesEvolution(Species.SILCOON, 7, null, new TimeOfDayEvolutionCondition("day")),
new SpeciesEvolution(Species.CASCOON, 7, null, new TimeOfDayEvolutionCondition("night"))
],
[Species.SILCOON]: [
new SpeciesEvolution(Species.BEAUTIFLY, 10, null, null)
],
[Species.CASCOON]: [
new SpeciesEvolution(Species.DUSTOX, 10, null, null)
],
[Species.LOTAD]: [
new SpeciesEvolution(Species.LOMBRE, 14, null, null)
],
[Species.SEEDOT]: [
new SpeciesEvolution(Species.NUZLEAF, 14, null, null)
],
[Species.TAILLOW]: [
new SpeciesEvolution(Species.SWELLOW, 22, null, null)
],
[Species.WINGULL]: [
new SpeciesEvolution(Species.PELIPPER, 25, null, null)
],
[Species.RALTS]: [
new SpeciesEvolution(Species.KIRLIA, 20, null, null)
],
[Species.KIRLIA]: [
new SpeciesEvolution(Species.GARDEVOIR, 30, null, new GenderEvolutionCondition(Gender.FEMALE)),
new SpeciesEvolution(Species.GALLADE, 30, null, new GenderEvolutionCondition(Gender.MALE))
],
[Species.SURSKIT]: [
new SpeciesEvolution(Species.MASQUERAIN, 22, null, null)
],
[Species.SHROOMISH]: [
new SpeciesEvolution(Species.BRELOOM, 23, null, null)
],
[Species.SLAKOTH]: [
new SpeciesEvolution(Species.VIGOROTH, 18, null, null)
],
[Species.VIGOROTH]: [
new SpeciesEvolution(Species.SLAKING, 36, null, null)
],
[Species.NINCADA]: [
new SpeciesEvolution(Species.NINJASK, 20, null, null),
new SpeciesEvolution(Species.SHEDINJA, 20, null, new ShedinjaEvolutionCondition())
],
[Species.WHISMUR]: [
new SpeciesEvolution(Species.LOUDRED, 20, null, null)
],
[Species.LOUDRED]: [
new SpeciesEvolution(Species.EXPLOUD, 40, null, null)
],
[Species.MAKUHITA]: [
new SpeciesEvolution(Species.HARIYAMA, 24, null, null)
],
[Species.ARON]: [
new SpeciesEvolution(Species.LAIRON, 32, null, null)
],
[Species.LAIRON]: [
new SpeciesEvolution(Species.AGGRON, 42, null, null)
],
[Species.MEDITITE]: [
new SpeciesEvolution(Species.MEDICHAM, 37, null, null)
],
[Species.ELECTRIKE]: [
new SpeciesEvolution(Species.MANECTRIC, 26, null, null)
],
[Species.GULPIN]: [
new SpeciesEvolution(Species.SWALOT, 26, null, null)
],
[Species.CARVANHA]: [
new SpeciesEvolution(Species.SHARPEDO, 30, null, null)
],
[Species.WAILMER]: [
new SpeciesEvolution(Species.WAILORD, 40, null, null)
],
[Species.NUMEL]: [
new SpeciesEvolution(Species.CAMERUPT, 33, null, null)
],
[Species.SPOINK]: [
new SpeciesEvolution(Species.GRUMPIG, 32, null, null)
],
[Species.TRAPINCH]: [
new SpeciesEvolution(Species.VIBRAVA, 35, null, null)
],
[Species.VIBRAVA]: [
new SpeciesEvolution(Species.FLYGON, 45, null, null)
],
[Species.CACNEA]: [
new SpeciesEvolution(Species.CACTURNE, 32, null, null)
],
[Species.SWABLU]: [
new SpeciesEvolution(Species.ALTARIA, 35, null, null)
],
[Species.BARBOACH]: [
new SpeciesEvolution(Species.WHISCASH, 30, null, null)
],
[Species.CORPHISH]: [
new SpeciesEvolution(Species.CRAWDAUNT, 30, null, null)
],
[Species.BALTOY]: [
new SpeciesEvolution(Species.CLAYDOL, 36, null, null)
],
[Species.LILEEP]: [
new SpeciesEvolution(Species.CRADILY, 40, null, null)
],
[Species.ANORITH]: [
new SpeciesEvolution(Species.ARMALDO, 40, null, null)
],
[Species.SHUPPET]: [
new SpeciesEvolution(Species.BANETTE, 37, null, null)
],
[Species.DUSKULL]: [
new SpeciesEvolution(Species.DUSCLOPS, 37, null, null)
],
[Species.SNORUNT]: [
new SpeciesEvolution(Species.GLALIE, 42, null, new GenderEvolutionCondition(Gender.MALE)),
new SpeciesEvolution(Species.FROSLASS, 42, null, new GenderEvolutionCondition(Gender.FEMALE))
],
[Species.SPHEAL]: [
new SpeciesEvolution(Species.SEALEO, 32, null, null)
],
[Species.SEALEO]: [
new SpeciesEvolution(Species.WALREIN, 44, null, null)
],
[Species.BAGON]: [
new SpeciesEvolution(Species.SHELGON, 30, null, null)
],
[Species.SHELGON]: [
new SpeciesEvolution(Species.SALAMENCE, 50, null, null)
],
[Species.BELDUM]: [
new SpeciesEvolution(Species.METANG, 20, null, null)
],
[Species.METANG]: [
new SpeciesEvolution(Species.METAGROSS, 45, null, null)
],
[Species.TURTWIG]: [
new SpeciesEvolution(Species.GROTLE, 18, null, null)
],
[Species.GROTLE]: [
new SpeciesEvolution(Species.TORTERRA, 32, null, null)
],
[Species.CHIMCHAR]: [
new SpeciesEvolution(Species.MONFERNO, 14, null, null)
],
[Species.MONFERNO]: [
new SpeciesEvolution(Species.INFERNAPE, 36, null, null)
],
[Species.PIPLUP]: [
new SpeciesEvolution(Species.PRINPLUP, 16, null, null)
],
[Species.PRINPLUP]: [
new SpeciesEvolution(Species.EMPOLEON, 36, null, null)
],
[Species.STARLY]: [
new SpeciesEvolution(Species.STARAVIA, 14, null, null)
],
[Species.STARAVIA]: [
new SpeciesEvolution(Species.STARAPTOR, 34, null, null)
],
[Species.BIDOOF]: [
new SpeciesEvolution(Species.BIBAREL, 15, null, null)
],
[Species.KRICKETOT]: [
new SpeciesEvolution(Species.KRICKETUNE, 10, null, null)
],
[Species.SHINX]: [
new SpeciesEvolution(Species.LUXIO, 15, null, null)
],
[Species.LUXIO]: [
new SpeciesEvolution(Species.LUXRAY, 30, null, null)
],
[Species.CRANIDOS]: [
new SpeciesEvolution(Species.RAMPARDOS, 30, null, null)
],
[Species.SHIELDON]: [
new SpeciesEvolution(Species.BASTIODON, 30, null, null)
],
[Species.BURMY]: [
new SpeciesEvolution(Species.MOTHIM, 20, null, new GenderEvolutionCondition(Gender.MALE)),
new SpeciesEvolution(Species.WORMADAM, 20, null, new GenderEvolutionCondition(Gender.FEMALE))
],
[Species.COMBEE]: [
new SpeciesEvolution(Species.VESPIQUEN, 21, null, new GenderEvolutionCondition(Gender.FEMALE))
],
[Species.BUIZEL]: [
new SpeciesEvolution(Species.FLOATZEL, 26, null, null)
],
[Species.CHERUBI]: [
new SpeciesEvolution(Species.CHERRIM, 25, null, null)
],
[Species.SHELLOS]: [
new SpeciesEvolution(Species.GASTRODON, 30, null, null)
],
[Species.DRIFLOON]: [
new SpeciesEvolution(Species.DRIFBLIM, 28, null, null)
],
[Species.GLAMEOW]: [
new SpeciesEvolution(Species.PURUGLY, 38, null, null)
],
[Species.STUNKY]: [
new SpeciesEvolution(Species.SKUNTANK, 34, null, null)
],
[Species.BRONZOR]: [
new SpeciesEvolution(Species.BRONZONG, 33, null, null)
],
[Species.GIBLE]: [
new SpeciesEvolution(Species.GABITE, 24, null, null)
],
[Species.GABITE]: [
new SpeciesEvolution(Species.GARCHOMP, 48, null, null)
],
[Species.HIPPOPOTAS]: [
new SpeciesEvolution(Species.HIPPOWDON, 34, null, null)
],
[Species.SKORUPI]: [
new SpeciesEvolution(Species.DRAPION, 40, null, null)
],
[Species.CROAGUNK]: [
new SpeciesEvolution(Species.TOXICROAK, 37, null, null)
],
[Species.FINNEON]: [
new SpeciesEvolution(Species.LUMINEON, 31, null, null)
],
[Species.MANTYKE]: [
new SpeciesEvolution(Species.MANTINE, 32, null, new CaughtEvolutionCondition(Species.REMORAID), SpeciesWildEvolutionDelay.MEDIUM)
],
[Species.SNOVER]: [
new SpeciesEvolution(Species.ABOMASNOW, 40, null, null)
],
[Species.SNIVY]: [
new SpeciesEvolution(Species.SERVINE, 17, null, null)
],
[Species.SERVINE]: [
new SpeciesEvolution(Species.SERPERIOR, 36, null, null)
],
[Species.TEPIG]: [
new SpeciesEvolution(Species.PIGNITE, 17, null, null)
],
[Species.PIGNITE]: [
new SpeciesEvolution(Species.EMBOAR, 36, null, null)
],
[Species.OSHAWOTT]: [
new SpeciesEvolution(Species.DEWOTT, 17, null, null)
],
[Species.DEWOTT]: [
new SpeciesEvolution(Species.HISUI_SAMUROTT, 36, null, new TimeOfDayEvolutionCondition("night")),
new SpeciesEvolution(Species.SAMUROTT, 36, null, new TimeOfDayEvolutionCondition("day"))
],
[Species.PATRAT]: [
new SpeciesEvolution(Species.WATCHOG, 20, null, null)
],
[Species.LILLIPUP]: [
new SpeciesEvolution(Species.HERDIER, 16, null, null)
],
[Species.HERDIER]: [
new SpeciesEvolution(Species.STOUTLAND, 32, null, null)
],
[Species.PURRLOIN]: [
new SpeciesEvolution(Species.LIEPARD, 20, null, null)
],
[Species.PIDOVE]: [
new SpeciesEvolution(Species.TRANQUILL, 21, null, null)
],
[Species.TRANQUILL]: [
new SpeciesEvolution(Species.UNFEZANT, 32, null, null)
],
[Species.BLITZLE]: [
new SpeciesEvolution(Species.ZEBSTRIKA, 27, null, null)
],
[Species.ROGGENROLA]: [
new SpeciesEvolution(Species.BOLDORE, 25, null, null)
],
[Species.DRILBUR]: [
new SpeciesEvolution(Species.EXCADRILL, 31, null, null)
],
[Species.TIMBURR]: [
new SpeciesEvolution(Species.GURDURR, 25, null, null)
],
[Species.TYMPOLE]: [
new SpeciesEvolution(Species.PALPITOAD, 25, null, null)
],
[Species.PALPITOAD]: [
new SpeciesEvolution(Species.SEISMITOAD, 36, null, null)
],
[Species.SEWADDLE]: [
new SpeciesEvolution(Species.SWADLOON, 20, null, null)
],
[Species.VENIPEDE]: [
new SpeciesEvolution(Species.WHIRLIPEDE, 22, null, null)
],
[Species.WHIRLIPEDE]: [
new SpeciesEvolution(Species.SCOLIPEDE, 30, null, null)
],
[Species.SANDILE]: [
new SpeciesEvolution(Species.KROKOROK, 29, null, null)
],
[Species.KROKOROK]: [
new SpeciesEvolution(Species.KROOKODILE, 40, null, null)
],
[Species.DARUMAKA]: [
new SpeciesEvolution(Species.DARMANITAN, 35, null, null)
],
[Species.DWEBBLE]: [
new SpeciesEvolution(Species.CRUSTLE, 34, null, null)
],
[Species.SCRAGGY]: [
new SpeciesEvolution(Species.SCRAFTY, 39, null, null)
],
[Species.YAMASK]: [
new SpeciesEvolution(Species.COFAGRIGUS, 34, null, null)
],
[Species.TIRTOUGA]: [
new SpeciesEvolution(Species.CARRACOSTA, 37, null, null)
],
[Species.ARCHEN]: [
new SpeciesEvolution(Species.ARCHEOPS, 37, null, null)
],
[Species.TRUBBISH]: [
new SpeciesEvolution(Species.GARBODOR, 36, null, null)
],
[Species.ZORUA]: [
new SpeciesEvolution(Species.ZOROARK, 30, null, null)
],
[Species.GOTHITA]: [
new SpeciesEvolution(Species.GOTHORITA, 32, null, null)
],
[Species.GOTHORITA]: [
new SpeciesEvolution(Species.GOTHITELLE, 41, null, null)
],
[Species.SOLOSIS]: [
new SpeciesEvolution(Species.DUOSION, 32, null, null)
],
[Species.DUOSION]: [
new SpeciesEvolution(Species.REUNICLUS, 41, null, null)
],
[Species.DUCKLETT]: [
new SpeciesEvolution(Species.SWANNA, 35, null, null)
],
[Species.VANILLITE]: [
new SpeciesEvolution(Species.VANILLISH, 35, null, null)
],
[Species.VANILLISH]: [
new SpeciesEvolution(Species.VANILLUXE, 47, null, null)
],
[Species.DEERLING]: [
new SpeciesEvolution(Species.SAWSBUCK, 34, null, null)
],
[Species.FOONGUS]: [
new SpeciesEvolution(Species.AMOONGUSS, 39, null, null)
],
[Species.FRILLISH]: [
new SpeciesEvolution(Species.JELLICENT, 40, null, null)
],
[Species.JOLTIK]: [
new SpeciesEvolution(Species.GALVANTULA, 36, null, null)
],
[Species.FERROSEED]: [
new SpeciesEvolution(Species.FERROTHORN, 40, null, null)
],
[Species.KLINK]: [
new SpeciesEvolution(Species.KLANG, 38, null, null)
],
[Species.KLANG]: [
new SpeciesEvolution(Species.KLINKLANG, 49, null, null)
],
[Species.TYNAMO]: [
new SpeciesEvolution(Species.EELEKTRIK, 39, null, null)
],
[Species.ELGYEM]: [
new SpeciesEvolution(Species.BEHEEYEM, 42, null, null)
],
[Species.LITWICK]: [
new SpeciesEvolution(Species.LAMPENT, 41, null, null)
],
[Species.AXEW]: [
new SpeciesEvolution(Species.FRAXURE, 38, null, null)
],
[Species.FRAXURE]: [
new SpeciesEvolution(Species.HAXORUS, 48, null, null)
],
[Species.CUBCHOO]: [
new SpeciesEvolution(Species.BEARTIC, 37, null, null)
],
[Species.MIENFOO]: [
new SpeciesEvolution(Species.MIENSHAO, 50, null, null)
],
[Species.GOLETT]: [
new SpeciesEvolution(Species.GOLURK, 43, null, null)
],
[Species.PAWNIARD]: [
new SpeciesEvolution(Species.BISHARP, 52, null, null)
],
[Species.BISHARP]: [
new SpeciesEvolution(Species.KINGAMBIT, 1, EvolutionItem.LEADERS_CREST, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.RUFFLET]: [
new SpeciesEvolution(Species.HISUI_BRAVIARY, 54, null, new TimeOfDayEvolutionCondition("night")),
new SpeciesEvolution(Species.BRAVIARY, 54, null, new TimeOfDayEvolutionCondition("day"))
],
[Species.VULLABY]: [
new SpeciesEvolution(Species.MANDIBUZZ, 54, null, null)
],
[Species.DEINO]: [
new SpeciesEvolution(Species.ZWEILOUS, 50, null, null)
],
[Species.ZWEILOUS]: [
new SpeciesEvolution(Species.HYDREIGON, 64, null, null)
],
[Species.LARVESTA]: [
new SpeciesEvolution(Species.VOLCARONA, 59, null, null)
],
[Species.CHESPIN]: [
new SpeciesEvolution(Species.QUILLADIN, 16, null, null)
],
[Species.QUILLADIN]: [
new SpeciesEvolution(Species.CHESNAUGHT, 36, null, null)
],
[Species.FENNEKIN]: [
new SpeciesEvolution(Species.BRAIXEN, 16, null, null)
],
[Species.BRAIXEN]: [
new SpeciesEvolution(Species.DELPHOX, 36, null, null)
],
[Species.FROAKIE]: [
new SpeciesEvolution(Species.FROGADIER, 16, null, null)
],
[Species.FROGADIER]: [
new SpeciesEvolution(Species.GRENINJA, 36, null, null)
],
[Species.BUNNELBY]: [
new SpeciesEvolution(Species.DIGGERSBY, 20, null, null)
],
[Species.FLETCHLING]: [
new SpeciesEvolution(Species.FLETCHINDER, 17, null, null)
],
[Species.FLETCHINDER]: [
new SpeciesEvolution(Species.TALONFLAME, 35, null, null)
],
[Species.SCATTERBUG]: [
new SpeciesEvolution(Species.SPEWPA, 9, null, null)
],
[Species.SPEWPA]: [
new SpeciesEvolution(Species.VIVILLON, 12, null, null)
],
[Species.LITLEO]: [
new SpeciesEvolution(Species.PYROAR, 35, null, null)
],
[Species.FLABEBE]: [
new SpeciesEvolution(Species.FLOETTE, 19, null, null)
],
[Species.SKIDDO]: [
new SpeciesEvolution(Species.GOGOAT, 32, null, null)
],
[Species.PANCHAM]: [
new SpeciesEvolution(Species.PANGORO, 32, null, new PartyTypeEvolutionCondition(PokemonType.DARK), SpeciesWildEvolutionDelay.MEDIUM)
],
[Species.ESPURR]: [
new SpeciesFormEvolution(Species.MEOWSTIC, "", "female", 25, null, new GenderEvolutionCondition(Gender.FEMALE)),
new SpeciesFormEvolution(Species.MEOWSTIC, "", "", 25, null, new GenderEvolutionCondition(Gender.MALE))
],
[Species.HONEDGE]: [
new SpeciesEvolution(Species.DOUBLADE, 35, null, null)
],
[Species.INKAY]: [
new SpeciesEvolution(Species.MALAMAR, 30, null, null)
],
[Species.BINACLE]: [
new SpeciesEvolution(Species.BARBARACLE, 39, null, null)
],
[Species.SKRELP]: [
new SpeciesEvolution(Species.DRAGALGE, 48, null, null)
],
[Species.CLAUNCHER]: [
new SpeciesEvolution(Species.CLAWITZER, 37, null, null)
],
[Species.TYRUNT]: [
new SpeciesEvolution(Species.TYRANTRUM, 39, null, new TimeOfDayEvolutionCondition("day"))
],
[Species.AMAURA]: [
new SpeciesEvolution(Species.AURORUS, 39, null, new TimeOfDayEvolutionCondition("night"))
],
[Species.GOOMY]: [
new SpeciesEvolution(Species.HISUI_SLIGGOO, 40, null, new TimeOfDayEvolutionCondition("night")),
new SpeciesEvolution(Species.SLIGGOO, 40, null, new TimeOfDayEvolutionCondition("day"))
],
[Species.SLIGGOO]: [
new SpeciesEvolution(Species.GOODRA, 50, null, new WeatherEvolutionCondition([ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ]), SpeciesWildEvolutionDelay.LONG)
],
[Species.BERGMITE]: [
new SpeciesEvolution(Species.HISUI_AVALUGG, 37, null, new TimeOfDayEvolutionCondition("night")),
new SpeciesEvolution(Species.AVALUGG, 37, null, new TimeOfDayEvolutionCondition("day"))
],
[Species.NOIBAT]: [
new SpeciesEvolution(Species.NOIVERN, 48, null, null)
],
[Species.ROWLET]: [
new SpeciesEvolution(Species.DARTRIX, 17, null, null)
],
[Species.DARTRIX]: [
new SpeciesEvolution(Species.HISUI_DECIDUEYE, 36, null, new TimeOfDayEvolutionCondition("night")),
new SpeciesEvolution(Species.DECIDUEYE, 34, null, new TimeOfDayEvolutionCondition("day"))
],
[Species.LITTEN]: [
new SpeciesEvolution(Species.TORRACAT, 17, null, null)
],
[Species.TORRACAT]: [
new SpeciesEvolution(Species.INCINEROAR, 34, null, null)
],
[Species.POPPLIO]: [
new SpeciesEvolution(Species.BRIONNE, 17, null, null)
],
[Species.BRIONNE]: [
new SpeciesEvolution(Species.PRIMARINA, 34, null, null)
],
[Species.PIKIPEK]: [
new SpeciesEvolution(Species.TRUMBEAK, 14, null, null)
],
[Species.TRUMBEAK]: [
new SpeciesEvolution(Species.TOUCANNON, 28, null, null)
],
[Species.YUNGOOS]: [
new SpeciesEvolution(Species.GUMSHOOS, 20, null, new TimeOfDayEvolutionCondition("day"))
],
[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 TimeOfDayEvolutionCondition("day"))
],
[Species.MORELULL]: [
new SpeciesEvolution(Species.SHIINOTIC, 24, null, null)
],
[Species.SALANDIT]: [
new SpeciesEvolution(Species.SALAZZLE, 33, null, new GenderEvolutionCondition(Gender.FEMALE))
],
[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, 42, 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, 23, null, null)
],
[Species.COSMOEM]: [
new SpeciesEvolution(Species.SOLGALEO, 1, EvolutionItem.SUN_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG),
new SpeciesEvolution(Species.LUNALA, 1, EvolutionItem.MOON_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.MELTAN]: [
new SpeciesEvolution(Species.MELMETAL, 48, null, null)
],
[Species.ALOLA_RATTATA]: [
new SpeciesEvolution(Species.ALOLA_RATICATE, 20, null, new TimeOfDayEvolutionCondition("night"))
],
[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.GROOKEY]: [
new SpeciesEvolution(Species.THWACKEY, 16, null, null)
],
[Species.THWACKEY]: [
new SpeciesEvolution(Species.RILLABOOM, 35, null, null)
],
[Species.SCORBUNNY]: [
new SpeciesEvolution(Species.RABOOT, 16, null, null)
],
[Species.RABOOT]: [
new SpeciesEvolution(Species.CINDERACE, 35, null, null)
],
[Species.SOBBLE]: [
new SpeciesEvolution(Species.DRIZZILE, 16, null, null)
],
[Species.DRIZZILE]: [
new SpeciesEvolution(Species.INTELEON, 35, null, null)
],
[Species.SKWOVET]: [
new SpeciesEvolution(Species.GREEDENT, 24, null, null)
],
[Species.ROOKIDEE]: [
new SpeciesEvolution(Species.CORVISQUIRE, 18, null, null)
],
[Species.CORVISQUIRE]: [
new SpeciesEvolution(Species.CORVIKNIGHT, 38, null, null)
],
[Species.BLIPBUG]: [
new SpeciesEvolution(Species.DOTTLER, 10, null, null)
],
[Species.DOTTLER]: [
new SpeciesEvolution(Species.ORBEETLE, 30, null, null)
],
[Species.NICKIT]: [
new SpeciesEvolution(Species.THIEVUL, 18, null, null)
],
[Species.GOSSIFLEUR]: [
new SpeciesEvolution(Species.ELDEGOSS, 20, null, null)
],
[Species.WOOLOO]: [
new SpeciesEvolution(Species.DUBWOOL, 24, null, null)
],
[Species.CHEWTLE]: [
new SpeciesEvolution(Species.DREDNAW, 22, null, null)
],
[Species.YAMPER]: [
new SpeciesEvolution(Species.BOLTUND, 25, null, null)
],
[Species.ROLYCOLY]: [
new SpeciesEvolution(Species.CARKOL, 18, null, null)
],
[Species.CARKOL]: [
new SpeciesEvolution(Species.COALOSSAL, 34, null, null)
],
[Species.SILICOBRA]: [
new SpeciesEvolution(Species.SANDACONDA, 36, null, null)
],
[Species.ARROKUDA]: [
new SpeciesEvolution(Species.BARRASKEWDA, 26, null, null)
],
[Species.TOXEL]: [
new SpeciesFormEvolution(Species.TOXTRICITY, "", "lowkey", 30, null,
new NatureEvolutionCondition([ Nature.LONELY, Nature.BOLD, Nature.RELAXED, Nature.TIMID, Nature.SERIOUS, Nature.MODEST, Nature.MILD, Nature.QUIET, Nature.BASHFUL, Nature.CALM, Nature.GENTLE, Nature.CAREFUL ])
),
new SpeciesFormEvolution(Species.TOXTRICITY, "", "amped", 30, null, null)
],
[Species.SIZZLIPEDE]: [
new SpeciesEvolution(Species.CENTISKORCH, 28, null, null)
],
[Species.HATENNA]: [
new SpeciesEvolution(Species.HATTREM, 32, null, null)
],
[Species.HATTREM]: [
new SpeciesEvolution(Species.HATTERENE, 42, null, null)
],
[Species.IMPIDIMP]: [
new SpeciesEvolution(Species.MORGREM, 32, null, null)
],
[Species.MORGREM]: [
new SpeciesEvolution(Species.GRIMMSNARL, 42, null, null)
],
[Species.CUFANT]: [
new SpeciesEvolution(Species.COPPERAJAH, 34, null, null)
],
[Species.DREEPY]: [
new SpeciesEvolution(Species.DRAKLOAK, 50, null, null)
],
[Species.DRAKLOAK]: [
new SpeciesEvolution(Species.DRAGAPULT, 60, null, null)
],
[Species.GALAR_MEOWTH]: [
new SpeciesEvolution(Species.PERRSERKER, 28, null, null)
],
[Species.GALAR_PONYTA]: [
new SpeciesEvolution(Species.GALAR_RAPIDASH, 40, null, null)
],
[Species.GALAR_FARFETCHD]: [
new SpeciesEvolution(Species.SIRFETCHD, 30, null, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.GALAR_SLOWPOKE]: [
new SpeciesEvolution(Species.GALAR_SLOWBRO, 1, EvolutionItem.GALARICA_CUFF, null, SpeciesWildEvolutionDelay.VERY_LONG),
new SpeciesEvolution(Species.GALAR_SLOWKING, 1, EvolutionItem.GALARICA_WREATH, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.GALAR_MR_MIME]: [
new SpeciesEvolution(Species.MR_RIME, 42, null, null)
],
[Species.GALAR_CORSOLA]: [
new SpeciesEvolution(Species.CURSOLA, 38, null, null)
],
[Species.GALAR_ZIGZAGOON]: [
new SpeciesEvolution(Species.GALAR_LINOONE, 20, null, null)
],
[Species.GALAR_LINOONE]: [
new SpeciesEvolution(Species.OBSTAGOON, 35, null, new TimeOfDayEvolutionCondition("night"))
],
[Species.GALAR_YAMASK]: [
new SpeciesEvolution(Species.RUNERIGUS, 34, null, null)
],
[Species.HISUI_ZORUA]: [
new SpeciesEvolution(Species.HISUI_ZOROARK, 30, null, null)
],
[Species.HISUI_SLIGGOO]: [
new SpeciesEvolution(Species.HISUI_GOODRA, 50, null, new WeatherEvolutionCondition([ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ]), SpeciesWildEvolutionDelay.LONG)
],
[Species.SPRIGATITO]: [
new SpeciesEvolution(Species.FLORAGATO, 16, null, null)
],
[Species.FLORAGATO]: [
new SpeciesEvolution(Species.MEOWSCARADA, 36, null, null)
],
[Species.FUECOCO]: [
new SpeciesEvolution(Species.CROCALOR, 16, null, null)
],
[Species.CROCALOR]: [
new SpeciesEvolution(Species.SKELEDIRGE, 36, null, null)
],
[Species.QUAXLY]: [
new SpeciesEvolution(Species.QUAXWELL, 16, null, null)
],
[Species.QUAXWELL]: [
new SpeciesEvolution(Species.QUAQUAVAL, 36, null, null)
],
[Species.LECHONK]: [
new SpeciesFormEvolution(Species.OINKOLOGNE, "", "female", 18, null, new GenderEvolutionCondition(Gender.FEMALE)),
new SpeciesFormEvolution(Species.OINKOLOGNE, "", "", 18, null, new GenderEvolutionCondition(Gender.MALE))
],
[Species.TAROUNTULA]: [
new SpeciesEvolution(Species.SPIDOPS, 15, null, null)
],
[Species.NYMBLE]: [
new SpeciesEvolution(Species.LOKIX, 24, null, null)
],
[Species.PAWMI]: [
new SpeciesEvolution(Species.PAWMO, 18, null, null)
],
[Species.PAWMO]: [
new SpeciesEvolution(Species.PAWMOT, 32, null, null)
],
[Species.TANDEMAUS]: [
new SpeciesFormEvolution(Species.MAUSHOLD, "", "three", 25, null, new TandemausEvolutionCondition()),
new SpeciesFormEvolution(Species.MAUSHOLD, "", "four", 25, null, null)
],
[Species.FIDOUGH]: [
new SpeciesEvolution(Species.DACHSBUN, 26, null, null)
],
[Species.SMOLIV]: [
new SpeciesEvolution(Species.DOLLIV, 25, null, null)
],
[Species.DOLLIV]: [
new SpeciesEvolution(Species.ARBOLIVA, 35, null, null)
],
[Species.NACLI]: [
new SpeciesEvolution(Species.NACLSTACK, 24, null, null)
],
[Species.NACLSTACK]: [
new SpeciesEvolution(Species.GARGANACL, 38, null, null)
],
[Species.WATTREL]: [
new SpeciesEvolution(Species.KILOWATTREL, 25, null, null)
],
[Species.MASCHIFF]: [
new SpeciesEvolution(Species.MABOSSTIFF, 30, null, null)
],
[Species.SHROODLE]: [
new SpeciesEvolution(Species.GRAFAIAI, 28, null, null)
],
[Species.BRAMBLIN]: [
new SpeciesEvolution(Species.BRAMBLEGHAST, 30, null, null)
],
[Species.TOEDSCOOL]: [
new SpeciesEvolution(Species.TOEDSCRUEL, 30, null, null)
],
[Species.RELLOR]: [
new SpeciesEvolution(Species.RABSCA, 29, null, null)
],
[Species.FLITTLE]: [
new SpeciesEvolution(Species.ESPATHRA, 35, null, null)
],
[Species.TINKATINK]: [
new SpeciesEvolution(Species.TINKATUFF, 24, null, null)
],
[Species.TINKATUFF]: [
new SpeciesEvolution(Species.TINKATON, 38, null, null)
],
[Species.WIGLETT]: [
new SpeciesEvolution(Species.WUGTRIO, 26, null, null)
],
[Species.FINIZEN]: [
new SpeciesEvolution(Species.PALAFIN, 38, null, null)
],
[Species.VAROOM]: [
new SpeciesEvolution(Species.REVAVROOM, 40, null, null)
],
[Species.GLIMMET]: [
new SpeciesEvolution(Species.GLIMMORA, 35, null, null)
],
[Species.GREAVARD]: [
new SpeciesEvolution(Species.HOUNDSTONE, 30, null, new TimeOfDayEvolutionCondition("night"))
],
[Species.FRIGIBAX]: [
new SpeciesEvolution(Species.ARCTIBAX, 35, null, null)
],
[Species.ARCTIBAX]: [
new SpeciesEvolution(Species.BAXCALIBUR, 54, null, null)
],
[Species.PALDEA_WOOPER]: [
new SpeciesEvolution(Species.CLODSIRE, 20, null, null)
],
[Species.PIKACHU]: [
new SpeciesFormEvolution(Species.ALOLA_RAICHU, "", "", 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ALOLA_RAICHU, "partner", "", 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.RAICHU, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.RAICHU, "partner", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.NIDORINA]: [
new SpeciesEvolution(Species.NIDOQUEEN, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.NIDORINO]: [
new SpeciesEvolution(Species.NIDOKING, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.CLEFAIRY]: [
new SpeciesEvolution(Species.CLEFABLE, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.VULPIX]: [
new SpeciesEvolution(Species.NINETALES, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.JIGGLYPUFF]: [
new SpeciesEvolution(Species.WIGGLYTUFF, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.GLOOM]: [
new SpeciesEvolution(Species.VILEPLUME, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesEvolution(Species.BELLOSSOM, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.GROWLITHE]: [
new SpeciesEvolution(Species.ARCANINE, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.POLIWHIRL]: [
new SpeciesEvolution(Species.POLIWRATH, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesEvolution(Species.POLITOED, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.WEEPINBELL]: [
new SpeciesEvolution(Species.VICTREEBEL, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.MAGNETON]: [
new SpeciesEvolution(Species.MAGNEZONE, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.SHELLDER]: [
new SpeciesEvolution(Species.CLOYSTER, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.EXEGGCUTE]: [
new SpeciesEvolution(Species.ALOLA_EXEGGUTOR, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesEvolution(Species.EXEGGUTOR, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.TANGELA]: [
new SpeciesEvolution(Species.TANGROWTH, 34, null, new MoveEvolutionCondition(Moves.ANCIENT_POWER), SpeciesWildEvolutionDelay.LONG)
],
[Species.LICKITUNG]: [
new SpeciesEvolution(Species.LICKILICKY, 32, null, new MoveEvolutionCondition(Moves.ROLLOUT), SpeciesWildEvolutionDelay.LONG)
],
[Species.STARYU]: [
new SpeciesEvolution(Species.STARMIE, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.EEVEE]: [
new SpeciesFormEvolution(Species.SYLVEON, "", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, PokemonType.FAIRY), SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.SYLVEON, "partner", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, PokemonType.FAIRY), SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ESPEON, "", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ESPEON, "partner", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.UMBREON, "", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "night"), SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.UMBREON, "partner", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "night"), SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.VAPOREON, "", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.VAPOREON, "partner", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.JOLTEON, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.JOLTEON, "partner", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.FLAREON, "", "", 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.FLAREON, "partner", "", 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.LEAFEON, "", "", 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.LEAFEON, "partner", "", 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.GLACEON, "", "", 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.GLACEON, "partner", "", 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.TOGETIC]: [
new SpeciesEvolution(Species.TOGEKISS, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.AIPOM]: [
new SpeciesEvolution(Species.AMBIPOM, 32, null, new MoveEvolutionCondition(Moves.DOUBLE_HIT), SpeciesWildEvolutionDelay.LONG)
],
[Species.SUNKERN]: [
new SpeciesEvolution(Species.SUNFLORA, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.YANMA]: [
new SpeciesEvolution(Species.YANMEGA, 33, null, new MoveEvolutionCondition(Moves.ANCIENT_POWER), SpeciesWildEvolutionDelay.LONG)
],
[Species.MURKROW]: [
new SpeciesEvolution(Species.HONCHKROW, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.MISDREAVUS]: [
new SpeciesEvolution(Species.MISMAGIUS, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.GIRAFARIG]: [
new SpeciesEvolution(Species.FARIGIRAF, 32, null, new MoveEvolutionCondition(Moves.TWIN_BEAM), SpeciesWildEvolutionDelay.LONG)
],
[Species.DUNSPARCE]: [
new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "three-segment", 32, null, new DunsparceEvolutionCondition(), SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "two-segment", 32, null, new MoveEvolutionCondition(Moves.HYPER_DRILL), SpeciesWildEvolutionDelay.LONG)
],
[Species.GLIGAR]: [
new SpeciesEvolution(Species.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new TimeOfDayEvolutionCondition("night") /* Razor fang at night*/, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.SNEASEL]: [
new SpeciesEvolution(Species.WEAVILE, 1, EvolutionItem.RAZOR_CLAW, new TimeOfDayEvolutionCondition("night") /* Razor claw at night*/, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.URSARING]: [
new SpeciesEvolution(Species.URSALUNA, 1, EvolutionItem.PEAT_BLOCK, null, SpeciesWildEvolutionDelay.VERY_LONG) //Ursaring does not evolve into Bloodmoon Ursaluna
],
[Species.PILOSWINE]: [
new SpeciesEvolution(Species.MAMOSWINE, 1, null, new MoveEvolutionCondition(Moves.ANCIENT_POWER), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.STANTLER]: [
new SpeciesEvolution(Species.WYRDEER, 25, null, new MoveEvolutionCondition(Moves.PSYSHIELD_BASH), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.LOMBRE]: [
new SpeciesEvolution(Species.LUDICOLO, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.NUZLEAF]: [
new SpeciesEvolution(Species.SHIFTRY, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.NOSEPASS]: [
new SpeciesEvolution(Species.PROBOPASS, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.SKITTY]: [
new SpeciesEvolution(Species.DELCATTY, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.ROSELIA]: [
new SpeciesEvolution(Species.ROSERADE, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.BONSLY]: [
new SpeciesEvolution(Species.SUDOWOODO, 1, null, new MoveEvolutionCondition(Moves.MIMIC), SpeciesWildEvolutionDelay.MEDIUM)
],
[Species.MIME_JR]: [
new SpeciesEvolution(Species.GALAR_MR_MIME, 1, null, new MoveTimeOfDayEvolutionCondition(Moves.MIMIC, "night"), SpeciesWildEvolutionDelay.MEDIUM),
new SpeciesEvolution(Species.MR_MIME, 1, null, new MoveTimeOfDayEvolutionCondition(Moves.MIMIC, "day"), SpeciesWildEvolutionDelay.MEDIUM)
],
[Species.PANSAGE]: [
new SpeciesEvolution(Species.SIMISAGE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.PANSEAR]: [
new SpeciesEvolution(Species.SIMISEAR, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.PANPOUR]: [
new SpeciesEvolution(Species.SIMIPOUR, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.MUNNA]: [
new SpeciesEvolution(Species.MUSHARNA, 1, EvolutionItem.MOON_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.COTTONEE]: [
new SpeciesEvolution(Species.WHIMSICOTT, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.PETILIL]: [
new SpeciesEvolution(Species.HISUI_LILLIGANT, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesEvolution(Species.LILLIGANT, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.BASCULIN]: [
new SpeciesFormEvolution(Species.BASCULEGION, "white-striped", "female", 40, null, new GenderEvolutionCondition(Gender.FEMALE), SpeciesWildEvolutionDelay.VERY_LONG),
new SpeciesFormEvolution(Species.BASCULEGION, "white-striped", "male", 40, null, new GenderEvolutionCondition(Gender.MALE), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.MINCCINO]: [
new SpeciesEvolution(Species.CINCCINO, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.EELEKTRIK]: [
new SpeciesEvolution(Species.EELEKTROSS, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.LAMPENT]: [
new SpeciesEvolution(Species.CHANDELURE, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.FLOETTE]: [
new SpeciesEvolution(Species.FLORGES, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.DOUBLADE]: [
new SpeciesEvolution(Species.AEGISLASH, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.HELIOPTILE]: [
new SpeciesEvolution(Species.HELIOLISK, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.CHARJABUG]: [
new SpeciesEvolution(Species.VIKAVOLT, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.CRABRAWLER]: [
new SpeciesEvolution(Species.CRABOMINABLE, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.ROCKRUFF]: [
new SpeciesFormEvolution(Species.LYCANROC, "own-tempo", "dusk", 25, null, null),
new SpeciesFormEvolution(Species.LYCANROC, "", "midday", 25, null, new TimeOfDayEvolutionCondition("day")),
new SpeciesFormEvolution(Species.LYCANROC, "", "midnight", 25, null, new TimeOfDayEvolutionCondition("night"))
],
[Species.STEENEE]: [
new SpeciesEvolution(Species.TSAREENA, 28, null, new MoveEvolutionCondition(Moves.STOMP), SpeciesWildEvolutionDelay.LONG)
],
[Species.POIPOLE]: [
new SpeciesEvolution(Species.NAGANADEL, 1, null, new MoveEvolutionCondition(Moves.DRAGON_PULSE), 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.APPLIN]: [
new SpeciesEvolution(Species.DIPPLIN, 1, EvolutionItem.SYRUPY_APPLE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesEvolution(Species.FLAPPLE, 1, EvolutionItem.TART_APPLE, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesEvolution(Species.APPLETUN, 1, EvolutionItem.SWEET_APPLE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.CLOBBOPUS]: [
new SpeciesEvolution(Species.GRAPPLOCT, 35, null, new MoveEvolutionCondition(Moves.TAUNT)/*Once Taunt is implemented, change evo level to 1 and delay to LONG*/)
],
[Species.SINISTEA]: [
new SpeciesFormEvolution(Species.POLTEAGEIST, "phony", "phony", 1, EvolutionItem.CRACKED_POT, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.POLTEAGEIST, "antique", "antique", 1, EvolutionItem.CHIPPED_POT, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.MILCERY]: [
new SpeciesFormEvolution(Species.ALCREMIE, "", "vanilla-cream", 1, EvolutionItem.STRAWBERRY_SWEET,
new BiomeEvolutionCondition([ Biome.TOWN, Biome.PLAINS, Biome.GRASS, Biome.TALL_GRASS, Biome.METROPOLIS ]),
SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-cream", 1, EvolutionItem.STRAWBERRY_SWEET,
new BiomeEvolutionCondition([ Biome.BADLANDS, Biome.VOLCANO, Biome.GRAVEYARD, Biome.FACTORY, Biome.SLUM ]),
SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ALCREMIE, "", "matcha-cream", 1, EvolutionItem.STRAWBERRY_SWEET,
new BiomeEvolutionCondition([ Biome.FOREST, Biome.SWAMP, Biome.MEADOW, Biome.JUNGLE ]),
SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ALCREMIE, "", "mint-cream", 1, EvolutionItem.STRAWBERRY_SWEET,
new BiomeEvolutionCondition([ Biome.SEA, Biome.BEACH, Biome.LAKE, Biome.SEABED ]),
SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ALCREMIE, "", "lemon-cream", 1, EvolutionItem.STRAWBERRY_SWEET,
new BiomeEvolutionCondition([ Biome.DESERT, Biome.POWER_PLANT, Biome.DOJO, Biome.RUINS, Biome.CONSTRUCTION_SITE ]),
SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ALCREMIE, "", "salted-cream", 1, EvolutionItem.STRAWBERRY_SWEET,
new BiomeEvolutionCondition([ Biome.MOUNTAIN, Biome.CAVE, Biome.ICE_CAVE, Biome.FAIRY_CAVE, Biome.SNOWY_FOREST ]),
SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-swirl", 1, EvolutionItem.STRAWBERRY_SWEET,
new BiomeEvolutionCondition([ Biome.WASTELAND, Biome.LABORATORY ]),
SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ALCREMIE, "", "caramel-swirl", 1, EvolutionItem.STRAWBERRY_SWEET,
new BiomeEvolutionCondition([ Biome.TEMPLE, Biome.ISLAND ]),
SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.ALCREMIE, "", "rainbow-swirl", 1, EvolutionItem.STRAWBERRY_SWEET,
new BiomeEvolutionCondition([ Biome.ABYSS, Biome.SPACE, Biome.END ]),
SpeciesWildEvolutionDelay.LONG)
],
[Species.DURALUDON]: [
new SpeciesFormEvolution(Species.ARCHALUDON, "", "", 1, EvolutionItem.METAL_ALLOY, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.KUBFU]: [
new SpeciesFormEvolution(Species.URSHIFU, "", "single-strike", 1, EvolutionItem.SCROLL_OF_DARKNESS, null, SpeciesWildEvolutionDelay.VERY_LONG),
new SpeciesFormEvolution(Species.URSHIFU, "", "rapid-strike", 1, EvolutionItem.SCROLL_OF_WATERS, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.GALAR_DARUMAKA]: [
new SpeciesEvolution(Species.GALAR_DARMANITAN, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.HISUI_GROWLITHE]: [
new SpeciesEvolution(Species.HISUI_ARCANINE, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.HISUI_VOLTORB]: [
new SpeciesEvolution(Species.HISUI_ELECTRODE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.HISUI_QWILFISH]: [
new SpeciesEvolution(Species.OVERQWIL, 28, null, new MoveEvolutionCondition(Moves.BARB_BARRAGE), SpeciesWildEvolutionDelay.LONG)
],
[Species.HISUI_SNEASEL]: [
new SpeciesEvolution(Species.SNEASLER, 1, EvolutionItem.RAZOR_CLAW, new TimeOfDayEvolutionCondition("day") /* Razor claw at day*/, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.CHARCADET]: [
new SpeciesEvolution(Species.ARMAROUGE, 1, EvolutionItem.AUSPICIOUS_ARMOR, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesEvolution(Species.CERULEDGE, 1, EvolutionItem.MALICIOUS_ARMOR, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.TADBULB]: [
new SpeciesEvolution(Species.BELLIBOLT, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.CAPSAKID]: [
new SpeciesEvolution(Species.SCOVILLAIN, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.CETODDLE]: [
new SpeciesEvolution(Species.CETITAN, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.POLTCHAGEIST]: [
new SpeciesFormEvolution(Species.SINISTCHA, "counterfeit", "unremarkable", 1, EvolutionItem.UNREMARKABLE_TEACUP, null, SpeciesWildEvolutionDelay.LONG),
new SpeciesFormEvolution(Species.SINISTCHA, "artisan", "masterpiece", 1, EvolutionItem.MASTERPIECE_TEACUP, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.DIPPLIN]: [
new SpeciesEvolution(Species.HYDRAPPLE, 1, null, new MoveEvolutionCondition(Moves.DRAGON_CHEER), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.KADABRA]: [
new SpeciesEvolution(Species.ALAKAZAM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.MACHOKE]: [
new SpeciesEvolution(Species.MACHAMP, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.GRAVELER]: [
new SpeciesEvolution(Species.GOLEM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.HAUNTER]: [
new SpeciesEvolution(Species.GENGAR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.ONIX]: [
new SpeciesEvolution(Species.STEELIX, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(PokemonType.STEEL), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.RHYDON]: [
new SpeciesEvolution(Species.RHYPERIOR, 1, EvolutionItem.PROTECTOR, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.SEADRA]: [
new SpeciesEvolution(Species.KINGDRA, 1, EvolutionItem.DRAGON_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.SCYTHER]: [
new SpeciesEvolution(Species.SCIZOR, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(PokemonType.STEEL), SpeciesWildEvolutionDelay.VERY_LONG),
new SpeciesEvolution(Species.KLEAVOR, 1, EvolutionItem.BLACK_AUGURITE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.ELECTABUZZ]: [
new SpeciesEvolution(Species.ELECTIVIRE, 1, EvolutionItem.ELECTIRIZER, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.MAGMAR]: [
new SpeciesEvolution(Species.MAGMORTAR, 1, EvolutionItem.MAGMARIZER, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.PORYGON]: [
new SpeciesEvolution(Species.PORYGON2, 1, EvolutionItem.UPGRADE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.PORYGON2]: [
new SpeciesEvolution(Species.PORYGON_Z, 1, EvolutionItem.DUBIOUS_DISC, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.FEEBAS]: [
new SpeciesEvolution(Species.MILOTIC, 1, EvolutionItem.PRISM_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.DUSCLOPS]: [
new SpeciesEvolution(Species.DUSKNOIR, 1, EvolutionItem.REAPER_CLOTH, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.CLAMPERL]: [
new SpeciesEvolution(Species.HUNTAIL, 1, EvolutionItem.LINKING_CORD, new GenderEvolutionCondition(Gender.MALE /* Deep Sea Tooth */), SpeciesWildEvolutionDelay.VERY_LONG),
new SpeciesEvolution(Species.GOREBYSS, 1, EvolutionItem.LINKING_CORD, new GenderEvolutionCondition(Gender.FEMALE /* Deep Sea Scale */), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.BOLDORE]: [
new SpeciesEvolution(Species.GIGALITH, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.GURDURR]: [
new SpeciesEvolution(Species.CONKELDURR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.KARRABLAST]: [
new SpeciesEvolution(Species.ESCAVALIER, 1, EvolutionItem.LINKING_CORD, new CaughtEvolutionCondition(Species.SHELMET), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.SHELMET]: [
new SpeciesEvolution(Species.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new CaughtEvolutionCondition(Species.KARRABLAST), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.SPRITZEE]: [
new SpeciesEvolution(Species.AROMATISSE, 1, EvolutionItem.SACHET, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.SWIRLIX]: [
new SpeciesEvolution(Species.SLURPUFF, 1, EvolutionItem.WHIPPED_DREAM, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.PHANTUMP]: [
new SpeciesEvolution(Species.TREVENANT, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.PUMPKABOO]: [
new SpeciesEvolution(Species.GOURGEIST, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.ALOLA_GRAVELER]: [
new SpeciesEvolution(Species.ALOLA_GOLEM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.PRIMEAPE]: [
new SpeciesEvolution(Species.ANNIHILAPE, 35, null, new MoveEvolutionCondition(Moves.RAGE_FIST), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.GOLBAT]: [
new SpeciesEvolution(Species.CROBAT, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.CHANSEY]: [
new SpeciesEvolution(Species.BLISSEY, 1, null, new FriendshipEvolutionCondition(200), SpeciesWildEvolutionDelay.LONG)
],
[Species.PICHU]: [
new SpeciesFormEvolution(Species.PIKACHU, "spiky", "partner", 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT),
new SpeciesFormEvolution(Species.PIKACHU, "", "", 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT),
],
[Species.CLEFFA]: [
new SpeciesEvolution(Species.CLEFAIRY, 1, null, new FriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT)
],
[Species.IGGLYBUFF]: [
new SpeciesEvolution(Species.JIGGLYPUFF, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT)
],
[Species.TOGEPI]: [
new SpeciesEvolution(Species.TOGETIC, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT)
],
[Species.AZURILL]: [
new SpeciesEvolution(Species.MARILL, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT)
],
[Species.BUDEW]: [
new SpeciesEvolution(Species.ROSELIA, 1, null, new FriendshipTimeOfDayEvolutionCondition(70, "day"), SpeciesWildEvolutionDelay.SHORT)
],
[Species.BUNEARY]: [
new SpeciesEvolution(Species.LOPUNNY, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.MEDIUM)
],
[Species.CHINGLING]: [
new SpeciesEvolution(Species.CHIMECHO, 1, null, new FriendshipTimeOfDayEvolutionCondition(90, "night"), SpeciesWildEvolutionDelay.MEDIUM)
],
[Species.HAPPINY]: [
new SpeciesEvolution(Species.CHANSEY, 1, null, new FriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT)
],
[Species.MUNCHLAX]: [
new SpeciesEvolution(Species.SNORLAX, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG)
],
[Species.RIOLU]: [
new SpeciesEvolution(Species.LUCARIO, 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG)
],
[Species.WOOBAT]: [
new SpeciesEvolution(Species.SWOOBAT, 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.MEDIUM)
],
[Species.SWADLOON]: [
new SpeciesEvolution(Species.LEAVANNY, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG)
],
[Species.TYPE_NULL]: [
new SpeciesEvolution(Species.SILVALLY, 1, null, new FriendshipEvolutionCondition(100), SpeciesWildEvolutionDelay.LONG)
],
[Species.ALOLA_MEOWTH]: [
new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG)
],
[Species.SNOM]: [
new SpeciesEvolution(Species.FROSMOTH, 1, null, new FriendshipTimeOfDayEvolutionCondition(90, "night"), SpeciesWildEvolutionDelay.MEDIUM)
],
[Species.GIMMIGHOUL]: [
new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new TreasureEvolutionCondition(), SpeciesWildEvolutionDelay.VERY_LONG),
new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new TreasureEvolutionCondition(), SpeciesWildEvolutionDelay.VERY_LONG)
]
};
interface PokemonPrevolutions {
[key: string]: Species
}
export const pokemonPrevolutions: PokemonPrevolutions = {};
export function initPokemonPrevolutions(): void {
const megaFormKeys = [ SpeciesFormKey.MEGA, "", SpeciesFormKey.MEGA_X, "", SpeciesFormKey.MEGA_Y ].map(sfk => sfk as string);
const prevolutionKeys = Object.keys(pokemonEvolutions);
prevolutionKeys.forEach(pk => {
const evolutions = pokemonEvolutions[pk];
for (const ev of evolutions) {
if (ev.evoFormKey && megaFormKeys.indexOf(ev.evoFormKey) > -1) {
continue;
}
pokemonPrevolutions[ev.speciesId] = Number.parseInt(pk) as Species;
}
});
}
// TODO: This may cause funny business for double starters such as Pichu/Pikachu
export const pokemonStarters: PokemonPrevolutions = {};
export function initPokemonStarters(): void {
const starterKeys = Object.keys(pokemonPrevolutions);
starterKeys.forEach(pk => {
const prevolution = pokemonPrevolutions[pk];
if (speciesStarterCosts.hasOwnProperty(prevolution)) {
pokemonStarters[pk] = prevolution;
} else {
pokemonStarters[pk] = pokemonPrevolutions[prevolution];
}
});
}