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