From 659bc82676ec23dd0193ce54ba459cff5c422084 Mon Sep 17 00:00:00 2001 From: damocleas Date: Sun, 2 Mar 2025 12:19:17 -0500 Subject: [PATCH 01/19] [i18n] Up version to 1.7.6, Update locales submodule --- package-lock.json | 4 ++-- package.json | 2 +- public/locales | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index d31469f4a45..453a525581b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pokemon-rogue-battle", - "version": "1.7.5", + "version": "1.7.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.7.5", + "version": "1.7.6", "hasInstallScript": true, "dependencies": { "@material/material-color-utilities": "^0.2.7", diff --git a/package.json b/package.json index 1953b886c80..4c9204f60f9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.7.5", + "version": "1.7.6", "type": "module", "scripts": { "start": "vite", diff --git a/public/locales b/public/locales index b4534f03ba8..0e5c6096ba2 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit b4534f03ba8eb8709486ee967257b6f3725702dd +Subproject commit 0e5c6096ba26f6b87aed1aab3fe9b0b23f6cbb7b From 73afb35c4d745d136287199225a04a6b8ea3db26 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sun, 2 Mar 2025 12:40:40 -0600 Subject: [PATCH 02/19] [GitHub] Update CODEOWNERS to fix team ownership (#5465) --- .github/CODEOWNERS | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8e7606f0a48..79ab1bdc38a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,4 +4,19 @@ * @pagefaultgames/junior-dev-team # github actions/templates etc. - Dev Leads -/.github @pagefaultgames/dev-leads +/.github @pagefaultgames/senior-dev-team + +# Art Team +/public/**/*.png @pagefaultgames/art-team +/public/**/*.json @pagefaultgames/art-team +/public/images @pagefaultgames/art-team +/public/battle-anims @pagefaultgames/art-team + +# Audio files +*.mp3 @pagefaultgames/composer-team +*.wav @pagefaultgames/composer-team +*.ogg @pagefaultgames/composer-team +/public/audio @pagefaultgames/composer-team + +# Balance Files; contain actual code logic and must also be owned by dev team +/src/data/balance @pagefaultgames/balance-team @pagefaultgames/junior-dev-team \ No newline at end of file From 6f686a05e39cb75c2ee110ab996b2b4ed0735cb0 Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Sun, 2 Mar 2025 20:35:59 +0100 Subject: [PATCH 03/19] [UI/UX] [Bug] Hiding tera button when toggling on stats mode (#5466) --- src/ui/starter-select-ui-handler.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 543e24d3b97..34a29411de4 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -3353,7 +3353,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.canCycleForm = species.forms.filter(f => f.isStarterSelectable || !pokemonFormChanges[species.speciesId]?.find(fc => fc.formKey)) .map((_, f) => dexEntry.caughtAttr & globalScene.gameData.getFormAttr(f)).filter(f => f).length > 1; this.canCycleNature = globalScene.gameData.getNaturesForAttr(dexEntry.natureAttr).length > 1; - this.canCycleTera = globalScene.gameData.achvUnlocks.hasOwnProperty(achvs.TERASTALLIZE.id) && !Utils.isNullOrUndefined(getPokemonSpeciesForm(species.speciesId, formIndex ?? 0).type2); + this.canCycleTera = !this.statsMode && globalScene.gameData.achvUnlocks.hasOwnProperty(achvs.TERASTALLIZE.id) && !Utils.isNullOrUndefined(getPokemonSpeciesForm(species.speciesId, formIndex ?? 0).type2); } if (dexEntry.caughtAttr && species.malePercent !== null) { @@ -3858,12 +3858,20 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.showStats(); this.statsMode = true; this.pokemonSprite.setVisible(false); + this.teraIcon.setVisible(false); + this.canCycleTera = false; + this.updateInstructions(); } else { this.statsMode = false; this.statsContainer.setVisible(false); this.pokemonSprite.setVisible(!!this.speciesStarterDexEntry?.caughtAttr); //@ts-ignore this.statsContainer.updateIvs(null); // TODO: resolve ts-ignore. !?!? + this.teraIcon.setVisible(globalScene.gameData.achvUnlocks.hasOwnProperty(achvs.TERASTALLIZE.id)); + const props = globalScene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)); + const formIndex = props.formIndex; + this.canCycleTera = !this.statsMode && globalScene.gameData.achvUnlocks.hasOwnProperty(achvs.TERASTALLIZE.id) && !Utils.isNullOrUndefined(getPokemonSpeciesForm(this.lastSpecies.speciesId, formIndex ?? 0).type2); + this.updateInstructions(); } } From 5e469620ef8ed098d22c79d279ecdfdbaed0ba22 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sun, 2 Mar 2025 19:15:51 -0600 Subject: [PATCH 04/19] [Bug] Fix battle-anims crashing in certain cases (#5337) --- src/data/battle-anims.ts | 132 +++++++++++++++++++++------------------ 1 file changed, 70 insertions(+), 62 deletions(-) diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index a179f3a3e9b..a42779563f2 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -1,7 +1,20 @@ import { globalScene } from "#app/global-scene"; -import { AttackMove, BeakBlastHeaderAttr, DelayedAttackAttr, MoveFlags, SelfStatusMove, allMoves } from "./move"; +import { + AttackMove, + BeakBlastHeaderAttr, + DelayedAttackAttr, + MoveFlags, + SelfStatusMove, + allMoves, +} from "./move"; import type Pokemon from "../field/pokemon"; -import * as Utils from "../utils"; +import { + type nil, + getFrameMs, + getEnumKeys, + getEnumValues, + animationFileName, +} from "../utils"; import type { BattlerIndex } from "../battle"; import type { Element } from "json-stable-stringify"; import { Moves } from "#enums/moves"; @@ -401,7 +414,7 @@ class AnimTimedUpdateBgEvent extends AnimTimedBgEvent { if (Object.keys(tweenProps).length) { globalScene.tweens.add(Object.assign({ targets: moveAnim.bgSprite, - duration: Utils.getFrameMs(this.duration * 3) + duration: getFrameMs(this.duration * 3) }, tweenProps)); } return this.duration * 2; @@ -437,7 +450,7 @@ class AnimTimedAddBgEvent extends AnimTimedBgEvent { globalScene.tweens.add({ targets: moveAnim.bgSprite, - duration: Utils.getFrameMs(this.duration * 3) + duration: getFrameMs(this.duration * 3) }); return this.duration * 2; @@ -455,8 +468,8 @@ export const encounterAnims = new Map(); export function initCommonAnims(): Promise { return new Promise(resolve => { - const commonAnimNames = Utils.getEnumKeys(CommonAnim); - const commonAnimIds = Utils.getEnumValues(CommonAnim); + const commonAnimNames = getEnumKeys(CommonAnim); + const commonAnimIds = getEnumValues(CommonAnim); const commonAnimFetches: Promise>[] = []; for (let ca = 0; ca < commonAnimIds.length; ca++) { const commonAnimId = commonAnimIds[ca]; @@ -493,7 +506,7 @@ export function initMoveAnim(move: Moves): Promise { const defaultMoveAnim = allMoves[move] instanceof AttackMove ? Moves.TACKLE : allMoves[move] instanceof SelfStatusMove ? Moves.FOCUS_ENERGY : Moves.TAIL_WHIP; const fetchAnimAndResolve = (move: Moves) => { - globalScene.cachedFetch(`./battle-anims/${Utils.animationFileName(move)}.json`) + globalScene.cachedFetch(`./battle-anims/${animationFileName(move)}.json`) .then(response => { const contentType = response.headers.get("content-type"); if (!response.ok || contentType?.indexOf("application/json") === -1) { @@ -550,7 +563,7 @@ function useDefaultAnim(move: Moves, defaultMoveAnim: Moves) { * @remarks use {@linkcode useDefaultAnim} to use a default animation */ function logMissingMoveAnim(move: Moves, ...optionalParams: any[]) { - const moveName = Utils.animationFileName(move); + const moveName = animationFileName(move); console.warn(`Could not load animation file for move '${moveName}'`, ...optionalParams); } @@ -560,7 +573,7 @@ function logMissingMoveAnim(move: Moves, ...optionalParams: any[]) { */ export async function initEncounterAnims(encounterAnim: EncounterAnim | EncounterAnim[]): Promise { const anims = Array.isArray(encounterAnim) ? encounterAnim : [ encounterAnim ]; - const encounterAnimNames = Utils.getEnumKeys(EncounterAnim); + const encounterAnimNames = getEnumKeys(EncounterAnim); const encounterAnimFetches: Promise>[] = []; for (const anim of anims) { if (encounterAnims.has(anim) && !isNullOrUndefined(encounterAnims.get(anim))) { @@ -922,7 +935,7 @@ export abstract class BattleAnim { let f = 0; globalScene.tweens.addCounter({ - duration: Utils.getFrameMs(3), + duration: getFrameMs(3), repeat: anim?.frames.length ?? 0, onRepeat: () => { if (!f) { @@ -994,47 +1007,39 @@ export abstract class BattleAnim { const moveSprite = sprites[graphicIndex]; if (spritePriorities[graphicIndex] !== frame.priority) { spritePriorities[graphicIndex] = frame.priority; + /** Move the position that the moveSprite is rendered in based on the priority. + * @param priority The priority level to draw the sprite. + * - 0: Draw the sprite in front of the pokemon on the field. + * - 1: Draw the sprite in front of the user pokemon. + * - 2: Draw the sprite in front of its `bgSprite` (if it has one), or its + * `AnimFocus` (if that is user/target), otherwise behind everything. + * - 3: Draw the sprite behind its `AnimFocus` (if that is user/target), otherwise in front of everything. + */ const setSpritePriority = (priority: number) => { - switch (priority) { - case 0: - globalScene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, globalScene.getEnemyPokemon(false) ?? globalScene.getPlayerPokemon(false)!); // TODO: is this bang correct? - break; - case 1: - globalScene.field.moveTo(moveSprite, globalScene.field.getAll().length - 1); - break; - case 2: - switch (frame.focus) { - case AnimFocus.USER: - if (this.bgSprite) { - globalScene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.bgSprite); - } else { - globalScene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.user!); // TODO: is this bang correct? - } - break; - case AnimFocus.TARGET: - globalScene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.target!); // TODO: is this bang correct? - break; - default: - setSpritePriority(1); - break; - } - break; - case 3: - switch (frame.focus) { - case AnimFocus.USER: - globalScene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.user!); // TODO: is this bang correct? - break; - case AnimFocus.TARGET: - globalScene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.target!); // TODO: is this bang correct? - break; - default: - setSpritePriority(1); - break; - } - break; - default: - setSpritePriority(1); + /** The sprite we are moving the moveSprite in relation to */ + let targetSprite: Phaser.GameObjects.GameObject | nil; + /** The method that is being used to move the sprite.*/ + let moveFunc: ((sprite: Phaser.GameObjects.GameObject, target: Phaser.GameObjects.GameObject) => void) | + ((sprite: Phaser.GameObjects.GameObject) => void) = globalScene.field.bringToTop; + + if (priority === 0) { // Place the sprite in front of the pokemon on the field. + targetSprite = globalScene.getEnemyField().find(p => p) ?? globalScene.getPlayerField().find(p => p); + console.log(typeof targetSprite); + moveFunc = globalScene.field.moveBelow; + } else if (priority === 2 && this.bgSprite) { + moveFunc = globalScene.field.moveAbove; + targetSprite = this.bgSprite; + } else if (priority === 2 || priority === 3) { + moveFunc = priority === 2 ? globalScene.field.moveBelow : globalScene.field.moveAbove; + if (frame.focus === AnimFocus.USER) { + targetSprite = this.user; + } else if (frame.focus === AnimFocus.TARGET) { + targetSprite = this.target; + } } + // If target sprite is not undefined and exists in the field container, then move the sprite using the moveFunc. + // Otherwise, default to just bringing it to the top. + targetSprite && globalScene.field.exists(targetSprite) ? moveFunc.bind(globalScene.field)(moveSprite as Phaser.GameObjects.GameObject, targetSprite) : globalScene.field.bringToTop(moveSprite as Phaser.GameObjects.GameObject); }; setSpritePriority(frame.priority); } @@ -1052,11 +1057,13 @@ export abstract class BattleAnim { } } if (anim?.frameTimedEvents.has(f)) { - for (const event of anim.frameTimedEvents.get(f)!) { // TODO: is this bang correct? - r = Math.max((anim.frames.length - f) + event.execute(this), r); + const base = anim.frames.length - f; + // Bang is correct due to `has` check above, which cannot return true for an undefined / null `f` + for (const event of anim.frameTimedEvents.get(f)!) { + r = Math.max(base + event.execute(this), r); } } - const targets = Utils.getEnumValues(AnimFrameTarget); + const targets = getEnumValues(AnimFrameTarget); for (const i of targets) { const count = i === AnimFrameTarget.GRAPHIC ? g : i === AnimFrameTarget.USER ? u : t; if (count < spriteCache[i].length) { @@ -1084,7 +1091,7 @@ export abstract class BattleAnim { } if (r) { globalScene.tweens.addCounter({ - duration: Utils.getFrameMs(r), + duration: getFrameMs(r), onComplete: () => cleanUpAndComplete() }); } else { @@ -1166,7 +1173,7 @@ export abstract class BattleAnim { let existingFieldSprites = globalScene.field.getAll().slice(0); globalScene.tweens.addCounter({ - duration: Utils.getFrameMs(3) * frameTimeMult, + duration: getFrameMs(3) * frameTimeMult, repeat: anim!.frames.length, onRepeat: () => { existingFieldSprites = globalScene.field.getAll().slice(0); @@ -1215,11 +1222,12 @@ export abstract class BattleAnim { } } if (anim?.frameTimedEvents.get(frameCount)) { + const base = anim.frames.length - frameCount; for (const event of anim.frameTimedEvents.get(frameCount)!) { - totalFrames = Math.max((anim.frames.length - frameCount) + event.execute(this, frameTimedEventPriority), totalFrames); + totalFrames = Math.max(base + event.execute(this, frameTimedEventPriority), totalFrames); } } - const targets = Utils.getEnumValues(AnimFrameTarget); + const targets = getEnumValues(AnimFrameTarget); for (const i of targets) { const count = graphicFrameCount; if (count < spriteCache[i].length) { @@ -1244,7 +1252,7 @@ export abstract class BattleAnim { } if (totalFrames) { globalScene.tweens.addCounter({ - duration: Utils.getFrameMs(totalFrames), + duration: getFrameMs(totalFrames), onComplete: () => cleanUpAndComplete() }); } else { @@ -1342,15 +1350,15 @@ export class EncounterBattleAnim extends BattleAnim { } export async function populateAnims() { - const commonAnimNames = Utils.getEnumKeys(CommonAnim).map(k => k.toLowerCase()); + const commonAnimNames = getEnumKeys(CommonAnim).map(k => k.toLowerCase()); const commonAnimMatchNames = commonAnimNames.map(k => k.replace(/\_/g, "")); - const commonAnimIds = Utils.getEnumValues(CommonAnim) as CommonAnim[]; - const chargeAnimNames = Utils.getEnumKeys(ChargeAnim).map(k => k.toLowerCase()); + const commonAnimIds = getEnumValues(CommonAnim) as CommonAnim[]; + const chargeAnimNames = getEnumKeys(ChargeAnim).map(k => k.toLowerCase()); const chargeAnimMatchNames = chargeAnimNames.map(k => k.replace(/\_/g, " ")); - const chargeAnimIds = Utils.getEnumValues(ChargeAnim) as ChargeAnim[]; + const chargeAnimIds = getEnumValues(ChargeAnim) as ChargeAnim[]; const commonNamePattern = /name: (?:Common:)?(Opp )?(.*)/; const moveNameToId = {}; - for (const move of Utils.getEnumValues(Moves).slice(1)) { + for (const move of getEnumValues(Moves).slice(1)) { const moveName = Moves[move].toUpperCase().replace(/\_/g, ""); moveNameToId[moveName] = move; } From cabcfcbd39968c01cb03e4e76288a716926687b1 Mon Sep 17 00:00:00 2001 From: Xavion3 Date: Mon, 3 Mar 2025 13:22:37 +1100 Subject: [PATCH 05/19] [Balance] Make megas/max player pokemon unable to tera (#5469) Co-authored-by: damocleas --- src/field/pokemon.ts | 14 ++++++++++++-- src/ui/command-ui-handler.ts | 5 ++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index f0486a8f111..53d4b6c54d2 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1226,10 +1226,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Checks if the {@linkcode Pokemon} has is the specified {@linkcode Species} or is fused with it. * @param species the pokemon {@linkcode Species} to check + * @param formKey If provided, requires the species to be in that form * @returns `true` if the pokemon is the species or is fused with it, `false` otherwise */ - hasSpecies(species: Species): boolean { - return this.species.speciesId === species || this.fusionSpecies?.speciesId === species; + hasSpecies(species: Species, formKey?: string): boolean { + if (Utils.isNullOrUndefined(formKey)) { + return this.species.speciesId === species || this.fusionSpecies?.speciesId === species; + } + + return (this.species.speciesId === species && this.getFormKey() === formKey) || (this.fusionSpecies?.speciesId === species && this.getFusionFormKey() === formKey); } abstract isBoss(): boolean; @@ -3204,6 +3209,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return maxForms.includes(this.getFormKey()) || (!!this.getFusionFormKey() && maxForms.includes(this.getFusionFormKey()!)); } + isMega(): boolean { + const megaForms = [ SpeciesFormKey.MEGA, SpeciesFormKey.MEGA_X, SpeciesFormKey.MEGA_Y, SpeciesFormKey.PRIMAL ] as string[]; + return megaForms.includes(this.getFormKey()) || (!!this.getFusionFormKey() && megaForms.includes(this.getFusionFormKey()!)); + } + canAddTag(tagType: BattlerTagType): boolean { if (this.getTag(tagType)) { return false; diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index f23cc78c9f7..20cffbbe30a 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -10,6 +10,7 @@ import { globalScene } from "#app/global-scene"; import { TerastallizeAccessModifier } from "#app/modifier/modifier"; import { Type } from "#app/enums/type"; import { getTypeRgb } from "#app/data/type"; +import { Species } from "#enums/species"; export enum Command { FIGHT = 0, @@ -180,9 +181,11 @@ export default class CommandUiHandler extends UiHandler { canTera(): boolean { const hasTeraMod = !!globalScene.getModifiers(TerastallizeAccessModifier).length; + const activePokemon = globalScene.getField()[this.fieldIndex]; + const isBlockedForm = activePokemon.isMega() || activePokemon.isMax() || activePokemon.hasSpecies(Species.NECROZMA, "ultra"); const currentTeras = globalScene.arena.playerTerasUsed; const plannedTera = globalScene.currentBattle.preTurnCommands[0]?.command === Command.TERA && this.fieldIndex > 0 ? 1 : 0; - return hasTeraMod && (currentTeras + plannedTera) < 1; + return hasTeraMod && !isBlockedForm && (currentTeras + plannedTera) < 1; } toggleTeraButton() { From ff4184e23f99cd918ce867ea1577a040ea481e28 Mon Sep 17 00:00:00 2001 From: damocleas Date: Mon, 3 Mar 2025 19:33:53 -0500 Subject: [PATCH 06/19] [Balance] Make Pickup and Honey Gather Unsuppressable (#5476) --- src/data/ability.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index 2b73fea60bc..37b97ffb5e6 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -6186,7 +6186,8 @@ export function initAbilities() { .attr(ProtectStatAbAttr, Stat.ATK) .ignorable(), new Ability(Abilities.PICKUP, 3) - .attr(PostBattleLootAbAttr), + .attr(PostBattleLootAbAttr) + .attr(UnsuppressableAbilityAbAttr), new Ability(Abilities.TRUANT, 3) .attr(PostSummonAddBattlerTagAbAttr, BattlerTagType.TRUANT, 1, false), new Ability(Abilities.HUSTLE, 3) @@ -6378,7 +6379,8 @@ export function initAbilities() { .attr(PostSummonWeatherChangeAbAttr, WeatherType.SNOW) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SNOW), new Ability(Abilities.HONEY_GATHER, 4) - .attr(MoneyAbAttr), + .attr(MoneyAbAttr) + .attr(UnsuppressableAbilityAbAttr), new Ability(Abilities.FRISK, 4) .attr(FriskAbAttr), new Ability(Abilities.RECKLESS, 4) From 6181afc6d2c311c569882306ed7c6478b69ebc85 Mon Sep 17 00:00:00 2001 From: David Yang Date: Tue, 4 Mar 2025 08:40:04 +0800 Subject: [PATCH 07/19] [UI/UX] Make left button also go back to run history from run info (#5474) --- src/ui/run-info-ui-handler.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ui/run-info-ui-handler.ts b/src/ui/run-info-ui-handler.ts index bf07374e21a..f1fe9ac8194 100644 --- a/src/ui/run-info-ui-handler.ts +++ b/src/ui/run-info-ui-handler.ts @@ -889,7 +889,7 @@ export default class RunInfoUiHandler extends UiHandler { /** * Takes input from the user to perform a desired action. * @param button - Button object to be processed - * Button.CANCEL - removes all containers related to RunInfo and returns the user to Run History + * Button.CANCEL, Button.LEFT - removes all containers related to RunInfo and returns the user to Run History * Button.CYCLE_FORM, Button.CYCLE_SHINY, Button.CYCLE_ABILITY - runs the function buttonCycleOption() */ override processInput(button: Button): boolean { @@ -900,6 +900,7 @@ export default class RunInfoUiHandler extends UiHandler { switch (button) { case Button.CANCEL: + case Button.LEFT: success = true; if (this.pageMode === RunInfoUiMode.MAIN) { this.runInfoContainer.removeAll(true); From c890b7ae46c36f2b97cff24e695482c693ea1b08 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Wed, 5 Mar 2025 21:44:29 +0100 Subject: [PATCH 08/19] [Localization] [UI/UX] Added Spanish status icons (#5481) --- public/images/statuses_es-ES.png | Bin 441 -> 2321 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/images/statuses_es-ES.png b/public/images/statuses_es-ES.png index d372b989be966007e5fccac5f54fe341457e598b..dc845d6fb1f2dcf09607bfce5af9f2b22a08a51f 100644 GIT binary patch literal 2321 zcmbVO3se+U7#>3t=~#&7I~WEE31(+zmwipFuCmBdt`cr8MX0kgv&+EFgPDN^(n`Zq zMo1nkGGB#{P-{&O2B`^|Cm%^#`GCyICwWQ@siZs|yUSybl|AR2nYnZCcmMzU|L?#5 znZ;StGloWtjesC%Xr|qk4c;TcZ4JL2JfrDnKLM{HlKoKyg6CtY4hn;B%%L^!pS1O|9krQlNDCn#j81?jO%f^l#fL*O2WT4+Hg2OYvWjx0D$ zlv!A>F`zV&qJ@oS4Pn5|+LUBiixWl+H)4bi#R(EOkUBHmcOk%=%y`Ib+tfZ^;LC#K ztExm|nBVW$_;ngl_F{zDY{qacrq!YVfhuK!N|mC564!6R#wxVTNh&7_aL^*<7K>F2 z0+{xOz)K;sg3^~JkT9&2k}yJp2Se%sGIR(h70bRJ=M0UpK9*+%RRLHcgq89|RaElD zzc3wI{+$DmT8AU#Tre7mOp{qk z6=kO=`uc^+>Zc5+rNI+ioWO{FCGjRWYok=wf@pEA9>ujNp?4BGQg0#&eNs?7ycg;a z8O~F7GZbj6cj7pyB}kp=cTi9;45d>42xe%~Bg#Al!sU3%%VLt?Mc_~p$u!X?%D^#T zr|V(iaFCgTqEZ6QX4)(Wh*-mM49S|!M!m^RqaFj3f@%#ZX4FlA+Vi*>#$d#0%Aoi3 z@3)C`aZuO({S4SonDhkeHtA5E(LUL&}-J8&jO== zBX=)M5k0D(lG({#kgb0xChV`MD^$tf6aRP8{h9bJi|@Y^?@KA2PYGTYG)W8zhJpp# zNv|N-AGPXPyQ%f`!$Cg_4nvI;e1uvtD*)3nXtaxWL~9`^EG*MD*_pHGJy)#sCLTE- ze{R1${_2KJQ4cSuH$7T*^`UbI4%Q?rO=z~wT3v5-!kfvL>`eR;tb0X!Mf{PqmsY&H z{2bfWmR#L1Zh-ZPf_<-#`~IHD<<=(;u6?fZLha*&8`uXJ*8ga;Yz2$6oVw7ucxMo;X#}~Z)z5uw5>h%1_yMVV6#548!xb)Ko9m34{CsHJ;Pj+NetO2|+m`#y>Di~V z423V+6N~xo&I#j2bv&~yyZWg^!Vu_-%7_Oae`iSLr>|u2PmF!(Ra<4OL&wW!7VZhOWbqrF26y5|W6F}6 zj{k6jP(B>_usqPZzUgx84tEW%9q{$KH@2SY=!_|UqZz- zjdySUW!L(T4=i%bnO$$2x+dfOfSg=h*K+jvVGHMf>9YQMPwQ~#n=85Xz7=mTyKrD_ zZEbmQI-9(rvD%d&#+Al&`5Nb5pk1E3{MB=wY} delta 406 zcmV;H0crk`61fAA8BPNL001eycjEv604-2VR7C&)0E9Mth_K+8!0@1;h_JAbxVRX= zV8FTQ>G}+I zIn7o0!+Dp;xZJZk++_QIf*BQ_vO9cL>_x7%KzeP1y+B2_I7G_xHE-s8-)5{aFy1?z zvW;$NS#fE(5J*QH>;TO#qj-;m3y@V^jDKUiXB4T~am+que5?h|bD2QvJlYc8%_G~a zG}z~@!Q2dSmt873PQXLUg+O|T!QM`p^A|K=@Suc&?b@)04>kGLv3=K17yh?|Mhx#G)+hhQwMYUUT0RT>1-XbQdPI;dWdHyG07*qoM6N<$f~F$9 Aw*UYD From 632caff2f3c286ec76c45adcf5f54d6bf7fc7684 Mon Sep 17 00:00:00 2001 From: Xavion3 Date: Thu, 6 Mar 2025 08:58:51 +1100 Subject: [PATCH 09/19] [Bug][Hotfix] Fix migration crash (#5482) --- package-lock.json | 4 ++-- package.json | 2 +- src/system/version_migration/versions/v1_7_0.ts | 6 +++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 453a525581b..b1c7564a2ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pokemon-rogue-battle", - "version": "1.7.6", + "version": "1.7.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.7.6", + "version": "1.7.7", "hasInstallScript": true, "dependencies": { "@material/material-color-utilities": "^0.2.7", diff --git a/package.json b/package.json index 4c9204f60f9..4175ce899e6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.7.6", + "version": "1.7.7", "type": "module", "scripts": { "start": "vite", diff --git a/src/system/version_migration/versions/v1_7_0.ts b/src/system/version_migration/versions/v1_7_0.ts index bdb9e6aab9f..3dcff3af241 100644 --- a/src/system/version_migration/versions/v1_7_0.ts +++ b/src/system/version_migration/versions/v1_7_0.ts @@ -13,7 +13,11 @@ export const systemMigrators = [ if (data.starterData && data.dexData) { Object.keys(data.starterData).forEach(sd => { const caughtAttr = data.dexData[sd]?.caughtAttr; - const species = getPokemonSpecies(Number(sd)); + const speciesNumber = Number(sd); + if (!speciesNumber) { // An unknown bug at some point in time caused some accounts to have starter data for pokedex number 0 which crashes + return; + } + const species = getPokemonSpecies(speciesNumber); if (caughtAttr && species.forms?.length > 1) { const selectableForms = species.forms.filter((form, formIndex) => form.isStarterSelectable && (caughtAttr & globalScene.gameData.getFormAttr(formIndex))); if (selectableForms.length === 0) { From 9544973f1f7edebab9bf993fb6424c17bb556514 Mon Sep 17 00:00:00 2001 From: Unicorn_Power <189861924+Unicornpowerstar@users.noreply.github.com> Date: Wed, 5 Mar 2025 23:05:59 +0100 Subject: [PATCH 10/19] [Sprite] Gmax animation implementation + Palkia-Origin fix (#5468) --- public/exp-sprites.json | 48 +- public/images/pokemon/exp/484-origin.json | 2430 +++++------------ public/images/pokemon/exp/484-origin.png | Bin 17872 -> 8255 bytes public/images/pokemon/exp/569-gigantamax.json | 1478 ++++++++++ public/images/pokemon/exp/569-gigantamax.png | Bin 0 -> 11486 bytes public/images/pokemon/exp/815-gigantamax.json | 659 +++++ public/images/pokemon/exp/815-gigantamax.png | Bin 0 -> 32666 bytes public/images/pokemon/exp/839-gigantamax.json | 821 ++++++ public/images/pokemon/exp/839-gigantamax.png | Bin 0 -> 65284 bytes .../pokemon/exp/back/569-gigantamax.json | 1478 ++++++++++ .../pokemon/exp/back/569-gigantamax.png | Bin 0 -> 9183 bytes .../pokemon/exp/back/815-gigantamax.json | 659 +++++ .../pokemon/exp/back/815-gigantamax.png | Bin 0 -> 33861 bytes .../pokemon/exp/back/839-gigantamax.json | 821 ++++++ .../pokemon/exp/back/839-gigantamax.png | Bin 0 -> 49811 bytes .../exp/back/shiny/569-gigantamax.json | 1478 ++++++++++ .../pokemon/exp/back/shiny/569-gigantamax.png | Bin 0 -> 9188 bytes .../exp/back/shiny/815-gigantamax.json | 659 +++++ .../pokemon/exp/back/shiny/815-gigantamax.png | Bin 0 -> 33861 bytes .../exp/back/shiny/839-gigantamax.json | 821 ++++++ .../pokemon/exp/back/shiny/839-gigantamax.png | Bin 0 -> 49811 bytes .../images/pokemon/exp/shiny/484-origin.json | 2430 +++++------------ .../images/pokemon/exp/shiny/484-origin.png | Bin 17885 -> 8255 bytes .../pokemon/exp/shiny/569-gigantamax.json | 1478 ++++++++++ .../pokemon/exp/shiny/569-gigantamax.png | Bin 0 -> 11486 bytes .../pokemon/exp/shiny/815-gigantamax.json | 659 +++++ .../pokemon/exp/shiny/815-gigantamax.png | Bin 0 -> 32612 bytes .../pokemon/exp/shiny/839-gigantamax.json | 821 ++++++ .../pokemon/exp/shiny/839-gigantamax.png | Bin 0 -> 65284 bytes 29 files changed, 13278 insertions(+), 3462 deletions(-) create mode 100644 public/images/pokemon/exp/569-gigantamax.json create mode 100644 public/images/pokemon/exp/569-gigantamax.png create mode 100644 public/images/pokemon/exp/815-gigantamax.json create mode 100644 public/images/pokemon/exp/815-gigantamax.png create mode 100644 public/images/pokemon/exp/839-gigantamax.json create mode 100644 public/images/pokemon/exp/839-gigantamax.png create mode 100644 public/images/pokemon/exp/back/569-gigantamax.json create mode 100644 public/images/pokemon/exp/back/569-gigantamax.png create mode 100644 public/images/pokemon/exp/back/815-gigantamax.json create mode 100644 public/images/pokemon/exp/back/815-gigantamax.png create mode 100644 public/images/pokemon/exp/back/839-gigantamax.json create mode 100644 public/images/pokemon/exp/back/839-gigantamax.png create mode 100644 public/images/pokemon/exp/back/shiny/569-gigantamax.json create mode 100644 public/images/pokemon/exp/back/shiny/569-gigantamax.png create mode 100644 public/images/pokemon/exp/back/shiny/815-gigantamax.json create mode 100644 public/images/pokemon/exp/back/shiny/815-gigantamax.png create mode 100644 public/images/pokemon/exp/back/shiny/839-gigantamax.json create mode 100644 public/images/pokemon/exp/back/shiny/839-gigantamax.png create mode 100644 public/images/pokemon/exp/shiny/569-gigantamax.json create mode 100644 public/images/pokemon/exp/shiny/569-gigantamax.png create mode 100644 public/images/pokemon/exp/shiny/815-gigantamax.json create mode 100644 public/images/pokemon/exp/shiny/815-gigantamax.png create mode 100644 public/images/pokemon/exp/shiny/839-gigantamax.json create mode 100644 public/images/pokemon/exp/shiny/839-gigantamax.png diff --git a/public/exp-sprites.json b/public/exp-sprites.json index 2bf8c2bf798..50e10a8822d 100644 --- a/public/exp-sprites.json +++ b/public/exp-sprites.json @@ -183,6 +183,8 @@ "487-origin", "531-mega", "531-mega", + "569-gigantamax", + "569-gigantamax", "6-mega", "6-mega", "6-mega-x", @@ -339,7 +341,6 @@ "6724", "673", "673", - "675", "675", "676", @@ -382,14 +383,12 @@ "692", "693", "693", - "695", "695", "696", "696", "697", "697", - "699", "699", "700", @@ -398,7 +397,6 @@ "701", "702", "702", - "704", "704", "705", @@ -697,6 +695,8 @@ "814", "815", "815", + "815-gigantamax", + "815-gigantamax", "816", "816", "817", @@ -747,6 +747,8 @@ "838", "839", "839", + "839-gigantamax", + "839-gigantamax", "840", "840", "841", @@ -1071,8 +1073,6 @@ "978-droopy", "978-stretchy", "978-stretchy", - "979", - "979", "980", "980", "981", @@ -1301,6 +1301,8 @@ "487b-origin", "531b-mega", "531b-mega", + "569b-gigantamax", + "569b-gigantamax", "6b-mega", "6b-mega", "6b-mega-x", @@ -1457,7 +1459,6 @@ "6724b", "673b", "673b", - "675b", "675b", "676b", @@ -1500,14 +1501,12 @@ "692b", "693b", "693b", - "695b", "695b", "696b", "696b", "697b", "697b", - "699b", "699b", "700b", @@ -1516,7 +1515,6 @@ "701b", "702b", "702b", - "704b", "704b", "705b", @@ -1815,6 +1813,8 @@ "814b", "815b", "815b", + "815b-gigantamax", + "815b-gigantamax", "816b", "816b", "817b", @@ -1865,6 +1865,8 @@ "838b", "839b", "839b", + "839b-gigantamax", + "839b-gigantamax", "840b", "840b", "841b", @@ -2191,8 +2193,6 @@ "978b-droopy", "978b-stretchy", "978b-stretchy", - "979b", - "979b", "980b", "980b", "981b", @@ -2421,6 +2421,8 @@ "487sb-origin", "531sb-mega", "531sb-mega", + "569sb-gigantamax", + "569sb-gigantamax", "6sb-mega", "6sb-mega", "6sb-mega-x", @@ -2577,7 +2579,6 @@ "6724sb", "673sb", "673sb", - "675sb", "675sb", "676sb", @@ -2620,14 +2621,12 @@ "692sb", "693sb", "693sb", - "695sb", "695sb", "696sb", "696sb", "697sb", "697sb", - "699sb", "699sb", "700sb", @@ -2636,7 +2635,6 @@ "701sb", "702sb", "702sb", - "704sb", "704sb", "705sb", @@ -2935,6 +2933,8 @@ "814sb", "815sb", "815sb", + "815sb-gigantamax", + "815sb-gigantamax", "816sb", "816sb", "817sb", @@ -2985,6 +2985,8 @@ "838sb", "839sb", "839sb", + "839sb-gigantamax", + "839sb-gigantamax", "840sb", "840sb", "841sb", @@ -3311,8 +3313,6 @@ "978sb-droopy", "978sb-stretchy", "978sb-stretchy", - "979sb", - "979sb", "980sb", "980sb", "981sb", @@ -3546,6 +3546,8 @@ "487s-origin", "531s-mega", "531s-mega", + "569s-gigantamax", + "569s-gigantamax", "6s-mega", "6s-mega", "6s-mega-x", @@ -3702,7 +3704,6 @@ "6724s", "673s", "673s", - "675s", "675s", "676s", @@ -3745,14 +3746,12 @@ "692s", "693s", "693s", - "695s", "695s", "696s", "696s", "697s", "697s", - "699s", "699s", "700s", @@ -3761,7 +3760,6 @@ "701s", "702s", "702s", - "704s", "704s", "705s", @@ -4060,6 +4058,8 @@ "814s", "815s", "815s", + "815s-gigantamax", + "815s-gigantamax", "816s", "816s", "817s", @@ -4110,6 +4110,8 @@ "838s", "839s", "839s", + "839s-gigantamax", + "839s-gigantamax", "840s", "840s", "841s", @@ -4436,8 +4438,6 @@ "978s-droopy", "978s-stretchy", "978s-stretchy", - "979s", - "979s", "980s", "980s", "981s", diff --git a/public/images/pokemon/exp/484-origin.json b/public/images/pokemon/exp/484-origin.json index f52359c264a..2b63fdd6785 100644 --- a/public/images/pokemon/exp/484-origin.json +++ b/public/images/pokemon/exp/484-origin.json @@ -4,8 +4,8 @@ "image": "484-origin.png", "format": "RGBA8888", "size": { - "w": 426, - "h": 426 + "w": 274, + "h": 274 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -35,20 +35,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -56,20 +56,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -77,20 +77,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -98,20 +98,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -119,146 +119,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, "w": 91, - "h": 97 - }, - "frame": { - "x": 0, - "y": 0, - "w": 91, - "h": 97 - } - }, - { - "filename": "0081.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 + "h": 95 }, "spriteSourceSize": { "x": 0, - "y": 5, - "w": 92, - "h": 96 - }, - "frame": { - "x": 91, - "y": 0, - "w": 92, - "h": 96 - } - }, - { - "filename": "0082.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 92, - "h": 96 - }, - "frame": { - "x": 91, - "y": 0, - "w": 92, - "h": 96 - } - }, - { - "filename": "0073.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, "y": 0, "w": 90, - "h": 97 + "h": 95 }, "frame": { "x": 0, - "y": 97, - "w": 90, - "h": 97 - } - }, - { - "filename": "0074.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, "y": 0, "w": 90, - "h": 97 - }, - "frame": { - "x": 0, - "y": 97, - "w": 90, - "h": 97 - } - }, - { - "filename": "0083.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 3, - "y": 5, - "w": 96, - "h": 90 - }, - "frame": { - "x": 183, - "y": 0, - "w": 96, - "h": 90 - } - }, - { - "filename": "0084.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 3, - "y": 5, - "w": 96, - "h": 90 - }, - "frame": { - "x": 183, - "y": 0, - "w": 96, - "h": 90 + "h": 95 } }, { @@ -266,20 +140,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -287,20 +161,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -308,20 +182,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -329,20 +203,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -350,20 +224,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -371,20 +245,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -392,20 +266,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -413,20 +287,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -434,20 +308,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -455,20 +329,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -476,20 +350,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -497,272 +371,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 90, + "w": 91, "h": 95 }, - "frame": { + "spriteSourceSize": { "x": 0, - "y": 194, - "w": 90, - "h": 95 - } - }, - { - "filename": "0120.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 90, - "h": 95 - }, - "frame": { - "x": 0, - "y": 194, - "w": 90, - "h": 95 - } - }, - { - "filename": "0075.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 7, "y": 1, - "w": 89, - "h": 95 + "w": 90, + "h": 94 }, "frame": { "x": 0, - "y": 289, - "w": 89, - "h": 95 - } - }, - { - "filename": "0076.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 89, - "h": 95 - }, - "frame": { - "x": 0, - "y": 289, - "w": 89, - "h": 95 - } - }, - { - "filename": "0079.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 92, - "h": 92 - }, - "frame": { - "x": 279, - "y": 0, - "w": 92, - "h": 92 - } - }, - { - "filename": "0080.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 92, - "h": 92 - }, - "frame": { - "x": 279, - "y": 0, - "w": 92, - "h": 92 - } - }, - { - "filename": "0089.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 24, - "y": 16, - "w": 50, - "h": 54 - }, - "frame": { - "x": 371, - "y": 0, - "w": 50, - "h": 54 - } - }, - { - "filename": "0090.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 24, - "y": 16, - "w": 50, - "h": 54 - }, - "frame": { - "x": 371, - "y": 0, - "w": 50, - "h": 54 - } - }, - { - "filename": "0111.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 24, - "y": 16, - "w": 50, - "h": 54 - }, - "frame": { - "x": 371, - "y": 0, - "w": 50, - "h": 54 - } - }, - { - "filename": "0112.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 24, - "y": 16, - "w": 50, - "h": 54 - }, - "frame": { - "x": 371, - "y": 0, - "w": 50, - "h": 54 - } - }, - { - "filename": "0117.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 92, - "h": 92 - }, - "frame": { - "x": 183, - "y": 90, - "w": 92, - "h": 92 - } - }, - { - "filename": "0118.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 92, - "h": 92 - }, - "frame": { - "x": 183, - "y": 90, - "w": 92, - "h": 92 - } - }, - { - "filename": "0119.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 92, - "h": 92 - }, - "frame": { - "x": 183, - "y": 90, - "w": 92, - "h": 92 + "y": 95, + "w": 90, + "h": 94 } }, { @@ -770,20 +392,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -791,20 +413,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -812,20 +434,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -833,20 +455,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -854,20 +476,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -875,20 +497,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -896,20 +518,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -917,20 +539,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -938,20 +560,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -959,20 +581,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -980,20 +602,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -1001,272 +623,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, "w": 91, - "h": 92 + "h": 95 }, - "frame": { - "x": 275, - "y": 92, + "spriteSourceSize": { + "x": 0, + "y": 4, "w": 91, - "h": 92 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0060.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0064.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 + "h": 91 }, "frame": { "x": 90, - "y": 97, - "w": 89, - "h": 93 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 90, - "y": 97, - "w": 89, - "h": 93 + "y": 0, + "w": 91, + "h": 91 } }, { @@ -1274,20 +644,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1295,20 +665,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1316,20 +686,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1337,20 +707,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1358,20 +728,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1379,20 +749,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1400,20 +770,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1421,20 +791,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1442,20 +812,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1463,20 +833,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1484,20 +854,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1505,19 +875,229 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, + "h": 91 + }, + "frame": { + "x": 181, + "y": 0, + "w": 90, + "h": 91 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, "h": 92 }, "frame": { "x": 90, - "y": 190, - "w": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, "h": 92 } }, @@ -1526,20 +1106,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1547,20 +1127,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1568,20 +1148,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1589,20 +1169,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1610,20 +1190,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1631,20 +1211,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1652,20 +1232,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1673,20 +1253,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1694,20 +1274,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1715,20 +1295,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1736,20 +1316,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1757,62 +1337,62 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, + "w": 89, + "h": 91 + }, + "frame": { + "x": 90, + "y": 183, + "w": 89, + "h": 91 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, "w": 89, "h": 92 }, "frame": { - "x": 180, - "y": 182, + "x": 179, + "y": 91, "w": 89, "h": 92 } }, { - "filename": "0077.png", + "filename": "0016.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 90, - "h": 90 + "x": 2, + "y": 3, + "w": 89, + "h": 92 }, "frame": { - "x": 269, - "y": 184, - "w": 90, - "h": 90 - } - }, - { - "filename": "0078.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 90, - "h": 90 - }, - "frame": { - "x": 269, - "y": 184, - "w": 90, - "h": 90 + "x": 179, + "y": 91, + "w": 89, + "h": 92 } }, { @@ -1820,20 +1400,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1841,20 +1421,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1862,20 +1442,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1883,20 +1463,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1904,20 +1484,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1925,608 +1505,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 - } - }, - { - "filename": "0085.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 15, - "y": 7, - "w": 79, - "h": 86 - }, - "frame": { - "x": 268, - "y": 274, - "w": 79, - "h": 86 - } - }, - { - "filename": "0086.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 15, - "y": 7, - "w": 79, - "h": 86 - }, - "frame": { - "x": 268, - "y": 274, - "w": 79, - "h": 86 - } - }, - { - "filename": "0116.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 13, - "y": 10, - "w": 79, - "h": 83 - }, - "frame": { - "x": 347, - "y": 274, - "w": 79, - "h": 83 - } - }, - { - "filename": "0113.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 11, - "w": 71, - "h": 69 - }, - "frame": { - "x": 347, - "y": 357, - "w": 71, - "h": 69 - } - }, - { - "filename": "0114.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 11, - "w": 71, - "h": 69 - }, - "frame": { - "x": 347, - "y": 357, - "w": 71, - "h": 69 - } - }, - { - "filename": "0115.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 11, - "w": 71, - "h": 69 - }, - "frame": { - "x": 347, - "y": 357, - "w": 71, - "h": 69 - } - }, - { - "filename": "0087.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 12, - "w": 59, - "h": 70 - }, - "frame": { - "x": 359, - "y": 184, - "w": 59, - "h": 70 - } - }, - { - "filename": "0088.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 12, - "w": 59, - "h": 70 - }, - "frame": { - "x": 359, - "y": 184, - "w": 59, - "h": 70 - } - }, - { - "filename": "0091.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 35, - "y": 23, - "w": 27, - "h": 33 - }, - "frame": { - "x": 0, - "y": 384, - "w": 27, - "h": 33 - } - }, - { - "filename": "0092.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 35, - "y": 23, - "w": 27, - "h": 33 - }, - "frame": { - "x": 371, - "y": 54, - "w": 27, - "h": 33 - } - }, - { - "filename": "0093.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 42, - "y": 26, - "w": 19, - "h": 23 - }, - "frame": { - "x": 27, - "y": 384, - "w": 19, - "h": 23 - } - }, - { - "filename": "0094.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 42, - "y": 26, - "w": 19, - "h": 23 - }, - "frame": { - "x": 27, - "y": 384, - "w": 19, - "h": 23 - } - }, - { - "filename": "0095.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 42, - "y": 35, - "w": 14, - "h": 10 - }, - "frame": { - "x": 359, - "y": 254, - "w": 14, - "h": 10 - } - }, - { - "filename": "0096.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 42, - "y": 35, - "w": 14, - "h": 10 - }, - "frame": { - "x": 359, - "y": 254, - "w": 14, - "h": 10 - } - }, - { - "filename": "0097.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0098.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0099.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0100.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0101.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0102.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0103.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0104.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0105.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0106.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0107.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0108.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0109.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0110.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } } ] @@ -2535,6 +1527,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:52f94c22e7d6d2608638048866c1910a:045ab453153e084bad1f17ca61076c30:5ea3e660bc9c2624f846675d5196db82$" + "smartupdate": "$TexturePacker:SmartUpdate:4eec21f441df8c5ce7313596a1672a9e:bec666304c4bb8072e19fa13a830a7c8:5ea3e660bc9c2624f846675d5196db82$" } } diff --git a/public/images/pokemon/exp/484-origin.png b/public/images/pokemon/exp/484-origin.png index dbd6db55f7893e56a2975b67e3f0bc18d49764fa..2d8d0fde4724d585f802c03cf6f3f8329db2779f 100644 GIT binary patch literal 8255 zcmV-FAi&>=P)iF9-C+@mUf^qeyF)JV!U zHShcT{oZ#{wkv$?-oHQzfPHt;W)2p_U&p!*ZQIKCN#7KdcVu0m;zy4qA}f2_&(}ZZ z_1=@A94cJ==M>(Bmp;nkdL|CdztfX2d0kUD4Oz{$%`cpRBNeE$?Cl&wQ?mZYjw~50 z{45o~Dr@QIvmkC{2bbg#SF>*l&XSeeU**7&N{?h(Hn^hg-((<1cUPwjV6>m7NGk4k zD!0FmA01*-Sami63%kAJik6mJMcR>!Oe2{m&bmALFgk^>+aC_fs1#81V}| z*ht$x8GBjU70B_S|J*H%&7^ENh4)zXKOiq39*po=ul>PU@oSFgMj85~>t)%-txZAQ zvinHo%HBiS@C;QSW<0Zz?63S3e($TDUi@R1f;D`!+GW4=+IXT+j27D_A|beV>fItk4z4){PrUJd|hE=j^lf8u?(! zXx&mVu-g67=g|T8Nz=>tjoS>SIZ+K9GTl&yvNvnD9!33czUuM1gC*xOhr?7}5Vy*e zdPRP8aNW%Jvckq~yXD|X(AAB~e#f%)uhfyDbrUQRPa}Qs;?4Od4&aUs&KK+3GNd&VdrPH?31#zPdOTQ)O(ZRGc*C!RfafidhbxT~?@ZNNX zH#MK_OsT%Q)56gf6u7Ps_g8%{X7oU1hBDTz%RZ;am?OL;yB5KgToGrKU8CH5Q^+@Nd4$8m zd7c`(NzDzVStG5L(o?wk@$K!HQ(NhG&ZGF2UbU8w*!&iVnnJ#D%ge3O52Ye?D_Dlg zE?BbIAKzUR3wvkd{4bliB+;+Bx@cPxdl}mm)c6rI9m-gDZ`qZxq&EuOU1aUZ9$xx- zzVg-tAZ5W=5}QJ@aVLj|K}+0F0;+qU?Aln;vxM@NY<4@*m*D!Rcy3ioOv}w?q1^!m zYG%pCef@~Z*F8{nZ7j(t+-$Duyc#hjgBy&3xNz@Z0TNCv*;U@m(8e8)4(A+!tCpN~ z50u?8mdVnwZ#@Ic?=|J!6T!)Vw2Pr{HcjSif&Oaq^b8 zb=f<@TVfj}(-j8W!cv*r&9b?=>qD8|h&5C2Fk81%4C3}JZ?OcI%{E_jBx#fvx>>VZ zR?5~+*s_J*$b%^zLz!y3OH+MI?D_PwLs@a#B(y8u5#jG>$90)E${lwzm9>TK4okAK z%?SFTG^TV9C4FcE-3-<9FK8Qaqix69zmA$Cp;4N5U5ahtxqakFsqEm1tzQfbr4Y&U z3Fu|jvEK@me-Au<87$HBVq5SHK5q*>o`~_X%@973C%r={!vEmabHA1HKcHL2{;jv# zp-15cpSFdzC*tF>6?6|}q8%MX;;FWZuBhmF^?r&%ozi|GZVR>ZgF7-cEJ^F$wm3~T zH$OXv(#{)!-oHJ7^(0O~?>Cu(bw}JoarRGx@nZ{Z!EfDq%V``k-JAIi8!fv%lp+W{ck}#L zl$JGZ@N>`p4(t=1mBk~DBWsn%_T)Cf?2s8(H=xTgSGO5TwrBYQ=y}|v-WT-j7GZXnQ-lcZ60pOzZflADjY{g?o_kt$$547@C9Ngq z!6D^*QAb%@3V*jFn}gNUL#;2MvGiVqL#EwI@lg7@jU`;&DlfZZD7_=+j6N-~b~|Z( z5AdjH3w@*@p0F49X@@WM1x3Vt!RU~gSmO3msV(t!OIo+eCwF@&og;d}iG6b`C#)Oy z$MhRWjJ7|nJN4o%U=ey{cVDp0QXSzDseF={TMee}vuu^t?aEem55&r?p$ttx=m*p` zw{rZ%L62wV+p7X}5mUV-uD_?<3+jD=?k3qGlN`J4P&Vr}4?ArewWK>D@w7MPPhh_rWvT4Ek>YdfN_CAGfrWHuAK<%olG z1bXNv&?T@a$l?dw=H)R8|@(?@n5!75}g=-%l3b%~G3B{VF`46J+?Syj&(Hn;O;mUo1TB0BxF~ME$ zg$t2vC|%tusoUOw#JU}Idry!h%1PU+Rbz;g)^1DtF~i5_> zId#(ukz_2v-Ph&nHf6&=-Jk^8Zq7|A%t~E=>D=z~BSt&?rppp@qH@Ov{jhGeFXXet zn8Iza(Gwtb3$AWcHmX~+Ex|i5SUUv$k6wB|CkgaRyKdPDW3 z^n6On76WzXc8A4G-i&e5`a;qv_e~Ofejt58U+Uq`kZvX68x#(kWa;3#`LdVpx{ICw zc_J%FOJT1L`qqua4}N5Qfpi8lNy4|6(6J2y^+aYPNz3l7o3YzTqxV|8*&kM6%kiyS@x7WZ>D|-=rmgs5nK)aG{2WY;!M?wVB?vqZ=RBT@e zt@7Lj#e!CR-&Ci?C99Tx+-C{C zj^g@)X$)>^h&XY?s3rPS#!THp?<5!MCd&HbfvO;lR?hiz_F3ZBj`1Yx3$`)X$IVcS zfnL9T<@O`=S>1MXy->FncF$N^=?5n*B$1ZAme`46+GVky(Y|1J*NpqTiB- zu#>vn7la^|h~8D{D_>u0`o#GvSNSk=#Ea>&JL@KvFpgMh5e^H+kpWBe3Bt{iuD)>5 zlEjh6S+>M=o7LW1H-v}!`=x~%u;gL)!D3&?EgA3xxVm-xh5jqny*fu!w{pRfAT1uJ zGemmGlT#MzeSsVVyLT!mT4K@z&-v}@USIMxR5ye!oUF+p4c-weE!2=DrZ-gjg8qBC zw0Q$?b^DP#2f{n@I49_9usnGC~w|j?{+)Y zNI#oex0Qy4m0sc`(bDT3mXN-Hb}A)CEU`gbke!O%ZR}6#cG62hdilhX(-Ylt)(302 z4jIv&gq>=n#j|y1Uvi%%Md=G4w5se>;LhcK#Xm;+LPy>4Gjq%My6Kc&mP?M*Hg9Cf zd8Ihi&n{NNlSD6WwD;eHMmUv)<^)Yn?U5 z>n+Rj&gCGwzUo5S^)%tRFa6eXnLR-!=lUDMlh+~P6||P?`U}EsNA8TG7Zu9~vf8E! zPq!p3T@>|4p%c@Do3D>iA4wLoxUKSO!p%u?vn4s}!{}e&a7+`PZi#t3A442)={|UP z9nWN)DBN=74oh56Oj^2>R)4)lCYdJeIy~Rr@2~`c7E&CCc_(AN#Nn7KyacF4Zb~(R zbsa4{<62l~%cTgrnZgT(S|p}a5jkro?dZ@SUUUoxu5cOCm)D`))d<7w!b=A7B9>GT zIi1I36R{hzsS_HCcHtaqA&4UdAWSbMY_XgLpH1x(%pD>^C*8;F z$93>pWR@@kwIDng&JoXV=$j;(v*7b{JdHzynEQ)~>l1}3)FS7>C>D}9uw_}!f@e7R z1oMnfGRCu*D!dS=1%^L){7FUx97AGR&VnCFkF`koB%Wt6w!6*|UXqjn*US8j$q_lj z0I2w(YVZl>S4I8^M#n7lj8nAD7k*0eys< z-#ERzqjtXXX~Mppi6-a65wT!!1NZsmsBmyW23?$wazO1gVFp^2ay~vFVv#FMm({K8 z_!{B8ozpE^>CX2Hw>cmEryTwhf#`mzG@n@6_W0TTTIp31%rxPp!TI+9AUTT~V7eUj>wBRR6SJ1P zmY5hJRJp}C6!0W0_{3gxWb)I5Njuv)`qKc@g0;j{3n|os;7Jw{N*6e$+kU_=WXL9# z%o3*U3>eJE(!;bU?N&aQ3~c)HpY&` z<+FGaOoLG(g2D3BgiG%$Qu(-P>PQ8A0|8>8)pJOc zFutWM4vHt)X%0Q4+><<%`hH=i`S@CC6+PfFA34&(0`|hU$Prb<_E&VV)_{unrOkMfL#<`oJOkgk$X`z30 zU4ip@f-qe-j%mSTK3Jp$U>+7rd!zJ*-7+mGp2R#N=vgosilcP@dzvs_H!Rb_ZQmsx z5$0jBv^Vg%y8fPwZB8i8J_` z;TB~yg-PZY8H>Z?Nf4a`Y`#6%;BuNOTUt1CgweHL#4YNjTk3DCUDY;&)l$=Vcet0&wLk zi=9Z*-1{n@CLDie2J=B#M{aJAgz*l2T=A@4;a{mUQ=Cx+x#gTDI~JARn`Y(Z%H&Xq~0KidZ6~9L`)X zgt_bF@^PZYbm4e$*@=JZXIg~Hv&4TF<{pnYLqv<&!k%a`0rL?nZ;?0#i59bk5$vc7 z|1^O4C{&(7K8A@FlZE|tLj(VWf3H5WB*b(-J|tR96ZQb82Ik}P2Hr>FxI(m;ChP%F z4gAw(%tw>Nag}H>O*mdSl<`mT#5#`osOQ_mb)v;I;lz@{2L1u&qndB;zT#4t`!wO; z35;yu{g${iHmH8dmCC0H<12^a1`gsn=3^SsVj?Od{OKCzL(&a=q^H3w?gY#QS}a4D zk1_JezxOr5I#TLJsKo@T#XWKB9OfhL-z#Mub&yX)w+Z)CEpAfmz z-rM;9uUjqY+rZb>XPPVN`KcxAD8ix5w783BaoYx-rswDJ`H3U_^@}d1#dqs-DnD_d(D?lk>4I6L=OAETKpNWXU*aq2Y-vL73YY|a=g39SLdvwrFdvtJ z7GHEEX9}!I`tn7BgJdut>vf>Tc!L#F25PMSx|bj>wCsf-g)Gj9Dl$1$_47 zNDEGw7K+Tj7%sl9zh()+ER>i6mjDhN(?U3)fVvK}_{Q#vFbf5yz@_-*lxg7}_4g~1 zIQ?@S=SX6hGp0a{UmmFaNSPKQUy;G-pE4!EES#oDmMJg{708el+=~3ovl;-r&4&(; z8dG2#vydV!m=!565-p}%Li6(rOo0pgV2ZTJRwQaVKW2%`&#yBDY!m(jX~9rFyd#eX z{Fo&s{*ki;Wp!V{EKsCHney@YIZHM-NwzXmAOtXffV5D>^n5wYZQK7QypF@-r}3bX^5%a(YgMPWs1Pk!yzYnUb| zarhRdK#sJ?RwT@S?&R`rB2!E5Ut&DhXk3K?V3| zUA!boDEfu;eDSxQP|Si$tKQoQ%xShRS(3u#-`Y@gy%zU@?0j+j>1+y^1(QqNN~NZ8 z!)y?^U6P1s5o6JNv-AJj5}Zrjf(oF#VNnkP7Z_<_9D%))^6~eUB$x#TDv%`Ti@t1h zg0%2hlD#WB|BozjKPaC|O`!rIK|jeGE;!=8nr46lS&%|6%GMaIzqEwSrRLJhRh~Cob|hNjkQO?G=7|^NMHtNNO%+PH)Z3P) zm&Xk7MmW0Vd=!utaY1g}ld(emoh1gfAY%wK7s1S=m*c=;;Gzx};ZkXVL0VAC2LYc1 z7R;Yc5)9*DBbb@=avV6!rNx^WQsR6Zl=5K-3nFXoH9XFIN9 zb4O8du_#kMHk+_1NOPxnoG-5$;VLdfFtgJnk1r?bx-NGVd66M49OdIlL=g+7iN~3@ zvzi}YNwJqAnECW_8aPbTbp`t4I;odOT3DwOdP8KvbmMX6IHEssok9h&1pO?jI|L3V z>AG4#pZ*Zp9=pPN*oDWrx%(nOiObfd5zGN9@MJ8(fy3l(dth3) zG`t$pVtZ0c5L&7ak8}G@VgV(F#!-x5=EKY5O``m*nDFeP!+ew%WMVXC!SvyA?mm;m zt^p}$0VU|O;pI?@88$w}n9VZM!Y{~VmSniCuO8`XLMY-a9E>GNEVZKw6g?r9s0?X= zC?DCvK`fXm9%s(G6*M%}#8RsyK|eZ@_Xb#6o`7+BFC#5-O8}xLRXoltPjDWnNu?$c z%!DdHEvYA?prpXl=rYn`OD!>z&!AvhbezeaKz!E%MKCK&6#x=m-lPh|8@PrVR6ts! zkPkQc%oJ(RaVA?5+J`$@`Uqx36#$9D%iDRwKrkO1(!xPLIHX0!!}{urc2o-$@Da?I zD&WJ*Q37)V^C2STBSl)sErEO_lh2`GYIK~rJFH5e0x>}!2X#BFKyL&y;4qmCX|WT? z2ZOW-bcMgTsfL$M8o_LjVKQ0*F@d?BVOK+1`1krEY$cGw3T72nj0%#dARCO65<3j>-1CLWjT7><{uAASoBpFYRDX<`{fLJ=I0-#W? zW;Xj^@d@D1VWh{@AuV#@3rLHvTEayz$E0qtECVa2jC2_HkIQPaZ$t;l^D_OOZ>C_1}gBl zfhu5phNU?B!tF_2l=|_2+l>AI-|!tv`0=!N2d_lvPsKNU z!;x2hvjjasa@mq;_=fLWl6{FUei?G)RsC82)s`&d9|7+OME?-qF!u~Q;}MrzKSuvQ xjv@f^BQ!*P0000EWmrjOO-%qQ00008000000002eQCDZ|-R{2dvJ3SJ&-Bp`$&4+|EcuvaRrJ;m zpPN{o`>s7NFE9TgvG7$HuIURtv7w}-q`|_X*_G1ry8F|!iFV3TN99}aKBk={ zmYfhi(0p;U;9^=>KP@JZmKaV;ZKvfd&~O8^vSnIDF0FEi_F<4#Ur%dlqO}gv+Gl7T zEwt`7TJHv}uZ~8ZrVaGcK9AEr&(ps2(Z2N4zD(1;e5Z{p(nfyKMrgE&J=)h{+P4MT z%oOeWSK91v+QM(z;u>vfhqkgrTlq;_S))y9zEp2l0@Al5x${*VI3EI})+Mmr9e}8s%_LZmME3eaO zP2;rIuBoZ1GF#j3?+diG4cf#4Eu&_4Ywz#I=HijK=|8aPeUK(*bm~99I@8fy zfG_RV#wQXxu3d~8Zrc4~V@Tco-XAAT6O*))fJu&5Wp~bE>1PGl9K010R^HKlhA-2x zuRf=@nP#B>`DpYLL~&OdVNG}a=3orw0TKDaz&DZESP|(*90bj#V-c*$1)m9I&}lL#(4ufr6w+J~r3Sl?&K2+xzo1EdKL{;f_GXV)q+E}`#2D_$TYVOzjtYJ#T1c@dft8m5y{&B0K1@Tr;uXJirZg8I-6yAR;l14 zUa)%vyq&qMl#J8{xf^=`<5!P!U~f(kgBQ){AK<1yi1>Z0H&Yt;J*~*Zw-5ur8zPr) zIDK|Hc74jaRG#ie+zh&s7UX8%bzA;-8zJcHhdfGMm002epL%KIgnUNmt|r@i7H6}D z$IhzTtcMp{bV(u_ch9^T&>aY^i%4(zbsV$|Yp9hu6`c_NdY@b3lki*i9;I|nCX8D? zrs-itG-%MAm`5tMbRgY99HW>37*+*WR?$rf(PVnDBVf|Cu#gO{B@Rx0B=n9vONw9q z@T=n8i2!!-3G1i z43ors=$qb@BVXT!<-}3t8`Fsn?$eSP&)}{fl$3rX5Sj#Vw+R^cfXG{7zT0r)k_N=E zs}_W!gDsrD%Kp}bG|4|6aSQL%8P42{nUauNc}2VCx=bQAlHz zj`4X$-LX)=Ge8y!hKF}A`gs`L6y83=UH;i{C-kJ|K2=wwPEOZf+*$&f^;oGK9>Ldq zniGdP8I*3@7AEk-b$(>37?YlQKKMrMk>ZShh5{Rb?Cn?+0+(_y5{<0T$1YPlQ#r0+ zkfs=_6gBqixiR^ZSbc-y5*?jFZw?03Ief8Yh3)8_-0Xw1b7uQ z%$fHgMlp&z|Y1kPt(Q1%?@uB=@Y=)$KGLVSf`#v9|(gl*(wb%oQ9$;O% zRe@v?_Td>UWsckx;EOTrIv{@i?>U4r^fdISHY^^eyePHpL~NIv`$$m_ZL{F$Ju5G4UZ_eG2&-czivVLgX89;U!Nku3M|FE++1nar!a z^pK1tMJwAA=9%~TiFVcc_(%7ngIo}c6K1iCI1&TuW;f3M435G~(WiDg*;;%0X?}K%%Ejqj!~CCP@TN2 zGjaW!a0@^5j1H2)E%ar1n47;PGbv?#-;LKm2_$l0tI?Z}y7c~zyVXZ8ZERfkMU%oC z5wQkrc&em65i46GeFMd0z=nPVp(J4Fofc-#^L@7(a}v!xd5<3kM29-;$Cb~tsP4j^KWk}+K>S*$zgwUdpZ?Ty~hLa{O)lCs;gvdfygzp1x4gMC%H81J~Fn zQRraIWn$HiE?oi^pPOA)AA5)_C2@vpgP07h4Dkada4m~)FObhn>J1JU1}5dvjuP61 zvgdQ8wRSeXBmlc=DlaOhbkBF%f4h{k`#oAr*gt$fy9IG>Y&eaMDOo-ALfYLYJ9)!v zPr9biFH-SUM~LUO^!E=P`IW@xt`ksTskXL`;UieV`_EFRxgnexjbi=IKc7Ya+ZY-U|ji01ORwQ6^ob%_u$>`X}R@Rjuh zaK)^BiyZ#pfg7E0H;nw~O1ug{->D)n9B`#@SbniZff*Uwr!+aXi^~R3GZ@77Z*DsoD*y`e4ThDog zPlY>R!pP7T*v%OAmUH~`^2}H~q!#Sn{!TddM8;ayt=!;gwAy?;V(k#9=z)4Hj;(Me z)QwE#k}d{HzYL+`$ez`j;wI&udPXKFd_1OY>2@`6CB_$QKl`qn5ELJ%-9CRmRd4oK z3ALrt!K@(Yldg-%n9|h3qqUud%?rhlnmgZ+1v}s`DbZC`I0q3-U@^Q!C&7ZX#y`|u zVukw_|BRw4P)<%Xfs2;U|1cS)d-0~4`Q_LCIb{ZEcGP{Oym|6pn#h%l8(jV?)rcD^@}|{kzviSl;G`*CJmTi`-t!i zI0sje&K00!Gu!Pq-Evw-j1}o)Ds&ot-BPlk&?}~1NaW*BR?0QB zZX~arw!f3Qui4|z-WW1oI-2YeEFe6IgD1%5InyK6KAv3(U3q3z@dI%+PxKCC{_6@9;WVv37lE`TYa8-+m@v##s7 zC`hv8k``8Q-?WD?Lnv84nvKJRw9W z0gpbB!^f0?4dGOdJ8xa+beZ|eTr%oPtYpo4qaLydGIX$h1R>#YS$1jE^}x!DL%Cso z(O}T|;z|13C2mWIki}v2uQKfF%#NAP32)qu&;f+mxwLSkmtogO_&TpftN;mL{Y21f z27HkKMb99$LpW4mI}&LxS*}Mu5M_Ag(TZBiM)f2e5|YkvSGyHzN}=|0+dn@J!}OoQ zdD>s_9Pu`Ya_uqb&rX0ym1vq^WLI%nr++VA9FVnFT{<{h?3%_Y`SHaA%4^fK0Stu= z#NfdJ-LA%J#x%qZY{$%U155ocU@vR__W4NrukeQ4$xl8`3_f%Sb#6$Smf`AWWPr4Z znjzt@&O(%MQ0&>qy{*w)@djVQz#{B3sH1_?+m+0Z^)D?)pLV?xE~vJ_ptEh@hBIuG z|JDyJJ?Thwt3&938=6@-rL>hOP_!Pcdv*)zNT-P{Zzm96;eJU`{IYIAMh!wln5D6g;|0~i6kYZ zMPOV>-?W(0U5b#`;ppoMfz>ZL0owMo9#$;l;_F*=gd4>CLPtXJ zRV*2MDjlurb$%2~pm#)ld4ku}GYfn}wZ3pNTS4qUV1iQaDLhHmn4(huOFw@W89+pG zN~rCLkqa?=;B=YH{a?5#s01_`0jbi3izl_}DWN|RT#46US2d^?f%Uk$1OxG@*=D*N@6hc!u-R*~Dn-r4ATm2ftbYlq zjPz2aY#bFIl1|3nwK^RH5@yN&goTllYG)>Y*#IN10GlZzd!aHhjNO`?nGMAIfdI8o zQ&%z+tM2QORg)qO)h&)QC^f>-_m)DW zmDE`}z))`$^^8kUJCU|~p}609erAy;Ps-rP0ad!c8HVpvonlrz_XUa0bo-{rP-nPn z2EgAkL|u8@Z6q!`EQ5wAL1hiP6U%I$3#0BFtAO@b!Gktuq!N^U?FF*A>2BR%#L6?Q z@EZ%+sdK~e2J(Dlh6!Ss!lk&9Fa%xnM|i0Dk-fy_uQGQk=Z@-H8{zco1Hg`LoqsS- zH#J`@)M2_{Pc@C+m6r2+Ip&>ZMz*eI>Y1=PT@4NHB*p%&D)L_4t$VoL$6HY=Ro zrK4qsw4ed_)EPPe7T?6j<)jSldd3o0!FCfmMBu#t?N%=EA#83Gr<$>>jz_n!zr2$O zogFy!c_2@WL@uE@e(N&*Xnq!h;Skvz*O)+NJ8H(sAasMNT;fG3)^o436V}*q=}rIdp`Uh3}GK+DYPj>UVAqO**;u$tGCkY>ng^N4`f>FYqsIK}|HNI(41 zgnY&f@jL}xZUpo7J~A1PtmcGXcvc{EIZ~6GG$rcuE_JhIrnc8)cTP~9qA)Ev&p3 zJFBZ+f((4aAQgT+s`3LTw0*2mXA$}NCo`oEgVT6#RW)m>gbLN{GdH&A?V&50D!Ai> zjKfuzcPa&{ySRrip7m*4T+%Fm$ETf8;CVTq`>@qwq= z7Z>}b#!tg8CSv(iZL;AW5{QR6`~ERTkuzJ`RWEhoQ<@pQ7@!T~cmmp20l>hOYN~U5 zC&Ao|!(<2EUK25Np{6Vsi6J(J=r2*|{SGDE(tw<7`z@$ZYjv5s=CMI=@h^W!K8`Fr zJu4=`<}iz|=E7hJk1b+QT^EI=|K?VeRbELe&fr{ZrVz4A-_uuPks^I|w_dA-L)Phy z(JPw~-c$5(2XK@eh}9xWS|q==TIp1d=c{d>=Xjh|eY~Z2nVdo#U!9oPISjA1d*d|v z-r}mMeN@igR3dNj|8;cTlOt3pidApw&v{iAJ)i# zv-Gyv5pcj^blyBPF_`ysadPKiClr{*A|5Yl+hSAQ(~v z|DDm$@|mfvbk7KTDb7b1TAR~*SVY(a@V2f$A{_p?hWA}HjwUOeq*y6t(OucvupZMtQAy&$Gp4KgXPg};W@9tdbm9(>*8bz${+}9LvB_bOB1d?#f1@zP zT}&;HbTyr|o=@Q1MYJKCqV0dz@wxMJ{RDoDx}E7)kDcYAmBlkvk%xDn#1E!O->1uiB@Xbrf z$c8geS=EMmaL{a1QPG^nS^5T7{H3(BG^k-M8R~I0IO3Vdt25=?KeTmXVOnsbEr^k+ zK3O%O)SkhWkwI@%$oD)c+n+Q~iL$fA`#7nDlH2MU5fsNOppq6U{(B0gLDJnifz5F8 z_lGOlCZ8|e*!(yiaC&-C#e1phwgH9{yrXj>>PwF`(vCk{;CN_l}J z)7L1YWD!_Npdt|xT-lIVtLhQA@V=}ElJD@R`D}l9pUg4rr_}5e@(3kIzl5}mTh!ON zb;tbkXF8O)6!zJE{5tXLX4|28S#OfMuPzKrQUF)=ozgYqNzyGAqj+EXx#b9xTI~Cv@JLjP&sripP5NbliM0~1e!F)@ zdW^MMPG)_suk|wlSZUZ;lHb$v6oY_=hR|92&z^JV!1L`fizb~*uT-%MtUpO$vC|vh z8aWpg)0h-7T<#M~f6}jUc^>0{^Q4pyu8MP@b~2@?Hhu<;l0};9Cs4fr8zD zI*r{s;)Zj-$tJdWU%UEgo{<}V?3d5~`m%SXE<6-BF#RrNrdKdM)$f>I^V31X`cBiv1zxJpE73iWJ=A7Oiw>yrKL35w=@VgNKlbF|KoeYCKcV!YFu`kS zxn2rd#bhV%vI*2$0WGOpYDC_%{4>8MDBt=@ldVeAG6@gv@?zf@c6C~2?!(2mT-7p( zZ5Y)Qbi+Alb4Qi?udiRk&LN$<&^WPCTIvV4>_2h6^Zj{eM1hLil}}|JxOd6d=gT2Z zO0MAtt`zJ+u+LLjcqVQKRSsz5%{&?ZYC_vzJ*Mi)JQHr-{51#B(cIijToU|6puV`E zqmxOHMw|U~`eh0-qw^$oOBkGSa+|JXR}0@KM-7Hpa--$}c~$Icvxbn^K5KEl|H}-b z0v+m3A7-!gnxe~hCA254vTSWi=yG$3OWOXAf-~8o86JyjY!QhV^ytiUe%UNCY%ay* z&jmv#joN|COXBV+fr)aC3Bu@auOSk+d~YS?@y6+_#M%P;t?!@@vkhG15@<57U5GS> zlTM5LMD(#Yw}hOk^ramW`Nn&vEv{Z>fZ;FD4N1BXJg~mtZ-tu)NmhA0Q{vPN@DXD+ z2d)VrT$?!EmtE8nO?vi8oG?~pbJGTPL1Ox#2==D6@+Y(TIR>*}@_1h85+&D_s++IK z+SuRZlsq=2Ksl@1a(P%tND(aLPMcSHB6vBp%>by>Bt2Y&EvZOC(GaBjPupfm%W9a@ zv&059>^1+=l;T7-@sdLO1Hu%P+{nOr)_yVcY}AcIryP0c{R(4x{HI|A{!-I`r-O>D zPzChevZP>a(|U|Aph2uQ*K^uEZ3)Aiw2xOg8IHRR>fsAZPcLXtMdUWP{i4~IpW?Fa zH$e-NVnVCWqyAu5x6|4rmWfwX`bY?8` zc|_Q~66}ERbRl?gY-^SGl=BA5atpe#-F3A7>jA}SL-E(T(#fxX(!R~eKCMwd&-|b> zMO6iPbgu9;@5$tm@%qm>kNVh|x529~x~q+hU#FObB{o5{a2Iq;z3l2W8wL%OcHNmnKKL6ZN+e{EZk816wvvaTqp4pC=T!#gxkZ^cQir zeZKt~{M5@wQ(@U`pc=cjTKw5subD<-yk3X!NL<5o*_~1Qu7@U&ZUq6e8(Cw# z^Y+9$Xg_wNB|I{Hgf(VF{N<@ECAFx3BmU3dIpQL-M|b9|Itg4w>oQ%kQc)om$?+Cv zafxvW(cO^aOP1Px%7Ph70gg;>6)_}Z<_O@74dyr&m-DNhj{-qOiva1cy9}cl8IVW9 z1rDVGm5cO3Mzz|6qIMhTo<`y--=%RVV)aDb;<*=kx~asZ*aq?$(GU z<6^|3xb4CqKPI}bI8AoAj(HK2cAo3c=9x6HDZ!R{@(?THf5y|UY-qWT$$O;8iU)TV zMp(X-2VQCbvo8Y^ToXu=m7>_C><-ZAXMw`=%nvDKL;Us+zFIX@bk>E&iF^_P!KQtl z&u~_LTqb)c_m3!LrPHX%0y+G0uL4miy7reCGEVq&$_M>#fv!0XTd>_+GGCCvB!B5? z;LyhR?@^)A4^Rs`XHHLte)2lTm<7FoJ>&Q1rUaO%w$;-832aogw1TT7C*!#PQ`f*r}CB(t8*qGPTU}s!=f#pt>K!ddRcI%Ie2y0wCFnZHfQB zKapoa#*jnAN}O=d@w?-%i42M2BgtWS6%T#A%lRo;3P*Ozy`1s)_2^Z61P0Gs%%?+T z0mrSjUQBaxn<*8#8eqJaJLET@3woBN$u1!r_u6=IUorSEq>X@x!kDpAe9CZecuM-1 zLSSjJBc9>jH7G1WM26A}KT!`}mD8_61qTC1e;wVa7aZfC)saZcB-h4&*FfbFuu+nT z%uBHloXnZ?+yL2j~(-l^Lnb&?XSq(Mh7|S8zXqOKs6>NQj{QQ*ihHm{Fk@&4IqT=g#EQ#MP z=Zj71d!vDoj^6bP^;^sigPyF+{x%koEteHQDi-S!-@H@Fv!sd#lD3g*rnRy`nnm5e ztZFSH=`KR85|r-2x1_!^C8c)fZJqsTI*>9iI1m}hyG->u3#ctIgO{Hq3VMvmb6XOL zA^H0Y^i{en$kDU$3)L3>?&zQZ8W-daz;8ktoEvc^0@QJfU)E6-K_gSD*^m|9oT@`{- zVC7FK-v6Bf&?qA02SoqOg+xs!_i3MuXD{Emy2xM>vaJ3IG;kTLeD~S(`~PfO;>EhEVuOE}vMC)_ zLYI<>VPM5!-O!7S54?pJZxS!v*F0?}5R53w6Ns|%)u{(PGRmZfc)Q%ndj}<2A5oJl zuE%Nj%EyFuia_4Zs8ow#x1{!vdGF&J$XHYp@~p|MnR#m%1PK5!-KI7~UnFNexBC6W z`r!UPObIkPm-v8bQkEdMD9e+>k0&Xi@cA%vU{_(l+@Fd0OCHc`BGuisZ&^NuAfj)p zpIV&*>*;Pvy1scBUW#o*@ zVGo&$%bM+d*vhE9<-`0UAW za`Vz9D|2IS0MowTCK}7y+wC~eqjy{)`;>4(w;WSy@*d&4M@3VpO3J`hwQ1~O4@~i6 zM1>qgu!-*G&;hhYi@FbT@?u{8~^F`5uU z``44Ja$w;GX*IwXZ--=40cuk)Z}My+Q-^k*R&QoV0LjYtu#DHjQ{nhgQFvcwm?jL^ zaX8+muWvNKk7He9_l8ftvM{rtWZ=^1N4)PDI13N;sZrqN$^0{}yy4D9l&N#5a4-Hi z!Sj#eCtq#6!5&u11+o}?<_5t62!XJhuuRmxB zZ-4qWJeDxZF23`;q?*u^-=oAHkLzQ{C!UmLmBS1#+U@U)Kfuk}qXTQ6B-;OST{cGwslJbb?wa!?GovGyJFg}JltG7E7G;F@)y5`3 zU~3`LVx_33lOXg@>564S5fzR9{-z2!lw$>mN1jFci+2L>@-n$clS04ETO~+-M$NJJ z@Hr~kSy=!37R1>)72hN|T_Fh){=rkGQVd|hdhPPfBnR!&shey`^w!PjyXsMHaS{U# zk!UA|p1j=XzG;X+*PGk#)ws<{hFw%h<*?>qqSs;UMsZ=DKU3py9cQ?2jJPh0T!awW zVOn^g=8T^d4>a$oT#oBD6m4#O>Jc0UEo67fJJNSIr)HX+X-p-@t^L!_NWwee5&0U} zb0%$9)A;R}pjQdcm7u|y+0{d~ggS|xZ$u4pecWzL$irE~Xi|_r=+#=?S>k5VPm6M; zGzluhmTiYxaprFa*}M5+(zZiGoSpD7k=? z7*bzazMoHyAS1Ingy8JDz9)VBy|a)u(@%~te}h(Tvq%SkiQ;wAA!pxWyyAizyHUbp z$~{@K&l)p*NrqQfK+~yiu@a)LdKCq8kpw9-WHS+LVyP)k_8+3YMc2?B#fcJ3Ftr=_ zt4cd$ErXW^71pAcI+mC3pLf$?&b*~5^yk`qo$_B(`40s6FoR_&_iN2ASzkp+GD88+ z+~IODaRFvO^#2vV3>6$D18}J?cV|JS>Z=5nFCBQ)j^f^{aMla{zwTqEcLGi9$R8G6h zNhR`@V~I2y;8-gW{fdxxCb>ZeyA@ZM)dMo3eiMi%_TaGi`O%?Vc;8oIT#=?yYc%N& zThr%e7tru?|AetJccDX@G(GU3O(I7C_`#PT@ndOoPp`iZH-8DyCwAniXS~jyiZKZt z8L}Wct&KfkdMVWH15JQAO@^j*wMV6Wu7Nj;==m!7;zA&CeKCyU&Rv?e^(S+OqRLF) zj&7U`q-Et~!6QF^#K&BpS$XL{q%)~N;L#F!T7iLR)M|(bjb{G?7=8_!6ZV)7pZ5`2 zW9FFsC?8p97Y`k?$MasU!E}MFZ>i!085m$6sGKuIhV<>%b6|xE@|8KM?~V&xW=DJ> z-I$Rfb)t)z6a93O&5ji~(0ltPTFfdp==SAPU@NUFknslxR*1hq{ zV43Z3q9E+UB&X&efiBEnxo7q{Pr3T+;#_SaK+`$lG&!q=zYmVNLg5#&B<{efjPL8 ziSTpzzQR3yHDmZmJE3v2WMgGMhC$p!4L6n+RLr?wQ+4R%i$&{UHi+sXt)Je(l%MWh z$ToeLC$Cz3G(vc0eF`_7s06ZuTHvlQwFUQ`tyK8%oH--G!Ma%t=(R#i@BWGo2d*fl zP1z$%^-{W5mhV%4^XhrWmY|0bdgiV*z$M}nXOg!IN$x7}uuN_A#Pdq+Ptys8Z%R2e{s^@OWaDA1_1sIG z2r84f89>NgpIfL-69Cljov@&Sj6k(W*nh49=g+^KBv!2I;foJr5wgmr{`}%w!G=43 zam!oPY4Hl2lAu%f;fh3U5hPc<>75`JGyWRkogNeEU6^{*88p*MLFz= zCjETvJ|-hRT=b_PtRim*W_z08DkY-!YNR=tN`AY<9wG^Dag*9ap^!}rQvN?C!~u4S zV)~UNk7Gh1iOL9U0%)B-KsJlbjRHa*7fJIP*21^p*IST1L>ArJqMA%JSVjn1Hk1~mLA48KwOcWP~ zZj$-{MR5~s0a8zO5#OMK9T_N4e(+p8K~M^HF|z#j;_D*sThQ|J_nWpBGx(Ciw-9p6)@B^}=mhF@bjCuo z%*HDbqb_mxUO@r#wpJn{@r; zS>RezNb&-n^a-XaJJWA-@aREvDbPWf!pO%`o4O12xcJtwA#IUQoVD#y$A7^ferV`# z6P?~z`<*Rnc$jK<82W3Hnk+y|pUK12hJ2xlE*ue9{x#i>x$!NR%%ESv)gK?3Rz%7V zJlKkEZd`WfKif{%#AGWrf}e&K(izxm>vO1^Uy} z#sggR{o|Jo!guX6<&XJN)TYitT=W@h41V%=pj&dYo|1?YEzb;c@=ug{6ic=7tWs$X z<@rYj1MJ;xVf zINVKA+Pdk7GY>M;0WDWp`U!)luagra_4hTB)C_z3oh*Dk!kBXEqaYGf-DTKgrF!pl zy@r*#we?JmP*?7*S$gH7EqgLkh%79J05ccJ?aum2yzD5dg1;a#4QT2sB z=R7Zq6a7rD8yt;pZ_S_$6HU}>&#b!UP%p%mXvR+>k#Dd5Cr)%P$`YQDmN1^+0QG-G zT!j9<9}2lJ-6(iN0y7gwOF{b=jG8%FqEJ#uR0zrKEF6_@73d*=;zqvO3lC*}OzZ@3 zBSO9@pyx%BXVrx84KOYu08*(5g|U{u^uty?lJyG=Joyomen&P9zHZV8A+&Yf@m)s) z&Ue$vPdHf`^CG~P2u%qouu@r-w4XBdNM9uG@tp$HY$|ucG)z~-De~~3hQR<2CcKhJ zYUoY~;wGN^+9gW05v@%-&uEF*dB*o`CJsDL>FL?o+3D{;=cu|#?t1kyI5_z118ywR zvY4Er?pk?$$m1H<-&r}0cK7tmAoX6Xf6LUqr9IIm?RjD^vrDS>`ry*1VnXcY!Cl+ z^&hmjrYk>pPeQzW2-FCg@QNJB{k%o7*#4MIQyqy@%0{Z8kTh|pTMwKpmFgZ(|Ft0I z(-|32)|o2fajwda%4)A>*^_v$`G>we|Lrx7A<{g{s1mK=E|=NVJSPyBQKH$xLs?&U zkI)}5==xg%4WUa7#+`oyeg2tq=(4PwS6(3(LL67d5mo4BA;*(n98=Pu&S|!Omw1t= z55x)A>}hnt{q7ZNB#*=Vf5=mk8)uP*+Iwmq4v__M#4L}b8++LtmIfTWJ58FMFFwU@ z-+nvjx$shKY&~G4h#~?sqOaSajRL{QG4mK?qw49O*ka6w!-@5corIoVua2mB-HrcF z=-9_xwLLt>F>Mb)7?dd=Qz&^ECa#VsMjLV5FmwOXmsp}4bfl6C#P=P2x19SZXF|3s z-a~SXdJTaoo=0zIuR~3p2E@(=KaC-q_`EGUKWZg()=J&mMfeR^EGY7+d;N#MuNpU&qf9UWS020D-M0u=ia=*<$= zWR|xBSF}bU5!CO!V<%miz%EYc+bJ`)4*3_nQM_5RH~1QgIwR#@b|JH2$Yf|}hzs)Y zPjZ?~28YSD=~Nh?-k56lX6fSPOI@D4bRtC%Q=q{k$5mtaxq(s)Fk}hjYsO&ChDq}F zAJd3G=nJkSPNd9g{Bx+go`2>-QX#D;3ELjeKkyJONTC6Q2EimDU>l5&nCLZ&1?2#U ziY)dd^r=uv7I2ryf>(GmR<#V1`<#P^n|UH+J!_TA_@Rb6In7=NF8>|ZpJ#-;a+ana zj)g~xLW8QpxEYAw4U(~T-DU^FM{TYHboZX9SOj_y&x{#1-j6HRr8O=4>F+h08Tm!u`LE|rzUWoDUw z(_LK(q}vxIP8l#^P@}XuOPx!Ui)S|^pr?o~&5m*WZxiSlj^FzRwHV~M#V5{Bjkmwl z=H*Ns1O^3lQ^8)34;}YgT3a2N*s1B(4daullmlGhdhm2vJFcOQk_)(~^1RxYdJg)OQ;I9r?M#BDaM|FGjX(AB+CD%lDyuV~3uB7OpT--V|yJ#3tD zT;W>3;wNaW9}u(WM+P}ArXg6{957ZA|kWSR3H*LN{N2j}9m3mA-P5@6)J_$hj(X1>f|CE?< zdc&_;PKO1T0AVAVI;_;>fA=R%SxcRmT>Ard+14Y#3Dg5P$u0@{7* zZFK%+TGy>gu}oI_ce*xE{;i3ec$1gqwJ`I}>%L)3CBG3}Ri`h;-E{$ z-kVrJOA^)9@0ro@2VWi@?%mt4z!inQWIEc!7kc*|neDs=c#dXIkeNhClD2`Cf<6}3 zR}K>|2V0n+8;J=iWyY-MT5g*}g5bih2X<9-z7ix}l;mz}&2OO4uwZT9!PWGe>2o~< zTBpogI(nM;@Xg^CQIZ;gB38QQY369lG620hNU7ac`N#gx$AtAX8&I8P-hIN4v|DOm zH!Tm^$KRRzp1_OldB1-^FZuprQFR;MAu`L)68mW)rl~1|^Lz#*B6~s$07V1tI0sn| zn^M$BkB(-?Mo)&>P{-Pywl^B8ko=B%X@+nOGC}{x_p9Izp|F+4#%q-Xcswk}KX+Vu z;=oddxvOm|gf(a~m|KB>=+~asRXV3<&WGr7Y*r4_W1R;dFZbJNh z(v=Q@UVO51Lm5d_FGOyB9a+sLaW*JYlD?8WLjF71=qEVrJ@i0uI|vVV;L|E0q&sBW zGez@AcG4ul0S>r@aLEa;2H)3(BK;L~hHsb~5So0t>Qd5m>fnKkL2KgW77e0|*Y4Fn z0+V7i7C5nnav6wEomu`y{~c}DX}JHjhQ5;rf{y-%XzT4vrBX7R#iAxNhko)4pkh#c z=_tOt;4c1|LJ1*wc+8{$yQW(I;NE5a?#lsJ8zxH0iuPuxMe^7on~Yhd^V(pa{}ng z%E|9chAAdKV7PMYMFGZ`qX@HGxn6`$dPJl?TYZqbCYnz>-g4;lT}y&Ate1C%lkvy8 z=U9npg|wO5sB*K3_rbynCFG#Bdpy_e2~GNu>itze2RT1#RVatq5G%Y^mKT!Tr;a3?pu6N(K3z#HQ5ls2cCmWAQ z($A^-RV!aG=uWf-wq(sf-IW;A4lxlz{Za-)p#cL#qyFcYApZcIGXdMRO1ls`+pUAH z-$5z&BT)i~AtE6_dSMbQ8tk-q07PcA?)&^5DmWbcKC@8A#)zPEzRtsGdQG@|^ib%d zrbp7}+H=+Le{Y=cxkYU~cS-lZZqDFv!g!Sh!m1*d&;A|%y*En*VZ6HXqN299^~k_8 z6fNS*O-sZ0`skXM4!;Kg8?$ZITOkhpf|_xxulYdAtjT5F*xerw6}}RJblvYm&+_>5 z?=-qqIj!$qepC|u22Kn;%Oj=}mY(h(!j^<#RO4SbqOY?#7CO-_|2eyV$s&0Sah%$J zXY;Y&+qv_VNpgoGSmaGhU7nFZgrCn3q>(dvhYLu*TOf9-bmd{wt3GEdU95kA%kd9n zv*DnKP#3K7To5OeYGJEu0cr#XIDuj|=x-PdUN^+AG;H%}2}Ye>pP$BvGTKk&KeilE zSjK4Sv&m!Cf#TnBEbmSuqPaTp0U*-@!NqVk>ILxSh;474|1G$Eqc_kTeNjcHh+*Xe z!mE@4UBxi2Ay9eebk5*+ewO>7S(J?&SuZa)Tt$6b2uhkwZrLu z;N$kf&T>qp(7!xo;l5~hd7=h3^`>NYp%dK7?ci)3!#6SB1 z%_xooc2VDd(+LIJ0UWjOD6l2{VzLTi{drVmrg94}^H@t^mg(L!_=BD<(W_M#wPCS; z>s`=yBCnLG#beYpnlsQ-cpM#Es{Zfa0#jbZ_6vg@ovs{=M>DEG$VjBJnvl3D$oC_m zX2kZocu^Mlg(5L%5H*$t@kC{&x^kc#S=ZEkZGto&J7;H?(9~zLNU8Z@&{|-e!E-na zd&!UkWu?!GBP%RODyrUqs$7pHR7~V(N9J3Y5u;T8+Ck9{J+8IiNxz1O4P`r4OKNvp zYsOPWp!qm!xba>=yO0H8jm7uQ*Iu11a>v{l+g!IQLDT@DOGTx3Myq-qjC@6`7Wgg zD)-$AeJs3pv!+r`;<>O@(GL`WQ>&s;+f?rfQlQFGsXfR&Xl$<{D&;dkBlAH9&ra2D zRR~;=s#5;lD5<1)=ze-nCoF&hDGc4e4;2clP`hqU)oxXYbU`IVb=B-E8oIAiNui3> zdzKoXl?v3V;#74Efk%du9=n-W^GC}VPa(G|I&W1B)T+3Wilk0A|Sp-rlaz;s65W0JRfN{dlDstqLJ2YE@h%r4AR(+@Ho9403-;s&=bF8m)@U zq_(J}rV`cr!`>OINC*RAI8Sh|un(ZGB4ohA%1Th|!qwMYeSKc{G8y$3Vc1iaO+4}y zvTXaoMCRL7^DdklH>@=~rfD)l*X5$h%LLR@g@{6`K&v>X>M#NQit^6=`>6tWCdGOO zzb_i{`Jm^SDzpl(qzWv+p-P{Cx+z9+kU|yc`+g_OZhC?$h)S*st%B!}k}AMqt9o7) z8`tqGMmJSdF&?Sn#j4=JWJpz2ZY9`S^i5OObvz&4r*Qp+&2?P|Roai*^}i|VuKbBq z0afp%s4{;@6#=9QWTiJ#RQbKCW2?X&1yrF`+@7GPVir}_jtqM;j$v7>?ZVnZ-q(Vs z(;huBia8zcjj9T!lB+7J09wT{E3vBYrA{C#-5zU$B_bzSYl+&n9R{LxFm_$Os=k!0 z^rK{@qDtct397>NaEytkpl53(Fn6g{JkLt^$1xStGQ%*>bGR^lAID#os;+0H^b}Rd zN?yrIH)j}zxUb-O7k$k__)lhQI$L^6;%nd zQvNheGcrU`RnxF0foNo=$(#pbHLE@n6`=x^rk?bqTfCQ@Yrl|UD=MGZbh=C{! z7vwm)L+b$r&>qW{02@ z!Y3+R=tUsbNsXu^`bB=8NcA_w_fwHddW$;7#SWHdr3eKjwQ|M`rF&H25(XR^S6^If zR1^N4A{F{fh2bSBwk|XgNhyRYm0rUui!GH5imMbv@EOIYiKIvsZzPopTJj_n(;8;~ zLWr(q%YYh{>f=;`oXX|i9jW5&*42pTlT-`>m|O{7xfX0G`a8fK_K&CZ;PT`G!aKQX*kY{7oXtdYvNAQX}88>xI&FXwicGXU2wd4G*c z{v9e()$O-06+0d~wnk+@;+0DSDp&GxUMf-nr%CNh#ZH#LX?Lm?wx6f^bErtwkYfCQ zU(J$=g>az?0sl$2nYBvoajF?2)mvl1pg@JeJ6T4BV>KvM`Era@Y`XxDo^3}QX-&p4 zQn3{W3$UZYADt{n{=7)VNX33za;H#}Z;X+O{Q-Fk$sNPoxt{<4002ovPDHLkV1hwp Bi5dU^ diff --git a/public/images/pokemon/exp/569-gigantamax.json b/public/images/pokemon/exp/569-gigantamax.json new file mode 100644 index 00000000000..6cda2b0d79a --- /dev/null +++ b/public/images/pokemon/exp/569-gigantamax.json @@ -0,0 +1,1478 @@ +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0002.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0003.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0004.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0005.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0007.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0008.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0009.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0010.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0011.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0012.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0013.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0014.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0015.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0016.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0017.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0018.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0019.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0020.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0021.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0022.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0023.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0024.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0025.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0026.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0027.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0028.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0029.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0030.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0031.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0032.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0033.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0034.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0035.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0036.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0037.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0038.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0039.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0040.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0041.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0042.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0043.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0044.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0045.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0046.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0047.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0048.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0049.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0050.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0051.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0052.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0053.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0054.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0055.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0056.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0057.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0058.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0059.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0060.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0061.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0062.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0063.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0064.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0065.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0066.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0067.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0068.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0069.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0070.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0071.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0072.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0073.png", + "frame": { "x": 305, "y": 173, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0074.png", + "frame": { "x": 305, "y": 173, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0075.png", + "frame": { "x": 305, "y": 173, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0076.png", + "frame": { "x": 206, "y": 88, "w": 99, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 99, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0077.png", + "frame": { "x": 206, "y": 88, "w": 99, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 99, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0078.png", + "frame": { "x": 108, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0079.png", + "frame": { "x": 108, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0080.png", + "frame": { "x": 108, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0081.png", + "frame": { "x": 211, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0082.png", + "frame": { "x": 211, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0083.png", + "frame": { "x": 211, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0084.png", + "frame": { "x": 211, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0085.png", + "frame": { "x": 211, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0086.png", + "frame": { "x": 211, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0087.png", + "frame": { "x": 108, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0088.png", + "frame": { "x": 108, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0089.png", + "frame": { "x": 108, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0090.png", + "frame": { "x": 108, "y": 0, "w": 103, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 103, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0091.png", + "frame": { "x": 206, "y": 88, "w": 99, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 99, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0092.png", + "frame": { "x": 206, "y": 88, "w": 99, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 99, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0093.png", + "frame": { "x": 206, "y": 88, "w": 99, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 99, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0094.png", + "frame": { "x": 305, "y": 173, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0095.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0096.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0097.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0098.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0099.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0100.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0101.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0102.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0103.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0104.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0105.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0106.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0107.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0108.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0109.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0110.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0111.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0112.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0113.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0114.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0115.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0116.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0117.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0118.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0119.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0120.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0121.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0122.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0123.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0124.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0125.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0126.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0127.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0128.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0129.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0130.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0131.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0132.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0133.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0134.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0135.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0136.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0137.png", + "frame": { "x": 0, "y": 170, "w": 96, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 96, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0138.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0139.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0140.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0141.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0142.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0143.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0144.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0145.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0146.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0147.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0148.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0149.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0150.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0151.png", + "frame": { "x": 0, "y": 0, "w": 108, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 108, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0152.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0153.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0154.png", + "frame": { "x": 0, "y": 85, "w": 106, "h": 85 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 106, "h": 85 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0155.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0156.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0157.png", + "frame": { "x": 314, "y": 0, "w": 105, "h": 86 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 105, "h": 86 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0158.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0159.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0160.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0161.png", + "frame": { "x": 314, "y": 86, "w": 103, "h": 87 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 103, "h": 87 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0162.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + }, + { + "filename": "0163.png", + "frame": { "x": 106, "y": 88, "w": 100, "h": 88 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 100, "h": 88 }, + "sourceSize": { "w": 108, "h": 88 }, + "duration": 60 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.13-x64", + "image": "569-gigantamax.png", + "format": "I8", + "size": { "w": 419, "h": 261 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/exp/569-gigantamax.png b/public/images/pokemon/exp/569-gigantamax.png new file mode 100644 index 0000000000000000000000000000000000000000..90decc0ad84dfc538489b5b630563f24da2364f7 GIT binary patch literal 11486 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 literal 0 HcmV?d00001 diff --git a/public/images/pokemon/exp/815-gigantamax.json b/public/images/pokemon/exp/815-gigantamax.json new file mode 100644 index 00000000000..d8fb9d62e57 --- /dev/null +++ b/public/images/pokemon/exp/815-gigantamax.json @@ -0,0 +1,659 @@ +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 343, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 357, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 85, "y": 292, "w": 82, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 82, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 252, "y": 482, "w": 81, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 81, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 258, "y": 290, "w": 83, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 83, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 416, "y": 484, "w": 79, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 79, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 426, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 445, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 179, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 1, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 523, "y": 195, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 509, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 89, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 531, "y": 98, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 343, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 357, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 85, "y": 292, "w": 82, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 82, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 252, "y": 482, "w": 81, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 81, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 258, "y": 290, "w": 83, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 83, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 416, "y": 484, "w": 79, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 79, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 426, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 445, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 179, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 1, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 523, "y": 195, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 509, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 89, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 531, "y": 98, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 343, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 357, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 85, "y": 292, "w": 82, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 82, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 252, "y": 482, "w": 81, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 81, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 258, "y": 290, "w": 83, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 83, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 416, "y": 484, "w": 79, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 79, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 426, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 445, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 179, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 1, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 523, "y": 195, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 509, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 89, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 531, "y": 98, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 258, "y": 385, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 267, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 1, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 268, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 426, "y": 389, "w": 82, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 82, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 1, "y": 484, "w": 81, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 81, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 341, "y": 389, "w": 83, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 7, "w": 83, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 84, "y": 485, "w": 79, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 9, "w": 79, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 167, "y": 484, "w": 81, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 7, "w": 81, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 1, "y": 195, "w": 86, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 5, "w": 86, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 265, "y": 194, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 89, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 1, "y": 290, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 1, "y": 387, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 353, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 510, "y": 389, "w": 80, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 1, "w": 80, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 169, "y": 387, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 1, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 355, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 443, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 90, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 174, "y": 290, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 84, "y": 388, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 438, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 335, "y": 483, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.13-x64", + "image": "815-gigantamax.png", + "format": "I8", + "size": { "w": 611, "h": 579 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/exp/815-gigantamax.png b/public/images/pokemon/exp/815-gigantamax.png new file mode 100644 index 0000000000000000000000000000000000000000..4720e564c092db71fd8aeec94a12e922a1889651 GIT binary patch literal 32666 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 JYGK2G{|AD@b5{TW literal 0 HcmV?d00001 diff --git a/public/images/pokemon/exp/839-gigantamax.json b/public/images/pokemon/exp/839-gigantamax.json new file mode 100644 index 00000000000..15a7c122f5d --- /dev/null +++ b/public/images/pokemon/exp/839-gigantamax.json @@ -0,0 +1,821 @@ +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 525, "y": 567, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 441, "y": 566, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 609, "y": 567, "w": 83, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 83, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 255, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 171, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 569, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 1, "w": 83, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 339, "y": 569, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 0, "y": 474, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 464, "y": 375, "w": 89, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 89, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 580, "y": 190, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 95, "y": 96, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 198, "y": 95, "w": 95, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 95, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 491, "y": 0, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 96, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 297, "y": 0, "w": 98, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 98, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 0, "y": 0, "w": 100, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 100, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 198, "y": 0, "w": 99, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 99, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 100, "y": 0, "w": 98, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 98, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 395, "y": 0, "w": 96, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 96, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 189, "y": 190, "w": 92, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 92, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 89, "y": 379, "w": 88, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 88, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 525, "y": 567, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 441, "y": 566, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 609, "y": 567, "w": 83, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 83, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 255, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 171, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 0, "y": 569, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 1, "w": 83, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 339, "y": 569, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 0, "y": 474, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 464, "y": 375, "w": 89, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 89, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 580, "y": 190, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 95, "y": 96, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 198, "y": 95, "w": 95, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 95, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 491, "y": 0, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 96, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 297, "y": 0, "w": 98, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 98, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 0, "y": 0, "w": 100, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 100, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 198, "y": 0, "w": 99, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 99, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 100, "y": 0, "w": 98, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 98, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 395, "y": 0, "w": 96, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 96, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 189, "y": 190, "w": 92, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 92, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 89, "y": 379, "w": 88, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 88, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 525, "y": 567, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 441, "y": 566, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 609, "y": 567, "w": 83, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 83, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 255, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 171, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 0, "y": 569, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 1, "w": 83, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 339, "y": 569, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 0, "y": 474, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 464, "y": 375, "w": 89, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 89, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 580, "y": 190, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 95, "y": 96, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 198, "y": 95, "w": 95, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 95, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 491, "y": 0, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 96, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 297, "y": 0, "w": 98, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 98, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 0, "y": 0, "w": 100, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 100, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 198, "y": 0, "w": 99, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 99, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 100, "y": 0, "w": 98, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 98, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 395, "y": 0, "w": 96, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 96, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 189, "y": 190, "w": 92, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 92, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 89, "y": 379, "w": 88, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 88, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 525, "y": 567, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 454, "y": 470, "w": 86, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 86, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 0, "y": 379, "w": 89, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 1, "w": 89, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 573, "y": 285, "w": 91, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 1, "w": 91, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 93, "y": 191, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 390, "y": 96, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 585, "y": 96, "w": 94, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 2, "w": 94, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 293, "y": 95, "w": 97, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 3, "w": 97, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 484, "y": 190, "w": 96, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 4, "w": 96, "h": 92 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 92, "y": 286, "w": 92, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 92, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 177, "y": 471, "w": 89, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 89, "h": 92 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 177, "y": 379, "w": 91, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 91, "h": 92 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0073.png", + "frame": { "x": 184, "y": 286, "w": 91, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 91, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0074.png", + "frame": { "x": 480, "y": 282, "w": 93, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 93, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0075.png", + "frame": { "x": 281, "y": 281, "w": 93, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 93, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0076.png", + "frame": { "x": 293, "y": 188, "w": 95, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 95, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0077.png", + "frame": { "x": 587, "y": 0, "w": 95, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 95, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0078.png", + "frame": { "x": 0, "y": 95, "w": 95, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 95, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0079.png", + "frame": { "x": 491, "y": 95, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0080.png", + "frame": { "x": 0, "y": 190, "w": 93, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 93, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0081.png", + "frame": { "x": 388, "y": 191, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0082.png", + "frame": { "x": 0, "y": 285, "w": 92, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 92, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0083.png", + "frame": { "x": 275, "y": 374, "w": 90, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 90, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0084.png", + "frame": { "x": 374, "y": 286, "w": 90, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 90, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0085.png", + "frame": { "x": 365, "y": 380, "w": 89, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 89, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0086.png", + "frame": { "x": 553, "y": 380, "w": 89, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 89, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0087.png", + "frame": { "x": 540, "y": 473, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 87, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0088.png", + "frame": { "x": 268, "y": 468, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 87, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0089.png", + "frame": { "x": 355, "y": 474, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0090.png", + "frame": { "x": 86, "y": 475, "w": 85, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 85, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.13-x64", + "image": "839-gigantamax.png", + "format": "I8", + "size": { "w": 692, "h": 664 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/exp/839-gigantamax.png b/public/images/pokemon/exp/839-gigantamax.png new file mode 100644 index 0000000000000000000000000000000000000000..5a614b0c895bb237d0a38c374708a72ce216703d GIT binary patch literal 65284 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%0AOdMtk#fe0VOC^|N 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 literal 0 HcmV?d00001 diff --git a/public/images/pokemon/exp/back/569-gigantamax.json b/public/images/pokemon/exp/back/569-gigantamax.json new file mode 100644 index 00000000000..b266f5eb799 --- /dev/null +++ b/public/images/pokemon/exp/back/569-gigantamax.json @@ -0,0 +1,1478 @@ +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0002.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0003.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0004.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0005.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0006.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0007.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0008.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0009.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0010.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0011.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0012.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0013.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0014.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0015.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0016.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0017.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0018.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0019.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0020.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0021.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0022.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0023.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0024.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0025.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0026.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0027.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0028.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0029.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0030.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0031.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0032.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0033.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0034.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0035.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0036.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0037.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0038.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0039.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0040.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0041.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0042.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0043.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0044.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0045.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0046.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0047.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0048.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0049.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0050.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0051.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0052.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0053.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0054.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0055.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0056.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0057.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0058.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0059.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0060.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0061.png", + "frame": { "x": 311, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0062.png", + "frame": { "x": 311, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0063.png", + "frame": { "x": 311, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0064.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0065.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0066.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0067.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0068.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0069.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0070.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0071.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0072.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0073.png", + "frame": { "x": 0, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0074.png", + "frame": { "x": 0, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0075.png", + "frame": { "x": 0, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0076.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0077.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0078.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0079.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0080.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0081.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0082.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0083.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0084.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0085.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0086.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0087.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0088.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0089.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0090.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0091.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0092.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0093.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0094.png", + "frame": { "x": 0, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0095.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0096.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0097.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0098.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0099.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0100.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0101.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0102.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0103.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0104.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0105.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0106.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0107.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0108.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0109.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0110.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0111.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0112.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0113.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0114.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0115.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0116.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0117.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0118.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0119.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0120.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0121.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0122.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0123.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0124.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0125.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0126.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0127.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0128.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0129.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0130.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0131.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0132.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0133.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0134.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0135.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0136.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0137.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0138.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0139.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0140.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0141.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0142.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0143.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0144.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0145.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0146.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0147.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0148.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0149.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0150.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0151.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0152.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0153.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0154.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0155.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0156.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0157.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0158.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0159.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0160.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0161.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0162.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0163.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.13-x64", + "image": "569-gigantamax.png", + "format": "I8", + "size": { "w": 413, "h": 281 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/exp/back/569-gigantamax.png b/public/images/pokemon/exp/back/569-gigantamax.png new file mode 100644 index 0000000000000000000000000000000000000000..13bbe97bee4d30fcf08215eccde867b3eb7a03ab GIT binary patch literal 9183 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 literal 0 HcmV?d00001 diff --git a/public/images/pokemon/exp/back/815-gigantamax.json b/public/images/pokemon/exp/back/815-gigantamax.json new file mode 100644 index 00000000000..952ea16b6b8 --- /dev/null +++ b/public/images/pokemon/exp/back/815-gigantamax.json @@ -0,0 +1,659 @@ +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 525, "y": 384, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 356, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 444, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 267, "y": 98, "w": 87, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 87, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 528, "y": 194, "w": 82, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 82, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 250, "y": 484, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 333, "y": 388, "w": 83, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 83, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 82, "y": 485, "w": 79, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 79, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 167, "y": 483, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 440, "y": 194, "w": 86, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 86, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 267, "y": 193, "w": 85, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 85, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 1, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 86, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 333, "y": 482, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 525, "y": 384, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 356, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 444, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 267, "y": 98, "w": 87, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 87, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 528, "y": 194, "w": 82, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 82, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 250, "y": 484, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 333, "y": 388, "w": 83, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 83, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 82, "y": 485, "w": 79, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 79, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 167, "y": 483, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 440, "y": 194, "w": 86, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 86, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 267, "y": 193, "w": 85, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 85, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 1, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 86, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 333, "y": 482, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 525, "y": 384, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 356, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 444, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 267, "y": 98, "w": 87, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 87, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 528, "y": 194, "w": 82, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 82, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 250, "y": 484, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 333, "y": 388, "w": 83, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 83, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 82, "y": 485, "w": 79, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 79, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 167, "y": 483, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 440, "y": 194, "w": 86, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 86, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 267, "y": 193, "w": 85, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 85, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 1, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 86, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 333, "y": 482, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 84, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 179, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 444, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 1, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 171, "y": 289, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 1, "y": 389, "w": 81, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 81, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 525, "y": 288, "w": 83, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 83, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 1, "y": 485, "w": 79, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 79, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 84, "y": 389, "w": 81, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 81, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 356, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 268, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 3, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 354, "y": 194, "w": 84, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 2, "w": 84, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 255, "y": 290, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 423, "y": 385, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 1, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 1, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 506, "y": 481, "w": 80, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 80, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 250, "y": 387, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 1, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 89, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 90, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 339, "y": 291, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 167, "y": 386, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 440, "y": 288, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 414, "y": 482, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.13-x64", + "image": "815-gigantamax.png", + "format": "I8", + "size": { "w": 611, "h": 579 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/exp/back/815-gigantamax.png b/public/images/pokemon/exp/back/815-gigantamax.png new file mode 100644 index 0000000000000000000000000000000000000000..0036d75cbfcd323c67f61ee70e6a73e3b1d1cba5 GIT binary patch literal 33861 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

}-cD{Kp` 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 Mp00i_>zopr0Du-n3;+NC literal 0 HcmV?d00001 diff --git a/public/images/pokemon/exp/back/shiny/569-gigantamax.json b/public/images/pokemon/exp/back/shiny/569-gigantamax.json new file mode 100644 index 00000000000..b266f5eb799 --- /dev/null +++ b/public/images/pokemon/exp/back/shiny/569-gigantamax.json @@ -0,0 +1,1478 @@ +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0002.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0003.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0004.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0005.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0006.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0007.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0008.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0009.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0010.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0011.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0012.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0013.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0014.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0015.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0016.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0017.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0018.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0019.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0020.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0021.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0022.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0023.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0024.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0025.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0026.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0027.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0028.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0029.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0030.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0031.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0032.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0033.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0034.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0035.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0036.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0037.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0038.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0039.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0040.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0041.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0042.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0043.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0044.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0045.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0046.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0047.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0048.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0049.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0050.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0051.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0052.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0053.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0054.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0055.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0056.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0057.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0058.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0059.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0060.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0061.png", + "frame": { "x": 311, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0062.png", + "frame": { "x": 311, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0063.png", + "frame": { "x": 311, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0064.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0065.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0066.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0067.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0068.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0069.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0070.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0071.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0072.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0073.png", + "frame": { "x": 0, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0074.png", + "frame": { "x": 0, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0075.png", + "frame": { "x": 0, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0076.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0077.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0078.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0079.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0080.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0081.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0082.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0083.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0084.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0085.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0086.png", + "frame": { "x": 97, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0087.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0088.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0089.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0090.png", + "frame": { "x": 0, "y": 91, "w": 97, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 97, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0091.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0092.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0093.png", + "frame": { "x": 96, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0094.png", + "frame": { "x": 0, "y": 186, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0095.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0096.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0097.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0098.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0099.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0100.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0101.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0102.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0103.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0104.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0105.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0106.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0107.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0108.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0109.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0110.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0111.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0112.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0113.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0114.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0115.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0116.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0117.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0118.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0119.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0120.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0121.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0122.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0123.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0124.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0125.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0126.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0127.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0128.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0129.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0130.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0131.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0132.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0133.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0134.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0135.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0136.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0137.png", + "frame": { "x": 194, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0138.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0139.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0140.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0141.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0142.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0143.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0144.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0145.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0146.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0147.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0148.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0149.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0150.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0151.png", + "frame": { "x": 0, "y": 0, "w": 105, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 105, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0152.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0153.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0154.png", + "frame": { "x": 105, "y": 0, "w": 104, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 4, "w": 104, "h": 91 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0155.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0156.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0157.png", + "frame": { "x": 209, "y": 0, "w": 102, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 3, "w": 102, "h": 92 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0158.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0159.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0160.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0161.png", + "frame": { "x": 192, "y": 187, "w": 97, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 97, "h": 94 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0162.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + }, + { + "filename": "0163.png", + "frame": { "x": 290, "y": 92, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 0, "w": 96, "h": 95 }, + "sourceSize": { "w": 105, "h": 95 }, + "duration": 60 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.13-x64", + "image": "569-gigantamax.png", + "format": "I8", + "size": { "w": 413, "h": 281 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/exp/back/shiny/569-gigantamax.png b/public/images/pokemon/exp/back/shiny/569-gigantamax.png new file mode 100644 index 0000000000000000000000000000000000000000..2322fc2321e7e01ad0d153c27d2d63c243609b50 GIT binary patch literal 9188 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 mH!ZlGwgs}xlL literal 0 HcmV?d00001 diff --git a/public/images/pokemon/exp/back/shiny/815-gigantamax.json b/public/images/pokemon/exp/back/shiny/815-gigantamax.json new file mode 100644 index 00000000000..952ea16b6b8 --- /dev/null +++ b/public/images/pokemon/exp/back/shiny/815-gigantamax.json @@ -0,0 +1,659 @@ +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 525, "y": 384, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 356, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 444, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 267, "y": 98, "w": 87, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 87, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 528, "y": 194, "w": 82, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 82, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 250, "y": 484, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 333, "y": 388, "w": 83, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 83, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 82, "y": 485, "w": 79, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 79, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 167, "y": 483, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 440, "y": 194, "w": 86, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 86, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 267, "y": 193, "w": 85, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 85, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 1, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 86, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 333, "y": 482, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 525, "y": 384, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 356, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 444, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 267, "y": 98, "w": 87, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 87, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 528, "y": 194, "w": 82, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 82, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 250, "y": 484, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 333, "y": 388, "w": 83, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 83, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 82, "y": 485, "w": 79, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 79, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 167, "y": 483, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 440, "y": 194, "w": 86, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 86, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 267, "y": 193, "w": 85, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 85, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 1, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 86, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 333, "y": 482, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 525, "y": 384, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 356, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 444, "y": 98, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 267, "y": 98, "w": 87, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 87, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 528, "y": 194, "w": 82, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 82, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 250, "y": 484, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 333, "y": 388, "w": 83, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 83, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 82, "y": 485, "w": 79, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 79, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 167, "y": 483, "w": 81, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 81, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 440, "y": 194, "w": 86, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 86, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 86, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 267, "y": 193, "w": 85, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 85, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 1, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 86, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 333, "y": 482, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 84, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 179, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 444, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 1, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 171, "y": 289, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 1, "y": 389, "w": 81, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 81, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 525, "y": 288, "w": 83, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 83, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 1, "y": 485, "w": 79, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 79, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 84, "y": 389, "w": 81, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 81, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 356, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 268, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 3, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 354, "y": 194, "w": 84, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 2, "w": 84, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 255, "y": 290, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 18, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 423, "y": 385, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 1, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 1, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 506, "y": 481, "w": 80, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 80, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 250, "y": 387, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 1, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 89, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 90, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 339, "y": 291, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 167, "y": 386, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 440, "y": 288, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 414, "y": 482, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.13-x64", + "image": "815-gigantamax.png", + "format": "I8", + "size": { "w": 611, "h": 579 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/exp/back/shiny/815-gigantamax.png b/public/images/pokemon/exp/back/shiny/815-gigantamax.png new file mode 100644 index 0000000000000000000000000000000000000000..0668fd3b0656c2f82f197f9ae6f4e2b9164ca8ed GIT binary patch literal 33861 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

pQV^%q_uz*6hwsyb{y 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 N1fH&bF6*2UngAqSKzslI literal 0 HcmV?d00001 diff --git a/public/images/pokemon/exp/shiny/484-origin.json b/public/images/pokemon/exp/shiny/484-origin.json index 97d6a0b5f49..e77754c3b3f 100644 --- a/public/images/pokemon/exp/shiny/484-origin.json +++ b/public/images/pokemon/exp/shiny/484-origin.json @@ -4,8 +4,8 @@ "image": "484-origin.png", "format": "RGBA8888", "size": { - "w": 426, - "h": 426 + "w": 274, + "h": 274 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -35,20 +35,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -56,20 +56,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -77,20 +77,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -98,20 +98,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, + "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 }, "frame": { "x": 0, "y": 0, - "w": 91, - "h": 97 + "w": 90, + "h": 95 } }, { @@ -119,146 +119,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, "w": 91, - "h": 97 - }, - "frame": { - "x": 0, - "y": 0, - "w": 91, - "h": 97 - } - }, - { - "filename": "0081.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 + "h": 95 }, "spriteSourceSize": { "x": 0, - "y": 5, - "w": 92, - "h": 96 - }, - "frame": { - "x": 91, - "y": 0, - "w": 92, - "h": 96 - } - }, - { - "filename": "0082.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 92, - "h": 96 - }, - "frame": { - "x": 91, - "y": 0, - "w": 92, - "h": 96 - } - }, - { - "filename": "0073.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, "y": 0, "w": 90, - "h": 97 + "h": 95 }, "frame": { "x": 0, - "y": 97, - "w": 90, - "h": 97 - } - }, - { - "filename": "0074.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, "y": 0, "w": 90, - "h": 97 - }, - "frame": { - "x": 0, - "y": 97, - "w": 90, - "h": 97 - } - }, - { - "filename": "0083.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 3, - "y": 5, - "w": 96, - "h": 90 - }, - "frame": { - "x": 183, - "y": 0, - "w": 96, - "h": 90 - } - }, - { - "filename": "0084.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 3, - "y": 5, - "w": 96, - "h": 90 - }, - "frame": { - "x": 183, - "y": 0, - "w": 96, - "h": 90 + "h": 95 } }, { @@ -266,20 +140,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -287,20 +161,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -308,20 +182,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -329,20 +203,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -350,20 +224,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -371,20 +245,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -392,20 +266,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -413,20 +287,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -434,20 +308,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -455,20 +329,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -476,20 +350,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 2, + "x": 0, + "y": 1, "w": 90, - "h": 95 + "h": 94 }, "frame": { "x": 0, - "y": 194, + "y": 95, "w": 90, - "h": 95 + "h": 94 } }, { @@ -497,272 +371,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 90, + "w": 91, "h": 95 }, - "frame": { + "spriteSourceSize": { "x": 0, - "y": 194, - "w": 90, - "h": 95 - } - }, - { - "filename": "0120.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 90, - "h": 95 - }, - "frame": { - "x": 0, - "y": 194, - "w": 90, - "h": 95 - } - }, - { - "filename": "0075.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 7, "y": 1, - "w": 89, - "h": 95 + "w": 90, + "h": 94 }, "frame": { "x": 0, - "y": 289, - "w": 89, - "h": 95 - } - }, - { - "filename": "0076.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 89, - "h": 95 - }, - "frame": { - "x": 0, - "y": 289, - "w": 89, - "h": 95 - } - }, - { - "filename": "0079.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 92, - "h": 92 - }, - "frame": { - "x": 279, - "y": 0, - "w": 92, - "h": 92 - } - }, - { - "filename": "0080.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 92, - "h": 92 - }, - "frame": { - "x": 279, - "y": 0, - "w": 92, - "h": 92 - } - }, - { - "filename": "0089.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 24, - "y": 16, - "w": 50, - "h": 54 - }, - "frame": { - "x": 371, - "y": 0, - "w": 50, - "h": 54 - } - }, - { - "filename": "0090.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 24, - "y": 16, - "w": 50, - "h": 54 - }, - "frame": { - "x": 371, - "y": 0, - "w": 50, - "h": 54 - } - }, - { - "filename": "0111.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 24, - "y": 16, - "w": 50, - "h": 54 - }, - "frame": { - "x": 371, - "y": 0, - "w": 50, - "h": 54 - } - }, - { - "filename": "0112.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 24, - "y": 16, - "w": 50, - "h": 54 - }, - "frame": { - "x": 371, - "y": 0, - "w": 50, - "h": 54 - } - }, - { - "filename": "0117.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 92, - "h": 92 - }, - "frame": { - "x": 183, - "y": 90, - "w": 92, - "h": 92 - } - }, - { - "filename": "0118.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 92, - "h": 92 - }, - "frame": { - "x": 183, - "y": 90, - "w": 92, - "h": 92 - } - }, - { - "filename": "0119.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 92, - "h": 92 - }, - "frame": { - "x": 183, - "y": 90, - "w": 92, - "h": 92 + "y": 95, + "w": 90, + "h": 94 } }, { @@ -770,20 +392,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -791,20 +413,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -812,20 +434,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -833,20 +455,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -854,20 +476,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -875,20 +497,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -896,20 +518,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -917,20 +539,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -938,20 +560,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -959,20 +581,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -980,20 +602,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 91, - "h": 92 + "h": 91 }, "frame": { - "x": 275, - "y": 92, + "x": 90, + "y": 0, "w": 91, - "h": 92 + "h": 91 } }, { @@ -1001,272 +623,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, "w": 91, - "h": 92 + "h": 95 }, - "frame": { - "x": 275, - "y": 92, + "spriteSourceSize": { + "x": 0, + "y": 4, "w": 91, - "h": 92 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0060.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0064.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 89, - "y": 289, - "w": 89, - "h": 93 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 + "h": 91 }, "frame": { "x": 90, - "y": 97, - "w": 89, - "h": 93 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 89, - "h": 93 - }, - "frame": { - "x": 90, - "y": 97, - "w": 89, - "h": 93 + "y": 0, + "w": 91, + "h": 91 } }, { @@ -1274,20 +644,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1295,20 +665,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1316,20 +686,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1337,20 +707,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1358,20 +728,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1379,20 +749,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1400,20 +770,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1421,20 +791,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1442,20 +812,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1463,20 +833,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1484,20 +854,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, - "h": 92 + "h": 91 }, "frame": { - "x": 90, - "y": 190, + "x": 181, + "y": 0, "w": 90, - "h": 92 + "h": 91 } }, { @@ -1505,19 +875,229 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 0, + "y": 4, "w": 90, + "h": 91 + }, + "frame": { + "x": 181, + "y": 0, + "w": 90, + "h": 91 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, "h": 92 }, "frame": { "x": 90, - "y": 190, - "w": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, + "h": 92 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 89, + "h": 92 + }, + "frame": { + "x": 90, + "y": 91, + "w": 89, "h": 92 } }, @@ -1526,20 +1106,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1547,20 +1127,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1568,20 +1148,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1589,20 +1169,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1610,20 +1190,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1631,20 +1211,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1652,20 +1232,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1673,20 +1253,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1694,20 +1274,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1715,20 +1295,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1736,20 +1316,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, "w": 89, - "h": 92 + "h": 91 }, "frame": { - "x": 180, - "y": 182, + "x": 90, + "y": 183, "w": 89, - "h": 92 + "h": 91 } }, { @@ -1757,62 +1337,62 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 7, - "y": 5, + "x": 1, + "y": 4, + "w": 89, + "h": 91 + }, + "frame": { + "x": 90, + "y": 183, + "w": 89, + "h": 91 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 91, + "h": 95 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, "w": 89, "h": 92 }, "frame": { - "x": 180, - "y": 182, + "x": 179, + "y": 91, "w": 89, "h": 92 } }, { - "filename": "0077.png", + "filename": "0016.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 90, - "h": 90 + "x": 2, + "y": 3, + "w": 89, + "h": 92 }, "frame": { - "x": 269, - "y": 184, - "w": 90, - "h": 90 - } - }, - { - "filename": "0078.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 90, - "h": 90 - }, - "frame": { - "x": 269, - "y": 184, - "w": 90, - "h": 90 + "x": 179, + "y": 91, + "w": 89, + "h": 92 } }, { @@ -1820,20 +1400,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1841,20 +1421,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1862,20 +1442,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1883,20 +1463,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1904,20 +1484,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } }, { @@ -1925,608 +1505,20 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 110, - "h": 110 + "w": 91, + "h": 95 }, "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 88, - "h": 92 + "x": 4, + "y": 4, + "w": 87, + "h": 91 }, "frame": { - "x": 180, - "y": 274, - "w": 88, - "h": 92 - } - }, - { - "filename": "0085.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 15, - "y": 7, - "w": 79, - "h": 86 - }, - "frame": { - "x": 268, - "y": 274, - "w": 79, - "h": 86 - } - }, - { - "filename": "0086.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 15, - "y": 7, - "w": 79, - "h": 86 - }, - "frame": { - "x": 268, - "y": 274, - "w": 79, - "h": 86 - } - }, - { - "filename": "0116.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 13, - "y": 10, - "w": 79, - "h": 83 - }, - "frame": { - "x": 347, - "y": 274, - "w": 79, - "h": 83 - } - }, - { - "filename": "0113.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 11, - "w": 71, - "h": 69 - }, - "frame": { - "x": 347, - "y": 357, - "w": 71, - "h": 69 - } - }, - { - "filename": "0114.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 11, - "w": 71, - "h": 69 - }, - "frame": { - "x": 347, - "y": 357, - "w": 71, - "h": 69 - } - }, - { - "filename": "0115.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 11, - "w": 71, - "h": 69 - }, - "frame": { - "x": 347, - "y": 357, - "w": 71, - "h": 69 - } - }, - { - "filename": "0087.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 12, - "w": 59, - "h": 70 - }, - "frame": { - "x": 359, - "y": 184, - "w": 59, - "h": 70 - } - }, - { - "filename": "0088.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 20, - "y": 12, - "w": 59, - "h": 70 - }, - "frame": { - "x": 359, - "y": 184, - "w": 59, - "h": 70 - } - }, - { - "filename": "0091.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 35, - "y": 23, - "w": 27, - "h": 33 - }, - "frame": { - "x": 0, - "y": 384, - "w": 27, - "h": 33 - } - }, - { - "filename": "0092.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 35, - "y": 23, - "w": 27, - "h": 33 - }, - "frame": { - "x": 371, - "y": 54, - "w": 27, - "h": 33 - } - }, - { - "filename": "0093.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 42, - "y": 26, - "w": 19, - "h": 23 - }, - "frame": { - "x": 27, - "y": 384, - "w": 19, - "h": 23 - } - }, - { - "filename": "0094.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 42, - "y": 26, - "w": 19, - "h": 23 - }, - "frame": { - "x": 27, - "y": 384, - "w": 19, - "h": 23 - } - }, - { - "filename": "0095.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 42, - "y": 35, - "w": 14, - "h": 10 - }, - "frame": { - "x": 359, - "y": 254, - "w": 14, - "h": 10 - } - }, - { - "filename": "0096.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 42, - "y": 35, - "w": 14, - "h": 10 - }, - "frame": { - "x": 359, - "y": 254, - "w": 14, - "h": 10 - } - }, - { - "filename": "0097.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0098.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0099.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0100.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0101.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0102.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0103.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0104.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0105.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0106.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0107.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0108.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0109.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 - } - }, - { - "filename": "0110.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 110, - "h": 110 - }, - "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 3, - "h": 3 - }, - "frame": { - "x": 90, - "y": 282, - "w": 3, - "h": 3 + "x": 179, + "y": 183, + "w": 87, + "h": 91 } } ] @@ -2535,6 +1527,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:5fbe4aec02bf780bf0fca7dc7138bf7a:5d077386c518cf06786203ad5e3a3aba:5ea3e660bc9c2624f846675d5196db82$" + "smartupdate": "$TexturePacker:SmartUpdate:71a487dde0de6f6a7eb1b6e04018892f:49ee3dfe044ad986679a7ce34c28280d:5ea3e660bc9c2624f846675d5196db82$" } } diff --git a/public/images/pokemon/exp/shiny/484-origin.png b/public/images/pokemon/exp/shiny/484-origin.png index 69e95afe58059dd621fe53108ae2c8e74f61dc21..bea804ed6776cad03bfa7bea00ddafb6062c4c54 100644 GIT binary patch literal 8255 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 literal 0 HcmV?d00001 diff --git a/public/images/pokemon/exp/shiny/815-gigantamax.json b/public/images/pokemon/exp/shiny/815-gigantamax.json new file mode 100644 index 00000000000..d8fb9d62e57 --- /dev/null +++ b/public/images/pokemon/exp/shiny/815-gigantamax.json @@ -0,0 +1,659 @@ +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 343, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 357, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 85, "y": 292, "w": 82, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 82, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 252, "y": 482, "w": 81, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 81, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 258, "y": 290, "w": 83, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 83, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 416, "y": 484, "w": 79, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 79, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 426, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 445, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 179, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 1, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 523, "y": 195, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 509, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 89, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 531, "y": 98, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 343, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 357, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 85, "y": 292, "w": 82, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 82, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 252, "y": 482, "w": 81, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 81, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 258, "y": 290, "w": 83, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 83, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 416, "y": 484, "w": 79, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 79, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 426, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 445, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 179, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 1, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 523, "y": 195, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 509, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 89, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 531, "y": 98, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 343, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 357, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 177, "y": 194, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 179, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 85, "y": 292, "w": 82, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 82, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 252, "y": 482, "w": 81, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 81, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 258, "y": 290, "w": 83, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 83, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 416, "y": 484, "w": 79, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 79, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 426, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 445, "y": 1, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 179, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 1, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 523, "y": 195, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 509, "y": 292, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 89, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 531, "y": 98, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 258, "y": 385, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 267, "y": 97, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 1, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 268, "y": 1, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 87, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 426, "y": 389, "w": 82, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 82, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 1, "y": 484, "w": 81, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 81, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 341, "y": 389, "w": 83, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 7, "w": 83, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 84, "y": 485, "w": 79, "h": 91 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 9, "w": 79, "h": 91 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 167, "y": 484, "w": 81, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 7, "w": 81, "h": 92 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 1, "y": 195, "w": 86, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 5, "w": 86, "h": 93 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 265, "y": 194, "w": 86, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 86, "h": 94 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 89, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 1, "y": 290, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 1, "y": 387, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 353, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 510, "y": 389, "w": 80, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 1, "w": 80, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 169, "y": 387, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 1, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 355, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 443, "y": 98, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 2, "w": 86, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 90, "y": 1, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 87, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 174, "y": 290, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 82, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 84, "y": 388, "w": 81, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 81, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 438, "y": 195, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 83, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 335, "y": 483, "w": 79, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 79, "h": 95 }, + "sourceSize": { "w": 100, "h": 100 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.13-x64", + "image": "815-gigantamax.png", + "format": "I8", + "size": { "w": 611, "h": 579 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/exp/shiny/815-gigantamax.png b/public/images/pokemon/exp/shiny/815-gigantamax.png new file mode 100644 index 0000000000000000000000000000000000000000..a299119e06ff46488baec30679c533e710f1d3f4 GIT binary patch literal 32612 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%0A-DdjIP?Zv@{h*yZ*KAQVV> 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 literal 0 HcmV?d00001 diff --git a/public/images/pokemon/exp/shiny/839-gigantamax.json b/public/images/pokemon/exp/shiny/839-gigantamax.json new file mode 100644 index 00000000000..15a7c122f5d --- /dev/null +++ b/public/images/pokemon/exp/shiny/839-gigantamax.json @@ -0,0 +1,821 @@ +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 525, "y": 567, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0002.png", + "frame": { "x": 441, "y": 566, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0003.png", + "frame": { "x": 609, "y": 567, "w": 83, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 83, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0004.png", + "frame": { "x": 255, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0005.png", + "frame": { "x": 171, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 569, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 1, "w": 83, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0007.png", + "frame": { "x": 339, "y": 569, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0008.png", + "frame": { "x": 0, "y": 474, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0009.png", + "frame": { "x": 464, "y": 375, "w": 89, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 89, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0010.png", + "frame": { "x": 580, "y": 190, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0011.png", + "frame": { "x": 95, "y": 96, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0012.png", + "frame": { "x": 198, "y": 95, "w": 95, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 95, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0013.png", + "frame": { "x": 491, "y": 0, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 96, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0014.png", + "frame": { "x": 297, "y": 0, "w": 98, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 98, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0015.png", + "frame": { "x": 0, "y": 0, "w": 100, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 100, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0016.png", + "frame": { "x": 198, "y": 0, "w": 99, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 99, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0017.png", + "frame": { "x": 100, "y": 0, "w": 98, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 98, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0018.png", + "frame": { "x": 395, "y": 0, "w": 96, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 96, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0019.png", + "frame": { "x": 189, "y": 190, "w": 92, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 92, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0020.png", + "frame": { "x": 89, "y": 379, "w": 88, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 88, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0021.png", + "frame": { "x": 525, "y": 567, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0022.png", + "frame": { "x": 441, "y": 566, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0023.png", + "frame": { "x": 609, "y": 567, "w": 83, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 83, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0024.png", + "frame": { "x": 255, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0025.png", + "frame": { "x": 171, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0026.png", + "frame": { "x": 0, "y": 569, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 1, "w": 83, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0027.png", + "frame": { "x": 339, "y": 569, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0028.png", + "frame": { "x": 0, "y": 474, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0029.png", + "frame": { "x": 464, "y": 375, "w": 89, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 89, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0030.png", + "frame": { "x": 580, "y": 190, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0031.png", + "frame": { "x": 95, "y": 96, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0032.png", + "frame": { "x": 198, "y": 95, "w": 95, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 95, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0033.png", + "frame": { "x": 491, "y": 0, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 96, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0034.png", + "frame": { "x": 297, "y": 0, "w": 98, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 98, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0035.png", + "frame": { "x": 0, "y": 0, "w": 100, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 100, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0036.png", + "frame": { "x": 198, "y": 0, "w": 99, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 99, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0037.png", + "frame": { "x": 100, "y": 0, "w": 98, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 98, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0038.png", + "frame": { "x": 395, "y": 0, "w": 96, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 96, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0039.png", + "frame": { "x": 189, "y": 190, "w": 92, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 92, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0040.png", + "frame": { "x": 89, "y": 379, "w": 88, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 88, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0041.png", + "frame": { "x": 525, "y": 567, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0042.png", + "frame": { "x": 441, "y": 566, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0043.png", + "frame": { "x": 609, "y": 567, "w": 83, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 83, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0044.png", + "frame": { "x": 255, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0045.png", + "frame": { "x": 171, "y": 563, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0046.png", + "frame": { "x": 0, "y": 569, "w": 83, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 1, "w": 83, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0047.png", + "frame": { "x": 339, "y": 569, "w": 82, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 82, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0048.png", + "frame": { "x": 0, "y": 474, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0049.png", + "frame": { "x": 464, "y": 375, "w": 89, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 89, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0050.png", + "frame": { "x": 580, "y": 190, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0051.png", + "frame": { "x": 95, "y": 96, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0052.png", + "frame": { "x": 198, "y": 95, "w": 95, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 95, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0053.png", + "frame": { "x": 491, "y": 0, "w": 96, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 96, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0054.png", + "frame": { "x": 297, "y": 0, "w": 98, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 1, "w": 98, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0055.png", + "frame": { "x": 0, "y": 0, "w": 100, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 100, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0056.png", + "frame": { "x": 198, "y": 0, "w": 99, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 99, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0057.png", + "frame": { "x": 100, "y": 0, "w": 98, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 0, "w": 98, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0058.png", + "frame": { "x": 395, "y": 0, "w": 96, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 96, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0059.png", + "frame": { "x": 189, "y": 190, "w": 92, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 92, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0060.png", + "frame": { "x": 89, "y": 379, "w": 88, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 88, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0061.png", + "frame": { "x": 525, "y": 567, "w": 84, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 84, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0062.png", + "frame": { "x": 454, "y": 470, "w": 86, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 86, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0063.png", + "frame": { "x": 0, "y": 379, "w": 89, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 1, "w": 89, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0064.png", + "frame": { "x": 573, "y": 285, "w": 91, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 1, "w": 91, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0065.png", + "frame": { "x": 93, "y": 191, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0066.png", + "frame": { "x": 390, "y": 96, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0067.png", + "frame": { "x": 585, "y": 96, "w": 94, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 17, "y": 2, "w": 94, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0068.png", + "frame": { "x": 293, "y": 95, "w": 97, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 3, "w": 97, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0069.png", + "frame": { "x": 484, "y": 190, "w": 96, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 4, "w": 96, "h": 92 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0070.png", + "frame": { "x": 92, "y": 286, "w": 92, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 92, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0071.png", + "frame": { "x": 177, "y": 471, "w": 89, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 89, "h": 92 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0072.png", + "frame": { "x": 177, "y": 379, "w": 91, "h": 92 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 91, "h": 92 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0073.png", + "frame": { "x": 184, "y": 286, "w": 91, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 91, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0074.png", + "frame": { "x": 480, "y": 282, "w": 93, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 93, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0075.png", + "frame": { "x": 281, "y": 281, "w": 93, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 93, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0076.png", + "frame": { "x": 293, "y": 188, "w": 95, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 95, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0077.png", + "frame": { "x": 587, "y": 0, "w": 95, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 95, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0078.png", + "frame": { "x": 0, "y": 95, "w": 95, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 95, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0079.png", + "frame": { "x": 491, "y": 95, "w": 94, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 94, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0080.png", + "frame": { "x": 0, "y": 190, "w": 93, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 93, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0081.png", + "frame": { "x": 388, "y": 191, "w": 92, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 92, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0082.png", + "frame": { "x": 0, "y": 285, "w": 92, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 92, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0083.png", + "frame": { "x": 275, "y": 374, "w": 90, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 90, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0084.png", + "frame": { "x": 374, "y": 286, "w": 90, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 90, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0085.png", + "frame": { "x": 365, "y": 380, "w": 89, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 89, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0086.png", + "frame": { "x": 553, "y": 380, "w": 89, "h": 93 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 89, "h": 93 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0087.png", + "frame": { "x": 540, "y": 473, "w": 87, "h": 94 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 87, "h": 94 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0088.png", + "frame": { "x": 268, "y": 468, "w": 87, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 87, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0089.png", + "frame": { "x": 355, "y": 474, "w": 86, "h": 95 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 86, "h": 95 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + }, + { + "filename": "0090.png", + "frame": { "x": 86, "y": 475, "w": 85, "h": 96 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 85, "h": 96 }, + "sourceSize": { "w": 111, "h": 96 }, + "duration": 100 + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.13-x64", + "image": "839-gigantamax.png", + "format": "I8", + "size": { "w": 692, "h": 664 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/exp/shiny/839-gigantamax.png b/public/images/pokemon/exp/shiny/839-gigantamax.png new file mode 100644 index 0000000000000000000000000000000000000000..f52de9357b108f4d9e9529aa447c412cdd73f04d GIT binary patch literal 65284 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%0AOdMtk#fe0VOC^|N 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 Date: Wed, 5 Mar 2025 18:18:24 -0800 Subject: [PATCH 11/19] [Misc] `getPokemonSpecies()` no longer accepts `undefined` (#5477) --- src/data/pokemon-species.ts | 8 +++----- .../encounters/uncommon-breed-encounter.test.ts | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index c0ca9bf4b62..c9d49f29440 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -68,10 +68,7 @@ export const normalForm: Species[] = [ * @param species The species to fetch * @returns The associated {@linkcode PokemonSpecies} object */ -export function getPokemonSpecies(species: Species | Species[] | undefined): PokemonSpecies { - if (!species) { - throw new Error("`species` must not be undefined in `getPokemonSpecies()`"); - } +export function getPokemonSpecies(species: Species | Species[]): PokemonSpecies { // If a special pool (named trainers) is used here it CAN happen that they have a array as species (which means choose one of those two). So we catch that with this code block if (Array.isArray(species)) { // Pick a random species from the list @@ -914,7 +911,8 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali for (const weight of evolutionPool.keys()) { if (randValue < weight) { - return getPokemonSpecies(evolutionPool.get(weight)).getSpeciesForLevel(level, true, forTrainer, strength, currentWave); + // TODO: this entire function is dumb and should be changed, adding a `!` here for now until then + return getPokemonSpecies(evolutionPool.get(weight)!).getSpeciesForLevel(level, true, forTrainer, strength, currentWave); } } diff --git a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts index ab50666ab3d..1bdc45348d6 100644 --- a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts +++ b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts @@ -116,7 +116,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.UNCOMMON_BREED, defaultParty); const config = game.scene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]; - const speciesToSpawn = config.pokemonConfigs?.[0].species.speciesId; + const speciesToSpawn = config.pokemonConfigs?.[0].species.speciesId!; await runMysteryEncounterToEnd(game, 1, undefined, true); @@ -143,7 +143,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.UNCOMMON_BREED, defaultParty); const config = game.scene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]; - const speciesToSpawn = config.pokemonConfigs?.[0].species.speciesId; + const speciesToSpawn = config.pokemonConfigs?.[0].species.speciesId!; await runMysteryEncounterToEnd(game, 1, undefined, true); From ba617ad91b541f660d8046e3fea9670967744ead Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Wed, 5 Mar 2025 23:39:02 -0600 Subject: [PATCH 12/19] [Misc] Add a script to help verify correctness of variant sprite masterlist (#5325) Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> --- .gitignore | 4 + scripts/find_sprite_variant_mismatches.py | 98 +++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 scripts/find_sprite_variant_mismatches.py diff --git a/.gitignore b/.gitignore index c22d0b2ce4c..9d96ed04a15 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,7 @@ coverage /dependency-graph.svg /.vs + + +# Script outputs +./*.csv \ No newline at end of file diff --git a/scripts/find_sprite_variant_mismatches.py b/scripts/find_sprite_variant_mismatches.py new file mode 100644 index 00000000000..483695fdb66 --- /dev/null +++ b/scripts/find_sprite_variant_mismatches.py @@ -0,0 +1,98 @@ +""" +Validates the contents of the variant's masterlist file and identifies +any mismatched entries for the sprite of the same key between front, back, exp, exp back, and female. + +This will create a csv file that contains all of the entries with mismatches. + +An empty entry means that there was not a mismatch for that version of the sprite (meaning it matches front). +""" + +import sys + +if sys.version_info < (3, 7): + msg = "This script requires Python 3.7+" + raise RuntimeError(msg) + +import json +import os +import csv +from dataclasses import dataclass, field +from typing import Literal as L + +MASTERLIST_PATH = os.path.join( + os.path.dirname(os.path.dirname(__file__)), "public", "images", "pokemon", "variant", "_masterlist.json" +) +DEFAULT_OUTPUT_PATH = "sprite-mismatches.csv" + + +@dataclass(order=True) +class Sprite: + key: str = field(compare=False) + front: list[int] = field(default_factory=list, compare=False) + back: list[int] = field(default_factory=list, compare=False) + female: list[int] = field(default_factory=list, compare=False) + exp: list[int] = field(default_factory=list, compare=False) + expback: list[int] = field(default_factory=list, compare=False) + sortedKey: tuple[int] | tuple[int, str] = field(init=False, repr=False, compare=True) + + def as_row(self) -> tuple[str, list[int] | L[""], list[int] | L[""], list[int] | L[""], list[int] | L[""], list[int] | L[""]]: + """return sprite information as a tuple for csv writing""" + return (self.key, self.front or "", self.back or "", self.exp or "", self.expback or "", self.female or "") + + def is_mismatch(self) -> bool: + """return True if the female, back, or exp sprites do not match the front""" + for val in [self.back, self.exp, self.expback, self.female]: + if val != [] and val != self.front: + return True + return False + + def __post_init__(self): + split = self.key.split("-", maxsplit=1) + self.sortedKey = (int(split[0]), split[1]) if len(split) == 2 else (int(split[0]),) + + +def make_mismatch_sprite_list(path): + with open(path, "r") as f: + masterlist: dict = json.load(f) + + # Go through the keys in "front" and "back" and make sure they match the masterlist + back_data: dict[str, list[int]] = masterlist.pop("back", {}) + exp_data: dict[str, list[int]] = masterlist.pop("exp", {}) + exp_back_data: dict[str, list[int]] = exp_data.get("back", []) + female_data: dict[str, list[int]] = masterlist.pop("female", {}) + + sprites: list[Sprite] = [] + + for key, item in masterlist.items(): + sprite = Sprite( + key, front=item, back=back_data.get(key, []), exp=exp_data.get(key, []), expback=exp_back_data.get(key, []), female=female_data.get(key, []) + ) + if sprite.is_mismatch(): + sprites.append(sprite) + + return sprites + + +def write_mismatch_csv(filename: str, mismatches: list[Sprite]): + with open(filename, "w", newline="") as csvfile: + writer = csv.writer(csvfile) + writer.writerow(["key", "front", "back", "exp", "expback", "female"]) + for sprite in sorted(mismatches): + writer.writerow(sprite.as_row()) + + +if __name__ == "__main__": + import argparse + + p = argparse.ArgumentParser("find_sprite_variant_mismatches", description=__doc__) + + p.add_argument( + "-o", + "--output", + default=DEFAULT_OUTPUT_PATH, + help=f"The path to a file to save the output file. If not specified, will write to {DEFAULT_OUTPUT_PATH}.", + ) + p.add_argument("--masterlist", default=MASTERLIST_PATH, help=f"The path to the masterlist file to validate. Defaults to {MASTERLIST_PATH}.") + args = p.parse_args() + mismatches = make_mismatch_sprite_list(args.masterlist) + write_mismatch_csv(args.output, mismatches) From 7a9b1e50333623fb9ec062131fc887d3c8f9eaa7 Mon Sep 17 00:00:00 2001 From: schmidtc1 <62030095+schmidtc1@users.noreply.github.com> Date: Thu, 6 Mar 2025 04:14:22 -0500 Subject: [PATCH 13/19] [Bug] Fix critical hits not bypassing screens (#5470) --- src/field/pokemon.ts | 6 ++++- test/moves/aurora_veil.test.ts | 41 +++++++++++++++++++++++++++------ test/moves/light_screen.test.ts | 27 +++++++++++++++++----- test/moves/reflect.test.ts | 24 +++++++++++++++---- 4 files changed, 79 insertions(+), 19 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 53d4b6c54d2..d8e22898d42 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -2886,7 +2886,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** Reduces damage if this Pokemon has a relevant screen (e.g. Light Screen for special attacks) */ const screenMultiplier = new Utils.NumberHolder(1); - globalScene.arena.applyTagsForSide(WeakenMoveScreenTag, defendingSide, simulated, source, moveCategory, screenMultiplier); + + // Critical hits should bypass screens + if (!isCritical) { + globalScene.arena.applyTagsForSide(WeakenMoveScreenTag, defendingSide, simulated, source, moveCategory, screenMultiplier); + } /** * For each {@linkcode HitsTagAttr} the move has, doubles the damage of the move if: diff --git a/test/moves/aurora_veil.test.ts b/test/moves/aurora_veil.test.ts index c8da3e03db5..21b46c4be79 100644 --- a/test/moves/aurora_veil.test.ts +++ b/test/moves/aurora_veil.test.ts @@ -1,7 +1,7 @@ import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; import type Move from "#app/data/move"; -import { allMoves } from "#app/data/move"; +import { allMoves, CritOnlyAttr } from "#app/data/move"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; @@ -12,7 +12,7 @@ import { Species } from "#enums/species"; import { WeatherType } from "#enums/weather-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; let globalScene: BattleScene; @@ -47,7 +47,7 @@ describe("Moves - Aurora Veil", () => { it("reduces damage of physical attacks by half in a single battle", async () => { const moveToUse = Moves.TACKLE; - await game.startBattle([ Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE ]); game.move.select(moveToUse); @@ -61,7 +61,7 @@ describe("Moves - Aurora Veil", () => { game.override.battleType("double"); const moveToUse = Moves.ROCK_SLIDE; - await game.startBattle([ Species.SHUCKLE, Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE, Species.SHUCKLE ]); game.move.select(moveToUse); game.move.select(moveToUse, 1); @@ -74,7 +74,7 @@ describe("Moves - Aurora Veil", () => { it("reduces damage of special attacks by half in a single battle", async () => { const moveToUse = Moves.ABSORB; - await game.startBattle([ Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE ]); game.move.select(moveToUse); @@ -89,7 +89,7 @@ describe("Moves - Aurora Veil", () => { game.override.battleType("double"); const moveToUse = Moves.DAZZLING_GLEAM; - await game.startBattle([ Species.SHUCKLE, Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE, Species.SHUCKLE ]); game.move.select(moveToUse); game.move.select(moveToUse, 1); @@ -99,6 +99,31 @@ describe("Moves - Aurora Veil", () => { expect(mockedDmg).toBe(allMoves[moveToUse].power * doubleBattleMultiplier); }); + + it("does not affect physical critical hits", async () => { + game.override.moveset([ Moves.WICKED_BLOW ]); + const moveToUse = Moves.WICKED_BLOW; + await game.classicMode.startBattle([ Species.SHUCKLE ]); + + game.move.select(moveToUse); + await game.phaseInterceptor.to(TurnEndPhase); + + const mockedDmg = getMockedMoveDamage(game.scene.getEnemyPokemon()!, game.scene.getPlayerPokemon()!, allMoves[moveToUse]); + expect(mockedDmg).toBe(allMoves[moveToUse].power); + }); + + it("does not affect critical hits", async () => { + game.override.moveset([ Moves.FROST_BREATH ]); + const moveToUse = Moves.FROST_BREATH; + vi.spyOn(allMoves[Moves.FROST_BREATH], "accuracy", "get").mockReturnValue(100); + await game.classicMode.startBattle([ Species.SHUCKLE ]); + + game.move.select(moveToUse); + await game.phaseInterceptor.to(TurnEndPhase); + + const mockedDmg = getMockedMoveDamage(game.scene.getEnemyPokemon()!, game.scene.getPlayerPokemon()!, allMoves[moveToUse]); + expect(mockedDmg).toBe(allMoves[moveToUse].power); + }); }); /** @@ -115,7 +140,9 @@ const getMockedMoveDamage = (defender: Pokemon, attacker: Pokemon, move: Move) = const side = defender.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; if (globalScene.arena.getTagOnSide(ArenaTagType.AURORA_VEIL, side)) { - globalScene.arena.applyTagsForSide(ArenaTagType.AURORA_VEIL, side, false, attacker, move.category, multiplierHolder); + if (move.getAttrs(CritOnlyAttr).length === 0) { + globalScene.arena.applyTagsForSide(ArenaTagType.AURORA_VEIL, side, false, attacker, move.category, multiplierHolder); + } } return move.power * multiplierHolder.value; diff --git a/test/moves/light_screen.test.ts b/test/moves/light_screen.test.ts index 8eee58c8e17..1f9e4f9b97f 100644 --- a/test/moves/light_screen.test.ts +++ b/test/moves/light_screen.test.ts @@ -1,7 +1,7 @@ import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; import type Move from "#app/data/move"; -import { allMoves } from "#app/data/move"; +import { allMoves, CritOnlyAttr } from "#app/data/move"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; @@ -11,7 +11,7 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; let globalScene: BattleScene; @@ -45,7 +45,7 @@ describe("Moves - Light Screen", () => { it("reduces damage of special attacks by half in a single battle", async () => { const moveToUse = Moves.ABSORB; - await game.startBattle([ Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE ]); game.move.select(moveToUse); @@ -60,7 +60,7 @@ describe("Moves - Light Screen", () => { game.override.battleType("double"); const moveToUse = Moves.DAZZLING_GLEAM; - await game.startBattle([ Species.SHUCKLE, Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE, Species.SHUCKLE ]); game.move.select(moveToUse); game.move.select(moveToUse, 1); @@ -73,7 +73,7 @@ describe("Moves - Light Screen", () => { it("does not affect physical attacks", async () => { const moveToUse = Moves.TACKLE; - await game.startBattle([ Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE ]); game.move.select(moveToUse); @@ -82,6 +82,19 @@ describe("Moves - Light Screen", () => { expect(mockedDmg).toBe(allMoves[moveToUse].power); }); + + it("does not affect critical hits", async () => { + game.override.moveset([ Moves.FROST_BREATH ]); + const moveToUse = Moves.FROST_BREATH; + vi.spyOn(allMoves[Moves.FROST_BREATH], "accuracy", "get").mockReturnValue(100); + await game.classicMode.startBattle([ Species.SHUCKLE ]); + + game.move.select(moveToUse); + await game.phaseInterceptor.to(TurnEndPhase); + + const mockedDmg = getMockedMoveDamage(game.scene.getEnemyPokemon()!, game.scene.getPlayerPokemon()!, allMoves[moveToUse]); + expect(mockedDmg).toBe(allMoves[moveToUse].power); + }); }); /** @@ -98,7 +111,9 @@ const getMockedMoveDamage = (defender: Pokemon, attacker: Pokemon, move: Move) = const side = defender.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; if (globalScene.arena.getTagOnSide(ArenaTagType.LIGHT_SCREEN, side)) { - globalScene.arena.applyTagsForSide(ArenaTagType.LIGHT_SCREEN, side, false, attacker, move.category, multiplierHolder); + if (move.getAttrs(CritOnlyAttr).length === 0) { + globalScene.arena.applyTagsForSide(ArenaTagType.LIGHT_SCREEN, side, false, attacker, move.category, multiplierHolder); + } } return move.power * multiplierHolder.value; diff --git a/test/moves/reflect.test.ts b/test/moves/reflect.test.ts index edc3f1ab8aa..a0376aa24b4 100644 --- a/test/moves/reflect.test.ts +++ b/test/moves/reflect.test.ts @@ -1,7 +1,7 @@ import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; import type Move from "#app/data/move"; -import { allMoves } from "#app/data/move"; +import { allMoves, CritOnlyAttr } from "#app/data/move"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; @@ -45,7 +45,7 @@ describe("Moves - Reflect", () => { it("reduces damage of physical attacks by half in a single battle", async () => { const moveToUse = Moves.TACKLE; - await game.startBattle([ Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE ]); game.move.select(moveToUse); @@ -59,7 +59,7 @@ describe("Moves - Reflect", () => { game.override.battleType("double"); const moveToUse = Moves.ROCK_SLIDE; - await game.startBattle([ Species.SHUCKLE, Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE, Species.SHUCKLE ]); game.move.select(moveToUse); game.move.select(moveToUse, 1); @@ -72,7 +72,7 @@ describe("Moves - Reflect", () => { it("does not affect special attacks", async () => { const moveToUse = Moves.ABSORB; - await game.startBattle([ Species.SHUCKLE ]); + await game.classicMode.startBattle([ Species.SHUCKLE ]); game.move.select(moveToUse); @@ -82,6 +82,18 @@ describe("Moves - Reflect", () => { expect(mockedDmg).toBe(allMoves[moveToUse].power); }); + + it("does not affect critical hits", async () => { + game.override.moveset([ Moves.WICKED_BLOW ]); + const moveToUse = Moves.WICKED_BLOW; + await game.classicMode.startBattle([ Species.SHUCKLE ]); + + game.move.select(moveToUse); + await game.phaseInterceptor.to(TurnEndPhase); + + const mockedDmg = getMockedMoveDamage(game.scene.getEnemyPokemon()!, game.scene.getPlayerPokemon()!, allMoves[moveToUse]); + expect(mockedDmg).toBe(allMoves[moveToUse].power); + }); }); /** @@ -98,7 +110,9 @@ const getMockedMoveDamage = (defender: Pokemon, attacker: Pokemon, move: Move) = const side = defender.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; if (globalScene.arena.getTagOnSide(ArenaTagType.REFLECT, side)) { - globalScene.arena.applyTagsForSide(ArenaTagType.REFLECT, side, false, attacker, move.category, multiplierHolder); + if (move.getAttrs(CritOnlyAttr).length === 0) { + globalScene.arena.applyTagsForSide(ArenaTagType.REFLECT, side, false, attacker, move.category, multiplierHolder); + } } return move.power * multiplierHolder.value; From fdc5e7daea73d34a4cb9d6cea0b5f7e258ed39e7 Mon Sep 17 00:00:00 2001 From: damocleas Date: Thu, 6 Mar 2025 14:05:08 -0500 Subject: [PATCH 14/19] [i18n] Update locales submodule --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 0e5c6096ba2..6b3f37cb351 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 0e5c6096ba26f6b87aed1aab3fe9b0b23f6cbb7b +Subproject commit 6b3f37cb351552721232f4dabefa17bddb5b9004 From da68cf15c6d7de2704ff9b74604af5d09a5dbd2b Mon Sep 17 00:00:00 2001 From: Fuad Ali Date: Fri, 7 Mar 2025 00:03:01 +0000 Subject: [PATCH 15/19] [Bug] Harsh Sun, Heavy Rain, and Delta Stream messages now display when their effects are triggered (#5489) --- src/data/weather.ts | 10 ++++++++++ src/field/arena.ts | 4 ++++ src/phases/move-phase.ts | 7 +++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/data/weather.ts b/src/data/weather.ts index 0c90f381130..7de4d93b398 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -205,6 +205,16 @@ export function getWeatherClearMessage(weatherType: WeatherType): string | null return null; } +export function getWeatherBlockMessage(weatherType: WeatherType): string { + switch (weatherType) { + case WeatherType.HARSH_SUN: + return i18next.t("weather:harshSunEffectMessage"); + case WeatherType.HEAVY_RAIN: + return i18next.t("weather:heavyRainEffectMessage"); + } + return i18next.t("weather:defaultEffectMessage"); +} + export function getTerrainStartMessage(terrainType: TerrainType): string | null { switch (terrainType) { case TerrainType.MISTY: diff --git a/src/field/arena.ts b/src/field/arena.ts index 752eef81596..fe3e205bd2d 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -358,6 +358,10 @@ export class Arena { return !!this.terrain && this.terrain.isMoveTerrainCancelled(user, targets, move); } + public getWeatherType(): WeatherType { + return this.weather?.weatherType ?? WeatherType.NONE; + } + public getTerrainType(): TerrainType { return this.terrain?.terrainType ?? TerrainType.NONE; } diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index d58c052812f..3804ea78a3c 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -30,7 +30,7 @@ import { import { SpeciesFormChangePreMoveTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectActivationText, getStatusEffectHealText } from "#app/data/status-effect"; import { Type } from "#enums/type"; -import { getTerrainBlockMessage } from "#app/data/weather"; +import { getTerrainBlockMessage, getWeatherBlockMessage } from "#app/data/weather"; import { MoveUsedEvent } from "#app/events/battle-scene"; import type { PokemonMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; @@ -342,9 +342,10 @@ export class MovePhase extends BattlePhase { * TODO: is this sustainable? */ let failedDueToTerrain: boolean = false; + let failedDueToWeather: boolean = false; if (success) { const passesConditions = move.applyConditions(this.pokemon, targets[0], move); - const failedDueToWeather: boolean = globalScene.arena.isMoveWeatherCancelled(this.pokemon, move); + failedDueToWeather = globalScene.arena.isMoveWeatherCancelled(this.pokemon, move); failedDueToTerrain = globalScene.arena.isMoveTerrainCancelled(this.pokemon, this.targets, move); success = passesConditions && !failedDueToWeather && !failedDueToTerrain; } @@ -381,6 +382,8 @@ export class MovePhase extends BattlePhase { failedText = failureMessage; } else if (failedDueToTerrain) { failedText = getTerrainBlockMessage(targets[0], globalScene.arena.getTerrainType()); + } else if (failedDueToWeather) { + failedText = getWeatherBlockMessage(globalScene.arena.getWeatherType()); } this.showFailedText(failedText); From e73dbe98615588af8778a7a12a2eb259e6b9df99 Mon Sep 17 00:00:00 2001 From: Mikhail Shueb Date: Fri, 7 Mar 2025 17:31:34 +0000 Subject: [PATCH 16/19] [Bug] Chilly Reception no longer replaces Legendary Weather (Primordial Sea, Desolate Land, Delta Stream) (#5484) Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/weather.ts | 12 ++++++++++++ src/field/arena.ts | 8 +++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/data/weather.ts b/src/data/weather.ts index 7de4d93b398..587d46f0772 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -205,6 +205,18 @@ export function getWeatherClearMessage(weatherType: WeatherType): string | null return null; } +export function getLegendaryWeatherContinuesMessage(weatherType: WeatherType): string | null { + switch (weatherType) { + case WeatherType.HARSH_SUN: + return i18next.t("weather:harshSunContinueMessage"); + case WeatherType.HEAVY_RAIN: + return i18next.t("weather:heavyRainContinueMessage"); + case WeatherType.STRONG_WINDS: + return i18next.t("weather:strongWindsContinueMessage"); + } + return null; +} + export function getWeatherBlockMessage(weatherType: WeatherType): string { switch (weatherType) { case WeatherType.HARSH_SUN: diff --git a/src/field/arena.ts b/src/field/arena.ts index fe3e205bd2d..08ba3542fc2 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -5,7 +5,7 @@ import type { Constructor } from "#app/utils"; import * as Utils from "#app/utils"; import type PokemonSpecies from "#app/data/pokemon-species"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { getTerrainClearMessage, getTerrainStartMessage, getWeatherClearMessage, getWeatherStartMessage, Weather } from "#app/data/weather"; +import { getTerrainClearMessage, getTerrainStartMessage, getWeatherClearMessage, getWeatherStartMessage, getLegendaryWeatherContinuesMessage, Weather } from "#app/data/weather"; import { CommonAnim } from "#app/data/battle-anims"; import type { Type } from "#enums/type"; import type Move from "#app/data/move"; @@ -274,6 +274,12 @@ export class Arena { const oldWeatherType = this.weather?.weatherType || WeatherType.NONE; + if (this.weather?.isImmutable() && ![ WeatherType.HARSH_SUN, WeatherType.HEAVY_RAIN, WeatherType.STRONG_WINDS, WeatherType.NONE ].includes(weather)) { + globalScene.unshiftPhase(new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (oldWeatherType - 1), true)); + globalScene.queueMessage(getLegendaryWeatherContinuesMessage(oldWeatherType)!); + return false; + } + this.weather = weather ? new Weather(weather, hasPokemonSource ? 5 : 0) : null; this.eventTarget.dispatchEvent(new WeatherChangedEvent(oldWeatherType, this.weather?.weatherType!, this.weather?.turnsLeft!)); // TODO: is this bang correct? From 60a4db705934dfa92e6b2dc329938636fad7c446 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 7 Mar 2025 19:10:29 -0600 Subject: [PATCH 17/19] [Refactor] Refactor moves.ts part 1 (#5420) --- src/battle-scene.ts | 38 +- src/data/ability.ts | 191 +- src/data/arena-tag.ts | 32 +- src/data/balance/biomes.ts | 2166 +++++----- src/data/balance/egg-moves.ts | 2 +- src/data/balance/pokemon-evolutions.ts | 30 +- src/data/battle-anims.ts | 4 +- src/data/battler-tags.ts | 84 +- src/data/challenge.ts | 12 +- src/data/custom-pokemon-data.ts | 4 +- src/data/moves/invalid-moves.ts | 281 ++ src/data/{ => moves}/move.ts | 2511 +++++------- .../encounters/bug-type-superfan-encounter.ts | 20 +- .../encounters/clowning-around-encounter.ts | 10 +- .../encounters/dark-deal-encounter.ts | 6 +- .../encounters/field-trip-encounter.ts | 2 +- .../encounters/fiery-fallout-encounter.ts | 8 +- .../teleporting-hijinks-encounter.ts | 8 +- .../the-expert-pokemon-breeder-encounter.ts | 4 +- .../the-winstrate-challenge-encounter.ts | 6 +- .../encounters/uncommon-breed-encounter.ts | 2 +- .../encounters/weird-dream-encounter.ts | 8 +- .../mystery-encounter-option.ts | 4 +- .../mystery-encounter-requirements.ts | 12 +- .../utils/encounter-phase-utils.ts | 6 +- .../utils/encounter-pokemon-utils.ts | 4 +- src/data/pokemon-forms.ts | 3 +- src/data/pokemon-species.ts | 3554 ++++++++--------- src/data/terrain.ts | 14 +- src/data/trainer-config.ts | 306 +- src/data/type.ts | 324 +- src/data/weather.ts | 26 +- src/enums/MoveCategory.ts | 5 + src/enums/MoveEffectTrigger.ts | 7 + src/enums/MoveFlags.ts | 46 + src/enums/MoveTarget.ts | 29 + src/enums/MultiHitType.ts | 7 + src/enums/{type.ts => pokemon-type.ts} | 2 +- src/events/battle-scene.ts | 2 +- src/field/arena.ts | 6 +- src/field/pokemon.ts | 126 +- src/loading-scene.ts | 2 +- src/modifier/modifier-type.ts | 44 +- src/modifier/modifier.ts | 20 +- src/phases/command-phase.ts | 4 +- src/phases/faint-phase.ts | 2 +- src/phases/learn-move-phase.ts | 4 +- src/phases/move-anim-test-phase.ts | 2 +- src/phases/move-charge-phase.ts | 2 +- src/phases/move-effect-phase.ts | 16 +- src/phases/move-header-phase.ts | 2 +- src/phases/move-phase.ts | 8 +- src/phases/select-target-phase.ts | 2 +- src/phases/switch-summon-phase.ts | 2 +- src/phases/tera-phase.ts | 6 +- src/phases/turn-start-phase.ts | 2 +- src/system/game-data.ts | 6 +- src/system/pokemon-data.ts | 12 +- src/ui/battle-flyout.ts | 2 +- src/ui/battle-info.ts | 24 +- src/ui/command-ui-handler.ts | 6 +- src/ui/fight-ui-handler.ts | 6 +- src/ui/modifier-select-ui-handler.ts | 2 +- src/ui/move-info-overlay.ts | 8 +- src/ui/party-ui-handler.ts | 2 +- src/ui/pokedex-page-ui-handler.ts | 10 +- src/ui/pokedex-scan-ui-handler.ts | 2 +- src/ui/pokedex-ui-handler.ts | 12 +- src/ui/pokemon-hatch-info-container.ts | 6 +- src/ui/pokemon-info-container.ts | 4 +- src/ui/run-info-ui-handler.ts | 6 +- src/ui/starter-select-ui-handler.ts | 34 +- src/ui/summary-ui-handler.ts | 16 +- src/ui/target-select-ui-handler.ts | 2 +- test/abilities/aura_break.test.ts | 2 +- test/abilities/battery.test.ts | 2 +- test/abilities/battle_bond.test.ts | 3 +- test/abilities/friend_guard.test.ts | 3 +- test/abilities/galvanize.test.ts | 12 +- test/abilities/hustle.test.ts | 2 +- test/abilities/infiltrator.test.ts | 2 +- test/abilities/libero.test.ts | 20 +- test/abilities/magic_bounce.test.ts | 2 +- test/abilities/mimicry.test.ts | 14 +- test/abilities/parental_bond.test.ts | 6 +- test/abilities/power_spot.test.ts | 2 +- test/abilities/protean.test.ts | 20 +- test/abilities/sap_sipper.test.ts | 2 +- test/abilities/serene_grace.test.ts | 4 +- test/abilities/sheer_force.test.ts | 6 +- test/abilities/steely_spirit.test.ts | 2 +- test/abilities/supreme_overlord.test.ts | 2 +- test/abilities/unburden.test.ts | 2 +- test/abilities/wimp_out.test.ts | 2 +- test/abilities/wonder_skin.test.ts | 2 +- test/arena/arena_gravity.test.ts | 2 +- test/arena/grassy_terrain.test.ts | 2 +- test/arena/weather_fog.test.ts | 2 +- test/arena/weather_strong_winds.test.ts | 2 +- test/battle/damage_calculation.test.ts | 2 +- test/battle/inverse_battle.test.ts | 4 +- test/battlerTags/substitute.test.ts | 2 +- test/enemy_command.test.ts | 3 +- test/field/pokemon.test.ts | 84 +- test/moves/astonish.test.ts | 2 +- test/moves/aurora_veil.test.ts | 4 +- test/moves/burning_jealousy.test.ts | 2 +- test/moves/camouflage.test.ts | 4 +- test/moves/ceaseless_edge.test.ts | 2 +- test/moves/copycat.test.ts | 2 +- test/moves/destiny_bond.test.ts | 2 +- test/moves/diamond_storm.test.ts | 2 +- test/moves/dig.test.ts | 2 +- test/moves/dragon_cheer.test.ts | 6 +- test/moves/dragon_rage.test.ts | 8 +- test/moves/dragon_tail.test.ts | 6 +- test/moves/dynamax_cannon.test.ts | 2 +- test/moves/effectiveness.test.ts | 12 +- test/moves/electrify.test.ts | 6 +- test/moves/fell_stinger.test.ts | 2 +- test/moves/flower_shield.test.ts | 4 +- test/moves/fly.test.ts | 2 +- test/moves/forests_curse.test.ts | 6 +- test/moves/freeze_dry.test.ts | 6 +- test/moves/freezy_frost.test.ts | 2 +- test/moves/fusion_flare_bolt.test.ts | 2 +- test/moves/glaive_rush.test.ts | 2 +- test/moves/hard_press.test.ts | 2 +- test/moves/hyper_beam.test.ts | 2 +- test/moves/lash_out.test.ts | 2 +- test/moves/last_respects.test.ts | 2 +- test/moves/light_screen.test.ts | 4 +- test/moves/magic_coat.test.ts | 2 +- test/moves/metronome.test.ts | 2 +- test/moves/moongeist_beam.test.ts | 2 +- test/moves/plasma_fists.test.ts | 8 +- test/moves/pledge_moves.test.ts | 16 +- test/moves/powder.test.ts | 4 +- test/moves/protect.test.ts | 2 +- test/moves/rage_fist.test.ts | 2 +- test/moves/reflect.test.ts | 4 +- test/moves/reflect_type.test.ts | 10 +- test/moves/relic_song.test.ts | 4 +- test/moves/retaliate.test.ts | 2 +- test/moves/rollout.test.ts | 2 +- test/moves/roost.test.ts | 46 +- test/moves/round.test.ts | 2 +- test/moves/scale_shot.test.ts | 2 +- test/moves/secret_power.test.ts | 2 +- test/moves/shell_side_arm.test.ts | 2 +- test/moves/shell_trap.test.ts | 2 +- test/moves/sketch.test.ts | 2 +- test/moves/solar_beam.test.ts | 2 +- test/moves/sparkly_swirl.test.ts | 2 +- test/moves/spectral_thief.test.ts | 2 +- test/moves/spit_up.test.ts | 2 +- test/moves/steamroller.test.ts | 2 +- test/moves/substitute.test.ts | 2 +- test/moves/tar_shot.test.ts | 6 +- test/moves/telekinesis.test.ts | 2 +- test/moves/tera_blast.test.ts | 12 +- test/moves/tera_starstorm.test.ts | 6 +- test/moves/toxic.test.ts | 2 +- test/moves/trick_or_treat.test.ts | 6 +- test/moves/triple_arrows.test.ts | 2 +- test/moves/whirlwind.test.ts | 4 +- .../clowning-around-encounter.test.ts | 16 +- .../fiery-fallout-encounter.test.ts | 6 +- .../mystery-encounter-utils.test.ts | 4 +- test/phases/form-change-phase.test.ts | 6 +- test/testUtils/gameManager.ts | 2 +- test/vitest.setup.ts | 2 +- 172 files changed, 5363 insertions(+), 5348 deletions(-) create mode 100644 src/data/moves/invalid-moves.ts rename src/data/{ => moves}/move.ts (79%) create mode 100644 src/enums/MoveCategory.ts create mode 100644 src/enums/MoveEffectTrigger.ts create mode 100644 src/enums/MoveFlags.ts create mode 100644 src/enums/MoveTarget.ts create mode 100644 src/enums/MultiHitType.ts rename src/enums/{type.ts => pokemon-type.ts} (88%) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 996c3b0de87..208c3368038 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -44,7 +44,7 @@ import { initGameSpeed } from "#app/system/game-speed"; import { Arena, ArenaBase } from "#app/field/arena"; import { GameData } from "#app/system/game-data"; import { addTextObject, getTextColor, TextStyle } from "#app/ui/text"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { MusicPreference } from "#app/system/settings/settings"; import { getDefaultModifierTypeForTier, @@ -105,7 +105,7 @@ import { } from "#app/data/pokemon-forms"; import { FormChangePhase } from "#app/phases/form-change-phase"; import { getTypeRgb } from "#app/data/type"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import PokemonSpriteSparkleHandler from "#app/field/pokemon-sprite-sparkle-handler"; import CharSprite from "#app/ui/char-sprite"; import DamageNumberHandler from "#app/field/damage-number-handler"; @@ -1872,44 +1872,44 @@ export default class BattleScene extends SceneBase { ) { if (species.speciesId === Species.WORMADAM) { switch (this.currentBattle.trainer.config.specialtyType) { - case Type.GROUND: + case PokemonType.GROUND: return 1; // Sandy Cloak - case Type.STEEL: + case PokemonType.STEEL: return 2; // Trash Cloak - case Type.GRASS: + case PokemonType.GRASS: return 0; // Plant Cloak } } else if (species.speciesId === Species.ROTOM) { switch (this.currentBattle.trainer.config.specialtyType) { - case Type.FLYING: + case PokemonType.FLYING: return 4; // Fan Rotom - case Type.GHOST: + case PokemonType.GHOST: return 0; // Lightbulb Rotom - case Type.FIRE: + case PokemonType.FIRE: return 1; // Heat Rotom - case Type.GRASS: + case PokemonType.GRASS: return 5; // Mow Rotom - case Type.WATER: + case PokemonType.WATER: return 2; // Wash Rotom - case Type.ICE: + case PokemonType.ICE: return 3; // Frost Rotom } } else if (species.speciesId === Species.ORICORIO) { switch (this.currentBattle.trainer.config.specialtyType) { - case Type.GHOST: + case PokemonType.GHOST: return 3; // Sensu Style - case Type.FIRE: + case PokemonType.FIRE: return 0; // Baile Style - case Type.ELECTRIC: + case PokemonType.ELECTRIC: return 1; // Pom-Pom Style - case Type.PSYCHIC: + case PokemonType.PSYCHIC: return 2; // Pa'u Style } } else if (species.speciesId === Species.PALDEA_TAUROS) { switch (this.currentBattle.trainer.config.specialtyType) { - case Type.FIRE: + case PokemonType.FIRE: return 1; // Blaze Breed - case Type.WATER: + case PokemonType.WATER: return 2; // Aqua Breed } } else if (species.speciesId === Species.SILVALLY || species.speciesId === Species.ARCEUS) { // Would probably never happen, but might as well @@ -3948,8 +3948,8 @@ export default class BattleScene extends SceneBase { return { name: p.name, form: p.getFormKey(), - types: p.getTypes().map((type) => Type[type]), - teraType: Type[p.getTeraType()], + types: p.getTypes().map((type) => PokemonType[type]), + teraType: PokemonType[p.getTeraType()], isTerastallized: p.isTerastallized, level: p.level, currentHP: p.hp, diff --git a/src/data/ability.ts b/src/data/ability.ts index 37b97ffb5e6..de3ec840805 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -1,7 +1,7 @@ import type { EnemyPokemon, PokemonMove } from "../field/pokemon"; import type Pokemon from "../field/pokemon"; import { HitResult, MoveResult, PlayerPokemon } from "../field/pokemon"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import type { Constructor } from "#app/utils"; import * as Utils from "../utils"; import { getPokemonNameWithAffix } from "../messages"; @@ -10,8 +10,11 @@ import type { BattlerTag } from "./battler-tags"; import { BattlerTagLapseType, GroundedTag } from "./battler-tags"; import { getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "#app/data/status-effect"; import { Gender } from "./gender"; -import type Move from "./move"; -import { AttackMove, MoveCategory, MoveFlags, MoveTarget, FlinchAttr, OneHitKOAttr, HitHealAttr, allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, applyMoveAttrs, VariableMoveTypeAttr, RandomMovesetMoveAttr, RandomMoveAttr, NaturePowerAttr, CopyMoveAttr, NeutralDamageAgainstFlyingTypeMultiplierAttr, FixedDamageAttr } from "./move"; +import type Move from "./moves/move"; +import { AttackMove, FlinchAttr, OneHitKOAttr, HitHealAttr, allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, applyMoveAttrs, VariableMoveTypeAttr, RandomMovesetMoveAttr, RandomMoveAttr, NaturePowerAttr, CopyMoveAttr, NeutralDamageAgainstFlyingTypeMultiplierAttr, FixedDamageAttr } from "./moves/move"; +import { MoveFlags } from "#enums/MoveFlags"; +import { MoveTarget } from "#enums/MoveTarget"; +import { MoveCategory } from "#enums/MoveCategory"; import type { ArenaTrapTag, SuppressAbilitiesTag } from "./arena-tag"; import { ArenaTagSide } from "./arena-tag"; import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "../modifier/modifier"; @@ -413,7 +416,7 @@ export class AlliedFieldDamageReductionAbAttr extends PreDefendAbAttr { } export class ReceivedTypeDamageMultiplierAbAttr extends ReceivedMoveDamageMultiplierAbAttr { - constructor(moveType: Type, damageMultiplier: number) { + constructor(moveType: PokemonType, damageMultiplier: number) { super((target, user, move) => user.getMoveType(move) === moveType, damageMultiplier); } } @@ -425,10 +428,10 @@ export class ReceivedTypeDamageMultiplierAbAttr extends ReceivedMoveDamageMultip * @see {@linkcode getCondition} */ export class TypeImmunityAbAttr extends PreDefendAbAttr { - private immuneType: Type | null; + private immuneType: PokemonType | null; private condition: AbAttrCondition | null; - constructor(immuneType: Type | null, condition?: AbAttrCondition) { + constructor(immuneType: PokemonType | null, condition?: AbAttrCondition) { super(); this.immuneType = immuneType; @@ -457,7 +460,7 @@ export class TypeImmunityAbAttr extends PreDefendAbAttr { return false; } - getImmuneType(): Type | null { + getImmuneType(): PokemonType | null { return this.immuneType; } @@ -467,7 +470,7 @@ export class TypeImmunityAbAttr extends PreDefendAbAttr { } export class AttackTypeImmunityAbAttr extends TypeImmunityAbAttr { - constructor(immuneType: Type, condition?: AbAttrCondition) { + constructor(immuneType: PokemonType, condition?: AbAttrCondition) { super(immuneType, condition); } @@ -486,7 +489,7 @@ export class AttackTypeImmunityAbAttr extends TypeImmunityAbAttr { } export class TypeImmunityHealAbAttr extends TypeImmunityAbAttr { - constructor(immuneType: Type) { + constructor(immuneType: PokemonType) { super(immuneType); } @@ -511,7 +514,7 @@ class TypeImmunityStatStageChangeAbAttr extends TypeImmunityAbAttr { private stat: BattleStat; private stages: number; - constructor(immuneType: Type, stat: BattleStat, stages: number, condition?: AbAttrCondition) { + constructor(immuneType: PokemonType, stat: BattleStat, stages: number, condition?: AbAttrCondition) { super(immuneType, condition); this.stat = stat; @@ -536,7 +539,7 @@ class TypeImmunityAddBattlerTagAbAttr extends TypeImmunityAbAttr { private tagType: BattlerTagType; private turnCount: number; - constructor(immuneType: Type, tagType: BattlerTagType, turnCount: number, condition?: AbAttrCondition) { + constructor(immuneType: PokemonType, tagType: BattlerTagType, turnCount: number, condition?: AbAttrCondition) { super(immuneType, condition); this.tagType = tagType; @@ -904,7 +907,7 @@ export class PostDefendTypeChangeAbAttr extends PostDefendAbAttr { return i18next.t("abilityTriggers:postDefendTypeChange", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName, - typeName: i18next.t(`pokemonInfo:Type.${Type[pokemon.getTypes(true)[0]]}`) + typeName: i18next.t(`pokemonInfo:Type.${PokemonType[pokemon.getTypes(true)[0]]}`) }); } } @@ -963,7 +966,7 @@ export class EffectSporeAbAttr extends PostDefendContactApplyStatusEffectAbAttr } applyPostDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): boolean { - if (attacker.hasAbility(Abilities.OVERCOAT) || attacker.isOfType(Type.GRASS)) { + if (attacker.hasAbility(Abilities.OVERCOAT) || attacker.isOfType(PokemonType.GRASS)) { return false; } return super.applyPostDefend(pokemon, passive, simulated, attacker, move, hitResult, args); @@ -1353,7 +1356,7 @@ export class FieldMultiplyStatAbAttr extends AbAttr { export class MoveTypeChangeAbAttr extends PreAttackAbAttr { constructor( - private newType: Type, + private newType: PokemonType, private powerMultiplier: number, private condition?: PokemonAttackCondition ) { @@ -1378,7 +1381,7 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr { /** Ability attribute for changing a pokemon's type before using a move */ export class PokemonTypeChangeAbAttr extends PreAttackAbAttr { - private moveType: Type; + private moveType: PokemonType; constructor() { super(true); @@ -1418,7 +1421,7 @@ export class PokemonTypeChangeAbAttr extends PreAttackAbAttr { getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { return i18next.t("abilityTriggers:pokemonTypeChange", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - moveType: i18next.t(`pokemonInfo:Type.${Type[this.moveType]}`), + moveType: i18next.t(`pokemonInfo:Type.${PokemonType[this.moveType]}`), }); } } @@ -1525,13 +1528,13 @@ export class MovePowerBoostAbAttr extends VariableMovePowerAbAttr { } export class MoveTypePowerBoostAbAttr extends MovePowerBoostAbAttr { - constructor(boostedType: Type, powerMultiplier?: number) { + constructor(boostedType: PokemonType, powerMultiplier?: number) { super((pokemon, defender, move) => pokemon?.getMoveType(move) === boostedType, powerMultiplier || 1.5); } } export class LowHpMoveTypePowerBoostAbAttr extends MoveTypePowerBoostAbAttr { - constructor(boostedType: Type) { + constructor(boostedType: PokemonType) { super(boostedType); } @@ -1609,7 +1612,7 @@ export class PreAttackFieldMoveTypePowerBoostAbAttr extends FieldMovePowerBoostA * @param boostedType - The type of move that will receive the power boost. * @param powerMultiplier - The multiplier to apply to the move's power, defaults to 1.5 if not provided. */ - constructor(boostedType: Type, powerMultiplier?: number) { + constructor(boostedType: PokemonType, powerMultiplier?: number) { super((pokemon, defender, move) => pokemon?.getMoveType(move) === boostedType, powerMultiplier || 1.5); } } @@ -3514,10 +3517,10 @@ function getAnticipationCondition(): AbAttrCondition { + (opponent.ivs[Stat.SPDEF] & 1) * 32) * 15 / 63); const type = [ - Type.FIGHTING, Type.FLYING, Type.POISON, Type.GROUND, - Type.ROCK, Type.BUG, Type.GHOST, Type.STEEL, - Type.FIRE, Type.WATER, Type.GRASS, Type.ELECTRIC, - Type.PSYCHIC, Type.ICE, Type.DRAGON, Type.DARK ][iv_val]; + PokemonType.FIGHTING, PokemonType.FLYING, PokemonType.POISON, PokemonType.GROUND, + PokemonType.ROCK, PokemonType.BUG, PokemonType.GHOST, PokemonType.STEEL, + PokemonType.FIRE, PokemonType.WATER, PokemonType.GRASS, PokemonType.ELECTRIC, + PokemonType.PSYCHIC, PokemonType.ICE, PokemonType.DRAGON, PokemonType.DARK ][iv_val]; if (pokemon.getAttackTypeEffectiveness(type, opponent) >= 2) { return true; @@ -4419,7 +4422,7 @@ export class ArenaTrapAbAttr extends CheckTrappedAbAttr { */ applyCheckTrapped(pokemon: Pokemon, passive: boolean, simulated: boolean, trapped: Utils.BooleanHolder, otherPokemon: Pokemon, args: any[]): boolean { if (this.arenaTrapCondition(pokemon, otherPokemon)) { - if (otherPokemon.getTypes(true).includes(Type.GHOST) || (otherPokemon.getTypes(true).includes(Type.STELLAR) && otherPokemon.getTypes().includes(Type.GHOST))) { + if (otherPokemon.getTypes(true).includes(PokemonType.GHOST) || (otherPokemon.getTypes(true).includes(PokemonType.STELLAR) && otherPokemon.getTypes().includes(PokemonType.GHOST))) { trapped.value = false; return false; } else if (otherPokemon.hasAbility(Abilities.RUN_AWAY)) { @@ -4589,9 +4592,9 @@ export class RedirectMoveAbAttr extends AbAttr { } export class RedirectTypeMoveAbAttr extends RedirectMoveAbAttr { - public type: Type; + public type: PokemonType; - constructor(type: Type) { + constructor(type: PokemonType) { super(); this.type = type; } @@ -4807,17 +4810,17 @@ export class NoFusionAbilityAbAttr extends AbAttr { } export class IgnoreTypeImmunityAbAttr extends AbAttr { - private defenderType: Type; - private allowedMoveTypes: Type[]; + private defenderType: PokemonType; + private allowedMoveTypes: PokemonType[]; - constructor(defenderType: Type, allowedMoveTypes: Type[]) { + constructor(defenderType: PokemonType, allowedMoveTypes: PokemonType[]) { super(true); this.defenderType = defenderType; this.allowedMoveTypes = allowedMoveTypes; } apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { - if (this.defenderType === (args[1] as Type) && this.allowedMoveTypes.includes(args[0] as Type)) { + if (this.defenderType === (args[1] as PokemonType) && this.allowedMoveTypes.includes(args[0] as PokemonType)) { cancelled.value = true; return true; } @@ -4830,9 +4833,9 @@ export class IgnoreTypeImmunityAbAttr extends AbAttr { */ export class IgnoreTypeStatusEffectImmunityAbAttr extends AbAttr { private statusEffect: StatusEffect[]; - private defenderType: Type[]; + private defenderType: PokemonType[]; - constructor(statusEffect: StatusEffect[], defenderType: Type[]) { + constructor(statusEffect: StatusEffect[], defenderType: PokemonType[]) { super(true); this.statusEffect = statusEffect; @@ -4840,7 +4843,7 @@ export class IgnoreTypeStatusEffectImmunityAbAttr extends AbAttr { } apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { - if (this.statusEffect.includes(args[0] as StatusEffect) && this.defenderType.includes(args[1] as Type)) { + if (this.statusEffect.includes(args[0] as StatusEffect) && this.defenderType.includes(args[1] as PokemonType)) { cancelled.value = true; return true; } @@ -5077,7 +5080,7 @@ export class TerrainEventTypeChangeAbAttr extends PostSummonAbAttr { return false; } const currentTerrain = globalScene.arena.getTerrainType(); - const typeChange: Type[] = this.determineTypeChange(pokemon, currentTerrain); + const typeChange: PokemonType[] = this.determineTypeChange(pokemon, currentTerrain); if (typeChange.length !== 0) { if (pokemon.summonData.addedType && typeChange.includes(pokemon.summonData.addedType)) { pokemon.summonData.addedType = null; @@ -5094,20 +5097,20 @@ export class TerrainEventTypeChangeAbAttr extends PostSummonAbAttr { * @param currentTerrain {@linkcode TerrainType} * @returns a list of type(s) */ - private determineTypeChange(pokemon: Pokemon, currentTerrain: TerrainType): Type[] { - const typeChange: Type[] = []; + private determineTypeChange(pokemon: Pokemon, currentTerrain: TerrainType): PokemonType[] { + const typeChange: PokemonType[] = []; switch (currentTerrain) { case TerrainType.ELECTRIC: - typeChange.push(Type.ELECTRIC); + typeChange.push(PokemonType.ELECTRIC); break; case TerrainType.MISTY: - typeChange.push(Type.FAIRY); + typeChange.push(PokemonType.FAIRY); break; case TerrainType.GRASSY: - typeChange.push(Type.GRASS); + typeChange.push(PokemonType.GRASS); break; case TerrainType.PSYCHIC: - typeChange.push(Type.PSYCHIC); + typeChange.push(PokemonType.PSYCHIC); break; default: pokemon.getTypes(false, false, true).forEach(t => { @@ -5135,7 +5138,7 @@ export class TerrainEventTypeChangeAbAttr extends PostSummonAbAttr { if (currentTerrain === TerrainType.NONE) { return i18next.t("abilityTriggers:pokemonTypeChangeRevert", { pokemonNameWithAffix }); } else { - const moveType = i18next.t(`pokemonInfo:Type.${Type[this.determineTypeChange(pokemon, currentTerrain)[0]]}`); + const moveType = i18next.t(`pokemonInfo:Type.${PokemonType[this.determineTypeChange(pokemon, currentTerrain)[0]]}`); return i18next.t("abilityTriggers:pokemonTypeChange", { pokemonNameWithAffix, moveType }); } } @@ -6045,10 +6048,10 @@ export function initAbilities() { .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.PARALYSIS) .bypassFaint(), new Ability(Abilities.VOLT_ABSORB, 3) - .attr(TypeImmunityHealAbAttr, Type.ELECTRIC) + .attr(TypeImmunityHealAbAttr, PokemonType.ELECTRIC) .ignorable(), new Ability(Abilities.WATER_ABSORB, 3) - .attr(TypeImmunityHealAbAttr, Type.WATER) + .attr(TypeImmunityHealAbAttr, PokemonType.WATER) .ignorable(), new Ability(Abilities.OBLIVIOUS, 3) .attr(BattlerTagImmunityAbAttr, [ BattlerTagType.INFATUATED, BattlerTagType.TAUNT ]) @@ -6073,7 +6076,7 @@ export function initAbilities() { .attr(StatusEffectImmunityAbAttr, StatusEffect.POISON, StatusEffect.TOXIC) .ignorable(), new Ability(Abilities.FLASH_FIRE, 3) - .attr(TypeImmunityAddBattlerTagAbAttr, Type.FIRE, BattlerTagType.FIRE_BOOST, 1) + .attr(TypeImmunityAddBattlerTagAbAttr, PokemonType.FIRE, BattlerTagType.FIRE_BOOST, 1) .ignorable(), new Ability(Abilities.SHIELD_DUST, 3) .attr(IgnoreMoveEffectsAbAttr) @@ -6103,7 +6106,7 @@ export function initAbilities() { .attr(UnswappableAbilityAbAttr) .ignorable(), new Ability(Abilities.LEVITATE, 3) - .attr(AttackTypeImmunityAbAttr, Type.GROUND, (pokemon: Pokemon) => !pokemon.getTag(GroundedTag) && !globalScene.arena.getTag(ArenaTagType.GRAVITY)) + .attr(AttackTypeImmunityAbAttr, PokemonType.GROUND, (pokemon: Pokemon) => !pokemon.getTag(GroundedTag) && !globalScene.arena.getTag(ArenaTagType.GRAVITY)) .ignorable(), new Ability(Abilities.EFFECT_SPORE, 3) .attr(EffectSporeAbAttr), @@ -6116,8 +6119,8 @@ export function initAbilities() { new Ability(Abilities.NATURAL_CURE, 3) .attr(PreSwitchOutResetStatusAbAttr), new Ability(Abilities.LIGHTNING_ROD, 3) - .attr(RedirectTypeMoveAbAttr, Type.ELECTRIC) - .attr(TypeImmunityStatStageChangeAbAttr, Type.ELECTRIC, Stat.SPATK, 1) + .attr(RedirectTypeMoveAbAttr, PokemonType.ELECTRIC) + .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.ELECTRIC, Stat.SPATK, 1) .ignorable(), new Ability(Abilities.SERENE_GRACE, 3) .attr(MoveEffectChanceMultiplierAbAttr, 2), @@ -6152,7 +6155,7 @@ export function initAbilities() { .ignorable(), new Ability(Abilities.MAGNET_PULL, 3) .attr(ArenaTrapAbAttr, (user, target) => { - if (target.getTypes(true).includes(Type.STEEL) || (target.getTypes(true).includes(Type.STELLAR) && target.getTypes().includes(Type.STEEL))) { + if (target.getTypes(true).includes(PokemonType.STEEL) || (target.getTypes(true).includes(PokemonType.STELLAR) && target.getTypes().includes(PokemonType.STEEL))) { return true; } return false; @@ -6169,8 +6172,8 @@ export function initAbilities() { .attr(IncreasePpAbAttr) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonPressure", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })), new Ability(Abilities.THICK_FAT, 3) - .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5) - .attr(ReceivedTypeDamageMultiplierAbAttr, Type.ICE, 0.5) + .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.FIRE, 0.5) + .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.ICE, 0.5) .ignorable(), new Ability(Abilities.EARLY_BIRD, 3) .attr(ReduceStatusEffectDurationAbAttr, StatusEffect.SLEEP), @@ -6219,13 +6222,13 @@ export function initAbilities() { new Ability(Abilities.LIQUID_OOZE, 3) .attr(ReverseDrainAbAttr), new Ability(Abilities.OVERGROW, 3) - .attr(LowHpMoveTypePowerBoostAbAttr, Type.GRASS), + .attr(LowHpMoveTypePowerBoostAbAttr, PokemonType.GRASS), new Ability(Abilities.BLAZE, 3) - .attr(LowHpMoveTypePowerBoostAbAttr, Type.FIRE), + .attr(LowHpMoveTypePowerBoostAbAttr, PokemonType.FIRE), new Ability(Abilities.TORRENT, 3) - .attr(LowHpMoveTypePowerBoostAbAttr, Type.WATER), + .attr(LowHpMoveTypePowerBoostAbAttr, PokemonType.WATER), new Ability(Abilities.SWARM, 3) - .attr(LowHpMoveTypePowerBoostAbAttr, Type.BUG), + .attr(LowHpMoveTypePowerBoostAbAttr, PokemonType.BUG), new Ability(Abilities.ROCK_HEAD, 3) .attr(BlockRecoilDamageAttr), new Ability(Abilities.DROUGHT, 3) @@ -6261,7 +6264,7 @@ export function initAbilities() { .conditionalAttr(pokemon => !!pokemon.getTag(BattlerTagType.CONFUSED), StatMultiplierAbAttr, Stat.EVA, 2) .ignorable(), new Ability(Abilities.MOTOR_DRIVE, 4) - .attr(TypeImmunityStatStageChangeAbAttr, Type.ELECTRIC, Stat.SPD, 1) + .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.ELECTRIC, Stat.SPD, 1) .ignorable(), new Ability(Abilities.RIVALRY, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => user?.gender !== Gender.GENDERLESS && target?.gender !== Gender.GENDERLESS && user?.gender === target?.gender, 1.25, true) @@ -6282,7 +6285,7 @@ export function initAbilities() { .bypassFaint() // Allows reviver seed to activate Unburden .edgeCase(), // Should not restore Unburden boost if Pokemon loses then regains Unburden ability new Ability(Abilities.HEATPROOF, 4) - .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5) + .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.FIRE, 0.5) .attr(ReduceBurnDamageAbAttr, 0.5) .ignorable(), new Ability(Abilities.SIMPLE, 4) @@ -6291,8 +6294,8 @@ export function initAbilities() { new Ability(Abilities.DRY_SKIN, 4) .attr(PostWeatherLapseDamageAbAttr, 2, WeatherType.SUNNY, WeatherType.HARSH_SUN) .attr(PostWeatherLapseHealAbAttr, 2, WeatherType.RAIN, WeatherType.HEAVY_RAIN) - .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 1.25) - .attr(TypeImmunityHealAbAttr, Type.WATER) + .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.FIRE, 1.25) + .attr(TypeImmunityHealAbAttr, PokemonType.WATER) .ignorable(), new Ability(Abilities.DOWNLOAD, 4) .attr(DownloadAbAttr), @@ -6316,7 +6319,7 @@ export function initAbilities() { .conditionalAttr(pokemon => pokemon.status ? pokemon.status.effect === StatusEffect.PARALYSIS : false, StatMultiplierAbAttr, Stat.SPD, 2) .conditionalAttr(pokemon => !!pokemon.status || pokemon.hasAbility(Abilities.COMATOSE), StatMultiplierAbAttr, Stat.SPD, 1.5), new Ability(Abilities.NORMALIZE, 4) - .attr(MoveTypeChangeAbAttr, Type.NORMAL, 1.2, (user, target, move) => { + .attr(MoveTypeChangeAbAttr, PokemonType.NORMAL, 1.2, (user, target, move) => { return ![ Moves.HIDDEN_POWER, Moves.WEATHER_BALL, Moves.NATURAL_GIFT, Moves.JUDGMENT, Moves.TECHNO_BLAST ].includes(move.id); }), new Ability(Abilities.SNIPER, 4) @@ -6363,11 +6366,11 @@ export function initAbilities() { new Ability(Abilities.SLOW_START, 4) .attr(PostSummonAddBattlerTagAbAttr, BattlerTagType.SLOW_START, 5), new Ability(Abilities.SCRAPPY, 4) - .attr(IgnoreTypeImmunityAbAttr, Type.GHOST, [ Type.NORMAL, Type.FIGHTING ]) + .attr(IgnoreTypeImmunityAbAttr, PokemonType.GHOST, [ PokemonType.NORMAL, PokemonType.FIGHTING ]) .attr(IntimidateImmunityAbAttr), new Ability(Abilities.STORM_DRAIN, 4) - .attr(RedirectTypeMoveAbAttr, Type.WATER) - .attr(TypeImmunityStatStageChangeAbAttr, Type.WATER, Stat.SPATK, 1) + .attr(RedirectTypeMoveAbAttr, PokemonType.WATER) + .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.WATER, Stat.SPATK, 1) .ignorable(), new Ability(Abilities.ICE_BODY, 4) .attr(BlockWeatherDamageAttr, WeatherType.HAIL) @@ -6494,12 +6497,12 @@ export function initAbilities() { new Ability(Abilities.MOXIE, 5) .attr(PostVictoryStatStageChangeAbAttr, Stat.ATK, 1), new Ability(Abilities.JUSTIFIED, 5) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === Type.DARK && move.category !== MoveCategory.STATUS, Stat.ATK, 1), + .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.DARK && move.category !== MoveCategory.STATUS, Stat.ATK, 1), new Ability(Abilities.RATTLED, 5) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => { const moveType = user.getMoveType(move); return move.category !== MoveCategory.STATUS - && (moveType === Type.DARK || moveType === Type.BUG || moveType === Type.GHOST); + && (moveType === PokemonType.DARK || moveType === PokemonType.BUG || moveType === PokemonType.GHOST); }, Stat.SPD, 1) .attr(PostIntimidateStatStageChangeAbAttr, [ Stat.SPD ], 1), new Ability(Abilities.MAGIC_BOUNCE, 5) @@ -6509,14 +6512,14 @@ export function initAbilities() { // rely on move history .edgeCase(), new Ability(Abilities.SAP_SIPPER, 5) - .attr(TypeImmunityStatStageChangeAbAttr, Type.GRASS, Stat.ATK, 1) + .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.GRASS, Stat.ATK, 1) .ignorable(), new Ability(Abilities.PRANKSTER, 5) .attr(ChangeMovePriorityAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS, 1), new Ability(Abilities.SAND_FORCE, 5) - .attr(MoveTypePowerBoostAbAttr, Type.ROCK, 1.3) - .attr(MoveTypePowerBoostAbAttr, Type.GROUND, 1.3) - .attr(MoveTypePowerBoostAbAttr, Type.STEEL, 1.3) + .attr(MoveTypePowerBoostAbAttr, PokemonType.ROCK, 1.3) + .attr(MoveTypePowerBoostAbAttr, PokemonType.GROUND, 1.3) + .attr(MoveTypePowerBoostAbAttr, PokemonType.STEEL, 1.3) .attr(BlockWeatherDamageAttr, WeatherType.SANDSTORM) .condition(getWeatherCondition(WeatherType.SANDSTORM)), new Ability(Abilities.IRON_BARBS, 5) @@ -6564,7 +6567,7 @@ export function initAbilities() { new Ability(Abilities.STRONG_JAW, 6) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.BITING_MOVE), 1.5), new Ability(Abilities.REFRIGERATE, 6) - .attr(MoveTypeChangeAbAttr, Type.ICE, 1.2, (user, target, move) => move.type === Type.NORMAL && !move.hasAttr(VariableMoveTypeAttr)), + .attr(MoveTypeChangeAbAttr, PokemonType.ICE, 1.2, (user, target, move) => move.type === PokemonType.NORMAL && !move.hasAttr(VariableMoveTypeAttr)), new Ability(Abilities.SWEET_VEIL, 6) .attr(UserFieldStatusEffectImmunityAbAttr, StatusEffect.SLEEP) .attr(UserFieldBattlerTagImmunityAbAttr, BattlerTagType.DROWSY) @@ -6576,7 +6579,7 @@ export function initAbilities() { .attr(UnsuppressableAbilityAbAttr) .attr(NoFusionAbilityAbAttr), new Ability(Abilities.GALE_WINGS, 6) - .attr(ChangeMovePriorityAbAttr, (pokemon, move) => pokemon.isFullHp() && pokemon.getMoveType(move) === Type.FLYING, 1), + .attr(ChangeMovePriorityAbAttr, (pokemon, move) => pokemon.isFullHp() && pokemon.getMoveType(move) === PokemonType.FLYING, 1), new Ability(Abilities.MEGA_LAUNCHER, 6) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.PULSE_MOVE), 1.5), new Ability(Abilities.GRASS_PELT, 6) @@ -6587,23 +6590,23 @@ export function initAbilities() { new Ability(Abilities.TOUGH_CLAWS, 6) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), 1.3), new Ability(Abilities.PIXILATE, 6) - .attr(MoveTypeChangeAbAttr, Type.FAIRY, 1.2, (user, target, move) => move.type === Type.NORMAL && !move.hasAttr(VariableMoveTypeAttr)), + .attr(MoveTypeChangeAbAttr, PokemonType.FAIRY, 1.2, (user, target, move) => move.type === PokemonType.NORMAL && !move.hasAttr(VariableMoveTypeAttr)), new Ability(Abilities.GOOEY, 6) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), Stat.SPD, -1, false), new Ability(Abilities.AERILATE, 6) - .attr(MoveTypeChangeAbAttr, Type.FLYING, 1.2, (user, target, move) => move.type === Type.NORMAL && !move.hasAttr(VariableMoveTypeAttr)), + .attr(MoveTypeChangeAbAttr, PokemonType.FLYING, 1.2, (user, target, move) => move.type === PokemonType.NORMAL && !move.hasAttr(VariableMoveTypeAttr)), new Ability(Abilities.PARENTAL_BOND, 6) .attr(AddSecondStrikeAbAttr, 0.25), new Ability(Abilities.DARK_AURA, 6) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonDarkAura", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })) - .attr(FieldMoveTypePowerBoostAbAttr, Type.DARK, 4 / 3), + .attr(FieldMoveTypePowerBoostAbAttr, PokemonType.DARK, 4 / 3), new Ability(Abilities.FAIRY_AURA, 6) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonFairyAura", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })) - .attr(FieldMoveTypePowerBoostAbAttr, Type.FAIRY, 4 / 3), + .attr(FieldMoveTypePowerBoostAbAttr, PokemonType.FAIRY, 4 / 3), new Ability(Abilities.AURA_BREAK, 6) .ignorable() - .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.DARK_AURA)), FieldMoveTypePowerBoostAbAttr, Type.DARK, 9 / 16) - .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.FAIRY_AURA)), FieldMoveTypePowerBoostAbAttr, Type.FAIRY, 9 / 16) + .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.DARK_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.DARK, 9 / 16) + .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.FAIRY_AURA)), FieldMoveTypePowerBoostAbAttr, PokemonType.FAIRY, 9 / 16) .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.DARK_AURA) || p.hasAbility(Abilities.FAIRY_AURA)), PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonAuraBreak", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })), new Ability(Abilities.PRIMORDIAL_SEA, 6) @@ -6630,7 +6633,7 @@ export function initAbilities() { .attr(PostDamageForceSwitchAbAttr) .edgeCase(), // Should not trigger when hurting itself in confusion, causes Fake Out to fail turn 1 and succeed turn 2 if pokemon is switched out before battle start via playing in Switch Mode new Ability(Abilities.WATER_COMPACTION, 7) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === Type.WATER && move.category !== MoveCategory.STATUS, Stat.DEF, 2), + .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.WATER && move.category !== MoveCategory.STATUS, Stat.DEF, 2), new Ability(Abilities.MERCILESS, 7) .attr(ConditionalCritAbAttr, (user, target, move) => target?.status?.effect === StatusEffect.TOXIC || target?.status?.effect === StatusEffect.POISON), new Ability(Abilities.SHIELDS_DOWN, 7) @@ -6648,12 +6651,12 @@ export function initAbilities() { new Ability(Abilities.STAKEOUT, 7) .attr(MovePowerBoostAbAttr, (user, target, move) => !!target?.turnData.switchedInThisTurn, 2), new Ability(Abilities.WATER_BUBBLE, 7) - .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5) - .attr(MoveTypePowerBoostAbAttr, Type.WATER, 2) + .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.FIRE, 0.5) + .attr(MoveTypePowerBoostAbAttr, PokemonType.WATER, 2) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .ignorable(), new Ability(Abilities.STEELWORKER, 7) - .attr(MoveTypePowerBoostAbAttr, Type.STEEL), + .attr(MoveTypePowerBoostAbAttr, PokemonType.STEEL), new Ability(Abilities.BERSERK, 7) .attr(PostDefendHpGatedStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ Stat.SPATK ], 1) .condition(getSheerForceHitDisableAbCondition()), @@ -6663,11 +6666,11 @@ export function initAbilities() { new Ability(Abilities.LONG_REACH, 7) .attr(IgnoreContactAbAttr), new Ability(Abilities.LIQUID_VOICE, 7) - .attr(MoveTypeChangeAbAttr, Type.WATER, 1, (user, target, move) => move.hasFlag(MoveFlags.SOUND_BASED)), + .attr(MoveTypeChangeAbAttr, PokemonType.WATER, 1, (user, target, move) => move.hasFlag(MoveFlags.SOUND_BASED)), new Ability(Abilities.TRIAGE, 7) .attr(ChangeMovePriorityAbAttr, (pokemon, move) => move.hasFlag(MoveFlags.TRIAGE_MOVE), 3), new Ability(Abilities.GALVANIZE, 7) - .attr(MoveTypeChangeAbAttr, Type.ELECTRIC, 1.2, (user, target, move) => move.type === Type.NORMAL && !move.hasAttr(VariableMoveTypeAttr)), + .attr(MoveTypeChangeAbAttr, PokemonType.ELECTRIC, 1.2, (user, target, move) => move.type === PokemonType.NORMAL && !move.hasAttr(VariableMoveTypeAttr)), new Ability(Abilities.SURGE_SURFER, 7) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), StatMultiplierAbAttr, Stat.SPD, 2), new Ability(Abilities.SCHOOLING, 7) @@ -6715,7 +6718,7 @@ export function initAbilities() { .attr(NoFusionAbilityAbAttr) .bypassFaint(), new Ability(Abilities.CORROSION, 7) - .attr(IgnoreTypeStatusEffectImmunityAbAttr, [ StatusEffect.POISON, StatusEffect.TOXIC ], [ Type.STEEL, Type.POISON ]) + .attr(IgnoreTypeStatusEffectImmunityAbAttr, [ StatusEffect.POISON, StatusEffect.TOXIC ], [ PokemonType.STEEL, PokemonType.POISON ]) .edgeCase(), // Should poison itself with toxic orb. new Ability(Abilities.COMATOSE, 7) .attr(UncopiableAbilityAbAttr) @@ -6735,7 +6738,7 @@ export function initAbilities() { .attr(AllyMoveCategoryPowerBoostAbAttr, [ MoveCategory.SPECIAL ], 1.3), new Ability(Abilities.FLUFFY, 7) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), 0.5) - .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => user.getMoveType(move) === Type.FIRE, 2) + .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.FIRE, 2) .ignorable(), new Ability(Abilities.DAZZLING, 7) .attr(FieldPriorityMoveImmunityAbAttr) @@ -6825,7 +6828,7 @@ export function initAbilities() { .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => { const moveType = user.getMoveType(move); return move.category !== MoveCategory.STATUS - && (moveType === Type.FIRE || moveType === Type.WATER); + && (moveType === PokemonType.FIRE || moveType === PokemonType.WATER); }, Stat.SPD, 6), new Ability(Abilities.PUNK_ROCK, 8) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SOUND_BASED), 1.3) @@ -6864,7 +6867,7 @@ export function initAbilities() { new Ability(Abilities.SCREEN_CLEANER, 8) .attr(PostSummonRemoveArenaTagAbAttr, [ ArenaTagType.AURORA_VEIL, ArenaTagType.LIGHT_SCREEN, ArenaTagType.REFLECT ]), new Ability(Abilities.STEELY_SPIRIT, 8) - .attr(UserFieldMoveTypePowerBoostAbAttr, Type.STEEL), + .attr(UserFieldMoveTypePowerBoostAbAttr, PokemonType.STEEL), new Ability(Abilities.PERISH_BODY, 8) .attr(PostDefendPerishSongAbAttr, 4) .bypassFaint(), @@ -6900,9 +6903,9 @@ export function initAbilities() { new Ability(Abilities.CURIOUS_MEDICINE, 8) .attr(PostSummonClearAllyStatStagesAbAttr), new Ability(Abilities.TRANSISTOR, 8) - .attr(MoveTypePowerBoostAbAttr, Type.ELECTRIC), + .attr(MoveTypePowerBoostAbAttr, PokemonType.ELECTRIC), new Ability(Abilities.DRAGONS_MAW, 8) - .attr(MoveTypePowerBoostAbAttr, Type.DRAGON), + .attr(MoveTypePowerBoostAbAttr, PokemonType.DRAGON), new Ability(Abilities.CHILLING_NEIGH, 8) .attr(PostVictoryStatStageChangeAbAttr, Stat.ATK, 1), new Ability(Abilities.GRIM_NEIGH, 8) @@ -6928,7 +6931,7 @@ export function initAbilities() { .attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY) .bypassFaint(), new Ability(Abilities.THERMAL_EXCHANGE, 9) - .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === Type.FIRE && move.category !== MoveCategory.STATUS, Stat.ATK, 1) + .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === PokemonType.FIRE && move.category !== MoveCategory.STATUS, Stat.ATK, 1) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .ignorable(), new Ability(Abilities.ANGER_SHELL, 9) @@ -6937,10 +6940,10 @@ export function initAbilities() { .condition(getSheerForceHitDisableAbCondition()), new Ability(Abilities.PURIFYING_SALT, 9) .attr(StatusEffectImmunityAbAttr) - .attr(ReceivedTypeDamageMultiplierAbAttr, Type.GHOST, 0.5) + .attr(ReceivedTypeDamageMultiplierAbAttr, PokemonType.GHOST, 0.5) .ignorable(), new Ability(Abilities.WELL_BAKED_BODY, 9) - .attr(TypeImmunityStatStageChangeAbAttr, Type.FIRE, Stat.DEF, 2) + .attr(TypeImmunityStatStageChangeAbAttr, PokemonType.FIRE, Stat.DEF, 2) .ignorable(), new Ability(Abilities.WIND_RIDER, 9) .attr(MoveImmunityStatStageChangeAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.hasFlag(MoveFlags.WIND_MOVE) && move.category !== MoveCategory.STATUS, Stat.ATK, 1) @@ -6951,7 +6954,7 @@ export function initAbilities() { .attr(ForceSwitchOutImmunityAbAttr) .ignorable(), new Ability(Abilities.ROCKY_PAYLOAD, 9) - .attr(MoveTypePowerBoostAbAttr, Type.ROCK), + .attr(MoveTypePowerBoostAbAttr, PokemonType.ROCK), new Ability(Abilities.WIND_POWER, 9) .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.hasFlag(MoveFlags.WIND_MOVE), BattlerTagType.CHARGED), new Ability(Abilities.ZERO_TO_HERO, 9) @@ -7026,14 +7029,14 @@ export function initAbilities() { .attr(FieldPriorityMoveImmunityAbAttr) .ignorable(), new Ability(Abilities.EARTH_EATER, 9) - .attr(TypeImmunityHealAbAttr, Type.GROUND) + .attr(TypeImmunityHealAbAttr, PokemonType.GROUND) .ignorable(), new Ability(Abilities.MYCELIUM_MIGHT, 9) .attr(ChangeMovePriorityAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS, -0.2) .attr(PreventBypassSpeedChanceAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS) .attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS), new Ability(Abilities.MINDS_EYE, 9) - .attr(IgnoreTypeImmunityAbAttr, Type.GHOST, [ Type.NORMAL, Type.FIGHTING ]) + .attr(IgnoreTypeImmunityAbAttr, PokemonType.GHOST, [ PokemonType.NORMAL, PokemonType.FIGHTING ]) .attr(ProtectStatAbAttr, Stat.ACC) .attr(IgnoreOpponentStatStagesAbAttr, [ Stat.EVA ]) .ignorable(), diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 580ede9596c..4e54c728f09 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -1,8 +1,10 @@ import { globalScene } from "#app/global-scene"; import type { Arena } from "#app/field/arena"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { BooleanHolder, NumberHolder, toDmgValue } from "#app/utils"; -import { MoveCategory, allMoves, MoveTarget } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; +import { MoveTarget } from "#enums/MoveTarget"; +import { MoveCategory } from "#enums/MoveCategory"; import { getPokemonNameWithAffix } from "#app/messages"; import type Pokemon from "#app/field/pokemon"; import { HitResult, PokemonMove } from "#app/field/pokemon"; @@ -501,7 +503,7 @@ class WishTag extends ArenaTag { * Abstract class to implement weakened moves of a specific type. */ export class WeakenMoveTypeTag extends ArenaTag { - private weakenedType: Type; + private weakenedType: PokemonType; /** * Creates a new instance of the WeakenMoveTypeTag class. @@ -512,7 +514,7 @@ export class WeakenMoveTypeTag extends ArenaTag { * @param sourceMove - The move that created the tag. * @param sourceId - The ID of the source of the tag. */ - constructor(tagType: ArenaTagType, turnCount: number, type: Type, sourceMove: Moves, sourceId: number) { + constructor(tagType: ArenaTagType, turnCount: number, type: PokemonType, sourceMove: Moves, sourceId: number) { super(tagType, turnCount, sourceMove, sourceId); this.weakenedType = type; @@ -522,11 +524,11 @@ export class WeakenMoveTypeTag extends ArenaTag { * Reduces an attack's power by 0.33x if it matches this tag's weakened type. * @param arena n/a * @param simulated n/a - * @param type the attack's {@linkcode Type} + * @param type the attack's {@linkcode PokemonType} * @param power a {@linkcode NumberHolder} containing the attack's power * @returns `true` if the attack's power was reduced; `false` otherwise. */ - override apply(arena: Arena, simulated: boolean, type: Type, power: NumberHolder): boolean { + override apply(arena: Arena, simulated: boolean, type: PokemonType, power: NumberHolder): boolean { if (type === this.weakenedType) { power.value *= 0.33; return true; @@ -541,7 +543,7 @@ export class WeakenMoveTypeTag extends ArenaTag { */ class MudSportTag extends WeakenMoveTypeTag { constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.MUD_SPORT, turnCount, Type.ELECTRIC, Moves.MUD_SPORT, sourceId); + super(ArenaTagType.MUD_SPORT, turnCount, PokemonType.ELECTRIC, Moves.MUD_SPORT, sourceId); } onAdd(arena: Arena): void { @@ -559,7 +561,7 @@ class MudSportTag extends WeakenMoveTypeTag { */ class WaterSportTag extends WeakenMoveTypeTag { constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.WATER_SPORT, turnCount, Type.FIRE, Moves.WATER_SPORT, sourceId); + super(ArenaTagType.WATER_SPORT, turnCount, PokemonType.FIRE, Moves.WATER_SPORT, sourceId); } onAdd(arena: Arena): void { @@ -592,12 +594,12 @@ export class IonDelugeTag extends ArenaTag { * Converts Normal-type moves to Electric type * @param arena n/a * @param simulated n/a - * @param moveType a {@linkcode NumberHolder} containing a move's {@linkcode Type} + * @param moveType a {@linkcode NumberHolder} containing a move's {@linkcode PokemonType} * @returns `true` if the given move type changed; `false` otherwise. */ override apply(arena: Arena, simulated: boolean, moveType: NumberHolder): boolean { - if (moveType.value === Type.NORMAL) { - moveType.value = Type.ELECTRIC; + if (moveType.value === PokemonType.NORMAL) { + moveType.value = PokemonType.ELECTRIC; return true; } return false; @@ -744,7 +746,7 @@ class ToxicSpikesTag extends ArenaTrapTag { if (simulated) { return true; } - if (pokemon.isOfType(Type.POISON)) { + if (pokemon.isOfType(PokemonType.POISON)) { this.neutralized = true; if (globalScene.arena.removeTag(this.tagType)) { globalScene.queueMessage(i18next.t("arenaTag:toxicSpikesActivateTrapPoison", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName() })); @@ -765,7 +767,7 @@ class ToxicSpikesTag extends ArenaTrapTag { if (pokemon.isGrounded() || !pokemon.canSetStatus(StatusEffect.POISON, true)) { return 1; } - if (pokemon.isOfType(Type.POISON)) { + if (pokemon.isOfType(PokemonType.POISON)) { return 1.25; } return super.getMatchupScoreMultiplier(pokemon); @@ -820,7 +822,7 @@ class StealthRockTag extends ArenaTrapTag { } getDamageHpRatio(pokemon: Pokemon): number { - const effectiveness = pokemon.getAttackTypeEffectiveness(Type.ROCK, undefined, true); + const effectiveness = pokemon.getAttackTypeEffectiveness(PokemonType.ROCK, undefined, true); let damageHpRatio: number = 0; @@ -1143,7 +1145,7 @@ class FireGrassPledgeTag extends ArenaTag { ? globalScene.getPlayerField() : globalScene.getEnemyField(); - field.filter(pokemon => !pokemon.isOfType(Type.FIRE) && !pokemon.switchOutStatus).forEach(pokemon => { + field.filter(pokemon => !pokemon.isOfType(PokemonType.FIRE) && !pokemon.switchOutStatus).forEach(pokemon => { // "{pokemonNameWithAffix} was hurt by the sea of fire!" globalScene.queueMessage(i18next.t("arenaTag:fireGrassPledgeLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); // TODO: Replace this with a proper animation diff --git a/src/data/balance/biomes.ts b/src/data/balance/biomes.ts index 5b5e69b4042..8feaa5beb5e 100644 --- a/src/data/balance/biomes.ts +++ b/src/data/balance/biomes.ts @@ -1,4 +1,4 @@ -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import * as Utils from "#app/utils"; import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; @@ -2024,448 +2024,448 @@ export const biomeTrainerPools: BiomeTrainerPools = { export function initBiomes() { const pokemonBiomes = [ - [ Species.BULBASAUR, Type.GRASS, Type.POISON, [ + [ Species.BULBASAUR, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.GRASS, BiomePoolTier.RARE ] ] ], - [ Species.IVYSAUR, Type.GRASS, Type.POISON, [ + [ Species.IVYSAUR, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.GRASS, BiomePoolTier.RARE ] ] ], - [ Species.VENUSAUR, Type.GRASS, Type.POISON, [ + [ Species.VENUSAUR, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.GRASS, BiomePoolTier.RARE ], [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CHARMANDER, Type.FIRE, -1, [ + [ Species.CHARMANDER, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.CHARMELEON, Type.FIRE, -1, [ + [ Species.CHARMELEON, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.CHARIZARD, Type.FIRE, Type.FLYING, [ + [ Species.CHARIZARD, PokemonType.FIRE, PokemonType.FLYING, [ [ Biome.VOLCANO, BiomePoolTier.RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SQUIRTLE, Type.WATER, -1, [ + [ Species.SQUIRTLE, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.WARTORTLE, Type.WATER, -1, [ + [ Species.WARTORTLE, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.BLASTOISE, Type.WATER, -1, [ + [ Species.BLASTOISE, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ], [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CATERPIE, Type.BUG, -1, [ + [ Species.CATERPIE, PokemonType.BUG, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.METAPOD, Type.BUG, -1, [ + [ Species.METAPOD, PokemonType.BUG, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BUTTERFREE, Type.BUG, Type.FLYING, [ + [ Species.BUTTERFREE, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WEEDLE, Type.BUG, Type.POISON, [ + [ Species.WEEDLE, PokemonType.BUG, PokemonType.POISON, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KAKUNA, Type.BUG, Type.POISON, [ + [ Species.KAKUNA, PokemonType.BUG, PokemonType.POISON, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BEEDRILL, Type.BUG, Type.POISON, [ + [ Species.BEEDRILL, PokemonType.BUG, PokemonType.POISON, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PIDGEY, Type.NORMAL, Type.FLYING, [ + [ Species.PIDGEY, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] ] ], - [ Species.PIDGEOTTO, Type.NORMAL, Type.FLYING, [ + [ Species.PIDGEOTTO, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] ] ], - [ Species.PIDGEOT, Type.NORMAL, Type.FLYING, [ + [ Species.PIDGEOT, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.RATTATA, Type.NORMAL, -1, [ + [ Species.RATTATA, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.METROPOLIS, BiomePoolTier.COMMON ], [ Biome.SLUM, BiomePoolTier.COMMON ] ] ], - [ Species.RATICATE, Type.NORMAL, -1, [ + [ Species.RATICATE, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.COMMON ], [ Biome.SLUM, BiomePoolTier.COMMON ] ] ], - [ Species.SPEAROW, Type.NORMAL, Type.FLYING, [ + [ Species.SPEAROW, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] ] ], - [ Species.FEAROW, Type.NORMAL, Type.FLYING, [ + [ Species.FEAROW, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.EKANS, Type.POISON, -1, [ + [ Species.EKANS, PokemonType.POISON, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.UNCOMMON ], [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ARBOK, Type.POISON, -1, [ + [ Species.ARBOK, PokemonType.POISON, -1, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON ], [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PIKACHU, Type.ELECTRIC, -1, [ + [ Species.PIKACHU, PokemonType.ELECTRIC, -1, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.RAICHU, Type.ELECTRIC, -1, [ + [ Species.RAICHU, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.SANDSHREW, Type.GROUND, -1, [ + [ Species.SANDSHREW, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], [ Biome.DESERT, BiomePoolTier.COMMON ] ] ], - [ Species.SANDSLASH, Type.GROUND, -1, [ + [ Species.SANDSLASH, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], [ Biome.DESERT, BiomePoolTier.COMMON ], [ Biome.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.NIDORAN_F, Type.POISON, -1, [ + [ Species.NIDORAN_F, PokemonType.POISON, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.NIDORINA, Type.POISON, -1, [ + [ Species.NIDORINA, PokemonType.POISON, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.NIDOQUEEN, Type.POISON, Type.GROUND, [ + [ Species.NIDOQUEEN, PokemonType.POISON, PokemonType.GROUND, [ [ Biome.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] ] ], - [ Species.NIDORAN_M, Type.POISON, -1, [ + [ Species.NIDORAN_M, PokemonType.POISON, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.NIDORINO, Type.POISON, -1, [ + [ Species.NIDORINO, PokemonType.POISON, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.NIDOKING, Type.POISON, Type.GROUND, [ + [ Species.NIDOKING, PokemonType.POISON, PokemonType.GROUND, [ [ Biome.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] ] ], - [ Species.CLEFAIRY, Type.FAIRY, -1, [ + [ Species.CLEFAIRY, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], [ Biome.SPACE, BiomePoolTier.COMMON ] ] ], - [ Species.CLEFABLE, Type.FAIRY, -1, [ + [ Species.CLEFABLE, PokemonType.FAIRY, -1, [ [ Biome.SPACE, BiomePoolTier.BOSS ] ] ], - [ Species.VULPIX, Type.FIRE, -1, [ + [ Species.VULPIX, PokemonType.FIRE, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], [ Biome.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.NINETALES, Type.FIRE, -1, [ + [ Species.NINETALES, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.JIGGLYPUFF, Type.NORMAL, Type.FAIRY, [ + [ Species.JIGGLYPUFF, PokemonType.NORMAL, PokemonType.FAIRY, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.WIGGLYTUFF, Type.NORMAL, Type.FAIRY, [ + [ Species.WIGGLYTUFF, PokemonType.NORMAL, PokemonType.FAIRY, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ZUBAT, Type.POISON, Type.FLYING, [ + [ Species.ZUBAT, PokemonType.POISON, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.GOLBAT, Type.POISON, Type.FLYING, [ + [ Species.GOLBAT, PokemonType.POISON, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.ODDISH, Type.GRASS, Type.POISON, [ + [ Species.ODDISH, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GLOOM, Type.GRASS, Type.POISON, [ + [ Species.GLOOM, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.VILEPLUME, Type.GRASS, Type.POISON, [ + [ Species.VILEPLUME, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PARAS, Type.BUG, Type.GRASS, [ + [ Species.PARAS, PokemonType.BUG, PokemonType.GRASS, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.PARASECT, Type.BUG, Type.GRASS, [ + [ Species.PARASECT, PokemonType.BUG, PokemonType.GRASS, [ [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.CAVE, BiomePoolTier.COMMON ], [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.VENONAT, Type.BUG, Type.POISON, [ + [ Species.VENONAT, PokemonType.BUG, PokemonType.POISON, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.VENOMOTH, Type.BUG, Type.POISON, [ + [ Species.VENOMOTH, PokemonType.BUG, PokemonType.POISON, [ [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.DIGLETT, Type.GROUND, -1, [ + [ Species.DIGLETT, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.COMMON ] ] ], - [ Species.DUGTRIO, Type.GROUND, -1, [ + [ Species.DUGTRIO, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.COMMON ], [ Biome.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.MEOWTH, Type.NORMAL, -1, [ + [ Species.MEOWTH, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PERSIAN, Type.NORMAL, -1, [ + [ Species.PERSIAN, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PSYDUCK, Type.WATER, -1, [ + [ Species.PSYDUCK, PokemonType.WATER, -1, [ [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], [ Biome.LAKE, BiomePoolTier.COMMON ] ] ], - [ Species.GOLDUCK, Type.WATER, -1, [ + [ Species.GOLDUCK, PokemonType.WATER, -1, [ [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], [ Biome.LAKE, BiomePoolTier.COMMON ], [ Biome.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.MANKEY, Type.FIGHTING, -1, [ + [ Species.MANKEY, PokemonType.FIGHTING, -1, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.PRIMEAPE, Type.FIGHTING, -1, [ + [ Species.PRIMEAPE, PokemonType.FIGHTING, -1, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.GROWLITHE, Type.FIRE, -1, [ + [ Species.GROWLITHE, PokemonType.FIRE, -1, [ [ Biome.GRASS, BiomePoolTier.RARE ], [ Biome.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.ARCANINE, Type.FIRE, -1, [ + [ Species.ARCANINE, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.POLIWAG, Type.WATER, -1, [ + [ Species.POLIWAG, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ], [ Biome.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.POLIWHIRL, Type.WATER, -1, [ + [ Species.POLIWHIRL, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ], [ Biome.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.POLIWRATH, Type.WATER, Type.FIGHTING, [ + [ Species.POLIWRATH, PokemonType.WATER, PokemonType.FIGHTING, [ [ Biome.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.ABRA, Type.PSYCHIC, -1, [ + [ Species.ABRA, PokemonType.PSYCHIC, -1, [ [ Biome.TOWN, BiomePoolTier.RARE ], [ Biome.PLAINS, BiomePoolTier.RARE ], [ Biome.RUINS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KADABRA, Type.PSYCHIC, -1, [ + [ Species.KADABRA, PokemonType.PSYCHIC, -1, [ [ Biome.PLAINS, BiomePoolTier.RARE ], [ Biome.RUINS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.ALAKAZAM, Type.PSYCHIC, -1, [ + [ Species.ALAKAZAM, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.MACHOP, Type.FIGHTING, -1, [ + [ Species.MACHOP, PokemonType.FIGHTING, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.MACHOKE, Type.FIGHTING, -1, [ + [ Species.MACHOKE, PokemonType.FIGHTING, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.MACHAMP, Type.FIGHTING, -1, [ + [ Species.MACHAMP, PokemonType.FIGHTING, -1, [ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] ] ], - [ Species.BELLSPROUT, Type.GRASS, Type.POISON, [ + [ Species.BELLSPROUT, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WEEPINBELL, Type.GRASS, Type.POISON, [ + [ Species.WEEPINBELL, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VICTREEBEL, Type.GRASS, Type.POISON, [ + [ Species.VICTREEBEL, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TENTACOOL, Type.WATER, Type.POISON, [ + [ Species.TENTACOOL, PokemonType.WATER, PokemonType.POISON, [ [ Biome.SEA, BiomePoolTier.COMMON ], [ Biome.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TENTACRUEL, Type.WATER, Type.POISON, [ + [ Species.TENTACRUEL, PokemonType.WATER, PokemonType.POISON, [ [ Biome.SEA, BiomePoolTier.COMMON ], [ Biome.SEA, BiomePoolTier.BOSS ], [ Biome.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GEODUDE, Type.ROCK, Type.GROUND, [ + [ Species.GEODUDE, PokemonType.ROCK, PokemonType.GROUND, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.BADLANDS, BiomePoolTier.COMMON ], [ Biome.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GRAVELER, Type.ROCK, Type.GROUND, [ + [ Species.GRAVELER, PokemonType.ROCK, PokemonType.GROUND, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.BADLANDS, BiomePoolTier.COMMON ], [ Biome.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GOLEM, Type.ROCK, Type.GROUND, [ + [ Species.GOLEM, PokemonType.ROCK, PokemonType.GROUND, [ [ Biome.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.PONYTA, Type.FIRE, -1, [ + [ Species.PONYTA, PokemonType.FIRE, -1, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.RAPIDASH, Type.FIRE, -1, [ + [ Species.RAPIDASH, PokemonType.FIRE, -1, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.VOLCANO, BiomePoolTier.COMMON ], [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.SLOWPOKE, Type.WATER, Type.PSYCHIC, [ + [ Species.SLOWPOKE, PokemonType.WATER, PokemonType.PSYCHIC, [ [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.LAKE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SLOWBRO, Type.WATER, Type.PSYCHIC, [ + [ Species.SLOWBRO, PokemonType.WATER, PokemonType.PSYCHIC, [ [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.LAKE, BiomePoolTier.UNCOMMON ], [ Biome.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.MAGNEMITE, Type.ELECTRIC, Type.STEEL, [ + [ Species.MAGNEMITE, PokemonType.ELECTRIC, PokemonType.STEEL, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], [ Biome.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.MAGNETON, Type.ELECTRIC, Type.STEEL, [ + [ Species.MAGNETON, PokemonType.ELECTRIC, PokemonType.STEEL, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], [ Biome.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.FARFETCHD, Type.NORMAL, Type.FLYING, [ + [ Species.FARFETCHD, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DODUO, Type.NORMAL, Type.FLYING, [ + [ Species.DODUO, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.DODRIO, Type.NORMAL, Type.FLYING, [ + [ Species.DODRIO, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SEEL, Type.WATER, -1, [ + [ Species.SEEL, PokemonType.WATER, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.DEWGONG, Type.WATER, Type.ICE, [ + [ Species.DEWGONG, PokemonType.WATER, PokemonType.ICE, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.GRIMER, Type.POISON, -1, [ + [ Species.GRIMER, PokemonType.POISON, -1, [ [ Biome.SLUM, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], [ Biome.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.MUK, Type.POISON, -1, [ + [ Species.MUK, PokemonType.POISON, -1, [ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], [ Biome.SLUM, BiomePoolTier.COMMON ], [ Biome.SLUM, BiomePoolTier.BOSS ], @@ -2473,84 +2473,84 @@ export function initBiomes() { [ Biome.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.SHELLDER, Type.WATER, -1, [ + [ Species.SHELLDER, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CLOYSTER, Type.WATER, Type.ICE, [ + [ Species.CLOYSTER, PokemonType.WATER, PokemonType.ICE, [ [ Biome.BEACH, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GASTLY, Type.GHOST, Type.POISON, [ + [ Species.GASTLY, PokemonType.GHOST, PokemonType.POISON, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.HAUNTER, Type.GHOST, Type.POISON, [ + [ Species.HAUNTER, PokemonType.GHOST, PokemonType.POISON, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.GENGAR, Type.GHOST, Type.POISON, [ + [ Species.GENGAR, PokemonType.GHOST, PokemonType.POISON, [ [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.ONIX, Type.ROCK, Type.GROUND, [ + [ Species.ONIX, PokemonType.ROCK, PokemonType.GROUND, [ [ Biome.BADLANDS, BiomePoolTier.RARE ], [ Biome.CAVE, BiomePoolTier.RARE ], [ Biome.CAVE, BiomePoolTier.BOSS ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] ] ], - [ Species.DROWZEE, Type.PSYCHIC, -1, [ + [ Species.DROWZEE, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.COMMON ] ] ], - [ Species.HYPNO, Type.PSYCHIC, -1, [ + [ Species.HYPNO, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.COMMON ], [ Biome.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.KRABBY, Type.WATER, -1, [ + [ Species.KRABBY, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.KINGLER, Type.WATER, -1, [ + [ Species.KINGLER, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.COMMON ], [ Biome.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.VOLTORB, Type.ELECTRIC, -1, [ + [ Species.VOLTORB, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.ELECTRODE, Type.ELECTRIC, -1, [ + [ Species.ELECTRODE, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.LABORATORY, BiomePoolTier.COMMON ], [ Biome.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.EXEGGCUTE, Type.GRASS, Type.PSYCHIC, [ + [ Species.EXEGGCUTE, PokemonType.GRASS, PokemonType.PSYCHIC, [ [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.EXEGGUTOR, Type.GRASS, Type.PSYCHIC, [ + [ Species.EXEGGUTOR, PokemonType.GRASS, PokemonType.PSYCHIC, [ [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CUBONE, Type.GROUND, -1, [ + [ Species.CUBONE, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MAROWAK, Type.GROUND, -1, [ + [ Species.MAROWAK, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], @@ -2558,143 +2558,143 @@ export function initBiomes() { [ Biome.GRAVEYARD, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY, TimeOfDay.DUSK ]] ] ], - [ Species.HITMONLEE, Type.FIGHTING, -1, [ + [ Species.HITMONLEE, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.RARE ], [ Biome.DOJO, BiomePoolTier.BOSS ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] ] ], - [ Species.HITMONCHAN, Type.FIGHTING, -1, [ + [ Species.HITMONCHAN, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.RARE ], [ Biome.DOJO, BiomePoolTier.BOSS ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] ] ], - [ Species.LICKITUNG, Type.NORMAL, -1, [ + [ Species.LICKITUNG, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.KOFFING, Type.POISON, -1, [ + [ Species.KOFFING, PokemonType.POISON, -1, [ [ Biome.SLUM, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WEEZING, Type.POISON, -1, [ + [ Species.WEEZING, PokemonType.POISON, -1, [ [ Biome.SLUM, BiomePoolTier.COMMON ], [ Biome.SLUM, BiomePoolTier.BOSS ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.RHYHORN, Type.GROUND, Type.ROCK, [ + [ Species.RHYHORN, PokemonType.GROUND, PokemonType.ROCK, [ [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.BADLANDS, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.RHYDON, Type.GROUND, Type.ROCK, [ + [ Species.RHYDON, PokemonType.GROUND, PokemonType.ROCK, [ [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.BADLANDS, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CHANSEY, Type.NORMAL, -1, [ + [ Species.CHANSEY, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], [ Biome.MEADOW, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.TANGELA, Type.GRASS, -1, [ + [ Species.TANGELA, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KANGASKHAN, Type.NORMAL, -1, [ + [ Species.KANGASKHAN, PokemonType.NORMAL, -1, [ [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HORSEA, Type.WATER, -1, [ + [ Species.HORSEA, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SEADRA, Type.WATER, -1, [ + [ Species.SEADRA, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GOLDEEN, Type.WATER, -1, [ + [ Species.GOLDEEN, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.COMMON ], [ Biome.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SEAKING, Type.WATER, -1, [ + [ Species.SEAKING, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.COMMON ], [ Biome.LAKE, BiomePoolTier.BOSS ], [ Biome.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.STARYU, Type.WATER, -1, [ + [ Species.STARYU, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.STARMIE, Type.WATER, Type.PSYCHIC, [ + [ Species.STARMIE, PokemonType.WATER, PokemonType.PSYCHIC, [ [ Biome.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.BEACH, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.MR_MIME, Type.PSYCHIC, Type.FAIRY, [ + [ Species.MR_MIME, PokemonType.PSYCHIC, PokemonType.FAIRY, [ [ Biome.RUINS, BiomePoolTier.RARE ], [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SCYTHER, Type.BUG, Type.FLYING, [ + [ Species.SCYTHER, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ], [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.JYNX, Type.ICE, Type.PSYCHIC, [ + [ Species.JYNX, PokemonType.ICE, PokemonType.PSYCHIC, [ [ Biome.ICE_CAVE, BiomePoolTier.RARE ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ELECTABUZZ, Type.ELECTRIC, -1, [ + [ Species.ELECTABUZZ, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MAGMAR, Type.FIRE, -1, [ + [ Species.MAGMAR, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PINSIR, Type.BUG, -1, [ + [ Species.PINSIR, PokemonType.BUG, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.RARE ], [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TAUROS, Type.NORMAL, -1, [ + [ Species.TAUROS, PokemonType.NORMAL, -1, [ [ Biome.MEADOW, BiomePoolTier.RARE ], [ Biome.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.MAGIKARP, Type.WATER, -1, [ + [ Species.MAGIKARP, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.COMMON ], [ Biome.LAKE, BiomePoolTier.COMMON ] ] ], - [ Species.GYARADOS, Type.WATER, Type.FLYING, [ + [ Species.GYARADOS, PokemonType.WATER, PokemonType.FLYING, [ [ Biome.SEA, BiomePoolTier.COMMON ], [ Biome.LAKE, BiomePoolTier.COMMON ], [ Biome.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.LAPRAS, Type.WATER, Type.ICE, [ + [ Species.LAPRAS, PokemonType.WATER, PokemonType.ICE, [ [ Biome.SEA, BiomePoolTier.RARE ], [ Biome.ICE_CAVE, BiomePoolTier.RARE ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DITTO, Type.NORMAL, -1, [ + [ Species.DITTO, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.ULTRA_RARE ], [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ], @@ -2702,164 +2702,164 @@ export function initBiomes() { [ Biome.LABORATORY, BiomePoolTier.RARE ] ] ], - [ Species.EEVEE, Type.NORMAL, -1, [ + [ Species.EEVEE, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.SUPER_RARE ], [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ], [ Biome.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.VAPOREON, Type.WATER, -1, [ + [ Species.VAPOREON, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.SUPER_RARE ], [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.JOLTEON, Type.ELECTRIC, -1, [ + [ Species.JOLTEON, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.SUPER_RARE ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FLAREON, Type.FIRE, -1, [ + [ Species.FLAREON, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PORYGON, Type.NORMAL, -1, [ + [ Species.PORYGON, PokemonType.NORMAL, -1, [ [ Biome.FACTORY, BiomePoolTier.RARE ], [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], [ Biome.LABORATORY, BiomePoolTier.RARE ] ] ], - [ Species.OMANYTE, Type.ROCK, Type.WATER, [ + [ Species.OMANYTE, PokemonType.ROCK, PokemonType.WATER, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.OMASTAR, Type.ROCK, Type.WATER, [ + [ Species.OMASTAR, PokemonType.ROCK, PokemonType.WATER, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KABUTO, Type.ROCK, Type.WATER, [ + [ Species.KABUTO, PokemonType.ROCK, PokemonType.WATER, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.KABUTOPS, Type.ROCK, Type.WATER, [ + [ Species.KABUTOPS, PokemonType.ROCK, PokemonType.WATER, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.AERODACTYL, Type.ROCK, Type.FLYING, [ + [ Species.AERODACTYL, PokemonType.ROCK, PokemonType.FLYING, [ [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SNORLAX, Type.NORMAL, -1, [ + [ Species.SNORLAX, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ARTICUNO, Type.ICE, Type.FLYING, [ + [ Species.ARTICUNO, PokemonType.ICE, PokemonType.FLYING, [ [ Biome.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ZAPDOS, Type.ELECTRIC, Type.FLYING, [ + [ Species.ZAPDOS, PokemonType.ELECTRIC, PokemonType.FLYING, [ [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MOLTRES, Type.FIRE, Type.FLYING, [ + [ Species.MOLTRES, PokemonType.FIRE, PokemonType.FLYING, [ [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.DRATINI, Type.DRAGON, -1, [ + [ Species.DRATINI, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.RARE ] ] ], - [ Species.DRAGONAIR, Type.DRAGON, -1, [ + [ Species.DRAGONAIR, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.RARE ] ] ], - [ Species.DRAGONITE, Type.DRAGON, Type.FLYING, [ + [ Species.DRAGONITE, PokemonType.DRAGON, PokemonType.FLYING, [ [ Biome.WASTELAND, BiomePoolTier.RARE ], [ Biome.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.MEWTWO, Type.PSYCHIC, -1, [ + [ Species.MEWTWO, PokemonType.PSYCHIC, -1, [ [ Biome.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.MEW, Type.PSYCHIC, -1, [ ] + [ Species.MEW, PokemonType.PSYCHIC, -1, [ ] ], - [ Species.CHIKORITA, Type.GRASS, -1, [ + [ Species.CHIKORITA, PokemonType.GRASS, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.RARE ] ] ], - [ Species.BAYLEEF, Type.GRASS, -1, [ + [ Species.BAYLEEF, PokemonType.GRASS, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.RARE ] ] ], - [ Species.MEGANIUM, Type.GRASS, -1, [ + [ Species.MEGANIUM, PokemonType.GRASS, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.RARE ], [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CYNDAQUIL, Type.FIRE, -1, [ + [ Species.CYNDAQUIL, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.QUILAVA, Type.FIRE, -1, [ + [ Species.QUILAVA, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.TYPHLOSION, Type.FIRE, -1, [ + [ Species.TYPHLOSION, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TOTODILE, Type.WATER, -1, [ + [ Species.TOTODILE, PokemonType.WATER, -1, [ [ Biome.SWAMP, BiomePoolTier.RARE ] ] ], - [ Species.CROCONAW, Type.WATER, -1, [ + [ Species.CROCONAW, PokemonType.WATER, -1, [ [ Biome.SWAMP, BiomePoolTier.RARE ] ] ], - [ Species.FERALIGATR, Type.WATER, -1, [ + [ Species.FERALIGATR, PokemonType.WATER, -1, [ [ Biome.SWAMP, BiomePoolTier.RARE ], [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SENTRET, Type.NORMAL, -1, [ + [ Species.SENTRET, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FURRET, Type.NORMAL, -1, [ + [ Species.FURRET, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HOOTHOOT, Type.NORMAL, Type.FLYING, [ + [ Species.HOOTHOOT, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ] ] ], - [ Species.NOCTOWL, Type.NORMAL, Type.FLYING, [ + [ Species.NOCTOWL, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.LEDYBA, Type.BUG, Type.FLYING, [ + [ Species.LEDYBA, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAWN ], [ Biome.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ] ] ], - [ Species.LEDIAN, Type.BUG, Type.FLYING, [ + [ Species.LEDIAN, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ], [ Biome.MEADOW, BiomePoolTier.BOSS, TimeOfDay.DAWN ] ] ], - [ Species.SPINARAK, Type.BUG, Type.POISON, [ + [ Species.SPINARAK, PokemonType.BUG, PokemonType.POISON, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], @@ -2869,7 +2869,7 @@ export function initBiomes() { [ Biome.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.ARIADOS, Type.BUG, Type.POISON, [ + [ Species.ARIADOS, PokemonType.BUG, PokemonType.POISON, [ [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], @@ -2878,227 +2878,227 @@ export function initBiomes() { [ Biome.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.CROBAT, Type.POISON, Type.FLYING, [ + [ Species.CROBAT, PokemonType.POISON, PokemonType.FLYING, [ [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.CHINCHOU, Type.WATER, Type.ELECTRIC, [ + [ Species.CHINCHOU, PokemonType.WATER, PokemonType.ELECTRIC, [ [ Biome.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.LANTURN, Type.WATER, Type.ELECTRIC, [ + [ Species.LANTURN, PokemonType.WATER, PokemonType.ELECTRIC, [ [ Biome.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.SEABED, BiomePoolTier.COMMON ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.PICHU, Type.ELECTRIC, -1, [ ] + [ Species.PICHU, PokemonType.ELECTRIC, -1, [ ] ], - [ Species.CLEFFA, Type.FAIRY, -1, [ ] + [ Species.CLEFFA, PokemonType.FAIRY, -1, [ ] ], - [ Species.IGGLYBUFF, Type.NORMAL, Type.FAIRY, [ ] + [ Species.IGGLYBUFF, PokemonType.NORMAL, PokemonType.FAIRY, [ ] ], - [ Species.TOGEPI, Type.FAIRY, -1, [ ] + [ Species.TOGEPI, PokemonType.FAIRY, -1, [ ] ], - [ Species.TOGETIC, Type.FAIRY, Type.FLYING, [ + [ Species.TOGETIC, PokemonType.FAIRY, PokemonType.FLYING, [ [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.NATU, Type.PSYCHIC, Type.FLYING, [ + [ Species.NATU, PokemonType.PSYCHIC, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.RUINS, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.XATU, Type.PSYCHIC, Type.FLYING, [ + [ Species.XATU, PokemonType.PSYCHIC, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.RUINS, BiomePoolTier.COMMON ], [ Biome.RUINS, BiomePoolTier.BOSS ], [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.MAREEP, Type.ELECTRIC, -1, [ + [ Species.MAREEP, PokemonType.ELECTRIC, -1, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.POWER_PLANT, BiomePoolTier.RARE ] ] ], - [ Species.FLAAFFY, Type.ELECTRIC, -1, [ + [ Species.FLAAFFY, PokemonType.ELECTRIC, -1, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.POWER_PLANT, BiomePoolTier.RARE ] ] ], - [ Species.AMPHAROS, Type.ELECTRIC, -1, [ + [ Species.AMPHAROS, PokemonType.ELECTRIC, -1, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.BELLOSSOM, Type.GRASS, -1, [ + [ Species.BELLOSSOM, PokemonType.GRASS, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.MARILL, Type.WATER, Type.FAIRY, [ + [ Species.MARILL, PokemonType.WATER, PokemonType.FAIRY, [ [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.AZUMARILL, Type.WATER, Type.FAIRY, [ + [ Species.AZUMARILL, PokemonType.WATER, PokemonType.FAIRY, [ [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.SUDOWOODO, Type.ROCK, -1, [ + [ Species.SUDOWOODO, PokemonType.ROCK, -1, [ [ Biome.GRASS, BiomePoolTier.SUPER_RARE ], [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.POLITOED, Type.WATER, -1, [ + [ Species.POLITOED, PokemonType.WATER, -1, [ [ Biome.SWAMP, BiomePoolTier.SUPER_RARE ], [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HOPPIP, Type.GRASS, Type.FLYING, [ + [ Species.HOPPIP, PokemonType.GRASS, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SKIPLOOM, Type.GRASS, Type.FLYING, [ + [ Species.SKIPLOOM, PokemonType.GRASS, PokemonType.FLYING, [ [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.JUMPLUFF, Type.GRASS, Type.FLYING, [ + [ Species.JUMPLUFF, PokemonType.GRASS, PokemonType.FLYING, [ [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.AIPOM, Type.NORMAL, -1, [ + [ Species.AIPOM, PokemonType.NORMAL, -1, [ [ Biome.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.SUNKERN, Type.GRASS, -1, [ + [ Species.SUNKERN, PokemonType.GRASS, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SUNFLORA, Type.GRASS, -1, [ + [ Species.SUNFLORA, PokemonType.GRASS, -1, [ [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.YANMA, Type.BUG, Type.FLYING, [ + [ Species.YANMA, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.WOOPER, Type.WATER, Type.GROUND, [ + [ Species.WOOPER, PokemonType.WATER, PokemonType.GROUND, [ [ Biome.LAKE, BiomePoolTier.UNCOMMON ], [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.QUAGSIRE, Type.WATER, Type.GROUND, [ + [ Species.QUAGSIRE, PokemonType.WATER, PokemonType.GROUND, [ [ Biome.LAKE, BiomePoolTier.UNCOMMON ], [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ESPEON, Type.PSYCHIC, -1, [ + [ Species.ESPEON, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.SUPER_RARE, TimeOfDay.DAY ], [ Biome.RUINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ] ] ], - [ Species.UMBREON, Type.DARK, -1, [ + [ Species.UMBREON, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.SUPER_RARE ], [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.MURKROW, Type.DARK, Type.FLYING, [ + [ Species.MURKROW, PokemonType.DARK, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.RARE, TimeOfDay.NIGHT ], [ Biome.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.SLOWKING, Type.WATER, Type.PSYCHIC, [ + [ Species.SLOWKING, PokemonType.WATER, PokemonType.PSYCHIC, [ [ Biome.LAKE, BiomePoolTier.SUPER_RARE ], [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.MISDREAVUS, Type.GHOST, -1, [ + [ Species.MISDREAVUS, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.RARE ] ] ], - [ Species.UNOWN, Type.PSYCHIC, -1, [ + [ Species.UNOWN, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.COMMON ] ] ], - [ Species.WOBBUFFET, Type.PSYCHIC, -1, [ + [ Species.WOBBUFFET, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.RARE ], [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GIRAFARIG, Type.NORMAL, Type.PSYCHIC, [ + [ Species.GIRAFARIG, PokemonType.NORMAL, PokemonType.PSYCHIC, [ [ Biome.TALL_GRASS, BiomePoolTier.RARE ] ] ], - [ Species.PINECO, Type.BUG, -1, [ + [ Species.PINECO, PokemonType.BUG, -1, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FORRETRESS, Type.BUG, Type.STEEL, [ + [ Species.FORRETRESS, PokemonType.BUG, PokemonType.STEEL, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DUNSPARCE, Type.NORMAL, -1, [ + [ Species.DUNSPARCE, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.GLIGAR, Type.GROUND, Type.FLYING, [ + [ Species.GLIGAR, PokemonType.GROUND, PokemonType.FLYING, [ [ Biome.BADLANDS, BiomePoolTier.RARE ] ] ], - [ Species.STEELIX, Type.STEEL, Type.GROUND, [ + [ Species.STEELIX, PokemonType.STEEL, PokemonType.GROUND, [ [ Biome.BADLANDS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SNUBBULL, Type.FAIRY, -1, [ + [ Species.SNUBBULL, PokemonType.FAIRY, -1, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GRANBULL, Type.FAIRY, -1, [ + [ Species.GRANBULL, PokemonType.FAIRY, -1, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.QWILFISH, Type.WATER, Type.POISON, [ + [ Species.QWILFISH, PokemonType.WATER, PokemonType.POISON, [ [ Biome.SEABED, BiomePoolTier.RARE ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.SCIZOR, Type.BUG, Type.STEEL, [ + [ Species.SCIZOR, PokemonType.BUG, PokemonType.STEEL, [ [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SHUCKLE, Type.BUG, Type.ROCK, [ + [ Species.SHUCKLE, PokemonType.BUG, PokemonType.ROCK, [ [ Biome.CAVE, BiomePoolTier.SUPER_RARE ], [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HERACROSS, Type.BUG, Type.FIGHTING, [ + [ Species.HERACROSS, PokemonType.BUG, PokemonType.FIGHTING, [ [ Biome.FOREST, BiomePoolTier.RARE ], [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SNEASEL, Type.DARK, Type.ICE, [ + [ Species.SNEASEL, PokemonType.DARK, PokemonType.ICE, [ [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TEDDIURSA, Type.NORMAL, -1, [ + [ Species.TEDDIURSA, PokemonType.NORMAL, -1, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON ], [ Biome.CAVE, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.URSARING, Type.NORMAL, -1, [ + [ Species.URSARING, PokemonType.NORMAL, -1, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON ], [ Biome.CAVE, BiomePoolTier.COMMON ], [ Biome.CAVE, BiomePoolTier.BOSS ], @@ -3106,926 +3106,926 @@ export function initBiomes() { [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SLUGMA, Type.FIRE, -1, [ + [ Species.SLUGMA, PokemonType.FIRE, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.MAGCARGO, Type.FIRE, Type.ROCK, [ + [ Species.MAGCARGO, PokemonType.FIRE, PokemonType.ROCK, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.VOLCANO, BiomePoolTier.COMMON ], [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.SWINUB, Type.ICE, Type.GROUND, [ + [ Species.SWINUB, PokemonType.ICE, PokemonType.GROUND, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.PILOSWINE, Type.ICE, Type.GROUND, [ + [ Species.PILOSWINE, PokemonType.ICE, PokemonType.GROUND, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.CORSOLA, Type.WATER, Type.ROCK, [ + [ Species.CORSOLA, PokemonType.WATER, PokemonType.ROCK, [ [ Biome.SEABED, BiomePoolTier.RARE ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.REMORAID, Type.WATER, -1, [ + [ Species.REMORAID, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.OCTILLERY, Type.WATER, -1, [ + [ Species.OCTILLERY, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.RARE ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.DELIBIRD, Type.ICE, Type.FLYING, [ + [ Species.DELIBIRD, PokemonType.ICE, PokemonType.FLYING, [ [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] ] ], - [ Species.MANTINE, Type.WATER, Type.FLYING, [ + [ Species.MANTINE, PokemonType.WATER, PokemonType.FLYING, [ [ Biome.SEABED, BiomePoolTier.RARE ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.SKARMORY, Type.STEEL, Type.FLYING, [ + [ Species.SKARMORY, PokemonType.STEEL, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.RARE ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.HOUNDOUR, Type.DARK, Type.FIRE, [ + [ Species.HOUNDOUR, PokemonType.DARK, PokemonType.FIRE, [ [ Biome.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.HOUNDOOM, Type.DARK, Type.FIRE, [ + [ Species.HOUNDOOM, PokemonType.DARK, PokemonType.FIRE, [ [ Biome.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.ABYSS, BiomePoolTier.COMMON ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.KINGDRA, Type.WATER, Type.DRAGON, [ + [ Species.KINGDRA, PokemonType.WATER, PokemonType.DRAGON, [ [ Biome.SEA, BiomePoolTier.SUPER_RARE ], [ Biome.SEA, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PHANPY, Type.GROUND, -1, [ + [ Species.PHANPY, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.DONPHAN, Type.GROUND, -1, [ + [ Species.DONPHAN, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PORYGON2, Type.NORMAL, -1, [ + [ Species.PORYGON2, PokemonType.NORMAL, -1, [ [ Biome.FACTORY, BiomePoolTier.RARE ], [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], [ Biome.LABORATORY, BiomePoolTier.RARE ] ] ], - [ Species.STANTLER, Type.NORMAL, -1, [ + [ Species.STANTLER, PokemonType.NORMAL, -1, [ [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SMEARGLE, Type.NORMAL, -1, [ + [ Species.SMEARGLE, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.TYROGUE, Type.FIGHTING, -1, [ ] + [ Species.TYROGUE, PokemonType.FIGHTING, -1, [ ] ], - [ Species.HITMONTOP, Type.FIGHTING, -1, [ + [ Species.HITMONTOP, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.SUPER_RARE ], [ Biome.DOJO, BiomePoolTier.BOSS_RARE ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.SMOOCHUM, Type.ICE, Type.PSYCHIC, [ ] + [ Species.SMOOCHUM, PokemonType.ICE, PokemonType.PSYCHIC, [ ] ], - [ Species.ELEKID, Type.ELECTRIC, -1, [ ] + [ Species.ELEKID, PokemonType.ELECTRIC, -1, [ ] ], - [ Species.MAGBY, Type.FIRE, -1, [ ] + [ Species.MAGBY, PokemonType.FIRE, -1, [ ] ], - [ Species.MILTANK, Type.NORMAL, -1, [ + [ Species.MILTANK, PokemonType.NORMAL, -1, [ [ Biome.MEADOW, BiomePoolTier.RARE ], [ Biome.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.BLISSEY, Type.NORMAL, -1, [ + [ Species.BLISSEY, PokemonType.NORMAL, -1, [ [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.RAIKOU, Type.ELECTRIC, -1, [ + [ Species.RAIKOU, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ENTEI, Type.FIRE, -1, [ + [ Species.ENTEI, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.SUICUNE, Type.WATER, -1, [ + [ Species.SUICUNE, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.ULTRA_RARE ], [ Biome.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.LARVITAR, Type.ROCK, Type.GROUND, [ + [ Species.LARVITAR, PokemonType.ROCK, PokemonType.GROUND, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PUPITAR, Type.ROCK, Type.GROUND, [ + [ Species.PUPITAR, PokemonType.ROCK, PokemonType.GROUND, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.TYRANITAR, Type.ROCK, Type.DARK, [ + [ Species.TYRANITAR, PokemonType.ROCK, PokemonType.DARK, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.LUGIA, Type.PSYCHIC, Type.FLYING, [ + [ Species.LUGIA, PokemonType.PSYCHIC, PokemonType.FLYING, [ [ Biome.SEA, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.HO_OH, Type.FIRE, Type.FLYING, [ + [ Species.HO_OH, PokemonType.FIRE, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.CELEBI, Type.PSYCHIC, Type.GRASS, [ ] + [ Species.CELEBI, PokemonType.PSYCHIC, PokemonType.GRASS, [ ] ], - [ Species.TREECKO, Type.GRASS, -1, [ + [ Species.TREECKO, PokemonType.GRASS, -1, [ [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.GROVYLE, Type.GRASS, -1, [ + [ Species.GROVYLE, PokemonType.GRASS, -1, [ [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.SCEPTILE, Type.GRASS, -1, [ + [ Species.SCEPTILE, PokemonType.GRASS, -1, [ [ Biome.FOREST, BiomePoolTier.RARE ], [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TORCHIC, Type.FIRE, -1, [ + [ Species.TORCHIC, PokemonType.FIRE, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.RARE ] ] ], - [ Species.COMBUSKEN, Type.FIRE, Type.FIGHTING, [ + [ Species.COMBUSKEN, PokemonType.FIRE, PokemonType.FIGHTING, [ [ Biome.MOUNTAIN, BiomePoolTier.RARE ] ] ], - [ Species.BLAZIKEN, Type.FIRE, Type.FIGHTING, [ + [ Species.BLAZIKEN, PokemonType.FIRE, PokemonType.FIGHTING, [ [ Biome.MOUNTAIN, BiomePoolTier.RARE ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.MUDKIP, Type.WATER, -1, [ + [ Species.MUDKIP, PokemonType.WATER, -1, [ [ Biome.SWAMP, BiomePoolTier.RARE ] ] ], - [ Species.MARSHTOMP, Type.WATER, Type.GROUND, [ + [ Species.MARSHTOMP, PokemonType.WATER, PokemonType.GROUND, [ [ Biome.SWAMP, BiomePoolTier.RARE ] ] ], - [ Species.SWAMPERT, Type.WATER, Type.GROUND, [ + [ Species.SWAMPERT, PokemonType.WATER, PokemonType.GROUND, [ [ Biome.SWAMP, BiomePoolTier.RARE ], [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.POOCHYENA, Type.DARK, -1, [ + [ Species.POOCHYENA, PokemonType.DARK, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MIGHTYENA, Type.DARK, -1, [ + [ Species.MIGHTYENA, PokemonType.DARK, -1, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ZIGZAGOON, Type.NORMAL, -1, [ + [ Species.ZIGZAGOON, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.PLAINS, BiomePoolTier.COMMON ], [ Biome.METROPOLIS, BiomePoolTier.COMMON ] ] ], - [ Species.LINOONE, Type.NORMAL, -1, [ + [ Species.LINOONE, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.COMMON ], [ Biome.PLAINS, BiomePoolTier.BOSS ], [ Biome.METROPOLIS, BiomePoolTier.COMMON ] ] ], - [ Species.WURMPLE, Type.BUG, -1, [ + [ Species.WURMPLE, PokemonType.BUG, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON ] ] ], - [ Species.SILCOON, Type.BUG, -1, [ + [ Species.SILCOON, PokemonType.BUG, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAY ] ] ], - [ Species.BEAUTIFLY, Type.BUG, Type.FLYING, [ + [ Species.BEAUTIFLY, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.DAY ], [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.DAY ] ] ], - [ Species.CASCOON, Type.BUG, -1, [ + [ Species.CASCOON, PokemonType.BUG, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.DUSTOX, Type.BUG, Type.POISON, [ + [ Species.DUSTOX, PokemonType.BUG, PokemonType.POISON, [ [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.LOTAD, Type.WATER, Type.GRASS, [ + [ Species.LOTAD, PokemonType.WATER, PokemonType.GRASS, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LOMBRE, Type.WATER, Type.GRASS, [ + [ Species.LOMBRE, PokemonType.WATER, PokemonType.GRASS, [ [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LUDICOLO, Type.WATER, Type.GRASS, [ + [ Species.LUDICOLO, PokemonType.WATER, PokemonType.GRASS, [ [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SEEDOT, Type.GRASS, -1, [ + [ Species.SEEDOT, PokemonType.GRASS, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.NUZLEAF, Type.GRASS, Type.DARK, [ + [ Species.NUZLEAF, PokemonType.GRASS, PokemonType.DARK, [ [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SHIFTRY, Type.GRASS, Type.DARK, [ + [ Species.SHIFTRY, PokemonType.GRASS, PokemonType.DARK, [ [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.TAILLOW, Type.NORMAL, Type.FLYING, [ + [ Species.TAILLOW, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SWELLOW, Type.NORMAL, Type.FLYING, [ + [ Species.SWELLOW, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WINGULL, Type.WATER, Type.FLYING, [ + [ Species.WINGULL, PokemonType.WATER, PokemonType.FLYING, [ [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PELIPPER, Type.WATER, Type.FLYING, [ + [ Species.PELIPPER, PokemonType.WATER, PokemonType.FLYING, [ [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.RALTS, Type.PSYCHIC, Type.FAIRY, [ + [ Species.RALTS, PokemonType.PSYCHIC, PokemonType.FAIRY, [ [ Biome.TOWN, BiomePoolTier.SUPER_RARE ], [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KIRLIA, Type.PSYCHIC, Type.FAIRY, [ + [ Species.KIRLIA, PokemonType.PSYCHIC, PokemonType.FAIRY, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GARDEVOIR, Type.PSYCHIC, Type.FAIRY, [ + [ Species.GARDEVOIR, PokemonType.PSYCHIC, PokemonType.FAIRY, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.MEADOW, BiomePoolTier.BOSS ], [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SURSKIT, Type.BUG, Type.WATER, [ + [ Species.SURSKIT, PokemonType.BUG, PokemonType.WATER, [ [ Biome.TOWN, BiomePoolTier.RARE ], [ Biome.LAKE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MASQUERAIN, Type.BUG, Type.FLYING, [ + [ Species.MASQUERAIN, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.LAKE, BiomePoolTier.UNCOMMON ], [ Biome.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.SHROOMISH, Type.GRASS, -1, [ + [ Species.SHROOMISH, PokemonType.GRASS, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BRELOOM, Type.GRASS, Type.FIGHTING, [ + [ Species.BRELOOM, PokemonType.GRASS, PokemonType.FIGHTING, [ [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SLAKOTH, Type.NORMAL, -1, [ + [ Species.SLAKOTH, PokemonType.NORMAL, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.VIGOROTH, Type.NORMAL, -1, [ + [ Species.VIGOROTH, PokemonType.NORMAL, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.SLAKING, Type.NORMAL, -1, [ + [ Species.SLAKING, PokemonType.NORMAL, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.NINCADA, Type.BUG, Type.GROUND, [ + [ Species.NINCADA, PokemonType.BUG, PokemonType.GROUND, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON ], [ Biome.TALL_GRASS, BiomePoolTier.COMMON ] ] ], - [ Species.NINJASK, Type.BUG, Type.FLYING, [ + [ Species.NINJASK, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] ] ], - [ Species.SHEDINJA, Type.BUG, Type.GHOST, [ + [ Species.SHEDINJA, PokemonType.BUG, PokemonType.GHOST, [ [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.WHISMUR, Type.NORMAL, -1, [ + [ Species.WHISMUR, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON ], [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.LOUDRED, Type.NORMAL, -1, [ + [ Species.LOUDRED, PokemonType.NORMAL, -1, [ [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.EXPLOUD, Type.NORMAL, -1, [ + [ Species.EXPLOUD, PokemonType.NORMAL, -1, [ [ Biome.CAVE, BiomePoolTier.COMMON ], [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.MAKUHITA, Type.FIGHTING, -1, [ + [ Species.MAKUHITA, PokemonType.FIGHTING, -1, [ [ Biome.CAVE, BiomePoolTier.UNCOMMON ], [ Biome.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.HARIYAMA, Type.FIGHTING, -1, [ + [ Species.HARIYAMA, PokemonType.FIGHTING, -1, [ [ Biome.CAVE, BiomePoolTier.UNCOMMON ], [ Biome.DOJO, BiomePoolTier.COMMON ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.AZURILL, Type.NORMAL, Type.FAIRY, [ ] + [ Species.AZURILL, PokemonType.NORMAL, PokemonType.FAIRY, [ ] ], - [ Species.NOSEPASS, Type.ROCK, -1, [ + [ Species.NOSEPASS, PokemonType.ROCK, -1, [ [ Biome.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SKITTY, Type.NORMAL, -1, [ + [ Species.SKITTY, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.DELCATTY, Type.NORMAL, -1, [ + [ Species.DELCATTY, PokemonType.NORMAL, -1, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SABLEYE, Type.DARK, Type.GHOST, [ + [ Species.SABLEYE, PokemonType.DARK, PokemonType.GHOST, [ [ Biome.ABYSS, BiomePoolTier.COMMON ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.MAWILE, Type.STEEL, Type.FAIRY, [ + [ Species.MAWILE, PokemonType.STEEL, PokemonType.FAIRY, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ARON, Type.STEEL, Type.ROCK, [ + [ Species.ARON, PokemonType.STEEL, PokemonType.ROCK, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.LAIRON, Type.STEEL, Type.ROCK, [ + [ Species.LAIRON, PokemonType.STEEL, PokemonType.ROCK, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.AGGRON, Type.STEEL, Type.ROCK, [ + [ Species.AGGRON, PokemonType.STEEL, PokemonType.ROCK, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.MEDITITE, Type.FIGHTING, Type.PSYCHIC, [ + [ Species.MEDITITE, PokemonType.FIGHTING, PokemonType.PSYCHIC, [ [ Biome.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.MEDICHAM, Type.FIGHTING, Type.PSYCHIC, [ + [ Species.MEDICHAM, PokemonType.FIGHTING, PokemonType.PSYCHIC, [ [ Biome.DOJO, BiomePoolTier.COMMON ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.ELECTRIKE, Type.ELECTRIC, -1, [ + [ Species.ELECTRIKE, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.MANECTRIC, Type.ELECTRIC, -1, [ + [ Species.MANECTRIC, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.PLUSLE, Type.ELECTRIC, -1, [ + [ Species.PLUSLE, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MINUN, Type.ELECTRIC, -1, [ + [ Species.MINUN, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.VOLBEAT, Type.BUG, -1, [ + [ Species.VOLBEAT, PokemonType.BUG, -1, [ [ Biome.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] ] ], - [ Species.ILLUMISE, Type.BUG, -1, [ + [ Species.ILLUMISE, PokemonType.BUG, -1, [ [ Biome.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] ] ], - [ Species.ROSELIA, Type.GRASS, Type.POISON, [ + [ Species.ROSELIA, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GULPIN, Type.POISON, -1, [ + [ Species.GULPIN, PokemonType.POISON, -1, [ [ Biome.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.SWALOT, Type.POISON, -1, [ + [ Species.SWALOT, PokemonType.POISON, -1, [ [ Biome.SWAMP, BiomePoolTier.COMMON ], [ Biome.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.CARVANHA, Type.WATER, Type.DARK, [ + [ Species.CARVANHA, PokemonType.WATER, PokemonType.DARK, [ [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SHARPEDO, Type.WATER, Type.DARK, [ + [ Species.SHARPEDO, PokemonType.WATER, PokemonType.DARK, [ [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.WAILMER, Type.WATER, -1, [ + [ Species.WAILMER, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ], [ Biome.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WAILORD, Type.WATER, -1, [ + [ Species.WAILORD, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ], [ Biome.SEABED, BiomePoolTier.UNCOMMON ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.NUMEL, Type.FIRE, Type.GROUND, [ + [ Species.NUMEL, PokemonType.FIRE, PokemonType.GROUND, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], [ Biome.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.CAMERUPT, Type.FIRE, Type.GROUND, [ + [ Species.CAMERUPT, PokemonType.FIRE, PokemonType.GROUND, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], [ Biome.VOLCANO, BiomePoolTier.COMMON ], [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.TORKOAL, Type.FIRE, -1, [ + [ Species.TORKOAL, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.SPOINK, Type.PSYCHIC, -1, [ + [ Species.SPOINK, PokemonType.PSYCHIC, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.RARE ], [ Biome.RUINS, BiomePoolTier.COMMON ] ] ], - [ Species.GRUMPIG, Type.PSYCHIC, -1, [ + [ Species.GRUMPIG, PokemonType.PSYCHIC, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.RARE ], [ Biome.RUINS, BiomePoolTier.COMMON ], [ Biome.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.SPINDA, Type.NORMAL, -1, [ + [ Species.SPINDA, PokemonType.NORMAL, -1, [ [ Biome.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.TRAPINCH, Type.GROUND, -1, [ + [ Species.TRAPINCH, PokemonType.GROUND, -1, [ [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VIBRAVA, Type.GROUND, Type.DRAGON, [ + [ Species.VIBRAVA, PokemonType.GROUND, PokemonType.DRAGON, [ [ Biome.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.FLYGON, Type.GROUND, Type.DRAGON, [ + [ Species.FLYGON, PokemonType.GROUND, PokemonType.DRAGON, [ [ Biome.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.WASTELAND, BiomePoolTier.COMMON ], [ Biome.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.CACNEA, Type.GRASS, -1, [ + [ Species.CACNEA, PokemonType.GRASS, -1, [ [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.CACTURNE, Type.GRASS, Type.DARK, [ + [ Species.CACTURNE, PokemonType.GRASS, PokemonType.DARK, [ [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SWABLU, Type.NORMAL, Type.FLYING, [ + [ Species.SWABLU, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] ] ], - [ Species.ALTARIA, Type.DRAGON, Type.FLYING, [ + [ Species.ALTARIA, PokemonType.DRAGON, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] ] ], - [ Species.ZANGOOSE, Type.NORMAL, -1, [ + [ Species.ZANGOOSE, PokemonType.NORMAL, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.RARE ], [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] ] ], - [ Species.SEVIPER, Type.POISON, -1, [ + [ Species.SEVIPER, PokemonType.POISON, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.LUNATONE, Type.ROCK, Type.PSYCHIC, [ + [ Species.LUNATONE, PokemonType.ROCK, PokemonType.PSYCHIC, [ [ Biome.SPACE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.SPACE, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.SOLROCK, Type.ROCK, Type.PSYCHIC, [ + [ Species.SOLROCK, PokemonType.ROCK, PokemonType.PSYCHIC, [ [ Biome.SPACE, BiomePoolTier.COMMON, TimeOfDay.DAY ], [ Biome.SPACE, BiomePoolTier.BOSS, TimeOfDay.DAY ] ] ], - [ Species.BARBOACH, Type.WATER, Type.GROUND, [ + [ Species.BARBOACH, PokemonType.WATER, PokemonType.GROUND, [ [ Biome.SWAMP, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WHISCASH, Type.WATER, Type.GROUND, [ + [ Species.WHISCASH, PokemonType.WATER, PokemonType.GROUND, [ [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], [ Biome.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.CORPHISH, Type.WATER, -1, [ + [ Species.CORPHISH, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.CRAWDAUNT, Type.WATER, Type.DARK, [ + [ Species.CRAWDAUNT, PokemonType.WATER, PokemonType.DARK, [ [ Biome.BEACH, BiomePoolTier.COMMON ], [ Biome.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.BALTOY, Type.GROUND, Type.PSYCHIC, [ + [ Species.BALTOY, PokemonType.GROUND, PokemonType.PSYCHIC, [ [ Biome.RUINS, BiomePoolTier.COMMON ], [ Biome.SPACE, BiomePoolTier.UNCOMMON ], [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CLAYDOL, Type.GROUND, Type.PSYCHIC, [ + [ Species.CLAYDOL, PokemonType.GROUND, PokemonType.PSYCHIC, [ [ Biome.RUINS, BiomePoolTier.COMMON ], [ Biome.RUINS, BiomePoolTier.BOSS ], [ Biome.SPACE, BiomePoolTier.UNCOMMON ], [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.LILEEP, Type.ROCK, Type.GRASS, [ + [ Species.LILEEP, PokemonType.ROCK, PokemonType.GRASS, [ [ Biome.DESERT, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.CRADILY, Type.ROCK, Type.GRASS, [ + [ Species.CRADILY, PokemonType.ROCK, PokemonType.GRASS, [ [ Biome.DESERT, BiomePoolTier.SUPER_RARE ], [ Biome.DESERT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ANORITH, Type.ROCK, Type.BUG, [ + [ Species.ANORITH, PokemonType.ROCK, PokemonType.BUG, [ [ Biome.DESERT, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.ARMALDO, Type.ROCK, Type.BUG, [ + [ Species.ARMALDO, PokemonType.ROCK, PokemonType.BUG, [ [ Biome.DESERT, BiomePoolTier.SUPER_RARE ], [ Biome.DESERT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FEEBAS, Type.WATER, -1, [ + [ Species.FEEBAS, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.MILOTIC, Type.WATER, -1, [ + [ Species.MILOTIC, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CASTFORM, Type.NORMAL, -1, [ + [ Species.CASTFORM, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.ULTRA_RARE ], [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KECLEON, Type.NORMAL, -1, [ + [ Species.KECLEON, PokemonType.NORMAL, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.RARE ], [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] ] ], - [ Species.SHUPPET, Type.GHOST, -1, [ + [ Species.SHUPPET, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.BANETTE, Type.GHOST, -1, [ + [ Species.BANETTE, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.DUSKULL, Type.GHOST, -1, [ + [ Species.DUSKULL, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.DUSCLOPS, Type.GHOST, -1, [ + [ Species.DUSCLOPS, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.TROPIUS, Type.GRASS, Type.FLYING, [ + [ Species.TROPIUS, PokemonType.GRASS, PokemonType.FLYING, [ [ Biome.TALL_GRASS, BiomePoolTier.RARE ], [ Biome.FOREST, BiomePoolTier.RARE ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CHIMECHO, Type.PSYCHIC, -1, [ + [ Species.CHIMECHO, PokemonType.PSYCHIC, -1, [ [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], [ Biome.TEMPLE, BiomePoolTier.BOSS ] ] ], - [ Species.ABSOL, Type.DARK, -1, [ + [ Species.ABSOL, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.RARE ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.WYNAUT, Type.PSYCHIC, -1, [ ] + [ Species.WYNAUT, PokemonType.PSYCHIC, -1, [ ] ], - [ Species.SNORUNT, Type.ICE, -1, [ + [ Species.SNORUNT, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GLALIE, Type.ICE, -1, [ + [ Species.GLALIE, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SPHEAL, Type.ICE, Type.WATER, [ + [ Species.SPHEAL, PokemonType.ICE, PokemonType.WATER, [ [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SEALEO, Type.ICE, Type.WATER, [ + [ Species.SEALEO, PokemonType.ICE, PokemonType.WATER, [ [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WALREIN, Type.ICE, Type.WATER, [ + [ Species.WALREIN, PokemonType.ICE, PokemonType.WATER, [ [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.CLAMPERL, Type.WATER, -1, [ + [ Species.CLAMPERL, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.HUNTAIL, Type.WATER, -1, [ + [ Species.HUNTAIL, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.GOREBYSS, Type.WATER, -1, [ + [ Species.GOREBYSS, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.RELICANTH, Type.WATER, Type.ROCK, [ + [ Species.RELICANTH, PokemonType.WATER, PokemonType.ROCK, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.LUVDISC, Type.WATER, -1, [ + [ Species.LUVDISC, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.UNCOMMON ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.BAGON, Type.DRAGON, -1, [ + [ Species.BAGON, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SHELGON, Type.DRAGON, -1, [ + [ Species.SHELGON, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SALAMENCE, Type.DRAGON, Type.FLYING, [ + [ Species.SALAMENCE, PokemonType.DRAGON, PokemonType.FLYING, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BELDUM, Type.STEEL, Type.PSYCHIC, [ + [ Species.BELDUM, PokemonType.STEEL, PokemonType.PSYCHIC, [ [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], [ Biome.SPACE, BiomePoolTier.RARE ] ] ], - [ Species.METANG, Type.STEEL, Type.PSYCHIC, [ + [ Species.METANG, PokemonType.STEEL, PokemonType.PSYCHIC, [ [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], [ Biome.SPACE, BiomePoolTier.RARE ] ] ], - [ Species.METAGROSS, Type.STEEL, Type.PSYCHIC, [ + [ Species.METAGROSS, PokemonType.STEEL, PokemonType.PSYCHIC, [ [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], [ Biome.SPACE, BiomePoolTier.RARE ], [ Biome.SPACE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.REGIROCK, Type.ROCK, -1, [ + [ Species.REGIROCK, PokemonType.ROCK, -1, [ [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGICE, Type.ICE, -1, [ + [ Species.REGICE, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGISTEEL, Type.STEEL, -1, [ + [ Species.REGISTEEL, PokemonType.STEEL, -1, [ [ Biome.RUINS, BiomePoolTier.ULTRA_RARE ], [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.LATIAS, Type.DRAGON, Type.PSYCHIC, [ + [ Species.LATIAS, PokemonType.DRAGON, PokemonType.PSYCHIC, [ [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], [ Biome.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.LATIOS, Type.DRAGON, Type.PSYCHIC, [ + [ Species.LATIOS, PokemonType.DRAGON, PokemonType.PSYCHIC, [ [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], [ Biome.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.KYOGRE, Type.WATER, -1, [ + [ Species.KYOGRE, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GROUDON, Type.GROUND, -1, [ + [ Species.GROUDON, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.RAYQUAZA, Type.DRAGON, Type.FLYING, [ + [ Species.RAYQUAZA, PokemonType.DRAGON, PokemonType.FLYING, [ [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.JIRACHI, Type.STEEL, Type.PSYCHIC, [ ] + [ Species.JIRACHI, PokemonType.STEEL, PokemonType.PSYCHIC, [ ] ], - [ Species.DEOXYS, Type.PSYCHIC, -1, [ ] + [ Species.DEOXYS, PokemonType.PSYCHIC, -1, [ ] ], - [ Species.TURTWIG, Type.GRASS, -1, [ + [ Species.TURTWIG, PokemonType.GRASS, -1, [ [ Biome.GRASS, BiomePoolTier.RARE ] ] ], - [ Species.GROTLE, Type.GRASS, -1, [ + [ Species.GROTLE, PokemonType.GRASS, -1, [ [ Biome.GRASS, BiomePoolTier.RARE ] ] ], - [ Species.TORTERRA, Type.GRASS, Type.GROUND, [ + [ Species.TORTERRA, PokemonType.GRASS, PokemonType.GROUND, [ [ Biome.GRASS, BiomePoolTier.RARE ], [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CHIMCHAR, Type.FIRE, -1, [ + [ Species.CHIMCHAR, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.MONFERNO, Type.FIRE, Type.FIGHTING, [ + [ Species.MONFERNO, PokemonType.FIRE, PokemonType.FIGHTING, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.INFERNAPE, Type.FIRE, Type.FIGHTING, [ + [ Species.INFERNAPE, PokemonType.FIRE, PokemonType.FIGHTING, [ [ Biome.VOLCANO, BiomePoolTier.RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PIPLUP, Type.WATER, -1, [ + [ Species.PIPLUP, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.RARE ] ] ], - [ Species.PRINPLUP, Type.WATER, -1, [ + [ Species.PRINPLUP, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.RARE ] ] ], - [ Species.EMPOLEON, Type.WATER, Type.STEEL, [ + [ Species.EMPOLEON, PokemonType.WATER, PokemonType.STEEL, [ [ Biome.SEA, BiomePoolTier.RARE ], [ Biome.SEA, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.STARLY, Type.NORMAL, Type.FLYING, [ + [ Species.STARLY, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.STARAVIA, Type.NORMAL, Type.FLYING, [ + [ Species.STARAVIA, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.STARAPTOR, Type.NORMAL, Type.FLYING, [ + [ Species.STARAPTOR, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BIDOOF, Type.NORMAL, -1, [ + [ Species.BIDOOF, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.PLAINS, BiomePoolTier.COMMON ] ] ], - [ Species.BIBAREL, Type.NORMAL, Type.WATER, [ + [ Species.BIBAREL, PokemonType.NORMAL, PokemonType.WATER, [ [ Biome.PLAINS, BiomePoolTier.COMMON ], [ Biome.PLAINS, BiomePoolTier.BOSS ] ] ], - [ Species.KRICKETOT, Type.BUG, -1, [ + [ Species.KRICKETOT, PokemonType.BUG, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KRICKETUNE, Type.BUG, -1, [ + [ Species.KRICKETUNE, PokemonType.BUG, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SHINX, Type.ELECTRIC, -1, [ + [ Species.SHINX, PokemonType.ELECTRIC, -1, [ [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.LUXIO, Type.ELECTRIC, -1, [ + [ Species.LUXIO, PokemonType.ELECTRIC, -1, [ [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.LUXRAY, Type.ELECTRIC, -1, [ + [ Species.LUXRAY, PokemonType.ELECTRIC, -1, [ [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.BUDEW, Type.GRASS, Type.POISON, [ ] + [ Species.BUDEW, PokemonType.GRASS, PokemonType.POISON, [ ] ], - [ Species.ROSERADE, Type.GRASS, Type.POISON, [ + [ Species.ROSERADE, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CRANIDOS, Type.ROCK, -1, [ + [ Species.CRANIDOS, PokemonType.ROCK, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.RAMPARDOS, Type.ROCK, -1, [ + [ Species.RAMPARDOS, PokemonType.ROCK, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SHIELDON, Type.ROCK, Type.STEEL, [ + [ Species.SHIELDON, PokemonType.ROCK, PokemonType.STEEL, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.BASTIODON, Type.ROCK, Type.STEEL, [ + [ Species.BASTIODON, PokemonType.ROCK, PokemonType.STEEL, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.BURMY, Type.BUG, -1, [ + [ Species.BURMY, PokemonType.BUG, -1, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON ], [ Biome.BEACH, BiomePoolTier.UNCOMMON ], [ Biome.SLUM, BiomePoolTier.UNCOMMON ] ] ], - [ Species.WORMADAM, Type.BUG, Type.GRASS, [ + [ Species.WORMADAM, PokemonType.BUG, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON ], [ Biome.FOREST, BiomePoolTier.BOSS ], [ Biome.BEACH, BiomePoolTier.UNCOMMON ], @@ -4034,122 +4034,122 @@ export function initBiomes() { [ Biome.SLUM, BiomePoolTier.BOSS ] ] ], - [ Species.MOTHIM, Type.BUG, Type.FLYING, [ + [ Species.MOTHIM, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.COMBEE, Type.BUG, Type.FLYING, [ + [ Species.COMBEE, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VESPIQUEN, Type.BUG, Type.FLYING, [ + [ Species.VESPIQUEN, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PACHIRISU, Type.ELECTRIC, -1, [ + [ Species.PACHIRISU, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.BUIZEL, Type.WATER, -1, [ + [ Species.BUIZEL, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.COMMON ] ] ], - [ Species.FLOATZEL, Type.WATER, -1, [ + [ Species.FLOATZEL, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.COMMON ], [ Biome.SEA, BiomePoolTier.BOSS ] ] ], - [ Species.CHERUBI, Type.GRASS, -1, [ + [ Species.CHERUBI, PokemonType.GRASS, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CHERRIM, Type.GRASS, -1, [ + [ Species.CHERRIM, PokemonType.GRASS, -1, [ [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SHELLOS, Type.WATER, -1, [ + [ Species.SHELLOS, PokemonType.WATER, -1, [ [ Biome.SWAMP, BiomePoolTier.COMMON ], [ Biome.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GASTRODON, Type.WATER, Type.GROUND, [ + [ Species.GASTRODON, PokemonType.WATER, PokemonType.GROUND, [ [ Biome.SWAMP, BiomePoolTier.COMMON ], [ Biome.SWAMP, BiomePoolTier.BOSS ], [ Biome.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.AMBIPOM, Type.NORMAL, -1, [ + [ Species.AMBIPOM, PokemonType.NORMAL, -1, [ [ Biome.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.DRIFLOON, Type.GHOST, Type.FLYING, [ + [ Species.DRIFLOON, PokemonType.GHOST, PokemonType.FLYING, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.DRIFBLIM, Type.GHOST, Type.FLYING, [ + [ Species.DRIFBLIM, PokemonType.GHOST, PokemonType.FLYING, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.BUNEARY, Type.NORMAL, -1, [ + [ Species.BUNEARY, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.RARE ] ] ], - [ Species.LOPUNNY, Type.NORMAL, -1, [ + [ Species.LOPUNNY, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.RARE ], [ Biome.PLAINS, BiomePoolTier.BOSS ] ] ], - [ Species.MISMAGIUS, Type.GHOST, -1, [ + [ Species.MISMAGIUS, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.HONCHKROW, Type.DARK, Type.FLYING, [ + [ Species.HONCHKROW, PokemonType.DARK, PokemonType.FLYING, [ [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.GLAMEOW, Type.NORMAL, -1, [ + [ Species.GLAMEOW, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], [ Biome.MEADOW, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PURUGLY, Type.NORMAL, -1, [ + [ Species.PURUGLY, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.CHINGLING, Type.PSYCHIC, -1, [ + [ Species.CHINGLING, PokemonType.PSYCHIC, -1, [ [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.STUNKY, Type.POISON, Type.DARK, [ + [ Species.STUNKY, PokemonType.POISON, PokemonType.DARK, [ [ Biome.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SKUNTANK, Type.POISON, Type.DARK, [ + [ Species.SKUNTANK, PokemonType.POISON, PokemonType.DARK, [ [ Biome.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SLUM, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BRONZOR, Type.STEEL, Type.PSYCHIC, [ + [ Species.BRONZOR, PokemonType.STEEL, PokemonType.PSYCHIC, [ [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], [ Biome.SPACE, BiomePoolTier.COMMON ], [ Biome.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.BRONZONG, Type.STEEL, Type.PSYCHIC, [ + [ Species.BRONZONG, PokemonType.STEEL, PokemonType.PSYCHIC, [ [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], [ Biome.SPACE, BiomePoolTier.COMMON ], [ Biome.SPACE, BiomePoolTier.BOSS ], @@ -4157,186 +4157,186 @@ export function initBiomes() { [ Biome.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.BONSLY, Type.ROCK, -1, [ ] + [ Species.BONSLY, PokemonType.ROCK, -1, [ ] ], - [ Species.MIME_JR, Type.PSYCHIC, Type.FAIRY, [ ] + [ Species.MIME_JR, PokemonType.PSYCHIC, PokemonType.FAIRY, [ ] ], - [ Species.HAPPINY, Type.NORMAL, -1, [ ] + [ Species.HAPPINY, PokemonType.NORMAL, -1, [ ] ], - [ Species.CHATOT, Type.NORMAL, Type.FLYING, [ + [ Species.CHATOT, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.SPIRITOMB, Type.GHOST, Type.DARK, [ + [ Species.SPIRITOMB, PokemonType.GHOST, PokemonType.DARK, [ [ Biome.GRAVEYARD, BiomePoolTier.SUPER_RARE ], [ Biome.ABYSS, BiomePoolTier.RARE ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.GIBLE, Type.DRAGON, Type.GROUND, [ + [ Species.GIBLE, PokemonType.DRAGON, PokemonType.GROUND, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.GABITE, Type.DRAGON, Type.GROUND, [ + [ Species.GABITE, PokemonType.DRAGON, PokemonType.GROUND, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.GARCHOMP, Type.DRAGON, Type.GROUND, [ + [ Species.GARCHOMP, PokemonType.DRAGON, PokemonType.GROUND, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.COMMON ], [ Biome.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.MUNCHLAX, Type.NORMAL, -1, [ ] + [ Species.MUNCHLAX, PokemonType.NORMAL, -1, [ ] ], - [ Species.RIOLU, Type.FIGHTING, -1, [ ] + [ Species.RIOLU, PokemonType.FIGHTING, -1, [ ] ], - [ Species.LUCARIO, Type.FIGHTING, Type.STEEL, [ + [ Species.LUCARIO, PokemonType.FIGHTING, PokemonType.STEEL, [ [ Biome.DOJO, BiomePoolTier.RARE ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.HIPPOPOTAS, Type.GROUND, -1, [ + [ Species.HIPPOPOTAS, PokemonType.GROUND, -1, [ [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HIPPOWDON, Type.GROUND, -1, [ + [ Species.HIPPOWDON, PokemonType.GROUND, -1, [ [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SKORUPI, Type.POISON, Type.BUG, [ + [ Species.SKORUPI, PokemonType.POISON, PokemonType.BUG, [ [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], [ Biome.DESERT, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.DRAPION, Type.POISON, Type.DARK, [ + [ Species.DRAPION, PokemonType.POISON, PokemonType.DARK, [ [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], [ Biome.DESERT, BiomePoolTier.COMMON ], [ Biome.DESERT, BiomePoolTier.BOSS ], [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CROAGUNK, Type.POISON, Type.FIGHTING, [ + [ Species.CROAGUNK, PokemonType.POISON, PokemonType.FIGHTING, [ [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.DOJO, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TOXICROAK, Type.POISON, Type.FIGHTING, [ + [ Species.TOXICROAK, PokemonType.POISON, PokemonType.FIGHTING, [ [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.DOJO, BiomePoolTier.UNCOMMON ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.CARNIVINE, Type.GRASS, -1, [ + [ Species.CARNIVINE, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.FINNEON, Type.WATER, -1, [ + [ Species.FINNEON, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] ] ], - [ Species.LUMINEON, Type.WATER, -1, [ + [ Species.LUMINEON, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], [ Biome.SEA, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] ] ], - [ Species.MANTYKE, Type.WATER, Type.FLYING, [ + [ Species.MANTYKE, PokemonType.WATER, PokemonType.FLYING, [ [ Biome.SEABED, BiomePoolTier.RARE ] ] ], - [ Species.SNOVER, Type.GRASS, Type.ICE, [ + [ Species.SNOVER, PokemonType.GRASS, PokemonType.ICE, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.ABOMASNOW, Type.GRASS, Type.ICE, [ + [ Species.ABOMASNOW, PokemonType.GRASS, PokemonType.ICE, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.WEAVILE, Type.DARK, Type.ICE, [ + [ Species.WEAVILE, PokemonType.DARK, PokemonType.ICE, [ [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.MAGNEZONE, Type.ELECTRIC, Type.STEEL, [ + [ Species.MAGNEZONE, PokemonType.ELECTRIC, PokemonType.STEEL, [ [ Biome.POWER_PLANT, BiomePoolTier.BOSS ], [ Biome.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.LICKILICKY, Type.NORMAL, -1, [ + [ Species.LICKILICKY, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.RHYPERIOR, Type.GROUND, Type.ROCK, [ + [ Species.RHYPERIOR, PokemonType.GROUND, PokemonType.ROCK, [ [ Biome.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.TANGROWTH, Type.GRASS, -1, [ + [ Species.TANGROWTH, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ELECTIVIRE, Type.ELECTRIC, -1, [ + [ Species.ELECTIVIRE, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.MAGMORTAR, Type.FIRE, -1, [ + [ Species.MAGMORTAR, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.TOGEKISS, Type.FAIRY, Type.FLYING, [ + [ Species.TOGEKISS, PokemonType.FAIRY, PokemonType.FLYING, [ [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.YANMEGA, Type.BUG, Type.FLYING, [ + [ Species.YANMEGA, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.LEAFEON, Type.GRASS, -1, [ + [ Species.LEAFEON, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GLACEON, Type.ICE, -1, [ + [ Species.GLACEON, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GLISCOR, Type.GROUND, Type.FLYING, [ + [ Species.GLISCOR, PokemonType.GROUND, PokemonType.FLYING, [ [ Biome.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.MAMOSWINE, Type.ICE, Type.GROUND, [ + [ Species.MAMOSWINE, PokemonType.ICE, PokemonType.GROUND, [ [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.PORYGON_Z, Type.NORMAL, -1, [ + [ Species.PORYGON_Z, PokemonType.NORMAL, -1, [ [ Biome.SPACE, BiomePoolTier.BOSS_RARE ], [ Biome.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.GALLADE, Type.PSYCHIC, Type.FIGHTING, [ + [ Species.GALLADE, PokemonType.PSYCHIC, PokemonType.FIGHTING, [ [ Biome.DOJO, BiomePoolTier.SUPER_RARE ], [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PROBOPASS, Type.ROCK, Type.STEEL, [ + [ Species.PROBOPASS, PokemonType.ROCK, PokemonType.STEEL, [ [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.DUSKNOIR, Type.GHOST, -1, [ + [ Species.DUSKNOIR, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.FROSLASS, Type.ICE, Type.GHOST, [ + [ Species.FROSLASS, PokemonType.ICE, PokemonType.GHOST, [ [ Biome.ICE_CAVE, BiomePoolTier.RARE ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ROTOM, Type.ELECTRIC, Type.GHOST, [ + [ Species.ROTOM, PokemonType.ELECTRIC, PokemonType.GHOST, [ [ Biome.LABORATORY, BiomePoolTier.SUPER_RARE ], [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ], [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], @@ -4351,104 +4351,104 @@ export function initBiomes() { [ Biome.TALL_GRASS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.UXIE, Type.PSYCHIC, -1, [ + [ Species.UXIE, PokemonType.PSYCHIC, -1, [ [ Biome.CAVE, BiomePoolTier.ULTRA_RARE ], [ Biome.CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MESPRIT, Type.PSYCHIC, -1, [ + [ Species.MESPRIT, PokemonType.PSYCHIC, -1, [ [ Biome.LAKE, BiomePoolTier.ULTRA_RARE ], [ Biome.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.AZELF, Type.PSYCHIC, -1, [ + [ Species.AZELF, PokemonType.PSYCHIC, -1, [ [ Biome.SWAMP, BiomePoolTier.ULTRA_RARE ], [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.DIALGA, Type.STEEL, Type.DRAGON, [ + [ Species.DIALGA, PokemonType.STEEL, PokemonType.DRAGON, [ [ Biome.WASTELAND, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.PALKIA, Type.WATER, Type.DRAGON, [ + [ Species.PALKIA, PokemonType.WATER, PokemonType.DRAGON, [ [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.HEATRAN, Type.FIRE, Type.STEEL, [ + [ Species.HEATRAN, PokemonType.FIRE, PokemonType.STEEL, [ [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGIGIGAS, Type.NORMAL, -1, [ + [ Species.REGIGIGAS, PokemonType.NORMAL, -1, [ [ Biome.TEMPLE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GIRATINA, Type.GHOST, Type.DRAGON, [ + [ Species.GIRATINA, PokemonType.GHOST, PokemonType.DRAGON, [ [ Biome.GRAVEYARD, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.CRESSELIA, Type.PSYCHIC, -1, [ + [ Species.CRESSELIA, PokemonType.PSYCHIC, -1, [ [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.PHIONE, Type.WATER, -1, [ ] + [ Species.PHIONE, PokemonType.WATER, -1, [ ] ], - [ Species.MANAPHY, Type.WATER, -1, [ ] + [ Species.MANAPHY, PokemonType.WATER, -1, [ ] ], - [ Species.DARKRAI, Type.DARK, -1, [ + [ Species.DARKRAI, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ], [ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.SHAYMIN, Type.GRASS, -1, [ + [ Species.SHAYMIN, PokemonType.GRASS, -1, [ [ Biome.MEADOW, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ARCEUS, Type.NORMAL, -1, [ ] + [ Species.ARCEUS, PokemonType.NORMAL, -1, [ ] ], - [ Species.VICTINI, Type.PSYCHIC, Type.FIRE, [ ] + [ Species.VICTINI, PokemonType.PSYCHIC, PokemonType.FIRE, [ ] ], - [ Species.SNIVY, Type.GRASS, -1, [ + [ Species.SNIVY, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.SERVINE, Type.GRASS, -1, [ + [ Species.SERVINE, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.SERPERIOR, Type.GRASS, -1, [ + [ Species.SERPERIOR, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TEPIG, Type.FIRE, -1, [ + [ Species.TEPIG, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.PIGNITE, Type.FIRE, Type.FIGHTING, [ + [ Species.PIGNITE, PokemonType.FIRE, PokemonType.FIGHTING, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.EMBOAR, Type.FIRE, Type.FIGHTING, [ + [ Species.EMBOAR, PokemonType.FIRE, PokemonType.FIGHTING, [ [ Biome.VOLCANO, BiomePoolTier.RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.OSHAWOTT, Type.WATER, -1, [ + [ Species.OSHAWOTT, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.DEWOTT, Type.WATER, -1, [ + [ Species.DEWOTT, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.SAMUROTT, Type.WATER, -1, [ + [ Species.SAMUROTT, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ], [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PATRAT, Type.NORMAL, -1, [ + [ Species.PATRAT, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], @@ -4456,437 +4456,437 @@ export function initBiomes() { [ Biome.SLUM, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.WATCHOG, Type.NORMAL, -1, [ + [ Species.WATCHOG, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SLUM, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SLUM, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.LILLIPUP, Type.NORMAL, -1, [ + [ Species.LILLIPUP, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.METROPOLIS, BiomePoolTier.COMMON ] ] ], - [ Species.HERDIER, Type.NORMAL, -1, [ + [ Species.HERDIER, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.COMMON ] ] ], - [ Species.STOUTLAND, Type.NORMAL, -1, [ + [ Species.STOUTLAND, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.COMMON ], [ Biome.METROPOLIS, BiomePoolTier.BOSS ] ] ], - [ Species.PURRLOIN, Type.DARK, -1, [ + [ Species.PURRLOIN, PokemonType.DARK, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.ABYSS, BiomePoolTier.COMMON ], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.LIEPARD, Type.DARK, -1, [ + [ Species.LIEPARD, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.COMMON ], [ Biome.ABYSS, BiomePoolTier.BOSS ], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PANSAGE, Type.GRASS, -1, [ + [ Species.PANSAGE, PokemonType.GRASS, -1, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SIMISAGE, Type.GRASS, -1, [ + [ Species.SIMISAGE, PokemonType.GRASS, -1, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON ], [ Biome.FOREST, BiomePoolTier.BOSS ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PANSEAR, Type.FIRE, -1, [ + [ Species.PANSEAR, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SIMISEAR, Type.FIRE, -1, [ + [ Species.SIMISEAR, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], [ Biome.VOLCANO, BiomePoolTier.BOSS ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PANPOUR, Type.WATER, -1, [ + [ Species.PANPOUR, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SIMIPOUR, Type.WATER, -1, [ + [ Species.SIMIPOUR, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ], [ Biome.SEA, BiomePoolTier.BOSS ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MUNNA, Type.PSYCHIC, -1, [ + [ Species.MUNNA, PokemonType.PSYCHIC, -1, [ [ Biome.SPACE, BiomePoolTier.COMMON ] ] ], - [ Species.MUSHARNA, Type.PSYCHIC, -1, [ + [ Species.MUSHARNA, PokemonType.PSYCHIC, -1, [ [ Biome.SPACE, BiomePoolTier.COMMON ], [ Biome.SPACE, BiomePoolTier.BOSS ] ] ], - [ Species.PIDOVE, Type.NORMAL, Type.FLYING, [ + [ Species.PIDOVE, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TRANQUILL, Type.NORMAL, Type.FLYING, [ + [ Species.TRANQUILL, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.UNFEZANT, Type.NORMAL, Type.FLYING, [ + [ Species.UNFEZANT, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BLITZLE, Type.ELECTRIC, -1, [ + [ Species.BLITZLE, PokemonType.ELECTRIC, -1, [ [ Biome.MEADOW, BiomePoolTier.COMMON ], [ Biome.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.ZEBSTRIKA, Type.ELECTRIC, -1, [ + [ Species.ZEBSTRIKA, PokemonType.ELECTRIC, -1, [ [ Biome.MEADOW, BiomePoolTier.COMMON ], [ Biome.MEADOW, BiomePoolTier.BOSS ], [ Biome.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.ROGGENROLA, Type.ROCK, -1, [ + [ Species.ROGGENROLA, PokemonType.ROCK, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.BOLDORE, Type.ROCK, -1, [ + [ Species.BOLDORE, PokemonType.ROCK, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.GIGALITH, Type.ROCK, -1, [ + [ Species.GIGALITH, PokemonType.ROCK, -1, [ [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.WOOBAT, Type.PSYCHIC, Type.FLYING, [ + [ Species.WOOBAT, PokemonType.PSYCHIC, PokemonType.FLYING, [ [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.SWOOBAT, Type.PSYCHIC, Type.FLYING, [ + [ Species.SWOOBAT, PokemonType.PSYCHIC, PokemonType.FLYING, [ [ Biome.CAVE, BiomePoolTier.COMMON ], [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.DRILBUR, Type.GROUND, -1, [ + [ Species.DRILBUR, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.EXCADRILL, Type.GROUND, Type.STEEL, [ + [ Species.EXCADRILL, PokemonType.GROUND, PokemonType.STEEL, [ [ Biome.BADLANDS, BiomePoolTier.COMMON ], [ Biome.BADLANDS, BiomePoolTier.BOSS ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.AUDINO, Type.NORMAL, -1, [ + [ Species.AUDINO, PokemonType.NORMAL, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.RARE ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.TIMBURR, Type.FIGHTING, -1, [ + [ Species.TIMBURR, PokemonType.FIGHTING, -1, [ [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.GURDURR, Type.FIGHTING, -1, [ + [ Species.GURDURR, PokemonType.FIGHTING, -1, [ [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] ] ], - [ Species.CONKELDURR, Type.FIGHTING, -1, [ + [ Species.CONKELDURR, PokemonType.FIGHTING, -1, [ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] ] ], - [ Species.TYMPOLE, Type.WATER, -1, [ + [ Species.TYMPOLE, PokemonType.WATER, -1, [ [ Biome.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.PALPITOAD, Type.WATER, Type.GROUND, [ + [ Species.PALPITOAD, PokemonType.WATER, PokemonType.GROUND, [ [ Biome.SWAMP, BiomePoolTier.COMMON ] ] ], - [ Species.SEISMITOAD, Type.WATER, Type.GROUND, [ + [ Species.SEISMITOAD, PokemonType.WATER, PokemonType.GROUND, [ [ Biome.SWAMP, BiomePoolTier.COMMON ], [ Biome.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.THROH, Type.FIGHTING, -1, [ + [ Species.THROH, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.RARE ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.SAWK, Type.FIGHTING, -1, [ + [ Species.SAWK, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.RARE ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.SEWADDLE, Type.BUG, Type.GRASS, [ + [ Species.SEWADDLE, PokemonType.BUG, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SWADLOON, Type.BUG, Type.GRASS, [ + [ Species.SWADLOON, PokemonType.BUG, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LEAVANNY, Type.BUG, Type.GRASS, [ + [ Species.LEAVANNY, PokemonType.BUG, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VENIPEDE, Type.BUG, Type.POISON, [ + [ Species.VENIPEDE, PokemonType.BUG, PokemonType.POISON, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.WHIRLIPEDE, Type.BUG, Type.POISON, [ + [ Species.WHIRLIPEDE, PokemonType.BUG, PokemonType.POISON, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SCOLIPEDE, Type.BUG, Type.POISON, [ + [ Species.SCOLIPEDE, PokemonType.BUG, PokemonType.POISON, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.COTTONEE, Type.GRASS, Type.FAIRY, [ + [ Species.COTTONEE, PokemonType.GRASS, PokemonType.FAIRY, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WHIMSICOTT, Type.GRASS, Type.FAIRY, [ + [ Species.WHIMSICOTT, PokemonType.GRASS, PokemonType.FAIRY, [ [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PETILIL, Type.GRASS, -1, [ + [ Species.PETILIL, PokemonType.GRASS, -1, [ [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LILLIGANT, Type.GRASS, -1, [ + [ Species.LILLIGANT, PokemonType.GRASS, -1, [ [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BASCULIN, Type.WATER, -1, [ + [ Species.BASCULIN, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.SANDILE, Type.GROUND, Type.DARK, [ + [ Species.SANDILE, PokemonType.GROUND, PokemonType.DARK, [ [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KROKOROK, Type.GROUND, Type.DARK, [ + [ Species.KROKOROK, PokemonType.GROUND, PokemonType.DARK, [ [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.KROOKODILE, Type.GROUND, Type.DARK, [ + [ Species.KROOKODILE, PokemonType.GROUND, PokemonType.DARK, [ [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DARUMAKA, Type.FIRE, -1, [ + [ Species.DARUMAKA, PokemonType.FIRE, -1, [ [ Biome.DESERT, BiomePoolTier.RARE ] ] ], - [ Species.DARMANITAN, Type.FIRE, -1, [ + [ Species.DARMANITAN, PokemonType.FIRE, -1, [ [ Biome.DESERT, BiomePoolTier.RARE ], [ Biome.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.MARACTUS, Type.GRASS, -1, [ + [ Species.MARACTUS, PokemonType.GRASS, -1, [ [ Biome.DESERT, BiomePoolTier.UNCOMMON ], [ Biome.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.DWEBBLE, Type.BUG, Type.ROCK, [ + [ Species.DWEBBLE, PokemonType.BUG, PokemonType.ROCK, [ [ Biome.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.CRUSTLE, Type.BUG, Type.ROCK, [ + [ Species.CRUSTLE, PokemonType.BUG, PokemonType.ROCK, [ [ Biome.BEACH, BiomePoolTier.COMMON ], [ Biome.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.SCRAGGY, Type.DARK, Type.FIGHTING, [ + [ Species.SCRAGGY, PokemonType.DARK, PokemonType.FIGHTING, [ [ Biome.DOJO, BiomePoolTier.UNCOMMON ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SCRAFTY, Type.DARK, Type.FIGHTING, [ + [ Species.SCRAFTY, PokemonType.DARK, PokemonType.FIGHTING, [ [ Biome.DOJO, BiomePoolTier.UNCOMMON ], [ Biome.DOJO, BiomePoolTier.BOSS ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SIGILYPH, Type.PSYCHIC, Type.FLYING, [ + [ Species.SIGILYPH, PokemonType.PSYCHIC, PokemonType.FLYING, [ [ Biome.RUINS, BiomePoolTier.UNCOMMON ], [ Biome.RUINS, BiomePoolTier.BOSS ], [ Biome.SPACE, BiomePoolTier.RARE ] ] ], - [ Species.YAMASK, Type.GHOST, -1, [ + [ Species.YAMASK, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.COFAGRIGUS, Type.GHOST, -1, [ + [ Species.COFAGRIGUS, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], [ Biome.TEMPLE, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.BOSS ] ] ], - [ Species.TIRTOUGA, Type.WATER, Type.ROCK, [ + [ Species.TIRTOUGA, PokemonType.WATER, PokemonType.ROCK, [ [ Biome.SEA, BiomePoolTier.SUPER_RARE ], [ Biome.BEACH, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.CARRACOSTA, Type.WATER, Type.ROCK, [ + [ Species.CARRACOSTA, PokemonType.WATER, PokemonType.ROCK, [ [ Biome.SEA, BiomePoolTier.SUPER_RARE ], [ Biome.BEACH, BiomePoolTier.SUPER_RARE ], [ Biome.BEACH, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ARCHEN, Type.ROCK, Type.FLYING, [ + [ Species.ARCHEN, PokemonType.ROCK, PokemonType.FLYING, [ [ Biome.RUINS, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.ARCHEOPS, Type.ROCK, Type.FLYING, [ + [ Species.ARCHEOPS, PokemonType.ROCK, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.RUINS, BiomePoolTier.SUPER_RARE ], [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TRUBBISH, Type.POISON, -1, [ + [ Species.TRUBBISH, PokemonType.POISON, -1, [ [ Biome.SLUM, BiomePoolTier.COMMON ] ] ], - [ Species.GARBODOR, Type.POISON, -1, [ + [ Species.GARBODOR, PokemonType.POISON, -1, [ [ Biome.SLUM, BiomePoolTier.COMMON ], [ Biome.SLUM, BiomePoolTier.BOSS ] ] ], - [ Species.ZORUA, Type.DARK, -1, [ + [ Species.ZORUA, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.RARE ] ] ], - [ Species.ZOROARK, Type.DARK, -1, [ + [ Species.ZOROARK, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.RARE ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.MINCCINO, Type.NORMAL, -1, [ + [ Species.MINCCINO, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CINCCINO, Type.NORMAL, -1, [ + [ Species.CINCCINO, PokemonType.NORMAL, -1, [ [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GOTHITA, Type.PSYCHIC, -1, [ + [ Species.GOTHITA, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.RARE ] ] ], - [ Species.GOTHORITA, Type.PSYCHIC, -1, [ + [ Species.GOTHORITA, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.RARE ] ] ], - [ Species.GOTHITELLE, Type.PSYCHIC, -1, [ + [ Species.GOTHITELLE, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.RARE ], [ Biome.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.SOLOSIS, Type.PSYCHIC, -1, [ + [ Species.SOLOSIS, PokemonType.PSYCHIC, -1, [ [ Biome.SPACE, BiomePoolTier.RARE ], [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ] ] ], - [ Species.DUOSION, Type.PSYCHIC, -1, [ + [ Species.DUOSION, PokemonType.PSYCHIC, -1, [ [ Biome.SPACE, BiomePoolTier.RARE ], [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ] ] ], - [ Species.REUNICLUS, Type.PSYCHIC, -1, [ + [ Species.REUNICLUS, PokemonType.PSYCHIC, -1, [ [ Biome.SPACE, BiomePoolTier.RARE ], [ Biome.SPACE, BiomePoolTier.BOSS ], [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ], [ Biome.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.DUCKLETT, Type.WATER, Type.FLYING, [ + [ Species.DUCKLETT, PokemonType.WATER, PokemonType.FLYING, [ [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SWANNA, Type.WATER, Type.FLYING, [ + [ Species.SWANNA, PokemonType.WATER, PokemonType.FLYING, [ [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VANILLITE, Type.ICE, -1, [ + [ Species.VANILLITE, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.VANILLISH, Type.ICE, -1, [ + [ Species.VANILLISH, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.VANILLUXE, Type.ICE, -1, [ + [ Species.VANILLUXE, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.DEERLING, Type.NORMAL, Type.GRASS, [ + [ Species.DEERLING, PokemonType.NORMAL, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SAWSBUCK, Type.NORMAL, Type.GRASS, [ + [ Species.SAWSBUCK, PokemonType.NORMAL, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.EMOLGA, Type.ELECTRIC, Type.FLYING, [ + [ Species.EMOLGA, PokemonType.ELECTRIC, PokemonType.FLYING, [ [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KARRABLAST, Type.BUG, -1, [ + [ Species.KARRABLAST, PokemonType.BUG, -1, [ [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.ESCAVALIER, Type.BUG, Type.STEEL, [ + [ Species.ESCAVALIER, PokemonType.BUG, PokemonType.STEEL, [ [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FOONGUS, Type.GRASS, Type.POISON, [ + [ Species.FOONGUS, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.AMOONGUSS, Type.GRASS, Type.POISON, [ + [ Species.AMOONGUSS, PokemonType.GRASS, PokemonType.POISON, [ [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], @@ -4894,712 +4894,712 @@ export function initBiomes() { [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FRILLISH, Type.WATER, Type.GHOST, [ + [ Species.FRILLISH, PokemonType.WATER, PokemonType.GHOST, [ [ Biome.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.JELLICENT, Type.WATER, Type.GHOST, [ + [ Species.JELLICENT, PokemonType.WATER, PokemonType.GHOST, [ [ Biome.SEABED, BiomePoolTier.COMMON ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.ALOMOMOLA, Type.WATER, -1, [ + [ Species.ALOMOMOLA, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.RARE ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.JOLTIK, Type.BUG, Type.ELECTRIC, [ + [ Species.JOLTIK, PokemonType.BUG, PokemonType.ELECTRIC, [ [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GALVANTULA, Type.BUG, Type.ELECTRIC, [ + [ Species.GALVANTULA, PokemonType.BUG, PokemonType.ELECTRIC, [ [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], [ Biome.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.FERROSEED, Type.GRASS, Type.STEEL, [ + [ Species.FERROSEED, PokemonType.GRASS, PokemonType.STEEL, [ [ Biome.CAVE, BiomePoolTier.RARE ] ] ], - [ Species.FERROTHORN, Type.GRASS, Type.STEEL, [ + [ Species.FERROTHORN, PokemonType.GRASS, PokemonType.STEEL, [ [ Biome.CAVE, BiomePoolTier.RARE ], [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KLINK, Type.STEEL, -1, [ + [ Species.KLINK, PokemonType.STEEL, -1, [ [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.KLANG, Type.STEEL, -1, [ + [ Species.KLANG, PokemonType.STEEL, -1, [ [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.LABORATORY, BiomePoolTier.COMMON ] ] ], - [ Species.KLINKLANG, Type.STEEL, -1, [ + [ Species.KLINKLANG, PokemonType.STEEL, -1, [ [ Biome.FACTORY, BiomePoolTier.COMMON ], [ Biome.FACTORY, BiomePoolTier.BOSS ], [ Biome.LABORATORY, BiomePoolTier.COMMON ], [ Biome.LABORATORY, BiomePoolTier.BOSS ] ] ], - [ Species.TYNAMO, Type.ELECTRIC, -1, [ + [ Species.TYNAMO, PokemonType.ELECTRIC, -1, [ [ Biome.SEABED, BiomePoolTier.RARE ] ] ], - [ Species.EELEKTRIK, Type.ELECTRIC, -1, [ + [ Species.EELEKTRIK, PokemonType.ELECTRIC, -1, [ [ Biome.SEABED, BiomePoolTier.RARE ] ] ], - [ Species.EELEKTROSS, Type.ELECTRIC, -1, [ + [ Species.EELEKTROSS, PokemonType.ELECTRIC, -1, [ [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ELGYEM, Type.PSYCHIC, -1, [ + [ Species.ELGYEM, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.COMMON ], [ Biome.SPACE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.BEHEEYEM, Type.PSYCHIC, -1, [ + [ Species.BEHEEYEM, PokemonType.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.COMMON ], [ Biome.RUINS, BiomePoolTier.BOSS ], [ Biome.SPACE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.LITWICK, Type.GHOST, Type.FIRE, [ + [ Species.LITWICK, PokemonType.GHOST, PokemonType.FIRE, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.LAMPENT, Type.GHOST, Type.FIRE, [ + [ Species.LAMPENT, PokemonType.GHOST, PokemonType.FIRE, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CHANDELURE, Type.GHOST, Type.FIRE, [ + [ Species.CHANDELURE, PokemonType.GHOST, PokemonType.FIRE, [ [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.AXEW, Type.DRAGON, -1, [ + [ Species.AXEW, PokemonType.DRAGON, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.FRAXURE, Type.DRAGON, -1, [ + [ Species.FRAXURE, PokemonType.DRAGON, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.COMMON ] ] ], - [ Species.HAXORUS, Type.DRAGON, -1, [ + [ Species.HAXORUS, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.COMMON ], [ Biome.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.CUBCHOO, Type.ICE, -1, [ + [ Species.CUBCHOO, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.BEARTIC, Type.ICE, -1, [ + [ Species.BEARTIC, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.CRYOGONAL, Type.ICE, -1, [ + [ Species.CRYOGONAL, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.RARE ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SHELMET, Type.BUG, -1, [ + [ Species.SHELMET, PokemonType.BUG, -1, [ [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.ACCELGOR, Type.BUG, -1, [ + [ Species.ACCELGOR, PokemonType.BUG, -1, [ [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.STUNFISK, Type.GROUND, Type.ELECTRIC, [ + [ Species.STUNFISK, PokemonType.GROUND, PokemonType.ELECTRIC, [ [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], [ Biome.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.MIENFOO, Type.FIGHTING, -1, [ + [ Species.MIENFOO, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.UNCOMMON ] ] ], - [ Species.MIENSHAO, Type.FIGHTING, -1, [ + [ Species.MIENSHAO, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.UNCOMMON ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.DRUDDIGON, Type.DRAGON, -1, [ + [ Species.DRUDDIGON, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GOLETT, Type.GROUND, Type.GHOST, [ + [ Species.GOLETT, PokemonType.GROUND, PokemonType.GHOST, [ [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.GOLURK, Type.GROUND, Type.GHOST, [ + [ Species.GOLURK, PokemonType.GROUND, PokemonType.GHOST, [ [ Biome.TEMPLE, BiomePoolTier.COMMON ], [ Biome.TEMPLE, BiomePoolTier.BOSS ] ] ], - [ Species.PAWNIARD, Type.DARK, Type.STEEL, [ + [ Species.PAWNIARD, PokemonType.DARK, PokemonType.STEEL, [ [ Biome.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.BISHARP, Type.DARK, Type.STEEL, [ + [ Species.BISHARP, PokemonType.DARK, PokemonType.STEEL, [ [ Biome.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.BOUFFALANT, Type.NORMAL, -1, [ + [ Species.BOUFFALANT, PokemonType.NORMAL, -1, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.RUFFLET, Type.NORMAL, Type.FLYING, [ + [ Species.RUFFLET, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BRAVIARY, Type.NORMAL, Type.FLYING, [ + [ Species.BRAVIARY, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VULLABY, Type.DARK, Type.FLYING, [ + [ Species.VULLABY, PokemonType.DARK, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MANDIBUZZ, Type.DARK, Type.FLYING, [ + [ Species.MANDIBUZZ, PokemonType.DARK, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.HEATMOR, Type.FIRE, -1, [ + [ Species.HEATMOR, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.DURANT, Type.BUG, Type.STEEL, [ + [ Species.DURANT, PokemonType.BUG, PokemonType.STEEL, [ [ Biome.FOREST, BiomePoolTier.SUPER_RARE ], [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DEINO, Type.DARK, Type.DRAGON, [ + [ Species.DEINO, PokemonType.DARK, PokemonType.DRAGON, [ [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.ABYSS, BiomePoolTier.RARE ] ] ], - [ Species.ZWEILOUS, Type.DARK, Type.DRAGON, [ + [ Species.ZWEILOUS, PokemonType.DARK, PokemonType.DRAGON, [ [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.ABYSS, BiomePoolTier.RARE ] ] ], - [ Species.HYDREIGON, Type.DARK, Type.DRAGON, [ + [ Species.HYDREIGON, PokemonType.DARK, PokemonType.DRAGON, [ [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.ABYSS, BiomePoolTier.RARE ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.LARVESTA, Type.BUG, Type.FIRE, [ + [ Species.LARVESTA, PokemonType.BUG, PokemonType.FIRE, [ [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.VOLCARONA, Type.BUG, Type.FIRE, [ + [ Species.VOLCARONA, PokemonType.BUG, PokemonType.FIRE, [ [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.COBALION, Type.STEEL, Type.FIGHTING, [ + [ Species.COBALION, PokemonType.STEEL, PokemonType.FIGHTING, [ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TERRAKION, Type.ROCK, Type.FIGHTING, [ + [ Species.TERRAKION, PokemonType.ROCK, PokemonType.FIGHTING, [ [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ], [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.VIRIZION, Type.GRASS, Type.FIGHTING, [ + [ Species.VIRIZION, PokemonType.GRASS, PokemonType.FIGHTING, [ [ Biome.GRASS, BiomePoolTier.ULTRA_RARE ], [ Biome.GRASS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TORNADUS, Type.FLYING, -1, [ + [ Species.TORNADUS, PokemonType.FLYING, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.THUNDURUS, Type.ELECTRIC, Type.FLYING, [ + [ Species.THUNDURUS, PokemonType.ELECTRIC, PokemonType.FLYING, [ [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.RESHIRAM, Type.DRAGON, Type.FIRE, [ + [ Species.RESHIRAM, PokemonType.DRAGON, PokemonType.FIRE, [ [ Biome.VOLCANO, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ZEKROM, Type.DRAGON, Type.ELECTRIC, [ + [ Species.ZEKROM, PokemonType.DRAGON, PokemonType.ELECTRIC, [ [ Biome.POWER_PLANT, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.LANDORUS, Type.GROUND, Type.FLYING, [ + [ Species.LANDORUS, PokemonType.GROUND, PokemonType.FLYING, [ [ Biome.BADLANDS, BiomePoolTier.ULTRA_RARE ], [ Biome.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.KYUREM, Type.DRAGON, Type.ICE, [ + [ Species.KYUREM, PokemonType.DRAGON, PokemonType.ICE, [ [ Biome.ICE_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.KELDEO, Type.WATER, Type.FIGHTING, [ + [ Species.KELDEO, PokemonType.WATER, PokemonType.FIGHTING, [ [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MELOETTA, Type.NORMAL, Type.PSYCHIC, [ + [ Species.MELOETTA, PokemonType.NORMAL, PokemonType.PSYCHIC, [ [ Biome.MEADOW, BiomePoolTier.ULTRA_RARE ], [ Biome.MEADOW, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.GENESECT, Type.BUG, Type.STEEL, [ + [ Species.GENESECT, PokemonType.BUG, PokemonType.STEEL, [ [ Biome.FACTORY, BiomePoolTier.ULTRA_RARE ], [ Biome.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CHESPIN, Type.GRASS, -1, [ + [ Species.CHESPIN, PokemonType.GRASS, -1, [ [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.QUILLADIN, Type.GRASS, -1, [ + [ Species.QUILLADIN, PokemonType.GRASS, -1, [ [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.CHESNAUGHT, Type.GRASS, Type.FIGHTING, [ + [ Species.CHESNAUGHT, PokemonType.GRASS, PokemonType.FIGHTING, [ [ Biome.FOREST, BiomePoolTier.RARE ], [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FENNEKIN, Type.FIRE, -1, [ + [ Species.FENNEKIN, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.BRAIXEN, Type.FIRE, -1, [ + [ Species.BRAIXEN, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.DELPHOX, Type.FIRE, Type.PSYCHIC, [ + [ Species.DELPHOX, PokemonType.FIRE, PokemonType.PSYCHIC, [ [ Biome.VOLCANO, BiomePoolTier.RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FROAKIE, Type.WATER, -1, [ + [ Species.FROAKIE, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.FROGADIER, Type.WATER, -1, [ + [ Species.FROGADIER, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.GRENINJA, Type.WATER, Type.DARK, [ + [ Species.GRENINJA, PokemonType.WATER, PokemonType.DARK, [ [ Biome.LAKE, BiomePoolTier.RARE ], [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.BUNNELBY, Type.NORMAL, -1, [ + [ Species.BUNNELBY, PokemonType.NORMAL, -1, [ [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.DIGGERSBY, Type.NORMAL, Type.GROUND, [ + [ Species.DIGGERSBY, PokemonType.NORMAL, PokemonType.GROUND, [ [ Biome.CAVE, BiomePoolTier.COMMON ], [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.FLETCHLING, Type.NORMAL, Type.FLYING, [ + [ Species.FLETCHLING, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FLETCHINDER, Type.FIRE, Type.FLYING, [ + [ Species.FLETCHINDER, PokemonType.FIRE, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TALONFLAME, Type.FIRE, Type.FLYING, [ + [ Species.TALONFLAME, PokemonType.FIRE, PokemonType.FLYING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SCATTERBUG, Type.BUG, -1, [ + [ Species.SCATTERBUG, PokemonType.BUG, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SPEWPA, Type.BUG, -1, [ + [ Species.SPEWPA, PokemonType.BUG, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VIVILLON, Type.BUG, Type.FLYING, [ + [ Species.VIVILLON, PokemonType.BUG, PokemonType.FLYING, [ [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.LITLEO, Type.FIRE, Type.NORMAL, [ + [ Species.LITLEO, PokemonType.FIRE, PokemonType.NORMAL, [ [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PYROAR, Type.FIRE, Type.NORMAL, [ + [ Species.PYROAR, PokemonType.FIRE, PokemonType.NORMAL, [ [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], [ Biome.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.FLABEBE, Type.FAIRY, -1, [ + [ Species.FLABEBE, PokemonType.FAIRY, -1, [ [ Biome.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.FLOETTE, Type.FAIRY, -1, [ + [ Species.FLOETTE, PokemonType.FAIRY, -1, [ [ Biome.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.FLORGES, Type.FAIRY, -1, [ + [ Species.FLORGES, PokemonType.FAIRY, -1, [ [ Biome.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.SKIDDO, Type.GRASS, -1, [ + [ Species.SKIDDO, PokemonType.GRASS, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] ] ], - [ Species.GOGOAT, Type.GRASS, -1, [ + [ Species.GOGOAT, PokemonType.GRASS, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] ] ], - [ Species.PANCHAM, Type.FIGHTING, -1, [ + [ Species.PANCHAM, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.RARE ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PANGORO, Type.FIGHTING, Type.DARK, [ + [ Species.PANGORO, PokemonType.FIGHTING, PokemonType.DARK, [ [ Biome.DOJO, BiomePoolTier.RARE ], [ Biome.DOJO, BiomePoolTier.BOSS_RARE ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FURFROU, Type.NORMAL, -1, [ + [ Species.FURFROU, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], [ Biome.METROPOLIS, BiomePoolTier.BOSS ] ] ], - [ Species.ESPURR, Type.PSYCHIC, -1, [ + [ Species.ESPURR, PokemonType.PSYCHIC, -1, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MEOWSTIC, Type.PSYCHIC, -1, [ + [ Species.MEOWSTIC, PokemonType.PSYCHIC, -1, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.HONEDGE, Type.STEEL, Type.GHOST, [ + [ Species.HONEDGE, PokemonType.STEEL, PokemonType.GHOST, [ [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.DOUBLADE, Type.STEEL, Type.GHOST, [ + [ Species.DOUBLADE, PokemonType.STEEL, PokemonType.GHOST, [ [ Biome.TEMPLE, BiomePoolTier.COMMON ] ] ], - [ Species.AEGISLASH, Type.STEEL, Type.GHOST, [ + [ Species.AEGISLASH, PokemonType.STEEL, PokemonType.GHOST, [ [ Biome.TEMPLE, BiomePoolTier.BOSS ] ] ], - [ Species.SPRITZEE, Type.FAIRY, -1, [ + [ Species.SPRITZEE, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.AROMATISSE, Type.FAIRY, -1, [ + [ Species.AROMATISSE, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SWIRLIX, Type.FAIRY, -1, [ + [ Species.SWIRLIX, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.SLURPUFF, Type.FAIRY, -1, [ + [ Species.SLURPUFF, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.INKAY, Type.DARK, Type.PSYCHIC, [ + [ Species.INKAY, PokemonType.DARK, PokemonType.PSYCHIC, [ [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MALAMAR, Type.DARK, Type.PSYCHIC, [ + [ Species.MALAMAR, PokemonType.DARK, PokemonType.PSYCHIC, [ [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BINACLE, Type.ROCK, Type.WATER, [ + [ Species.BINACLE, PokemonType.ROCK, PokemonType.WATER, [ [ Biome.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.BARBARACLE, Type.ROCK, Type.WATER, [ + [ Species.BARBARACLE, PokemonType.ROCK, PokemonType.WATER, [ [ Biome.BEACH, BiomePoolTier.COMMON ], [ Biome.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.SKRELP, Type.POISON, Type.WATER, [ + [ Species.SKRELP, PokemonType.POISON, PokemonType.WATER, [ [ Biome.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.DRAGALGE, Type.POISON, Type.DRAGON, [ + [ Species.DRAGALGE, PokemonType.POISON, PokemonType.DRAGON, [ [ Biome.SEABED, BiomePoolTier.UNCOMMON ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.CLAUNCHER, Type.WATER, -1, [ + [ Species.CLAUNCHER, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CLAWITZER, Type.WATER, -1, [ + [ Species.CLAWITZER, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.UNCOMMON ], [ Biome.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.HELIOPTILE, Type.ELECTRIC, Type.NORMAL, [ + [ Species.HELIOPTILE, PokemonType.ELECTRIC, PokemonType.NORMAL, [ [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HELIOLISK, Type.ELECTRIC, Type.NORMAL, [ + [ Species.HELIOLISK, PokemonType.ELECTRIC, PokemonType.NORMAL, [ [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TYRUNT, Type.ROCK, Type.DRAGON, [ + [ Species.TYRUNT, PokemonType.ROCK, PokemonType.DRAGON, [ [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.TYRANTRUM, Type.ROCK, Type.DRAGON, [ + [ Species.TYRANTRUM, PokemonType.ROCK, PokemonType.DRAGON, [ [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.AMAURA, Type.ROCK, Type.ICE, [ + [ Species.AMAURA, PokemonType.ROCK, PokemonType.ICE, [ [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.AURORUS, Type.ROCK, Type.ICE, [ + [ Species.AURORUS, PokemonType.ROCK, PokemonType.ICE, [ [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SYLVEON, Type.FAIRY, -1, [ + [ Species.SYLVEON, PokemonType.FAIRY, -1, [ [ Biome.MEADOW, BiomePoolTier.SUPER_RARE ], [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HAWLUCHA, Type.FIGHTING, Type.FLYING, [ + [ Species.HAWLUCHA, PokemonType.FIGHTING, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.RARE ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DEDENNE, Type.ELECTRIC, Type.FAIRY, [ + [ Species.DEDENNE, PokemonType.ELECTRIC, PokemonType.FAIRY, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.CARBINK, Type.ROCK, Type.FAIRY, [ + [ Species.CARBINK, PokemonType.ROCK, PokemonType.FAIRY, [ [ Biome.CAVE, BiomePoolTier.RARE ], [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.GOOMY, Type.DRAGON, -1, [ + [ Species.GOOMY, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SLIGGOO, Type.DRAGON, -1, [ + [ Species.SLIGGOO, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GOODRA, Type.DRAGON, -1, [ + [ Species.GOODRA, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.KLEFKI, Type.STEEL, Type.FAIRY, [ + [ Species.KLEFKI, PokemonType.STEEL, PokemonType.FAIRY, [ [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], [ Biome.FACTORY, BiomePoolTier.BOSS ] ] ], - [ Species.PHANTUMP, Type.GHOST, Type.GRASS, [ + [ Species.PHANTUMP, PokemonType.GHOST, PokemonType.GRASS, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.TREVENANT, Type.GHOST, Type.GRASS, [ + [ Species.TREVENANT, PokemonType.GHOST, PokemonType.GRASS, [ [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.PUMPKABOO, Type.GHOST, Type.GRASS, [ + [ Species.PUMPKABOO, PokemonType.GHOST, PokemonType.GRASS, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.GOURGEIST, Type.GHOST, Type.GRASS, [ + [ Species.GOURGEIST, PokemonType.GHOST, PokemonType.GRASS, [ [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.BERGMITE, Type.ICE, -1, [ + [ Species.BERGMITE, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.AVALUGG, Type.ICE, -1, [ + [ Species.AVALUGG, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.NOIBAT, Type.FLYING, Type.DRAGON, [ + [ Species.NOIBAT, PokemonType.FLYING, PokemonType.DRAGON, [ [ Biome.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.NOIVERN, Type.FLYING, Type.DRAGON, [ + [ Species.NOIVERN, PokemonType.FLYING, PokemonType.DRAGON, [ [ Biome.CAVE, BiomePoolTier.UNCOMMON ], [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.XERNEAS, Type.FAIRY, -1, [ + [ Species.XERNEAS, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.YVELTAL, Type.DARK, Type.FLYING, [ + [ Species.YVELTAL, PokemonType.DARK, PokemonType.FLYING, [ [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ZYGARDE, Type.DRAGON, Type.GROUND, [ + [ Species.ZYGARDE, PokemonType.DRAGON, PokemonType.GROUND, [ [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.DIANCIE, Type.ROCK, Type.FAIRY, [ + [ Species.DIANCIE, PokemonType.ROCK, PokemonType.FAIRY, [ [ Biome.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.HOOPA, Type.PSYCHIC, Type.GHOST, [ + [ Species.HOOPA, PokemonType.PSYCHIC, PokemonType.GHOST, [ [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.VOLCANION, Type.FIRE, Type.WATER, [ + [ Species.VOLCANION, PokemonType.FIRE, PokemonType.WATER, [ [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ROWLET, Type.GRASS, Type.FLYING, [ + [ Species.ROWLET, PokemonType.GRASS, PokemonType.FLYING, [ [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.DARTRIX, Type.GRASS, Type.FLYING, [ + [ Species.DARTRIX, PokemonType.GRASS, PokemonType.FLYING, [ [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.DECIDUEYE, Type.GRASS, Type.GHOST, [ + [ Species.DECIDUEYE, PokemonType.GRASS, PokemonType.GHOST, [ [ Biome.FOREST, BiomePoolTier.RARE ], [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.LITTEN, Type.FIRE, -1, [ + [ Species.LITTEN, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.TORRACAT, Type.FIRE, -1, [ + [ Species.TORRACAT, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.INCINEROAR, Type.FIRE, Type.DARK, [ + [ Species.INCINEROAR, PokemonType.FIRE, PokemonType.DARK, [ [ Biome.VOLCANO, BiomePoolTier.RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.POPPLIO, Type.WATER, -1, [ + [ Species.POPPLIO, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.RARE ] ] ], - [ Species.BRIONNE, Type.WATER, -1, [ + [ Species.BRIONNE, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.RARE ] ] ], - [ Species.PRIMARINA, Type.WATER, Type.FAIRY, [ + [ Species.PRIMARINA, PokemonType.WATER, PokemonType.FAIRY, [ [ Biome.SEA, BiomePoolTier.RARE ], [ Biome.SEA, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PIKIPEK, Type.NORMAL, Type.FLYING, [ + [ Species.PIKIPEK, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.TRUMBEAK, Type.NORMAL, Type.FLYING, [ + [ Species.TRUMBEAK, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.JUNGLE, BiomePoolTier.COMMON ] ] ], - [ Species.TOUCANNON, Type.NORMAL, Type.FLYING, [ + [ Species.TOUCANNON, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.JUNGLE, BiomePoolTier.COMMON ], [ Biome.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.YUNGOOS, Type.NORMAL, -1, [ + [ Species.YUNGOOS, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GUMSHOOS, Type.NORMAL, -1, [ + [ Species.GUMSHOOS, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GRUBBIN, Type.BUG, -1, [ + [ Species.GRUBBIN, PokemonType.BUG, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.CHARJABUG, Type.BUG, Type.ELECTRIC, [ + [ Species.CHARJABUG, PokemonType.BUG, PokemonType.ELECTRIC, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.VIKAVOLT, Type.BUG, Type.ELECTRIC, [ + [ Species.VIKAVOLT, PokemonType.BUG, PokemonType.ELECTRIC, [ [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.CRABRAWLER, Type.FIGHTING, -1, [ + [ Species.CRABRAWLER, PokemonType.FIGHTING, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.CRABOMINABLE, Type.FIGHTING, Type.ICE, [ + [ Species.CRABOMINABLE, PokemonType.FIGHTING, PokemonType.ICE, [ [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ORICORIO, Type.FIRE, Type.FLYING, [ + [ Species.ORICORIO, PokemonType.FIRE, PokemonType.FLYING, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], [ Biome.ISLAND, BiomePoolTier.COMMON ], [ Biome.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.CUTIEFLY, Type.BUG, Type.FAIRY, [ + [ Species.CUTIEFLY, PokemonType.BUG, PokemonType.FAIRY, [ [ Biome.MEADOW, BiomePoolTier.COMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.RIBOMBEE, Type.BUG, Type.FAIRY, [ + [ Species.RIBOMBEE, PokemonType.BUG, PokemonType.FAIRY, [ [ Biome.MEADOW, BiomePoolTier.COMMON ], [ Biome.MEADOW, BiomePoolTier.BOSS ], [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ROCKRUFF, Type.ROCK, -1, [ + [ Species.ROCKRUFF, PokemonType.ROCK, -1, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], [ Biome.CAVE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ] ] ], - [ Species.LYCANROC, Type.ROCK, -1, [ + [ Species.LYCANROC, PokemonType.ROCK, -1, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ], [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], @@ -5608,1529 +5608,1529 @@ export function initBiomes() { [ Biome.CAVE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] ] ], - [ Species.WISHIWASHI, Type.WATER, -1, [ + [ Species.WISHIWASHI, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.UNCOMMON ], [ Biome.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.MAREANIE, Type.POISON, Type.WATER, [ + [ Species.MAREANIE, PokemonType.POISON, PokemonType.WATER, [ [ Biome.BEACH, BiomePoolTier.COMMON ], [ Biome.SWAMP, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TOXAPEX, Type.POISON, Type.WATER, [ + [ Species.TOXAPEX, PokemonType.POISON, PokemonType.WATER, [ [ Biome.BEACH, BiomePoolTier.COMMON ], [ Biome.BEACH, BiomePoolTier.BOSS ], [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], [ Biome.SWAMP, BiomePoolTier.BOSS ] ] ], - [ Species.MUDBRAY, Type.GROUND, -1, [ + [ Species.MUDBRAY, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.COMMON ] ] ], - [ Species.MUDSDALE, Type.GROUND, -1, [ + [ Species.MUDSDALE, PokemonType.GROUND, -1, [ [ Biome.BADLANDS, BiomePoolTier.COMMON ], [ Biome.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.DEWPIDER, Type.WATER, Type.BUG, [ + [ Species.DEWPIDER, PokemonType.WATER, PokemonType.BUG, [ [ Biome.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ARAQUANID, Type.WATER, Type.BUG, [ + [ Species.ARAQUANID, PokemonType.WATER, PokemonType.BUG, [ [ Biome.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FOMANTIS, Type.GRASS, -1, [ + [ Species.FOMANTIS, PokemonType.GRASS, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.LURANTIS, Type.GRASS, -1, [ + [ Species.LURANTIS, PokemonType.GRASS, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], [ Biome.TALL_GRASS, BiomePoolTier.BOSS ], [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], [ Biome.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.MORELULL, Type.GRASS, Type.FAIRY, [ + [ Species.MORELULL, PokemonType.GRASS, PokemonType.FAIRY, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.SHIINOTIC, Type.GRASS, Type.FAIRY, [ + [ Species.SHIINOTIC, PokemonType.GRASS, PokemonType.FAIRY, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SALANDIT, Type.POISON, Type.FIRE, [ + [ Species.SALANDIT, PokemonType.POISON, PokemonType.FIRE, [ [ Biome.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.SALAZZLE, Type.POISON, Type.FIRE, [ + [ Species.SALAZZLE, PokemonType.POISON, PokemonType.FIRE, [ [ Biome.VOLCANO, BiomePoolTier.COMMON ], [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.STUFFUL, Type.NORMAL, Type.FIGHTING, [ + [ Species.STUFFUL, PokemonType.NORMAL, PokemonType.FIGHTING, [ [ Biome.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.BEWEAR, Type.NORMAL, Type.FIGHTING, [ + [ Species.BEWEAR, PokemonType.NORMAL, PokemonType.FIGHTING, [ [ Biome.DOJO, BiomePoolTier.COMMON ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.BOUNSWEET, Type.GRASS, -1, [ + [ Species.BOUNSWEET, PokemonType.GRASS, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.STEENEE, Type.GRASS, -1, [ + [ Species.STEENEE, PokemonType.GRASS, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TSAREENA, Type.GRASS, -1, [ + [ Species.TSAREENA, PokemonType.GRASS, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.COMFEY, Type.FAIRY, -1, [ + [ Species.COMFEY, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.ORANGURU, Type.NORMAL, Type.PSYCHIC, [ + [ Species.ORANGURU, PokemonType.NORMAL, PokemonType.PSYCHIC, [ [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PASSIMIAN, Type.FIGHTING, -1, [ + [ Species.PASSIMIAN, PokemonType.FIGHTING, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.WIMPOD, Type.BUG, Type.WATER, [ + [ Species.WIMPOD, PokemonType.BUG, PokemonType.WATER, [ [ Biome.CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GOLISOPOD, Type.BUG, Type.WATER, [ + [ Species.GOLISOPOD, PokemonType.BUG, PokemonType.WATER, [ [ Biome.CAVE, BiomePoolTier.UNCOMMON ], [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.SANDYGAST, Type.GHOST, Type.GROUND, [ + [ Species.SANDYGAST, PokemonType.GHOST, PokemonType.GROUND, [ [ Biome.BEACH, BiomePoolTier.UNCOMMON ] ] ], - [ Species.PALOSSAND, Type.GHOST, Type.GROUND, [ + [ Species.PALOSSAND, PokemonType.GHOST, PokemonType.GROUND, [ [ Biome.BEACH, BiomePoolTier.UNCOMMON ], [ Biome.BEACH, BiomePoolTier.BOSS ] ] ], - [ Species.PYUKUMUKU, Type.WATER, -1, [ + [ Species.PYUKUMUKU, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TYPE_NULL, Type.NORMAL, -1, [ + [ Species.TYPE_NULL, PokemonType.NORMAL, -1, [ [ Biome.LABORATORY, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.SILVALLY, Type.NORMAL, -1, [ + [ Species.SILVALLY, PokemonType.NORMAL, -1, [ [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MINIOR, Type.ROCK, Type.FLYING, [ + [ Species.MINIOR, PokemonType.ROCK, PokemonType.FLYING, [ [ Biome.SPACE, BiomePoolTier.COMMON ], [ Biome.SPACE, BiomePoolTier.BOSS ] ] ], - [ Species.KOMALA, Type.NORMAL, -1, [ + [ Species.KOMALA, PokemonType.NORMAL, -1, [ [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TURTONATOR, Type.FIRE, Type.DRAGON, [ + [ Species.TURTONATOR, PokemonType.FIRE, PokemonType.DRAGON, [ [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.TOGEDEMARU, Type.ELECTRIC, Type.STEEL, [ + [ Species.TOGEDEMARU, PokemonType.ELECTRIC, PokemonType.STEEL, [ [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.MIMIKYU, Type.GHOST, Type.FAIRY, [ + [ Species.MIMIKYU, PokemonType.GHOST, PokemonType.FAIRY, [ [ Biome.GRAVEYARD, BiomePoolTier.RARE ], [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.BRUXISH, Type.WATER, Type.PSYCHIC, [ + [ Species.BRUXISH, PokemonType.WATER, PokemonType.PSYCHIC, [ [ Biome.ISLAND, BiomePoolTier.UNCOMMON ], [ Biome.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.DRAMPA, Type.NORMAL, Type.DRAGON, [ + [ Species.DRAMPA, PokemonType.NORMAL, PokemonType.DRAGON, [ [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ], [ Biome.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.DHELMISE, Type.GHOST, Type.GRASS, [ + [ Species.DHELMISE, PokemonType.GHOST, PokemonType.GRASS, [ [ Biome.SEABED, BiomePoolTier.RARE ], [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.JANGMO_O, Type.DRAGON, -1, [ + [ Species.JANGMO_O, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HAKAMO_O, Type.DRAGON, Type.FIGHTING, [ + [ Species.HAKAMO_O, PokemonType.DRAGON, PokemonType.FIGHTING, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.KOMMO_O, Type.DRAGON, Type.FIGHTING, [ + [ Species.KOMMO_O, PokemonType.DRAGON, PokemonType.FIGHTING, [ [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TAPU_KOKO, Type.ELECTRIC, Type.FAIRY, [ + [ Species.TAPU_KOKO, PokemonType.ELECTRIC, PokemonType.FAIRY, [ [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TAPU_LELE, Type.PSYCHIC, Type.FAIRY, [ + [ Species.TAPU_LELE, PokemonType.PSYCHIC, PokemonType.FAIRY, [ [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TAPU_BULU, Type.GRASS, Type.FAIRY, [ + [ Species.TAPU_BULU, PokemonType.GRASS, PokemonType.FAIRY, [ [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TAPU_FINI, Type.WATER, Type.FAIRY, [ + [ Species.TAPU_FINI, PokemonType.WATER, PokemonType.FAIRY, [ [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.COSMOG, Type.PSYCHIC, -1, [ + [ Species.COSMOG, PokemonType.PSYCHIC, -1, [ [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.COSMOEM, Type.PSYCHIC, -1, [ + [ Species.COSMOEM, PokemonType.PSYCHIC, -1, [ [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.SOLGALEO, Type.PSYCHIC, Type.STEEL, [ + [ Species.SOLGALEO, PokemonType.PSYCHIC, PokemonType.STEEL, [ [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.DAY ] ] ], - [ Species.LUNALA, Type.PSYCHIC, Type.GHOST, [ + [ Species.LUNALA, PokemonType.PSYCHIC, PokemonType.GHOST, [ [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.NIGHT ] ] ], - [ Species.NIHILEGO, Type.ROCK, Type.POISON, [ + [ Species.NIHILEGO, PokemonType.ROCK, PokemonType.POISON, [ [ Biome.SEABED, BiomePoolTier.ULTRA_RARE ], [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.BUZZWOLE, Type.BUG, Type.FIGHTING, [ + [ Species.BUZZWOLE, PokemonType.BUG, PokemonType.FIGHTING, [ [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.PHEROMOSA, Type.BUG, Type.FIGHTING, [ + [ Species.PHEROMOSA, PokemonType.BUG, PokemonType.FIGHTING, [ [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.XURKITREE, Type.ELECTRIC, -1, [ + [ Species.XURKITREE, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CELESTEELA, Type.STEEL, Type.FLYING, [ + [ Species.CELESTEELA, PokemonType.STEEL, PokemonType.FLYING, [ [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ], [ Biome.SPACE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.KARTANA, Type.GRASS, Type.STEEL, [ + [ Species.KARTANA, PokemonType.GRASS, PokemonType.STEEL, [ [ Biome.FOREST, BiomePoolTier.ULTRA_RARE ], [ Biome.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.GUZZLORD, Type.DARK, Type.DRAGON, [ + [ Species.GUZZLORD, PokemonType.DARK, PokemonType.DRAGON, [ [ Biome.SLUM, BiomePoolTier.ULTRA_RARE ], [ Biome.SLUM, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.NECROZMA, Type.PSYCHIC, -1, [ + [ Species.NECROZMA, PokemonType.PSYCHIC, -1, [ [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.MAGEARNA, Type.STEEL, Type.FAIRY, [ + [ Species.MAGEARNA, PokemonType.STEEL, PokemonType.FAIRY, [ [ Biome.FACTORY, BiomePoolTier.ULTRA_RARE ], [ Biome.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MARSHADOW, Type.FIGHTING, Type.GHOST, [ + [ Species.MARSHADOW, PokemonType.FIGHTING, PokemonType.GHOST, [ [ Biome.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.POIPOLE, Type.POISON, -1, [ + [ Species.POIPOLE, PokemonType.POISON, -1, [ [ Biome.SWAMP, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.NAGANADEL, Type.POISON, Type.DRAGON, [ + [ Species.NAGANADEL, PokemonType.POISON, PokemonType.DRAGON, [ [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.STAKATAKA, Type.ROCK, Type.STEEL, [ + [ Species.STAKATAKA, PokemonType.ROCK, PokemonType.STEEL, [ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.BLACEPHALON, Type.FIRE, Type.GHOST, [ + [ Species.BLACEPHALON, PokemonType.FIRE, PokemonType.GHOST, [ [ Biome.ISLAND, BiomePoolTier.ULTRA_RARE ], [ Biome.ISLAND, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ZERAORA, Type.ELECTRIC, -1, [ + [ Species.ZERAORA, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MELTAN, Type.STEEL, -1, [ ] + [ Species.MELTAN, PokemonType.STEEL, -1, [ ] ], - [ Species.MELMETAL, Type.STEEL, -1, [ ] + [ Species.MELMETAL, PokemonType.STEEL, -1, [ ] ], - [ Species.GROOKEY, Type.GRASS, -1, [ + [ Species.GROOKEY, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.THWACKEY, Type.GRASS, -1, [ + [ Species.THWACKEY, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ] ] ], - [ Species.RILLABOOM, Type.GRASS, -1, [ + [ Species.RILLABOOM, PokemonType.GRASS, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SCORBUNNY, Type.FIRE, -1, [ + [ Species.SCORBUNNY, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.RABOOT, Type.FIRE, -1, [ + [ Species.RABOOT, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.CINDERACE, Type.FIRE, -1, [ + [ Species.CINDERACE, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SOBBLE, Type.WATER, -1, [ + [ Species.SOBBLE, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.DRIZZILE, Type.WATER, -1, [ + [ Species.DRIZZILE, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ] ] ], - [ Species.INTELEON, Type.WATER, -1, [ + [ Species.INTELEON, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.RARE ], [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SKWOVET, Type.NORMAL, -1, [ + [ Species.SKWOVET, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GREEDENT, Type.NORMAL, -1, [ + [ Species.GREEDENT, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ROOKIDEE, Type.FLYING, -1, [ + [ Species.ROOKIDEE, PokemonType.FLYING, -1, [ [ Biome.TOWN, BiomePoolTier.RARE ], [ Biome.PLAINS, BiomePoolTier.RARE ], [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CORVISQUIRE, Type.FLYING, -1, [ + [ Species.CORVISQUIRE, PokemonType.FLYING, -1, [ [ Biome.PLAINS, BiomePoolTier.RARE ], [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CORVIKNIGHT, Type.FLYING, Type.STEEL, [ + [ Species.CORVIKNIGHT, PokemonType.FLYING, PokemonType.STEEL, [ [ Biome.PLAINS, BiomePoolTier.RARE ], [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BLIPBUG, Type.BUG, -1, [ + [ Species.BLIPBUG, PokemonType.BUG, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DOTTLER, Type.BUG, Type.PSYCHIC, [ + [ Species.DOTTLER, PokemonType.BUG, PokemonType.PSYCHIC, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ORBEETLE, Type.BUG, Type.PSYCHIC, [ + [ Species.ORBEETLE, PokemonType.BUG, PokemonType.PSYCHIC, [ [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.NICKIT, Type.DARK, -1, [ + [ Species.NICKIT, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.THIEVUL, Type.DARK, -1, [ + [ Species.THIEVUL, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.COMMON ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.GOSSIFLEUR, Type.GRASS, -1, [ + [ Species.GOSSIFLEUR, PokemonType.GRASS, -1, [ [ Biome.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.ELDEGOSS, Type.GRASS, -1, [ + [ Species.ELDEGOSS, PokemonType.GRASS, -1, [ [ Biome.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.WOOLOO, Type.NORMAL, -1, [ + [ Species.WOOLOO, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.MEADOW, BiomePoolTier.COMMON ] ] ], - [ Species.DUBWOOL, Type.NORMAL, -1, [ + [ Species.DUBWOOL, PokemonType.NORMAL, -1, [ [ Biome.MEADOW, BiomePoolTier.COMMON ], [ Biome.MEADOW, BiomePoolTier.BOSS ] ] ], - [ Species.CHEWTLE, Type.WATER, -1, [ + [ Species.CHEWTLE, PokemonType.WATER, -1, [ [ Biome.LAKE, BiomePoolTier.COMMON ] ] ], - [ Species.DREDNAW, Type.WATER, Type.ROCK, [ + [ Species.DREDNAW, PokemonType.WATER, PokemonType.ROCK, [ [ Biome.LAKE, BiomePoolTier.COMMON ], [ Biome.LAKE, BiomePoolTier.BOSS ] ] ], - [ Species.YAMPER, Type.ELECTRIC, -1, [ + [ Species.YAMPER, PokemonType.ELECTRIC, -1, [ [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.BOLTUND, Type.ELECTRIC, -1, [ + [ Species.BOLTUND, PokemonType.ELECTRIC, -1, [ [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ROLYCOLY, Type.ROCK, -1, [ + [ Species.ROLYCOLY, PokemonType.ROCK, -1, [ [ Biome.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.CARKOL, Type.ROCK, Type.FIRE, [ + [ Species.CARKOL, PokemonType.ROCK, PokemonType.FIRE, [ [ Biome.VOLCANO, BiomePoolTier.COMMON ] ] ], - [ Species.COALOSSAL, Type.ROCK, Type.FIRE, [ + [ Species.COALOSSAL, PokemonType.ROCK, PokemonType.FIRE, [ [ Biome.VOLCANO, BiomePoolTier.COMMON ], [ Biome.VOLCANO, BiomePoolTier.BOSS ] ] ], - [ Species.APPLIN, Type.GRASS, Type.DRAGON, [ + [ Species.APPLIN, PokemonType.GRASS, PokemonType.DRAGON, [ [ Biome.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.FLAPPLE, Type.GRASS, Type.DRAGON, [ + [ Species.FLAPPLE, PokemonType.GRASS, PokemonType.DRAGON, [ [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.APPLETUN, Type.GRASS, Type.DRAGON, [ + [ Species.APPLETUN, PokemonType.GRASS, PokemonType.DRAGON, [ [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SILICOBRA, Type.GROUND, -1, [ + [ Species.SILICOBRA, PokemonType.GROUND, -1, [ [ Biome.DESERT, BiomePoolTier.COMMON ] ] ], - [ Species.SANDACONDA, Type.GROUND, -1, [ + [ Species.SANDACONDA, PokemonType.GROUND, -1, [ [ Biome.DESERT, BiomePoolTier.COMMON ], [ Biome.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.CRAMORANT, Type.FLYING, Type.WATER, [ + [ Species.CRAMORANT, PokemonType.FLYING, PokemonType.WATER, [ [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ARROKUDA, Type.WATER, -1, [ + [ Species.ARROKUDA, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.BARRASKEWDA, Type.WATER, -1, [ + [ Species.BARRASKEWDA, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.COMMON ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.TOXEL, Type.ELECTRIC, Type.POISON, [ ] + [ Species.TOXEL, PokemonType.ELECTRIC, PokemonType.POISON, [ ] ], - [ Species.TOXTRICITY, Type.ELECTRIC, Type.POISON, [ + [ Species.TOXTRICITY, PokemonType.ELECTRIC, PokemonType.POISON, [ [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.SIZZLIPEDE, Type.FIRE, Type.BUG, [ + [ Species.SIZZLIPEDE, PokemonType.FIRE, PokemonType.BUG, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CENTISKORCH, Type.FIRE, Type.BUG, [ + [ Species.CENTISKORCH, PokemonType.FIRE, PokemonType.BUG, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.CLOBBOPUS, Type.FIGHTING, -1, [ + [ Species.CLOBBOPUS, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.COMMON ] ] ], - [ Species.GRAPPLOCT, Type.FIGHTING, -1, [ + [ Species.GRAPPLOCT, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.COMMON ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.SINISTEA, Type.GHOST, -1, [ + [ Species.SINISTEA, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] ] ], - [ Species.POLTEAGEIST, Type.GHOST, -1, [ + [ Species.POLTEAGEIST, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.HATENNA, Type.PSYCHIC, -1, [ + [ Species.HATENNA, PokemonType.PSYCHIC, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.HATTREM, Type.PSYCHIC, -1, [ + [ Species.HATTREM, PokemonType.PSYCHIC, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.HATTERENE, Type.PSYCHIC, Type.FAIRY, [ + [ Species.HATTERENE, PokemonType.PSYCHIC, PokemonType.FAIRY, [ [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.IMPIDIMP, Type.DARK, Type.FAIRY, [ + [ Species.IMPIDIMP, PokemonType.DARK, PokemonType.FAIRY, [ [ Biome.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.MORGREM, Type.DARK, Type.FAIRY, [ + [ Species.MORGREM, PokemonType.DARK, PokemonType.FAIRY, [ [ Biome.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.GRIMMSNARL, Type.DARK, Type.FAIRY, [ + [ Species.GRIMMSNARL, PokemonType.DARK, PokemonType.FAIRY, [ [ Biome.ABYSS, BiomePoolTier.COMMON ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.OBSTAGOON, Type.DARK, Type.NORMAL, [ + [ Species.OBSTAGOON, PokemonType.DARK, PokemonType.NORMAL, [ [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.PERRSERKER, Type.STEEL, -1, [ + [ Species.PERRSERKER, PokemonType.STEEL, -1, [ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ], [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] ] ], - [ Species.CURSOLA, Type.GHOST, -1, [ + [ Species.CURSOLA, PokemonType.GHOST, -1, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SIRFETCHD, Type.FIGHTING, -1, [ + [ Species.SIRFETCHD, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.MR_RIME, Type.ICE, Type.PSYCHIC, [ + [ Species.MR_RIME, PokemonType.ICE, PokemonType.PSYCHIC, [ [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.RUNERIGUS, Type.GROUND, Type.GHOST, [ + [ Species.RUNERIGUS, PokemonType.GROUND, PokemonType.GHOST, [ [ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.RUINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.MILCERY, Type.FAIRY, -1, [ + [ Species.MILCERY, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.ALCREMIE, Type.FAIRY, -1, [ + [ Species.ALCREMIE, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.FALINKS, Type.FIGHTING, -1, [ + [ Species.FALINKS, PokemonType.FIGHTING, -1, [ [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], [ Biome.JUNGLE, BiomePoolTier.BOSS ] ] ], - [ Species.PINCURCHIN, Type.ELECTRIC, -1, [ + [ Species.PINCURCHIN, PokemonType.ELECTRIC, -1, [ [ Biome.SEABED, BiomePoolTier.UNCOMMON ] ] ], - [ Species.SNOM, Type.ICE, Type.BUG, [ + [ Species.SNOM, PokemonType.ICE, PokemonType.BUG, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FROSMOTH, Type.ICE, Type.BUG, [ + [ Species.FROSMOTH, PokemonType.ICE, PokemonType.BUG, [ [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.STONJOURNER, Type.ROCK, -1, [ + [ Species.STONJOURNER, PokemonType.ROCK, -1, [ [ Biome.RUINS, BiomePoolTier.RARE ] ] ], - [ Species.EISCUE, Type.ICE, -1, [ + [ Species.EISCUE, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.INDEEDEE, Type.PSYCHIC, Type.NORMAL, [ + [ Species.INDEEDEE, PokemonType.PSYCHIC, PokemonType.NORMAL, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.MORPEKO, Type.ELECTRIC, Type.DARK, [ + [ Species.MORPEKO, PokemonType.ELECTRIC, PokemonType.DARK, [ [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.CUFANT, Type.STEEL, -1, [ + [ Species.CUFANT, PokemonType.STEEL, -1, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.COPPERAJAH, Type.STEEL, -1, [ + [ Species.COPPERAJAH, PokemonType.STEEL, -1, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], [ Biome.BADLANDS, BiomePoolTier.BOSS ] ] ], - [ Species.DRACOZOLT, Type.ELECTRIC, Type.DRAGON, [ + [ Species.DRACOZOLT, PokemonType.ELECTRIC, PokemonType.DRAGON, [ [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ARCTOZOLT, Type.ELECTRIC, Type.ICE, [ + [ Species.ARCTOZOLT, PokemonType.ELECTRIC, PokemonType.ICE, [ [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DRACOVISH, Type.WATER, Type.DRAGON, [ + [ Species.DRACOVISH, PokemonType.WATER, PokemonType.DRAGON, [ [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ARCTOVISH, Type.WATER, Type.ICE, [ + [ Species.ARCTOVISH, PokemonType.WATER, PokemonType.ICE, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DURALUDON, Type.STEEL, Type.DRAGON, [ + [ Species.DURALUDON, PokemonType.STEEL, PokemonType.DRAGON, [ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] ] ], - [ Species.DREEPY, Type.DRAGON, Type.GHOST, [ + [ Species.DREEPY, PokemonType.DRAGON, PokemonType.GHOST, [ [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DRAKLOAK, Type.DRAGON, Type.GHOST, [ + [ Species.DRAKLOAK, PokemonType.DRAGON, PokemonType.GHOST, [ [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.DRAGAPULT, Type.DRAGON, Type.GHOST, [ + [ Species.DRAGAPULT, PokemonType.DRAGON, PokemonType.GHOST, [ [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ZACIAN, Type.FAIRY, -1, [ + [ Species.ZACIAN, PokemonType.FAIRY, -1, [ [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ZAMAZENTA, Type.FIGHTING, -1, [ + [ Species.ZAMAZENTA, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.ETERNATUS, Type.POISON, Type.DRAGON, [ + [ Species.ETERNATUS, PokemonType.POISON, PokemonType.DRAGON, [ [ Biome.END, BiomePoolTier.BOSS ] ] ], - [ Species.KUBFU, Type.FIGHTING, -1, [ + [ Species.KUBFU, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ] ] ], - [ Species.URSHIFU, Type.FIGHTING, Type.DARK, [ + [ Species.URSHIFU, PokemonType.FIGHTING, PokemonType.DARK, [ [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ZARUDE, Type.DARK, Type.GRASS, [ + [ Species.ZARUDE, PokemonType.DARK, PokemonType.GRASS, [ [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGIELEKI, Type.ELECTRIC, -1, [ + [ Species.REGIELEKI, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.REGIDRAGO, Type.DRAGON, -1, [ + [ Species.REGIDRAGO, PokemonType.DRAGON, -1, [ [ Biome.WASTELAND, BiomePoolTier.ULTRA_RARE ], [ Biome.WASTELAND, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.GLASTRIER, Type.ICE, -1, [ + [ Species.GLASTRIER, PokemonType.ICE, -1, [ [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.SPECTRIER, Type.GHOST, -1, [ + [ Species.SPECTRIER, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CALYREX, Type.PSYCHIC, Type.GRASS, [ + [ Species.CALYREX, PokemonType.PSYCHIC, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.WYRDEER, Type.NORMAL, Type.PSYCHIC, [ + [ Species.WYRDEER, PokemonType.NORMAL, PokemonType.PSYCHIC, [ [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.KLEAVOR, Type.BUG, Type.ROCK, [ + [ Species.KLEAVOR, PokemonType.BUG, PokemonType.ROCK, [ [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.URSALUNA, Type.GROUND, Type.NORMAL, [ + [ Species.URSALUNA, PokemonType.GROUND, PokemonType.NORMAL, [ [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.BASCULEGION, Type.WATER, Type.GHOST, [ + [ Species.BASCULEGION, PokemonType.WATER, PokemonType.GHOST, [ [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.SNEASLER, Type.FIGHTING, Type.POISON, [ + [ Species.SNEASLER, PokemonType.FIGHTING, PokemonType.POISON, [ [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.OVERQWIL, Type.DARK, Type.POISON, [ + [ Species.OVERQWIL, PokemonType.DARK, PokemonType.POISON, [ [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ENAMORUS, Type.FAIRY, Type.FLYING, [ + [ Species.ENAMORUS, PokemonType.FAIRY, PokemonType.FLYING, [ [ Biome.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.SPRIGATITO, Type.GRASS, -1, [ + [ Species.SPRIGATITO, PokemonType.GRASS, -1, [ [ Biome.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.FLORAGATO, Type.GRASS, -1, [ + [ Species.FLORAGATO, PokemonType.GRASS, -1, [ [ Biome.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.MEOWSCARADA, Type.GRASS, Type.DARK, [ + [ Species.MEOWSCARADA, PokemonType.GRASS, PokemonType.DARK, [ [ Biome.MEADOW, BiomePoolTier.RARE ], [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.FUECOCO, Type.FIRE, -1, [ + [ Species.FUECOCO, PokemonType.FIRE, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.RARE ] ] ], - [ Species.CROCALOR, Type.FIRE, -1, [ + [ Species.CROCALOR, PokemonType.FIRE, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.RARE ] ] ], - [ Species.SKELEDIRGE, Type.FIRE, Type.GHOST, [ + [ Species.SKELEDIRGE, PokemonType.FIRE, PokemonType.GHOST, [ [ Biome.GRAVEYARD, BiomePoolTier.RARE ], [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.QUAXLY, Type.WATER, -1, [ + [ Species.QUAXLY, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.RARE ] ] ], - [ Species.QUAXWELL, Type.WATER, -1, [ + [ Species.QUAXWELL, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.RARE ] ] ], - [ Species.QUAQUAVAL, Type.WATER, Type.FIGHTING, [ + [ Species.QUAQUAVAL, PokemonType.WATER, PokemonType.FIGHTING, [ [ Biome.BEACH, BiomePoolTier.RARE ], [ Biome.BEACH, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.LECHONK, Type.NORMAL, -1, [ + [ Species.LECHONK, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.COMMON ], [ Biome.PLAINS, BiomePoolTier.COMMON ] ] ], - [ Species.OINKOLOGNE, Type.NORMAL, -1, [ + [ Species.OINKOLOGNE, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.COMMON ], [ Biome.PLAINS, BiomePoolTier.BOSS ] ] ], - [ Species.TAROUNTULA, Type.BUG, -1, [ + [ Species.TAROUNTULA, PokemonType.BUG, -1, [ [ Biome.FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.SPIDOPS, Type.BUG, -1, [ + [ Species.SPIDOPS, PokemonType.BUG, -1, [ [ Biome.FOREST, BiomePoolTier.COMMON ], [ Biome.FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.NYMBLE, Type.BUG, -1, [ + [ Species.NYMBLE, PokemonType.BUG, -1, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], [ Biome.FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.LOKIX, Type.BUG, Type.DARK, [ + [ Species.LOKIX, PokemonType.BUG, PokemonType.DARK, [ [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], [ Biome.TALL_GRASS, BiomePoolTier.BOSS ], [ Biome.FOREST, BiomePoolTier.COMMON ], [ Biome.FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.PAWMI, Type.ELECTRIC, -1, [ + [ Species.PAWMI, PokemonType.ELECTRIC, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.PAWMO, Type.ELECTRIC, Type.FIGHTING, [ + [ Species.PAWMO, PokemonType.ELECTRIC, PokemonType.FIGHTING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.PAWMOT, Type.ELECTRIC, Type.FIGHTING, [ + [ Species.PAWMOT, PokemonType.ELECTRIC, PokemonType.FIGHTING, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.TANDEMAUS, Type.NORMAL, -1, [ + [ Species.TANDEMAUS, PokemonType.NORMAL, -1, [ [ Biome.TOWN, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.MAUSHOLD, Type.NORMAL, -1, [ + [ Species.MAUSHOLD, PokemonType.NORMAL, -1, [ [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FIDOUGH, Type.FAIRY, -1, [ + [ Species.FIDOUGH, PokemonType.FAIRY, -1, [ [ Biome.TOWN, BiomePoolTier.UNCOMMON ], [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.DACHSBUN, Type.FAIRY, -1, [ + [ Species.DACHSBUN, PokemonType.FAIRY, -1, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], [ Biome.METROPOLIS, BiomePoolTier.BOSS ] ] ], - [ Species.SMOLIV, Type.GRASS, Type.NORMAL, [ + [ Species.SMOLIV, PokemonType.GRASS, PokemonType.NORMAL, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.DOLLIV, Type.GRASS, Type.NORMAL, [ + [ Species.DOLLIV, PokemonType.GRASS, PokemonType.NORMAL, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ARBOLIVA, Type.GRASS, Type.NORMAL, [ + [ Species.ARBOLIVA, PokemonType.GRASS, PokemonType.NORMAL, [ [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SQUAWKABILLY, Type.NORMAL, Type.FLYING, [ + [ Species.SQUAWKABILLY, PokemonType.NORMAL, PokemonType.FLYING, [ [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.NACLI, Type.ROCK, -1, [ + [ Species.NACLI, PokemonType.ROCK, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.NACLSTACK, Type.ROCK, -1, [ + [ Species.NACLSTACK, PokemonType.ROCK, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.CAVE, BiomePoolTier.COMMON ] ] ], - [ Species.GARGANACL, Type.ROCK, -1, [ + [ Species.GARGANACL, PokemonType.ROCK, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS ], [ Biome.CAVE, BiomePoolTier.COMMON ], [ Biome.CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.CHARCADET, Type.FIRE, -1, [ + [ Species.CHARCADET, PokemonType.FIRE, -1, [ [ Biome.VOLCANO, BiomePoolTier.RARE ] ] ], - [ Species.ARMAROUGE, Type.FIRE, Type.PSYCHIC, [ + [ Species.ARMAROUGE, PokemonType.FIRE, PokemonType.PSYCHIC, [ [ Biome.VOLCANO, BiomePoolTier.RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CERULEDGE, Type.FIRE, Type.GHOST, [ + [ Species.CERULEDGE, PokemonType.FIRE, PokemonType.GHOST, [ [ Biome.GRAVEYARD, BiomePoolTier.RARE ], [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.TADBULB, Type.ELECTRIC, -1, [ + [ Species.TADBULB, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] ] ], - [ Species.BELLIBOLT, Type.ELECTRIC, -1, [ + [ Species.BELLIBOLT, PokemonType.ELECTRIC, -1, [ [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] ] ], - [ Species.WATTREL, Type.ELECTRIC, Type.FLYING, [ + [ Species.WATTREL, PokemonType.ELECTRIC, PokemonType.FLYING, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KILOWATTREL, Type.ELECTRIC, Type.FLYING, [ + [ Species.KILOWATTREL, PokemonType.ELECTRIC, PokemonType.FLYING, [ [ Biome.SEA, BiomePoolTier.UNCOMMON ], [ Biome.SEA, BiomePoolTier.BOSS ] ] ], - [ Species.MASCHIFF, Type.DARK, -1, [ + [ Species.MASCHIFF, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.COMMON ] ] ], - [ Species.MABOSSTIFF, Type.DARK, -1, [ + [ Species.MABOSSTIFF, PokemonType.DARK, -1, [ [ Biome.ABYSS, BiomePoolTier.COMMON ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.SHROODLE, Type.POISON, Type.NORMAL, [ + [ Species.SHROODLE, PokemonType.POISON, PokemonType.NORMAL, [ [ Biome.FOREST, BiomePoolTier.COMMON ] ] ], - [ Species.GRAFAIAI, Type.POISON, Type.NORMAL, [ + [ Species.GRAFAIAI, PokemonType.POISON, PokemonType.NORMAL, [ [ Biome.FOREST, BiomePoolTier.COMMON ], [ Biome.FOREST, BiomePoolTier.BOSS ] ] ], - [ Species.BRAMBLIN, Type.GRASS, Type.GHOST, [ + [ Species.BRAMBLIN, PokemonType.GRASS, PokemonType.GHOST, [ [ Biome.DESERT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.BRAMBLEGHAST, Type.GRASS, Type.GHOST, [ + [ Species.BRAMBLEGHAST, PokemonType.GRASS, PokemonType.GHOST, [ [ Biome.DESERT, BiomePoolTier.UNCOMMON ], [ Biome.DESERT, BiomePoolTier.BOSS ] ] ], - [ Species.TOEDSCOOL, Type.GROUND, Type.GRASS, [ + [ Species.TOEDSCOOL, PokemonType.GROUND, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.RARE ] ] ], - [ Species.TOEDSCRUEL, Type.GROUND, Type.GRASS, [ + [ Species.TOEDSCRUEL, PokemonType.GROUND, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.RARE ], [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KLAWF, Type.ROCK, -1, [ + [ Species.KLAWF, PokemonType.ROCK, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.RARE ] ] ], - [ Species.CAPSAKID, Type.GRASS, -1, [ + [ Species.CAPSAKID, PokemonType.GRASS, -1, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.SCOVILLAIN, Type.GRASS, Type.FIRE, [ + [ Species.SCOVILLAIN, PokemonType.GRASS, PokemonType.FIRE, [ [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.RELLOR, Type.BUG, -1, [ + [ Species.RELLOR, PokemonType.BUG, -1, [ [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.RABSCA, Type.BUG, Type.PSYCHIC, [ + [ Species.RABSCA, PokemonType.BUG, PokemonType.PSYCHIC, [ [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FLITTLE, Type.PSYCHIC, -1, [ + [ Species.FLITTLE, PokemonType.PSYCHIC, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ESPATHRA, Type.PSYCHIC, -1, [ + [ Species.ESPATHRA, PokemonType.PSYCHIC, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.TINKATINK, Type.FAIRY, Type.STEEL, [ + [ Species.TINKATINK, PokemonType.FAIRY, PokemonType.STEEL, [ [ Biome.RUINS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TINKATUFF, Type.FAIRY, Type.STEEL, [ + [ Species.TINKATUFF, PokemonType.FAIRY, PokemonType.STEEL, [ [ Biome.RUINS, BiomePoolTier.UNCOMMON ] ] ], - [ Species.TINKATON, Type.FAIRY, Type.STEEL, [ + [ Species.TINKATON, PokemonType.FAIRY, PokemonType.STEEL, [ [ Biome.RUINS, BiomePoolTier.UNCOMMON ], [ Biome.RUINS, BiomePoolTier.BOSS ] ] ], - [ Species.WIGLETT, Type.WATER, -1, [ + [ Species.WIGLETT, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.WUGTRIO, Type.WATER, -1, [ + [ Species.WUGTRIO, PokemonType.WATER, -1, [ [ Biome.BEACH, BiomePoolTier.COMMON ] ] ], - [ Species.BOMBIRDIER, Type.FLYING, Type.DARK, [ + [ Species.BOMBIRDIER, PokemonType.FLYING, PokemonType.DARK, [ [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.FINIZEN, Type.WATER, -1, [ + [ Species.FINIZEN, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PALAFIN, Type.WATER, -1, [ + [ Species.PALAFIN, PokemonType.WATER, -1, [ [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.VAROOM, Type.STEEL, Type.POISON, [ + [ Species.VAROOM, PokemonType.STEEL, PokemonType.POISON, [ [ Biome.METROPOLIS, BiomePoolTier.RARE ], [ Biome.SLUM, BiomePoolTier.RARE ] ] ], - [ Species.REVAVROOM, Type.STEEL, Type.POISON, [ + [ Species.REVAVROOM, PokemonType.STEEL, PokemonType.POISON, [ [ Biome.METROPOLIS, BiomePoolTier.RARE ], [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE ], [ Biome.SLUM, BiomePoolTier.RARE ], [ Biome.SLUM, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.CYCLIZAR, Type.DRAGON, Type.NORMAL, [ + [ Species.CYCLIZAR, PokemonType.DRAGON, PokemonType.NORMAL, [ [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] ] ], - [ Species.ORTHWORM, Type.STEEL, -1, [ + [ Species.ORTHWORM, PokemonType.STEEL, -1, [ [ Biome.DESERT, BiomePoolTier.UNCOMMON ] ] ], - [ Species.GLIMMET, Type.ROCK, Type.POISON, [ + [ Species.GLIMMET, PokemonType.ROCK, PokemonType.POISON, [ [ Biome.CAVE, BiomePoolTier.RARE ] ] ], - [ Species.GLIMMORA, Type.ROCK, Type.POISON, [ + [ Species.GLIMMORA, PokemonType.ROCK, PokemonType.POISON, [ [ Biome.CAVE, BiomePoolTier.RARE ], [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GREAVARD, Type.GHOST, -1, [ + [ Species.GREAVARD, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] ] ], - [ Species.HOUNDSTONE, Type.GHOST, -1, [ + [ Species.HOUNDSTONE, PokemonType.GHOST, -1, [ [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] ] ], - [ Species.FLAMIGO, Type.FLYING, Type.FIGHTING, [ + [ Species.FLAMIGO, PokemonType.FLYING, PokemonType.FIGHTING, [ [ Biome.LAKE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CETODDLE, Type.ICE, -1, [ + [ Species.CETODDLE, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] ] ], - [ Species.CETITAN, Type.ICE, -1, [ + [ Species.CETITAN, PokemonType.ICE, -1, [ [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] ] ], - [ Species.VELUZA, Type.WATER, Type.PSYCHIC, [ + [ Species.VELUZA, PokemonType.WATER, PokemonType.PSYCHIC, [ [ Biome.SEABED, BiomePoolTier.COMMON ] ] ], - [ Species.DONDOZO, Type.WATER, -1, [ + [ Species.DONDOZO, PokemonType.WATER, -1, [ [ Biome.SEABED, BiomePoolTier.UNCOMMON ], [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.TATSUGIRI, Type.DRAGON, Type.WATER, [ + [ Species.TATSUGIRI, PokemonType.DRAGON, PokemonType.WATER, [ [ Biome.BEACH, BiomePoolTier.RARE ] ] ], - [ Species.ANNIHILAPE, Type.FIGHTING, Type.GHOST, [ + [ Species.ANNIHILAPE, PokemonType.FIGHTING, PokemonType.GHOST, [ [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.DOJO, BiomePoolTier.COMMON ], [ Biome.DOJO, BiomePoolTier.BOSS ] ] ], - [ Species.CLODSIRE, Type.POISON, Type.GROUND, [ + [ Species.CLODSIRE, PokemonType.POISON, PokemonType.GROUND, [ [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.FARIGIRAF, Type.NORMAL, Type.PSYCHIC, [ + [ Species.FARIGIRAF, PokemonType.NORMAL, PokemonType.PSYCHIC, [ [ Biome.TALL_GRASS, BiomePoolTier.RARE ], [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.DUDUNSPARCE, Type.NORMAL, -1, [ + [ Species.DUDUNSPARCE, PokemonType.NORMAL, -1, [ [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.KINGAMBIT, Type.DARK, Type.STEEL, [ + [ Species.KINGAMBIT, PokemonType.DARK, PokemonType.STEEL, [ [ Biome.ABYSS, BiomePoolTier.COMMON ], [ Biome.ABYSS, BiomePoolTier.BOSS ] ] ], - [ Species.GREAT_TUSK, Type.GROUND, Type.FIGHTING, [ + [ Species.GREAT_TUSK, PokemonType.GROUND, PokemonType.FIGHTING, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.SCREAM_TAIL, Type.FAIRY, Type.PSYCHIC, [ + [ Species.SCREAM_TAIL, PokemonType.FAIRY, PokemonType.PSYCHIC, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.BRUTE_BONNET, Type.GRASS, Type.DARK, [ + [ Species.BRUTE_BONNET, PokemonType.GRASS, PokemonType.DARK, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.FLUTTER_MANE, Type.GHOST, Type.FAIRY, [ + [ Species.FLUTTER_MANE, PokemonType.GHOST, PokemonType.FAIRY, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.SLITHER_WING, Type.BUG, Type.FIGHTING, [ + [ Species.SLITHER_WING, PokemonType.BUG, PokemonType.FIGHTING, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.SANDY_SHOCKS, Type.ELECTRIC, Type.GROUND, [ + [ Species.SANDY_SHOCKS, PokemonType.ELECTRIC, PokemonType.GROUND, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_TREADS, Type.GROUND, Type.STEEL, [ + [ Species.IRON_TREADS, PokemonType.GROUND, PokemonType.STEEL, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_BUNDLE, Type.ICE, Type.WATER, [ + [ Species.IRON_BUNDLE, PokemonType.ICE, PokemonType.WATER, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_HANDS, Type.FIGHTING, Type.ELECTRIC, [ + [ Species.IRON_HANDS, PokemonType.FIGHTING, PokemonType.ELECTRIC, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_JUGULIS, Type.DARK, Type.FLYING, [ + [ Species.IRON_JUGULIS, PokemonType.DARK, PokemonType.FLYING, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_MOTH, Type.FIRE, Type.POISON, [ + [ Species.IRON_MOTH, PokemonType.FIRE, PokemonType.POISON, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.IRON_THORNS, Type.ROCK, Type.ELECTRIC, [ + [ Species.IRON_THORNS, PokemonType.ROCK, PokemonType.ELECTRIC, [ [ Biome.END, BiomePoolTier.COMMON ] ] ], - [ Species.FRIGIBAX, Type.DRAGON, Type.ICE, [ + [ Species.FRIGIBAX, PokemonType.DRAGON, PokemonType.ICE, [ [ Biome.WASTELAND, BiomePoolTier.RARE ] ] ], - [ Species.ARCTIBAX, Type.DRAGON, Type.ICE, [ + [ Species.ARCTIBAX, PokemonType.DRAGON, PokemonType.ICE, [ [ Biome.WASTELAND, BiomePoolTier.RARE ] ] ], - [ Species.BAXCALIBUR, Type.DRAGON, Type.ICE, [ + [ Species.BAXCALIBUR, PokemonType.DRAGON, PokemonType.ICE, [ [ Biome.WASTELAND, BiomePoolTier.RARE ], [ Biome.WASTELAND, BiomePoolTier.BOSS ] ] ], - [ Species.GIMMIGHOUL, Type.GHOST, -1, [ + [ Species.GIMMIGHOUL, PokemonType.GHOST, -1, [ [ Biome.TEMPLE, BiomePoolTier.RARE ] ] ], - [ Species.GHOLDENGO, Type.STEEL, Type.GHOST, [ + [ Species.GHOLDENGO, PokemonType.STEEL, PokemonType.GHOST, [ [ Biome.TEMPLE, BiomePoolTier.RARE ], [ Biome.TEMPLE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.WO_CHIEN, Type.DARK, Type.GRASS, [ + [ Species.WO_CHIEN, PokemonType.DARK, PokemonType.GRASS, [ [ Biome.FOREST, BiomePoolTier.ULTRA_RARE ], [ Biome.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CHIEN_PAO, Type.DARK, Type.ICE, [ + [ Species.CHIEN_PAO, PokemonType.DARK, PokemonType.ICE, [ [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.TING_LU, Type.DARK, Type.GROUND, [ + [ Species.TING_LU, PokemonType.DARK, PokemonType.GROUND, [ [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.CHI_YU, Type.DARK, Type.FIRE, [ + [ Species.CHI_YU, PokemonType.DARK, PokemonType.FIRE, [ [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ROARING_MOON, Type.DRAGON, Type.DARK, [ + [ Species.ROARING_MOON, PokemonType.DRAGON, PokemonType.DARK, [ [ Biome.END, BiomePoolTier.UNCOMMON ] ] ], - [ Species.IRON_VALIANT, Type.FAIRY, Type.FIGHTING, [ + [ Species.IRON_VALIANT, PokemonType.FAIRY, PokemonType.FIGHTING, [ [ Biome.END, BiomePoolTier.UNCOMMON ] ] ], - [ Species.KORAIDON, Type.FIGHTING, Type.DRAGON, [ + [ Species.KORAIDON, PokemonType.FIGHTING, PokemonType.DRAGON, [ [ Biome.RUINS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.MIRAIDON, Type.ELECTRIC, Type.DRAGON, [ + [ Species.MIRAIDON, PokemonType.ELECTRIC, PokemonType.DRAGON, [ [ Biome.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.WALKING_WAKE, Type.WATER, Type.DRAGON, [ + [ Species.WALKING_WAKE, PokemonType.WATER, PokemonType.DRAGON, [ [ Biome.END, BiomePoolTier.RARE ] ] ], - [ Species.IRON_LEAVES, Type.GRASS, Type.PSYCHIC, [ + [ Species.IRON_LEAVES, PokemonType.GRASS, PokemonType.PSYCHIC, [ [ Biome.END, BiomePoolTier.RARE ] ] ], - [ Species.DIPPLIN, Type.GRASS, Type.DRAGON, [ + [ Species.DIPPLIN, PokemonType.GRASS, PokemonType.DRAGON, [ [ Biome.MEADOW, BiomePoolTier.RARE ] ] ], - [ Species.POLTCHAGEIST, Type.GRASS, Type.GHOST, [ + [ Species.POLTCHAGEIST, PokemonType.GRASS, PokemonType.GHOST, [ [ Biome.BADLANDS, BiomePoolTier.RARE ] ] ], - [ Species.SINISTCHA, Type.GRASS, Type.GHOST, [ + [ Species.SINISTCHA, PokemonType.GRASS, PokemonType.GHOST, [ [ Biome.BADLANDS, BiomePoolTier.RARE ], [ Biome.BADLANDS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.OKIDOGI, Type.POISON, Type.FIGHTING, [ + [ Species.OKIDOGI, PokemonType.POISON, PokemonType.FIGHTING, [ [ Biome.BADLANDS, BiomePoolTier.ULTRA_RARE ], [ Biome.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.MUNKIDORI, Type.POISON, Type.PSYCHIC, [ + [ Species.MUNKIDORI, PokemonType.POISON, PokemonType.PSYCHIC, [ [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.FEZANDIPITI, Type.POISON, Type.FAIRY, [ + [ Species.FEZANDIPITI, PokemonType.POISON, PokemonType.FAIRY, [ [ Biome.RUINS, BiomePoolTier.ULTRA_RARE ], [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.OGERPON, Type.GRASS, -1, [ + [ Species.OGERPON, PokemonType.GRASS, -1, [ [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.ARCHALUDON, Type.STEEL, Type.DRAGON, [ + [ Species.ARCHALUDON, PokemonType.STEEL, PokemonType.DRAGON, [ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HYDRAPPLE, Type.GRASS, Type.DRAGON, [ + [ Species.HYDRAPPLE, PokemonType.GRASS, PokemonType.DRAGON, [ [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GOUGING_FIRE, Type.FIRE, Type.DRAGON, [ + [ Species.GOUGING_FIRE, PokemonType.FIRE, PokemonType.DRAGON, [ [ Biome.END, BiomePoolTier.RARE ] ] ], - [ Species.RAGING_BOLT, Type.ELECTRIC, Type.DRAGON, [ + [ Species.RAGING_BOLT, PokemonType.ELECTRIC, PokemonType.DRAGON, [ [ Biome.END, BiomePoolTier.RARE ] ] ], - [ Species.IRON_BOULDER, Type.ROCK, Type.PSYCHIC, [ + [ Species.IRON_BOULDER, PokemonType.ROCK, PokemonType.PSYCHIC, [ [ Biome.END, BiomePoolTier.RARE ] ] ], - [ Species.IRON_CROWN, Type.STEEL, Type.PSYCHIC, [ + [ Species.IRON_CROWN, PokemonType.STEEL, PokemonType.PSYCHIC, [ [ Biome.END, BiomePoolTier.RARE ] ] ], - [ Species.TERAPAGOS, Type.NORMAL, -1, [ + [ Species.TERAPAGOS, PokemonType.NORMAL, -1, [ [ Biome.CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.PECHARUNT, Type.POISON, Type.GHOST, [ ] + [ Species.PECHARUNT, PokemonType.POISON, PokemonType.GHOST, [ ] ], - [ Species.ALOLA_RATTATA, Type.DARK, Type.NORMAL, [ + [ Species.ALOLA_RATTATA, PokemonType.DARK, PokemonType.NORMAL, [ [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ALOLA_RATICATE, Type.DARK, Type.NORMAL, [ + [ Species.ALOLA_RATICATE, PokemonType.DARK, PokemonType.NORMAL, [ [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ALOLA_RAICHU, Type.ELECTRIC, Type.PSYCHIC, [ + [ Species.ALOLA_RAICHU, PokemonType.ELECTRIC, PokemonType.PSYCHIC, [ [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ALOLA_SANDSHREW, Type.ICE, Type.STEEL, [ + [ Species.ALOLA_SANDSHREW, PokemonType.ICE, PokemonType.STEEL, [ [ Biome.ISLAND, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] ] ], - [ Species.ALOLA_SANDSLASH, Type.ICE, Type.STEEL, [ + [ Species.ALOLA_SANDSLASH, PokemonType.ICE, PokemonType.STEEL, [ [ Biome.ISLAND, BiomePoolTier.COMMON ], [ Biome.ISLAND, BiomePoolTier.BOSS ], [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ALOLA_VULPIX, Type.ICE, -1, [ + [ Species.ALOLA_VULPIX, PokemonType.ICE, -1, [ [ Biome.ISLAND, BiomePoolTier.COMMON ], [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] ] ], - [ Species.ALOLA_NINETALES, Type.ICE, Type.FAIRY, [ + [ Species.ALOLA_NINETALES, PokemonType.ICE, PokemonType.FAIRY, [ [ Biome.ISLAND, BiomePoolTier.COMMON ], [ Biome.ISLAND, BiomePoolTier.BOSS ], [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.ALOLA_DIGLETT, Type.GROUND, Type.STEEL, [ + [ Species.ALOLA_DIGLETT, PokemonType.GROUND, PokemonType.STEEL, [ [ Biome.ISLAND, BiomePoolTier.COMMON ] ] ], - [ Species.ALOLA_DUGTRIO, Type.GROUND, Type.STEEL, [ + [ Species.ALOLA_DUGTRIO, PokemonType.GROUND, PokemonType.STEEL, [ [ Biome.ISLAND, BiomePoolTier.COMMON ], [ Biome.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.ALOLA_MEOWTH, Type.DARK, -1, [ + [ Species.ALOLA_MEOWTH, PokemonType.DARK, -1, [ [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ALOLA_PERSIAN, Type.DARK, -1, [ + [ Species.ALOLA_PERSIAN, PokemonType.DARK, -1, [ [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ALOLA_GEODUDE, Type.ROCK, Type.ELECTRIC, [ + [ Species.ALOLA_GEODUDE, PokemonType.ROCK, PokemonType.ELECTRIC, [ [ Biome.ISLAND, BiomePoolTier.COMMON ] ] ], - [ Species.ALOLA_GRAVELER, Type.ROCK, Type.ELECTRIC, [ + [ Species.ALOLA_GRAVELER, PokemonType.ROCK, PokemonType.ELECTRIC, [ [ Biome.ISLAND, BiomePoolTier.COMMON ] ] ], - [ Species.ALOLA_GOLEM, Type.ROCK, Type.ELECTRIC, [ + [ Species.ALOLA_GOLEM, PokemonType.ROCK, PokemonType.ELECTRIC, [ [ Biome.ISLAND, BiomePoolTier.COMMON ], [ Biome.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.ALOLA_GRIMER, Type.POISON, Type.DARK, [ + [ Species.ALOLA_GRIMER, PokemonType.POISON, PokemonType.DARK, [ [ Biome.ISLAND, BiomePoolTier.COMMON ] ] ], - [ Species.ALOLA_MUK, Type.POISON, Type.DARK, [ + [ Species.ALOLA_MUK, PokemonType.POISON, PokemonType.DARK, [ [ Biome.ISLAND, BiomePoolTier.COMMON ], [ Biome.ISLAND, BiomePoolTier.BOSS ] ] ], - [ Species.ALOLA_EXEGGUTOR, Type.GRASS, Type.DRAGON, [ + [ Species.ALOLA_EXEGGUTOR, PokemonType.GRASS, PokemonType.DRAGON, [ [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.ALOLA_MAROWAK, Type.FIRE, Type.GHOST, [ + [ Species.ALOLA_MAROWAK, PokemonType.FIRE, PokemonType.GHOST, [ [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.ETERNAL_FLOETTE, Type.FAIRY, -1, [ + [ Species.ETERNAL_FLOETTE, PokemonType.FAIRY, -1, [ [ Biome.FAIRY_CAVE, BiomePoolTier.RARE ], [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GALAR_MEOWTH, Type.STEEL, -1, [ + [ Species.GALAR_MEOWTH, PokemonType.STEEL, -1, [ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ] ] ], - [ Species.GALAR_PONYTA, Type.PSYCHIC, -1, [ + [ Species.GALAR_PONYTA, PokemonType.PSYCHIC, -1, [ [ Biome.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ] ] ], - [ Species.GALAR_RAPIDASH, Type.PSYCHIC, Type.FAIRY, [ + [ Species.GALAR_RAPIDASH, PokemonType.PSYCHIC, PokemonType.FAIRY, [ [ Biome.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ], [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE, TimeOfDay.DAWN ] ] ], - [ Species.GALAR_SLOWPOKE, Type.PSYCHIC, -1, [ + [ Species.GALAR_SLOWPOKE, PokemonType.PSYCHIC, -1, [ [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_SLOWBRO, Type.POISON, Type.PSYCHIC, [ + [ Species.GALAR_SLOWBRO, PokemonType.POISON, PokemonType.PSYCHIC, [ [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_FARFETCHD, Type.FIGHTING, -1, [ + [ Species.GALAR_FARFETCHD, PokemonType.FIGHTING, -1, [ [ Biome.DOJO, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.GALAR_WEEZING, Type.POISON, Type.FAIRY, [ + [ Species.GALAR_WEEZING, PokemonType.POISON, PokemonType.FAIRY, [ [ Biome.SLUM, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.GALAR_MR_MIME, Type.ICE, Type.PSYCHIC, [ + [ Species.GALAR_MR_MIME, PokemonType.ICE, PokemonType.PSYCHIC, [ [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.GALAR_ARTICUNO, Type.PSYCHIC, Type.FLYING, [ + [ Species.GALAR_ARTICUNO, PokemonType.PSYCHIC, PokemonType.FLYING, [ [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GALAR_ZAPDOS, Type.FIGHTING, Type.FLYING, [ + [ Species.GALAR_ZAPDOS, PokemonType.FIGHTING, PokemonType.FLYING, [ [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ], [ Biome.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GALAR_MOLTRES, Type.DARK, Type.FLYING, [ + [ Species.GALAR_MOLTRES, PokemonType.DARK, PokemonType.FLYING, [ [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ], [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] ] ], - [ Species.GALAR_SLOWKING, Type.POISON, Type.PSYCHIC, [ + [ Species.GALAR_SLOWKING, PokemonType.POISON, PokemonType.PSYCHIC, [ [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_CORSOLA, Type.GHOST, -1, [ + [ Species.GALAR_CORSOLA, PokemonType.GHOST, -1, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.GALAR_ZIGZAGOON, Type.DARK, Type.NORMAL, [ + [ Species.GALAR_ZIGZAGOON, PokemonType.DARK, PokemonType.NORMAL, [ [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GALAR_LINOONE, Type.DARK, Type.NORMAL, [ + [ Species.GALAR_LINOONE, PokemonType.DARK, PokemonType.NORMAL, [ [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GALAR_DARUMAKA, Type.ICE, -1, [ + [ Species.GALAR_DARUMAKA, PokemonType.ICE, -1, [ [ Biome.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_DARMANITAN, Type.ICE, -1, [ + [ Species.GALAR_DARMANITAN, PokemonType.ICE, -1, [ [ Biome.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.GALAR_YAMASK, Type.GROUND, Type.GHOST, [ + [ Species.GALAR_YAMASK, PokemonType.GROUND, PokemonType.GHOST, [ [ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.GALAR_STUNFISK, Type.GROUND, Type.STEEL, [ + [ Species.GALAR_STUNFISK, PokemonType.GROUND, PokemonType.STEEL, [ [ Biome.SWAMP, BiomePoolTier.SUPER_RARE ], [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_GROWLITHE, Type.FIRE, Type.ROCK, [ + [ Species.HISUI_GROWLITHE, PokemonType.FIRE, PokemonType.ROCK, [ [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.HISUI_ARCANINE, Type.FIRE, Type.ROCK, [ + [ Species.HISUI_ARCANINE, PokemonType.FIRE, PokemonType.ROCK, [ [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_VOLTORB, Type.ELECTRIC, Type.GRASS, [ + [ Species.HISUI_VOLTORB, PokemonType.ELECTRIC, PokemonType.GRASS, [ [ Biome.POWER_PLANT, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.HISUI_ELECTRODE, Type.ELECTRIC, Type.GRASS, [ + [ Species.HISUI_ELECTRODE, PokemonType.ELECTRIC, PokemonType.GRASS, [ [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_TYPHLOSION, Type.FIRE, Type.GHOST, [ + [ Species.HISUI_TYPHLOSION, PokemonType.FIRE, PokemonType.GHOST, [ [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_QWILFISH, Type.DARK, Type.POISON, [ + [ Species.HISUI_QWILFISH, PokemonType.DARK, PokemonType.POISON, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.HISUI_SNEASEL, Type.FIGHTING, Type.POISON, [ + [ Species.HISUI_SNEASEL, PokemonType.FIGHTING, PokemonType.POISON, [ [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_SAMUROTT, Type.WATER, Type.DARK, [ + [ Species.HISUI_SAMUROTT, PokemonType.WATER, PokemonType.DARK, [ [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.HISUI_LILLIGANT, Type.GRASS, Type.FIGHTING, [ + [ Species.HISUI_LILLIGANT, PokemonType.GRASS, PokemonType.FIGHTING, [ [ Biome.MEADOW, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_ZORUA, Type.NORMAL, Type.GHOST, [ + [ Species.HISUI_ZORUA, PokemonType.NORMAL, PokemonType.GHOST, [ [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.HISUI_ZOROARK, Type.NORMAL, Type.GHOST, [ + [ Species.HISUI_ZOROARK, PokemonType.NORMAL, PokemonType.GHOST, [ [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]], [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.HISUI_BRAVIARY, Type.PSYCHIC, Type.FLYING, [ + [ Species.HISUI_BRAVIARY, PokemonType.PSYCHIC, PokemonType.FLYING, [ [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_SLIGGOO, Type.STEEL, Type.DRAGON, [ + [ Species.HISUI_SLIGGOO, PokemonType.STEEL, PokemonType.DRAGON, [ [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_GOODRA, Type.STEEL, Type.DRAGON, [ + [ Species.HISUI_GOODRA, PokemonType.STEEL, PokemonType.DRAGON, [ [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.HISUI_AVALUGG, Type.ICE, Type.ROCK, [ + [ Species.HISUI_AVALUGG, PokemonType.ICE, PokemonType.ROCK, [ [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] ] ], - [ Species.HISUI_DECIDUEYE, Type.GRASS, Type.FIGHTING, [ + [ Species.HISUI_DECIDUEYE, PokemonType.GRASS, PokemonType.FIGHTING, [ [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] ] ], - [ Species.PALDEA_TAUROS, Type.FIGHTING, -1, [ + [ Species.PALDEA_TAUROS, PokemonType.FIGHTING, -1, [ [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]], [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ]] ] ], - [ Species.PALDEA_WOOPER, Type.POISON, Type.GROUND, [ + [ Species.PALDEA_WOOPER, PokemonType.POISON, PokemonType.GROUND, [ [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]] ] ], - [ Species.BLOODMOON_URSALUNA, Type.GROUND, Type.NORMAL, [ + [ Species.BLOODMOON_URSALUNA, PokemonType.GROUND, PokemonType.NORMAL, [ [ Biome.FOREST, BiomePoolTier.SUPER_RARE, TimeOfDay.NIGHT ], [ Biome.FOREST, BiomePoolTier.BOSS_RARE, TimeOfDay.NIGHT ] ] diff --git a/src/data/balance/egg-moves.ts b/src/data/balance/egg-moves.ts index ae61acbd32e..1bac63e9560 100644 --- a/src/data/balance/egg-moves.ts +++ b/src/data/balance/egg-moves.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import * as Utils from "#app/utils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/data/balance/pokemon-evolutions.ts b/src/data/balance/pokemon-evolutions.ts index 0e101c7155b..6cf79bb45f1 100644 --- a/src/data/balance/pokemon-evolutions.ts +++ b/src/data/balance/pokemon-evolutions.ts @@ -2,7 +2,7 @@ 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 { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import * as Utils from "#app/utils"; import { WeatherType } from "#enums/weather-type"; import { Nature } from "#enums/nature"; @@ -216,12 +216,12 @@ class FriendshipTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition { class FriendshipMoveTypeEvolutionCondition extends SpeciesEvolutionCondition { public amount: number; - public type: Type; - constructor(amount: number, type: Type) { + 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.${Type[this.type]}`) }); + this.description = i18next.t("pokemonEvolutions:friendshipMoveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) }); } } @@ -233,11 +233,11 @@ class ShedinjaEvolutionCondition extends SpeciesEvolutionCondition { } class PartyTypeEvolutionCondition extends SpeciesEvolutionCondition { - public type: Type; - constructor(type: Type) { + 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.${Type[this.type]}`) }); + this.description = i18next.t("pokemonEvolutions:partyType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) }); } } @@ -260,11 +260,11 @@ class WeatherEvolutionCondition extends SpeciesEvolutionCondition { } class MoveTypeEvolutionCondition extends SpeciesEvolutionCondition { - public type: Type; - constructor(type: Type) { + 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.${Type[this.type]}`) }); + this.description = i18next.t("pokemonEvolutions:moveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) }); } } @@ -1103,7 +1103,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GOGOAT, 32, null, null) ], [Species.PANCHAM]: [ - new SpeciesEvolution(Species.PANGORO, 32, null, new PartyTypeEvolutionCondition(Type.DARK), SpeciesWildEvolutionDelay.MEDIUM) + 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)), @@ -1519,8 +1519,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.STARMIE, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.EEVEE]: [ - new SpeciesFormEvolution(Species.SYLVEON, "", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, Type.FAIRY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.SYLVEON, "partner", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, Type.FAIRY), SpeciesWildEvolutionDelay.LONG), + 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), @@ -1758,7 +1758,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GENGAR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.ONIX]: [ - new SpeciesEvolution(Species.STEELIX, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(Type.STEEL), SpeciesWildEvolutionDelay.VERY_LONG) + 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) @@ -1767,7 +1767,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.KINGDRA, 1, EvolutionItem.DRAGON_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SCYTHER]: [ - new SpeciesEvolution(Species.SCIZOR, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(Type.STEEL), SpeciesWildEvolutionDelay.VERY_LONG), + 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]: [ diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index a42779563f2..d3c9f393209 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -3,10 +3,10 @@ import { AttackMove, BeakBlastHeaderAttr, DelayedAttackAttr, - MoveFlags, SelfStatusMove, allMoves, -} from "./move"; +} from "./moves/move"; +import { MoveFlags } from "#enums/MoveFlags"; import type Pokemon from "../field/pokemon"; import { type nil, diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 7b16c718f07..4a8c48d5e71 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -8,20 +8,20 @@ import { ReverseDrainAbAttr } from "#app/data/ability"; import { ChargeAnim, CommonAnim, CommonBattleAnim, MoveChargeAnim } from "#app/data/battle-anims"; -import type Move from "#app/data/move"; +import type Move from "#app/data/moves/move"; import { allMoves, applyMoveAttrs, ConsecutiveUseDoublePowerAttr, HealOnAllyAttr, - MoveCategory, - MoveFlags, StatusCategoryOnAllyAttr -} from "#app/data/move"; +} from "#app/data/moves/move"; +import { MoveFlags } from "#enums/MoveFlags"; +import { MoveCategory } from "#enums/MoveCategory"; import { SpeciesFormChangeAbilityTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectHealText } from "#app/data/status-effect"; import { TerrainType } from "#app/data/terrain"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import type Pokemon from "#app/field/pokemon"; import { HitResult, MoveResult } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -514,7 +514,7 @@ export class TrappedTag extends BattlerTag { const source = globalScene.getPokemonById(this.sourceId!)!; const move = allMoves[this.sourceMove]; - const isGhost = pokemon.isOfType(Type.GHOST); + const isGhost = pokemon.isOfType(PokemonType.GHOST); const isTrapped = pokemon.getTag(TrappedTag); const hasSubstitute = move.hitsSubstitute(source, pokemon); @@ -819,7 +819,7 @@ export class SeedTag extends BattlerTag { } canAdd(pokemon: Pokemon): boolean { - return !pokemon.isOfType(Type.GRASS); + return !pokemon.isOfType(PokemonType.GRASS); } onAdd(pokemon: Pokemon): void { @@ -889,7 +889,7 @@ export class PowderTag extends BattlerTag { if (movePhase instanceof MovePhase) { const move = movePhase.move.getMove(); const weather = globalScene.arena.weather; - if (pokemon.getMoveType(move) === Type.FIRE && !(weather && weather.weatherType === WeatherType.HEAVY_RAIN && !weather.isEffectSuppressed())) { + if (pokemon.getMoveType(move) === PokemonType.FIRE && !(weather && weather.weatherType === WeatherType.HEAVY_RAIN && !weather.isEffectSuppressed())) { movePhase.fail(); movePhase.showMoveText(); @@ -1832,9 +1832,9 @@ export class SemiInvulnerableTag extends BattlerTag { } export class TypeImmuneTag extends BattlerTag { - public immuneType: Type; + public immuneType: PokemonType; - constructor(tagType: BattlerTagType, sourceMove: Moves, immuneType: Type, length: number = 1) { + constructor(tagType: BattlerTagType, sourceMove: Moves, immuneType: PokemonType, length: number = 1) { super(tagType, BattlerTagLapseType.TURN_END, length, sourceMove, undefined, true); this.immuneType = immuneType; @@ -1846,7 +1846,7 @@ export class TypeImmuneTag extends BattlerTag { */ loadTag(source: BattlerTag | any): void { super.loadTag(source); - this.immuneType = source.immuneType as Type; + this.immuneType = source.immuneType as PokemonType; } } @@ -1857,7 +1857,7 @@ export class TypeImmuneTag extends BattlerTag { */ export class FloatingTag extends TypeImmuneTag { constructor(tagType: BattlerTagType, sourceMove: Moves, turnCount: number) { - super(tagType, sourceMove, Type.GROUND, turnCount); + super(tagType, sourceMove, PokemonType.GROUND, turnCount); } onAdd(pokemon: Pokemon): void { @@ -1878,11 +1878,11 @@ export class FloatingTag extends TypeImmuneTag { } export class TypeBoostTag extends BattlerTag { - public boostedType: Type; + public boostedType: PokemonType; public boostValue: number; public oneUse: boolean; - constructor(tagType: BattlerTagType, sourceMove: Moves, boostedType: Type, boostValue: number, oneUse: boolean) { + constructor(tagType: BattlerTagType, sourceMove: Moves, boostedType: PokemonType, boostValue: number, oneUse: boolean) { super(tagType, BattlerTagLapseType.TURN_END, 1, sourceMove); this.boostedType = boostedType; @@ -1896,7 +1896,7 @@ export class TypeBoostTag extends BattlerTag { */ loadTag(source: BattlerTag | any): void { super.loadTag(source); - this.boostedType = source.boostedType as Type; + this.boostedType = source.boostedType as PokemonType; this.boostValue = source.boostValue; this.oneUse = source.oneUse; } @@ -1934,7 +1934,7 @@ export class CritBoostTag extends BattlerTag { */ export class DragonCheerTag extends CritBoostTag { /** The types of the user's ally when the tag is added */ - public typesOnAdd: Type[]; + public typesOnAdd: PokemonType[]; constructor() { super(BattlerTagType.CRIT_BOOST, Moves.DRAGON_CHEER); @@ -1980,7 +1980,7 @@ export class SaltCuredTag extends BattlerTag { applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); if (!cancelled.value) { - const pokemonSteelOrWater = pokemon.isOfType(Type.STEEL) || pokemon.isOfType(Type.WATER); + const pokemonSteelOrWater = pokemon.isOfType(PokemonType.STEEL) || pokemon.isOfType(PokemonType.WATER); pokemon.damageAndUpdate(toDmgValue(pokemonSteelOrWater ? pokemon.getMaxHp() / 4 : pokemon.getMaxHp() / 8)); globalScene.queueMessage( @@ -2071,21 +2071,21 @@ export class RoostedTag extends BattlerTag { const currentTypes = pokemon.getTypes(); const baseTypes = pokemon.getTypes(false, false, true); - const forestsCurseApplied: boolean = currentTypes.includes(Type.GRASS) && !baseTypes.includes(Type.GRASS); - const trickOrTreatApplied: boolean = currentTypes.includes(Type.GHOST) && !baseTypes.includes(Type.GHOST); + const forestsCurseApplied: boolean = currentTypes.includes(PokemonType.GRASS) && !baseTypes.includes(PokemonType.GRASS); + const trickOrTreatApplied: boolean = currentTypes.includes(PokemonType.GHOST) && !baseTypes.includes(PokemonType.GHOST); if (this.isBaseFlying) { - let modifiedTypes: Type[] = []; + let modifiedTypes: PokemonType[] = []; if (this.isBasePureFlying) { if (forestsCurseApplied || trickOrTreatApplied) { - modifiedTypes = currentTypes.filter(type => type !== Type.NORMAL); - modifiedTypes.push(Type.FLYING); + modifiedTypes = currentTypes.filter(type => type !== PokemonType.NORMAL); + modifiedTypes.push(PokemonType.FLYING); } else { - modifiedTypes = [ Type.FLYING ]; + modifiedTypes = [ PokemonType.FLYING ]; } } else { modifiedTypes = [ ...currentTypes ]; - modifiedTypes.push(Type.FLYING); + modifiedTypes.push(PokemonType.FLYING); } pokemon.summonData.types = modifiedTypes; pokemon.updateInfo(); @@ -2098,18 +2098,18 @@ export class RoostedTag extends BattlerTag { const isOriginallyDualType = baseTypes.length === 2; const isCurrentlyDualType = currentTypes.length === 2; - this.isBaseFlying = baseTypes.includes(Type.FLYING); - this.isBasePureFlying = baseTypes[0] === Type.FLYING && baseTypes.length === 1; + this.isBaseFlying = baseTypes.includes(PokemonType.FLYING); + this.isBasePureFlying = baseTypes[0] === PokemonType.FLYING && baseTypes.length === 1; if (this.isBaseFlying) { - let modifiedTypes: Type[]; + let modifiedTypes: PokemonType[]; if (this.isBasePureFlying && !isCurrentlyDualType) { - modifiedTypes = [ Type.NORMAL ]; + modifiedTypes = [ PokemonType.NORMAL ]; } else { if (!!pokemon.getTag(RemovedTypeTag) && isOriginallyDualType && !isCurrentlyDualType) { - modifiedTypes = [ Type.UNKNOWN ]; + modifiedTypes = [ PokemonType.UNKNOWN ]; } else { - modifiedTypes = currentTypes.filter(type => type !== Type.FLYING); + modifiedTypes = currentTypes.filter(type => type !== PokemonType.FLYING); } } pokemon.summonData.types = modifiedTypes; @@ -2374,10 +2374,10 @@ export class GulpMissileTag extends BattlerTag { * @see {@linkcode ignoreImmunity} */ export class ExposedTag extends BattlerTag { - private defenderType: Type; - private allowedTypes: Type[]; + private defenderType: PokemonType; + private allowedTypes: PokemonType[]; - constructor(tagType: BattlerTagType, sourceMove: Moves, defenderType: Type, allowedTypes: Type[]) { + constructor(tagType: BattlerTagType, sourceMove: Moves, defenderType: PokemonType, allowedTypes: PokemonType[]) { super(tagType, BattlerTagLapseType.CUSTOM, 1, sourceMove); this.defenderType = defenderType; this.allowedTypes = allowedTypes; @@ -2389,16 +2389,16 @@ export class ExposedTag extends BattlerTag { */ loadTag(source: BattlerTag | any): void { super.loadTag(source); - this.defenderType = source.defenderType as Type; - this.allowedTypes = source.allowedTypes as Type[]; + this.defenderType = source.defenderType as PokemonType; + this.allowedTypes = source.allowedTypes as PokemonType[]; } /** - * @param types {@linkcode Type} of the defending Pokemon - * @param moveType {@linkcode Type} of the move targetting it + * @param types {@linkcode PokemonType} of the defending Pokemon + * @param moveType {@linkcode PokemonType} of the move targetting it * @returns `true` if the move should be allowed to target the defender. */ - ignoreImmunity(type: Type, moveType: Type): boolean { + ignoreImmunity(type: PokemonType, moveType: PokemonType): boolean { return type === this.defenderType && this.allowedTypes.includes(moveType); } } @@ -3103,7 +3103,7 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: number, source case BattlerTagType.HIDDEN: return new SemiInvulnerableTag(tagType, turnCount, sourceMove); case BattlerTagType.FIRE_BOOST: - return new TypeBoostTag(tagType, sourceMove, Type.FIRE, 1.5, false); + return new TypeBoostTag(tagType, sourceMove, PokemonType.FIRE, 1.5, false); case BattlerTagType.CRIT_BOOST: return new CritBoostTag(tagType, sourceMove); case BattlerTagType.DRAGON_CHEER: @@ -3129,7 +3129,7 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: number, source case BattlerTagType.CURSED: return new CursedTag(sourceId); case BattlerTagType.CHARGED: - return new TypeBoostTag(tagType, sourceMove, Type.ELECTRIC, 2, true); + return new TypeBoostTag(tagType, sourceMove, PokemonType.ELECTRIC, 2, true); case BattlerTagType.FLOATING: return new FloatingTag(tagType, sourceMove, turnCount); case BattlerTagType.MINIMIZED: @@ -3149,9 +3149,9 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: number, source case BattlerTagType.DISABLED: return new DisabledTag(sourceId); case BattlerTagType.IGNORE_GHOST: - return new ExposedTag(tagType, sourceMove, Type.GHOST, [ Type.NORMAL, Type.FIGHTING ]); + return new ExposedTag(tagType, sourceMove, PokemonType.GHOST, [ PokemonType.NORMAL, PokemonType.FIGHTING ]); case BattlerTagType.IGNORE_DARK: - return new ExposedTag(tagType, sourceMove, Type.DARK, [ Type.PSYCHIC ]); + return new ExposedTag(tagType, sourceMove, PokemonType.DARK, [ PokemonType.PSYCHIC ]); case BattlerTagType.GULP_MISSILE_ARROKUDA: case BattlerTagType.GULP_MISSILE_PIKACHU: return new GulpMissileTag(tagType, sourceMove); diff --git a/src/data/challenge.ts b/src/data/challenge.ts index 30c2c9a6ce4..49af78292c3 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -11,7 +11,7 @@ import type { FixedBattleConfig } from "#app/battle"; import { ClassicFixedBossWaves, BattleType, getRandomTrainerFunc } from "#app/battle"; import Trainer, { TrainerVariant } from "#app/field/trainer"; import type { GameMode } from "#app/game-mode"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Challenges } from "#enums/challenges"; import { Species } from "#enums/species"; import { TrainerType } from "#enums/trainer-type"; @@ -572,7 +572,7 @@ interface monotypeOverride { /** The species to override */ species: Species; /** The type to count as */ - type: Type; + type: PokemonType; /** If part of a fusion, should we check the fused species instead of the base species? */ fusion: boolean; } @@ -582,7 +582,7 @@ interface monotypeOverride { */ export class SingleTypeChallenge extends Challenge { private static TYPE_OVERRIDES: monotypeOverride[] = [ - { species: Species.CASTFORM, type: Type.NORMAL, fusion: false }, + { species: Species.CASTFORM, type: PokemonType.NORMAL, fusion: false }, ]; // TODO: Find a solution for all Pokemon with this ssui issue, including Basculin and Burmy private static SPECIES_OVERRIDES: Species[] = [ Species.MELOETTA ]; @@ -647,7 +647,7 @@ export class SingleTypeChallenge extends Challenge { if (overrideValue === undefined) { overrideValue = this.value; } - return Type[this.value - 1].toLowerCase(); + return PokemonType[this.value - 1].toLowerCase(); } /** @@ -659,8 +659,8 @@ export class SingleTypeChallenge extends Challenge { if (overrideValue === undefined) { overrideValue = this.value; } - const type = i18next.t(`pokemonInfo:Type.${Type[this.value - 1]}`); - const typeColor = `[color=${TypeColor[Type[this.value - 1]]}][shadow=${TypeShadow[Type[this.value - 1]]}]${type}[/shadow][/color]`; + const type = i18next.t(`pokemonInfo:Type.${PokemonType[this.value - 1]}`); + const typeColor = `[color=${TypeColor[PokemonType[this.value - 1]]}][shadow=${TypeShadow[PokemonType[this.value - 1]]}]${type}[/shadow][/color]`; const defaultDesc = i18next.t("challenges:singleType.desc_default"); const typeDesc = i18next.t("challenges:singleType.desc", { type: typeColor }); return this.value === 0 ? defaultDesc : typeDesc; diff --git a/src/data/custom-pokemon-data.ts b/src/data/custom-pokemon-data.ts index 4a5eb89aeed..d95d9f77b83 100644 --- a/src/data/custom-pokemon-data.ts +++ b/src/data/custom-pokemon-data.ts @@ -1,5 +1,5 @@ import type { Abilities } from "#enums/abilities"; -import type { Type } from "#enums/type"; +import type { PokemonType } from "#enums/pokemon-type"; import { isNullOrUndefined } from "#app/utils"; import type { Nature } from "#enums/nature"; @@ -13,7 +13,7 @@ export class CustomPokemonData { public ability: Abilities | -1; public passive: Abilities | -1; public nature: Nature | -1; - public types: Type[]; + public types: PokemonType[]; /** `hitsReceivedCount` aka `hitsRecCount` saves how often the pokemon got hit until a new arena encounter (used for Rage Fist) */ public hitsRecCount: number; diff --git a/src/data/moves/invalid-moves.ts b/src/data/moves/invalid-moves.ts new file mode 100644 index 00000000000..50f815b9e58 --- /dev/null +++ b/src/data/moves/invalid-moves.ts @@ -0,0 +1,281 @@ +import { Moves } from "#enums/moves"; + +/** Set of moves that cannot be called by {@linkcode Moves.METRONOME Metronome} */ +export const invalidMetronomeMoves: ReadonlySet = new Set([ + Moves.AFTER_YOU, + Moves.APPLE_ACID, + Moves.ARMOR_CANNON, + Moves.ASSIST, + Moves.ASTRAL_BARRAGE, + Moves.AURA_WHEEL, + Moves.BANEFUL_BUNKER, + Moves.BEAK_BLAST, + Moves.BEHEMOTH_BASH, + Moves.BEHEMOTH_BLADE, + Moves.BELCH, + Moves.BESTOW, + Moves.BLAZING_TORQUE, + Moves.BODY_PRESS, + Moves.BRANCH_POKE, + Moves.BREAKING_SWIPE, + Moves.CELEBRATE, + Moves.CHATTER, + Moves.CHILLING_WATER, + Moves.CHILLY_RECEPTION, + Moves.CLANGOROUS_SOUL, + Moves.COLLISION_COURSE, + Moves.COMBAT_TORQUE, + Moves.COMEUPPANCE, + Moves.COPYCAT, + Moves.COUNTER, + Moves.COVET, + Moves.CRAFTY_SHIELD, + Moves.DECORATE, + Moves.DESTINY_BOND, + Moves.DETECT, + Moves.DIAMOND_STORM, + Moves.DOODLE, + Moves.DOUBLE_IRON_BASH, + Moves.DOUBLE_SHOCK, + Moves.DRAGON_ASCENT, + Moves.DRAGON_ENERGY, + Moves.DRUM_BEATING, + Moves.DYNAMAX_CANNON, + Moves.ELECTRO_DRIFT, + Moves.ENDURE, + Moves.ETERNABEAM, + Moves.FALSE_SURRENDER, + Moves.FEINT, + Moves.FIERY_WRATH, + Moves.FILLET_AWAY, + Moves.FLEUR_CANNON, + Moves.FOCUS_PUNCH, + Moves.FOLLOW_ME, + Moves.FREEZE_SHOCK, + Moves.FREEZING_GLARE, + Moves.GLACIAL_LANCE, + Moves.GRAV_APPLE, + Moves.HELPING_HAND, + Moves.HOLD_HANDS, + Moves.HYPER_DRILL, + Moves.HYPERSPACE_FURY, + Moves.HYPERSPACE_HOLE, + Moves.ICE_BURN, + Moves.INSTRUCT, + Moves.JET_PUNCH, + Moves.JUNGLE_HEALING, + Moves.KINGS_SHIELD, + Moves.LIFE_DEW, + Moves.LIGHT_OF_RUIN, + Moves.MAKE_IT_RAIN, + Moves.MAGICAL_TORQUE, + Moves.MAT_BLOCK, + Moves.ME_FIRST, + Moves.METEOR_ASSAULT, + Moves.METRONOME, + Moves.MIMIC, + Moves.MIND_BLOWN, + Moves.MIRROR_COAT, + Moves.MIRROR_MOVE, + Moves.MOONGEIST_BEAM, + Moves.NATURE_POWER, + Moves.NATURES_MADNESS, + Moves.NOXIOUS_TORQUE, + Moves.OBSTRUCT, + Moves.ORDER_UP, + Moves.ORIGIN_PULSE, + Moves.OVERDRIVE, + Moves.PHOTON_GEYSER, + Moves.PLASMA_FISTS, + Moves.POPULATION_BOMB, + Moves.POUNCE, + Moves.POWER_SHIFT, + Moves.PRECIPICE_BLADES, + Moves.PROTECT, + Moves.PYRO_BALL, + Moves.QUASH, + Moves.QUICK_GUARD, + Moves.RAGE_FIST, + Moves.RAGE_POWDER, + Moves.RAGING_BULL, + Moves.RAGING_FURY, + Moves.RELIC_SONG, + Moves.REVIVAL_BLESSING, + Moves.RUINATION, + Moves.SALT_CURE, + Moves.SECRET_SWORD, + Moves.SHED_TAIL, + Moves.SHELL_TRAP, + Moves.SILK_TRAP, + Moves.SKETCH, + Moves.SLEEP_TALK, + Moves.SNAP_TRAP, + Moves.SNARL, + Moves.SNATCH, + Moves.SNORE, + Moves.SNOWSCAPE, + Moves.SPECTRAL_THIEF, + Moves.SPICY_EXTRACT, + Moves.SPIKY_SHIELD, + Moves.SPIRIT_BREAK, + Moves.SPOTLIGHT, + Moves.STEAM_ERUPTION, + Moves.STEEL_BEAM, + Moves.STRANGE_STEAM, + Moves.STRUGGLE, + Moves.SUNSTEEL_STRIKE, + Moves.SURGING_STRIKES, + Moves.SWITCHEROO, + Moves.TECHNO_BLAST, + Moves.TERA_STARSTORM, + Moves.THIEF, + Moves.THOUSAND_ARROWS, + Moves.THOUSAND_WAVES, + Moves.THUNDER_CAGE, + Moves.THUNDEROUS_KICK, + Moves.TIDY_UP, + Moves.TRAILBLAZE, + Moves.TRANSFORM, + Moves.TRICK, + Moves.TWIN_BEAM, + Moves.V_CREATE, + Moves.WICKED_BLOW, + Moves.WICKED_TORQUE, + Moves.WIDE_GUARD, +]); + +/** Set of moves that cannot be called by {@linkcode Moves.ASSIST Assist} */ +export const invalidAssistMoves: ReadonlySet = new Set([ + Moves.ASSIST, + Moves.BANEFUL_BUNKER, + Moves.BEAK_BLAST, + Moves.BELCH, + Moves.BESTOW, + Moves.BOUNCE, + Moves.CELEBRATE, + Moves.CHATTER, + Moves.CIRCLE_THROW, + Moves.COPYCAT, + Moves.COUNTER, + Moves.COVET, + Moves.DESTINY_BOND, + Moves.DETECT, + Moves.DIG, + Moves.DIVE, + Moves.DRAGON_TAIL, + Moves.ENDURE, + Moves.FEINT, + Moves.FLY, + Moves.FOCUS_PUNCH, + Moves.FOLLOW_ME, + Moves.HELPING_HAND, + Moves.HOLD_HANDS, + Moves.KINGS_SHIELD, + Moves.MAT_BLOCK, + Moves.ME_FIRST, + Moves.METRONOME, + Moves.MIMIC, + Moves.MIRROR_COAT, + Moves.MIRROR_MOVE, + Moves.NATURE_POWER, + Moves.PHANTOM_FORCE, + Moves.PROTECT, + Moves.RAGE_POWDER, + Moves.ROAR, + Moves.SHADOW_FORCE, + Moves.SHELL_TRAP, + Moves.SKETCH, + Moves.SKY_DROP, + Moves.SLEEP_TALK, + Moves.SNATCH, + Moves.SPIKY_SHIELD, + Moves.SPOTLIGHT, + Moves.STRUGGLE, + Moves.SWITCHEROO, + Moves.THIEF, + Moves.TRANSFORM, + Moves.TRICK, + Moves.WHIRLWIND, +]); + +/** Set of moves that cannot be called by {@linkcode Moves.SLEEP_TALK Sleep Talk} */ +export const invalidSleepTalkMoves: ReadonlySet = new Set([ + Moves.ASSIST, + Moves.BELCH, + Moves.BEAK_BLAST, + Moves.BIDE, + Moves.BOUNCE, + Moves.COPYCAT, + Moves.DIG, + Moves.DIVE, + Moves.DYNAMAX_CANNON, + Moves.FREEZE_SHOCK, + Moves.FLY, + Moves.FOCUS_PUNCH, + Moves.GEOMANCY, + Moves.ICE_BURN, + Moves.ME_FIRST, + Moves.METRONOME, + Moves.MIRROR_MOVE, + Moves.MIMIC, + Moves.PHANTOM_FORCE, + Moves.RAZOR_WIND, + Moves.SHADOW_FORCE, + Moves.SHELL_TRAP, + Moves.SKETCH, + Moves.SKULL_BASH, + Moves.SKY_ATTACK, + Moves.SKY_DROP, + Moves.SLEEP_TALK, + Moves.SOLAR_BLADE, + Moves.SOLAR_BEAM, + Moves.STRUGGLE, + Moves.UPROAR, +]); + +/** Set of moves that cannot be copied by {@linkcode Moves.COPYCAT Copycat} */ +export const invalidCopycatMoves: ReadonlySet = new Set([ + Moves.ASSIST, + Moves.BANEFUL_BUNKER, + Moves.BEAK_BLAST, + Moves.BEHEMOTH_BASH, + Moves.BEHEMOTH_BLADE, + Moves.BESTOW, + Moves.CELEBRATE, + Moves.CHATTER, + Moves.CIRCLE_THROW, + Moves.COPYCAT, + Moves.COUNTER, + Moves.COVET, + Moves.DESTINY_BOND, + Moves.DETECT, + Moves.DRAGON_TAIL, + Moves.ENDURE, + Moves.FEINT, + Moves.FOCUS_PUNCH, + Moves.FOLLOW_ME, + Moves.HELPING_HAND, + Moves.HOLD_HANDS, + Moves.KINGS_SHIELD, + Moves.MAT_BLOCK, + Moves.ME_FIRST, + Moves.METRONOME, + Moves.MIMIC, + Moves.MIRROR_COAT, + Moves.MIRROR_MOVE, + Moves.PROTECT, + Moves.RAGE_POWDER, + Moves.ROAR, + Moves.SHELL_TRAP, + Moves.SKETCH, + Moves.SLEEP_TALK, + Moves.SNATCH, + Moves.SPIKY_SHIELD, + Moves.SPOTLIGHT, + Moves.STRUGGLE, + Moves.SWITCHEROO, + Moves.THIEF, + Moves.TRANSFORM, + Moves.TRICK, + Moves.WHIRLWIND, +]); diff --git a/src/data/move.ts b/src/data/moves/move.ts similarity index 79% rename from src/data/move.ts rename to src/data/moves/move.ts index 677ad9f0ebc..f2157ab65b7 100644 --- a/src/data/move.ts +++ b/src/data/moves/move.ts @@ -1,4 +1,4 @@ -import { ChargeAnim, MoveChargeAnim } from "./battle-anims"; +import { ChargeAnim, MoveChargeAnim } from "../battle-anims"; import { CommandedTag, EncoreTag, @@ -10,30 +10,30 @@ import { SubstituteTag, TrappedTag, TypeBoostTag, -} from "./battler-tags"; -import { getPokemonNameWithAffix } from "../messages"; -import type { AttackMoveResult, TurnMove } from "../field/pokemon"; -import type Pokemon from "../field/pokemon"; +} from "../battler-tags"; +import { getPokemonNameWithAffix } from "../../messages"; +import type { AttackMoveResult, TurnMove } from "../../field/pokemon"; +import type Pokemon from "../../field/pokemon"; import { EnemyPokemon, HitResult, MoveResult, PlayerPokemon, PokemonMove, -} from "../field/pokemon"; +} from "../../field/pokemon"; import { getNonVolatileStatusEffects, getStatusEffectHealText, isNonVolatileStatusEffect, -} from "./status-effect"; -import { getTypeDamageMultiplier } from "./type"; -import { Type } from "#enums/type"; +} from "../status-effect"; +import { getTypeDamageMultiplier } from "../type"; +import { PokemonType } from "#enums/pokemon-type"; import type { Constructor } from "#app/utils"; import { NumberHolder } from "#app/utils"; -import * as Utils from "../utils"; +import * as Utils from "../../utils"; import { WeatherType } from "#enums/weather-type"; -import type { ArenaTrapTag } from "./arena-tag"; -import { ArenaTagSide, WeakenMoveTypeTag } from "./arena-tag"; +import type { ArenaTrapTag } from "../arena-tag"; +import { ArenaTagSide, WeakenMoveTypeTag } from "../arena-tag"; import { allAbilities, AllyMoveCategoryPowerBoostAbAttr, @@ -69,7 +69,7 @@ import { UserFieldMoveTypePowerBoostAbAttr, VariableMovePowerAbAttr, WonderSkinAbAttr, -} from "./ability"; +} from "../ability"; import { AttackTypeBoosterModifier, BerryModifier, @@ -77,15 +77,15 @@ import { PokemonMoveAccuracyBoosterModifier, PokemonMultiHitModifier, PreserveBerryModifier, -} from "../modifier/modifier"; -import type { BattlerIndex } from "../battle"; -import { BattleType } from "../battle"; -import { TerrainType } from "./terrain"; +} from "../../modifier/modifier"; +import type { BattlerIndex } from "../../battle"; +import { BattleType } from "../../battle"; +import { TerrainType } from "../terrain"; import { ModifierPoolType } from "#app/modifier/modifier-type"; -import { Command } from "../ui/command-ui-handler"; +import { Command } from "../../ui/command-ui-handler"; import i18next from "i18next"; import type { Localizable } from "#app/interfaces/locales"; -import { getBerryEffectFunc } from "./berry"; +import { getBerryEffectFunc } from "../berry"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; @@ -109,9 +109,9 @@ import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { SwitchPhase } from "#app/phases/switch-phase"; import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; import { ShowAbilityPhase } from "#app/phases/show-ability-phase"; -import { SpeciesFormChangeRevertWeatherFormTrigger } from "./pokemon-forms"; +import { SpeciesFormChangeRevertWeatherFormTrigger } from "../pokemon-forms"; import type { GameMode } from "#app/game-mode"; -import { applyChallenges, ChallengeType } from "./challenge"; +import { applyChallenges, ChallengeType } from "../challenge"; import { SwitchType } from "#enums/switch-type"; import { StatusEffect } from "#enums/status-effect"; import { globalScene } from "#app/global-scene"; @@ -120,89 +120,12 @@ import { LoadMoveAnimPhase } from "#app/phases/load-move-anim-phase"; import { PokemonTransformPhase } from "#app/phases/pokemon-transform-phase"; import { MoveAnimPhase } from "#app/phases/move-anim-phase"; import { loggedInUser } from "#app/account"; - -export enum MoveCategory { - PHYSICAL, - SPECIAL, - STATUS -} - -export enum MoveTarget { - /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_the_user Moves that target the User} */ - USER, - OTHER, - ALL_OTHERS, - NEAR_OTHER, - /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_all_adjacent_Pok%C3%A9mon Moves that target all adjacent Pokemon} */ - ALL_NEAR_OTHERS, - NEAR_ENEMY, - /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_all_adjacent_foes Moves that target all adjacent foes} */ - ALL_NEAR_ENEMIES, - RANDOM_NEAR_ENEMY, - ALL_ENEMIES, - /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Counterattacks Counterattacks} */ - ATTACKER, - /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_one_adjacent_ally Moves that target one adjacent ally} */ - NEAR_ALLY, - ALLY, - USER_OR_NEAR_ALLY, - USER_AND_ALLIES, - /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_all_Pok%C3%A9mon Moves that target all Pokemon} */ - ALL, - USER_SIDE, - /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Entry_hazard-creating_moves Entry hazard-creating moves} */ - ENEMY_SIDE, - BOTH_SIDES, - PARTY, - CURSE -} - -export enum MoveFlags { - NONE = 0, - MAKES_CONTACT = 1 << 0, - IGNORE_PROTECT = 1 << 1, - /** - * Sound-based moves have the following effects: - * - Pokemon with the {@linkcode Abilities.SOUNDPROOF Soundproof Ability} are unaffected by other Pokemon's sound-based moves. - * - Pokemon affected by {@linkcode Moves.THROAT_CHOP Throat Chop} cannot use sound-based moves for two turns. - * - Sound-based moves used by a Pokemon with {@linkcode Abilities.LIQUID_VOICE Liquid Voice} become Water-type moves. - * - Sound-based moves used by a Pokemon with {@linkcode Abilities.PUNK_ROCK Punk Rock} are boosted by 30%. Pokemon with Punk Rock also take half damage from sound-based moves. - * - All sound-based moves (except Howl) can hit Pokemon behind an active {@linkcode Moves.SUBSTITUTE Substitute}. - * - * cf https://bulbapedia.bulbagarden.net/wiki/Sound-based_move - */ - SOUND_BASED = 1 << 2, - HIDE_USER = 1 << 3, - HIDE_TARGET = 1 << 4, - BITING_MOVE = 1 << 5, - PULSE_MOVE = 1 << 6, - PUNCHING_MOVE = 1 << 7, - SLICING_MOVE = 1 << 8, - /** - * Indicates a move should be affected by {@linkcode Abilities.RECKLESS} - * @see {@linkcode Move.recklessMove()} - */ - RECKLESS_MOVE = 1 << 9, - /** Indicates a move should be affected by {@linkcode Abilities.BULLETPROOF} */ - BALLBOMB_MOVE = 1 << 10, - /** Grass types and pokemon with {@linkcode Abilities.OVERCOAT} are immune to powder moves */ - POWDER_MOVE = 1 << 11, - /** Indicates a move should trigger {@linkcode Abilities.DANCER} */ - DANCE_MOVE = 1 << 12, - /** Indicates a move should trigger {@linkcode Abilities.WIND_RIDER} */ - WIND_MOVE = 1 << 13, - /** Indicates a move should trigger {@linkcode Abilities.TRIAGE} */ - TRIAGE_MOVE = 1 << 14, - IGNORE_ABILITIES = 1 << 15, - /** Enables all hits of a multi-hit move to be accuracy checked individually */ - CHECK_ALL_HITS = 1 << 16, - /** Indicates a move is able to bypass its target's Substitute (if the target has one) */ - IGNORE_SUBSTITUTE = 1 << 17, - /** Indicates a move is able to be redirected to allies in a double battle if the attacker faints */ - REDIRECT_COUNTER = 1 << 18, - /** Indicates a move is able to be reflected by {@linkcode Abilities.MAGIC_BOUNCE} and {@linkcode Moves.MAGIC_COAT} */ - REFLECTABLE = 1 << 19, -} +import { MoveCategory } from "#enums/MoveCategory"; +import { MoveTarget } from "#enums/MoveTarget"; +import { MoveFlags } from "#enums/MoveFlags"; +import { MoveEffectTrigger } from "#enums/MoveEffectTrigger"; +import { MultiHitType } from "#enums/MultiHitType"; +import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidSleepTalkMoves } from "./invalid-moves"; type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean; type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean; @@ -210,7 +133,7 @@ type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean; export default class Move implements Localizable { public id: Moves; public name: string; - private _type: Type; + private _type: PokemonType; private _category: MoveCategory; public moveTarget: MoveTarget; public power: number; @@ -227,7 +150,7 @@ export default class Move implements Localizable { private flags: number = 0; private nameAppend: string = ""; - constructor(id: Moves, type: Type, category: MoveCategory, defaultMoveTarget: MoveTarget, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { + constructor(id: Moves, type: PokemonType, category: MoveCategory, defaultMoveTarget: MoveTarget, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { this.id = id; this._type = type; this._category = category; @@ -397,21 +320,21 @@ export default class Move implements Localizable { * Currently looks at cases of Grass types with powder moves and Dark types with moves affected by Prankster. * @param {Pokemon} user the source of this move * @param {Pokemon} target the target of this move - * @param {Type} type the type of the move's target + * @param {PokemonType} type the type of the move's target * @returns boolean */ - isTypeImmune(user: Pokemon, target: Pokemon, type: Type): boolean { + isTypeImmune(user: Pokemon, target: Pokemon, type: PokemonType): boolean { if (this.moveTarget === MoveTarget.USER) { return false; } switch (type) { - case Type.GRASS: + case PokemonType.GRASS: if (this.hasFlag(MoveFlags.POWDER_MOVE)) { return true; } break; - case Type.DARK: + case PokemonType.DARK: if (user.hasAbility(Abilities.PRANKSTER) && this.category === MoveCategory.STATUS && (user.isPlayer() !== target.isPlayer())) { return true; } @@ -999,14 +922,14 @@ export default class Move implements Localizable { } export class AttackMove extends Move { - constructor(id: Moves, type: Type, category: MoveCategory, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { + constructor(id: Moves, type: PokemonType, category: MoveCategory, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { super(id, type, category, MoveTarget.NEAR_OTHER, power, accuracy, pp, chance, priority, generation); /** * {@link https://bulbapedia.bulbagarden.net/wiki/Freeze_(status_condition)} * > All damaging Fire-type moves can now thaw a frozen target, regardless of whether or not they have a chance to burn; */ - if (this.type === Type.FIRE) { + if (this.type === PokemonType.FIRE) { this.addAttr(new HealStatusEffectAttr(false, StatusEffect.FREEZE)); } } @@ -1046,13 +969,13 @@ export class AttackMove extends Move { } export class StatusMove extends Move { - constructor(id: Moves, type: Type, accuracy: number, pp: number, chance: number, priority: number, generation: number) { + constructor(id: Moves, type: PokemonType, accuracy: number, pp: number, chance: number, priority: number, generation: number) { super(id, type, MoveCategory.STATUS, MoveTarget.NEAR_OTHER, -1, accuracy, pp, chance, priority, generation); } } export class SelfStatusMove extends Move { - constructor(id: Moves, type: Type, accuracy: number, pp: number, chance: number, priority: number, generation: number) { + constructor(id: Moves, type: PokemonType, accuracy: number, pp: number, chance: number, priority: number, generation: number) { super(id, type, MoveCategory.STATUS, MoveTarget.USER, -1, accuracy, pp, chance, priority, generation); } } @@ -1201,14 +1124,6 @@ export abstract class MoveAttr { } } -export enum MoveEffectTrigger { - PRE_APPLY, - POST_APPLY, - HIT, - /** Triggers one time after all target effects have applied */ - POST_TARGET, -} - interface MoveEffectAttrOptions { /** * Defines when this effect should trigger in the move's effect order @@ -1920,14 +1835,6 @@ export class AddSubstituteAttr extends MoveEffectAttr { } } -export enum MultiHitType { - _2, - _2_TO_5, - _3, - _10, - BEAT_UP, -} - /** * Heals the user or target by {@linkcode healRatio} depending on the value of {@linkcode selfTarget} * @extends MoveEffectAttr @@ -4764,7 +4671,7 @@ export class AlwaysHitMinimizeAttr extends VariableAccuracyAttr { export class ToxicAccuracyAttr extends VariableAccuracyAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (user.isOfType(Type.POISON)) { + if (user.isOfType(PokemonType.POISON)) { const accuracy = args[0] as Utils.NumberHolder; accuracy.value = -1; return true; @@ -4847,7 +4754,7 @@ export class TeraBlastPowerAttr extends VariablePowerAttr { */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const power = args[0] as Utils.NumberHolder; - if (user.isTerastallized && user.getTeraType() === Type.STELLAR) { + if (user.isTerastallized && user.getTeraType() === PokemonType.STELLAR) { power.value = 100; return true; } @@ -4915,7 +4822,7 @@ export class FormChangeItemTypeAttr extends VariableMoveTypeAttr { if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.ARCEUS) || [ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.SILVALLY)) { const form = user.species.speciesId === Species.ARCEUS || user.species.speciesId === Species.SILVALLY ? user.formIndex : user.fusionSpecies?.formIndex!; - moveType.value = Type[Type[form]]; + moveType.value = PokemonType[PokemonType[form]]; return true; } @@ -4935,19 +4842,19 @@ export class TechnoBlastTypeAttr extends VariableMoveTypeAttr { switch (form) { case 1: // Shock Drive - moveType.value = Type.ELECTRIC; + moveType.value = PokemonType.ELECTRIC; break; case 2: // Burn Drive - moveType.value = Type.FIRE; + moveType.value = PokemonType.FIRE; break; case 3: // Chill Drive - moveType.value = Type.ICE; + moveType.value = PokemonType.ICE; break; case 4: // Douse Drive - moveType.value = Type.WATER; + moveType.value = PokemonType.WATER; break; default: - moveType.value = Type.NORMAL; + moveType.value = PokemonType.NORMAL; break; } return true; @@ -4969,10 +4876,10 @@ export class AuraWheelTypeAttr extends VariableMoveTypeAttr { switch (form) { case 1: // Hangry Mode - moveType.value = Type.DARK; + moveType.value = PokemonType.DARK; break; default: // Full Belly Mode - moveType.value = Type.ELECTRIC; + moveType.value = PokemonType.ELECTRIC; break; } return true; @@ -4994,13 +4901,13 @@ export class RagingBullTypeAttr extends VariableMoveTypeAttr { switch (form) { case 1: // Blaze breed - moveType.value = Type.FIRE; + moveType.value = PokemonType.FIRE; break; case 2: // Aqua breed - moveType.value = Type.WATER; + moveType.value = PokemonType.WATER; break; default: - moveType.value = Type.FIGHTING; + moveType.value = PokemonType.FIGHTING; break; } return true; @@ -5023,19 +4930,19 @@ export class IvyCudgelTypeAttr extends VariableMoveTypeAttr { switch (form) { case 1: // Wellspring Mask case 5: // Wellspring Mask Tera - moveType.value = Type.WATER; + moveType.value = PokemonType.WATER; break; case 2: // Hearthflame Mask case 6: // Hearthflame Mask Tera - moveType.value = Type.FIRE; + moveType.value = PokemonType.FIRE; break; case 3: // Cornerstone Mask case 7: // Cornerstone Mask Tera - moveType.value = Type.ROCK; + moveType.value = PokemonType.ROCK; break; case 4: // Teal Mask Tera default: - moveType.value = Type.GRASS; + moveType.value = PokemonType.GRASS; break; } return true; @@ -5056,18 +4963,18 @@ export class WeatherBallTypeAttr extends VariableMoveTypeAttr { switch (globalScene.arena.weather?.weatherType) { case WeatherType.SUNNY: case WeatherType.HARSH_SUN: - moveType.value = Type.FIRE; + moveType.value = PokemonType.FIRE; break; case WeatherType.RAIN: case WeatherType.HEAVY_RAIN: - moveType.value = Type.WATER; + moveType.value = PokemonType.WATER; break; case WeatherType.SANDSTORM: - moveType.value = Type.ROCK; + moveType.value = PokemonType.ROCK; break; case WeatherType.HAIL: case WeatherType.SNOW: - moveType.value = Type.ICE; + moveType.value = PokemonType.ICE; break; default: return false; @@ -5106,16 +5013,16 @@ export class TerrainPulseTypeAttr extends VariableMoveTypeAttr { const currentTerrain = globalScene.arena.getTerrainType(); switch (currentTerrain) { case TerrainType.MISTY: - moveType.value = Type.FAIRY; + moveType.value = PokemonType.FAIRY; break; case TerrainType.ELECTRIC: - moveType.value = Type.ELECTRIC; + moveType.value = PokemonType.ELECTRIC; break; case TerrainType.GRASSY: - moveType.value = Type.GRASS; + moveType.value = PokemonType.GRASS; break; case TerrainType.PSYCHIC: - moveType.value = Type.PSYCHIC; + moveType.value = PokemonType.PSYCHIC; break; default: return false; @@ -5143,10 +5050,10 @@ export class HiddenPowerTypeAttr extends VariableMoveTypeAttr { + (user.ivs[Stat.SPDEF] & 1) * 32) * 15 / 63); moveType.value = [ - Type.FIGHTING, Type.FLYING, Type.POISON, Type.GROUND, - Type.ROCK, Type.BUG, Type.GHOST, Type.STEEL, - Type.FIRE, Type.WATER, Type.GRASS, Type.ELECTRIC, - Type.PSYCHIC, Type.ICE, Type.DRAGON, Type.DARK ][iv_val]; + PokemonType.FIGHTING, PokemonType.FLYING, PokemonType.POISON, PokemonType.GROUND, + PokemonType.ROCK, PokemonType.BUG, PokemonType.GHOST, PokemonType.STEEL, + PokemonType.FIRE, PokemonType.WATER, PokemonType.GRASS, PokemonType.ELECTRIC, + PokemonType.PSYCHIC, PokemonType.ICE, PokemonType.DRAGON, PokemonType.DARK ][iv_val]; return true; } @@ -5190,13 +5097,13 @@ export class TeraStarstormTypeAttr extends VariableMoveTypeAttr { * @param target n/a * @param move n/a * @param args[0] {@linkcode Utils.NumberHolder} the move type - * @returns `true` if the move type is changed to {@linkcode Type.STELLAR}, `false` otherwise + * @returns `true` if the move type is changed to {@linkcode PokemonType.STELLAR}, `false` otherwise */ override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (user.isTerastallized && user.hasSpecies(Species.TERAPAGOS)) { const moveType = args[0] as Utils.NumberHolder; - moveType.value = Type.STELLAR; + moveType.value = PokemonType.STELLAR; return true; } return false; @@ -5211,7 +5118,7 @@ export class MatchUserTypeAttr extends VariableMoveTypeAttr { } const userTypes = user.getTypes(true); - if (userTypes.includes(Type.STELLAR)) { // will not change to stellar type + if (userTypes.includes(PokemonType.STELLAR)) { // will not change to stellar type const nonTeraTypes = user.getTypes(); moveType.value = nonTeraTypes[0]; return true; @@ -5244,19 +5151,19 @@ export class CombinedPledgeTypeAttr extends VariableMoveTypeAttr { switch (move.id) { case Moves.FIRE_PLEDGE: if (combinedPledgeMove === Moves.WATER_PLEDGE) { - moveType.value = Type.WATER; + moveType.value = PokemonType.WATER; return true; } return false; case Moves.WATER_PLEDGE: if (combinedPledgeMove === Moves.GRASS_PLEDGE) { - moveType.value = Type.GRASS; + moveType.value = PokemonType.GRASS; return true; } return false; case Moves.GRASS_PLEDGE: if (combinedPledgeMove === Moves.FIRE_PLEDGE) { - moveType.value = Type.FIRE; + moveType.value = PokemonType.FIRE; return true; } return false; @@ -5277,7 +5184,7 @@ export class NeutralDamageAgainstFlyingTypeMultiplierAttr extends VariableMoveTy if (!target.getTag(BattlerTagType.IGNORE_FLYING)) { const multiplier = args[0] as Utils.NumberHolder; //When a flying type is hit, the first hit is always 1x multiplier. - if (target.isOfType(Type.FLYING)) { + if (target.isOfType(PokemonType.FLYING)) { multiplier.value = 1; } return true; @@ -5298,7 +5205,7 @@ export class IceNoEffectTypeAttr extends VariableMoveTypeMultiplierAttr { */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const multiplier = args[0] as Utils.NumberHolder; - if (target.isOfType(Type.ICE)) { + if (target.isOfType(PokemonType.ICE)) { multiplier.value = 0; return true; } @@ -5309,7 +5216,7 @@ export class IceNoEffectTypeAttr extends VariableMoveTypeMultiplierAttr { export class FlyingTypeMultiplierAttr extends VariableMoveTypeMultiplierAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const multiplier = args[0] as Utils.NumberHolder; - multiplier.value *= target.getAttackTypeEffectiveness(Type.FLYING, user); + multiplier.value *= target.getAttackTypeEffectiveness(PokemonType.FLYING, user); return true; } } @@ -5338,9 +5245,9 @@ export class VariableMoveTypeChartAttr extends MoveAttr { export class FreezeDryAttr extends VariableMoveTypeChartAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const multiplier = args[0] as Utils.NumberHolder; - const defType = args[1] as Type; + const defType = args[1] as PokemonType; - if (defType === Type.WATER) { + if (defType === PokemonType.WATER) { multiplier.value = 2; return true; } else { @@ -5377,7 +5284,7 @@ export class SheerColdAccuracyAttr extends OneHitKOAccuracyAttr { if (user.level < target.level) { accuracy.value = 0; } else { - const baseAccuracy = user.isOfType(Type.ICE) ? 30 : 20; + const baseAccuracy = user.isOfType(PokemonType.ICE) ? 30 : 20; accuracy.value = Math.min(Math.max(baseAccuracy + 100 * (1 - target.level / user.level), 0), 100); } return true; @@ -5711,7 +5618,7 @@ export class JawLockAttr extends AddBattlerTagAttr { export class CurseAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move:Move, args: any[]): boolean { - if (user.getTypes(true).includes(Type.GHOST)) { + if (user.getTypes(true).includes(PokemonType.GHOST)) { if (target.getTag(BattlerTagType.CURSED)) { globalScene.queueMessage(i18next.t("battle:attackFailed")); return false; @@ -6517,10 +6424,10 @@ export class ChillyReceptionAttr extends ForceSwitchOutAttr { } export class RemoveTypeAttr extends MoveEffectAttr { - private removedType: Type; + private removedType: PokemonType; private messageCallback: ((user: Pokemon) => void) | undefined; - constructor(removedType: Type, messageCallback?: (user: Pokemon) => void) { + constructor(removedType: PokemonType, messageCallback?: (user: Pokemon) => void) { super(true, { trigger: MoveEffectTrigger.POST_TARGET }); this.removedType = removedType; this.messageCallback = messageCallback; @@ -6539,7 +6446,7 @@ export class RemoveTypeAttr extends MoveEffectAttr { const userTypes = user.getTypes(true); const modifiedTypes = userTypes.filter(type => type !== this.removedType); if (modifiedTypes.length === 0) { - modifiedTypes.push(Type.UNKNOWN); + modifiedTypes.push(PokemonType.UNKNOWN); } user.summonData.types = modifiedTypes; user.updateInfo(); @@ -6564,8 +6471,8 @@ export class CopyTypeAttr extends MoveEffectAttr { } const targetTypes = target.getTypes(true); - if (targetTypes.includes(Type.UNKNOWN) && targetTypes.indexOf(Type.UNKNOWN) > -1) { - targetTypes[targetTypes.indexOf(Type.UNKNOWN)] = Type.NORMAL; + if (targetTypes.includes(PokemonType.UNKNOWN) && targetTypes.indexOf(PokemonType.UNKNOWN) > -1) { + targetTypes[targetTypes.indexOf(PokemonType.UNKNOWN)] = PokemonType.NORMAL; } user.summonData.types = targetTypes; user.updateInfo(); @@ -6576,7 +6483,7 @@ export class CopyTypeAttr extends MoveEffectAttr { } getCondition(): MoveConditionFunc { - return (user, target, move) => target.getTypes()[0] !== Type.UNKNOWN || target.summonData.addedType !== null; + return (user, target, move) => target.getTypes()[0] !== PokemonType.UNKNOWN || target.summonData.addedType !== null; } } @@ -6591,7 +6498,7 @@ export class CopyBiomeTypeAttr extends MoveEffectAttr { } const terrainType = globalScene.arena.getTerrainType(); - let typeChange: Type; + let typeChange: PokemonType; if (terrainType !== TerrainType.NONE) { typeChange = this.getTypeForTerrain(globalScene.arena.getTerrainType()); } else { @@ -6601,7 +6508,7 @@ export class CopyBiomeTypeAttr extends MoveEffectAttr { user.summonData.types = [ typeChange ]; user.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), typeName: i18next.t(`pokemonInfo:Type.${Type[typeChange]}`) })); + globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), typeName: i18next.t(`pokemonInfo:Type.${PokemonType[typeChange]}`) })); return true; } @@ -6611,19 +6518,19 @@ export class CopyBiomeTypeAttr extends MoveEffectAttr { * @param terrainType {@linkcode TerrainType} * @returns {@linkcode Type} */ - private getTypeForTerrain(terrainType: TerrainType): Type { + private getTypeForTerrain(terrainType: TerrainType): PokemonType { switch (terrainType) { case TerrainType.ELECTRIC: - return Type.ELECTRIC; + return PokemonType.ELECTRIC; case TerrainType.MISTY: - return Type.FAIRY; + return PokemonType.FAIRY; case TerrainType.GRASSY: - return Type.GRASS; + return PokemonType.GRASS; case TerrainType.PSYCHIC: - return Type.PSYCHIC; + return PokemonType.PSYCHIC; case TerrainType.NONE: default: - return Type.UNKNOWN; + return PokemonType.UNKNOWN; } } @@ -6632,71 +6539,71 @@ export class CopyBiomeTypeAttr extends MoveEffectAttr { * @param biomeType {@linkcode Biome} * @returns {@linkcode Type} */ - private getTypeForBiome(biomeType: Biome): Type { + private getTypeForBiome(biomeType: Biome): PokemonType { switch (biomeType) { case Biome.TOWN: case Biome.PLAINS: case Biome.METROPOLIS: - return Type.NORMAL; + return PokemonType.NORMAL; case Biome.GRASS: case Biome.TALL_GRASS: - return Type.GRASS; + return PokemonType.GRASS; case Biome.FOREST: case Biome.JUNGLE: - return Type.BUG; + return PokemonType.BUG; case Biome.SLUM: case Biome.SWAMP: - return Type.POISON; + return PokemonType.POISON; case Biome.SEA: case Biome.BEACH: case Biome.LAKE: case Biome.SEABED: - return Type.WATER; + return PokemonType.WATER; case Biome.MOUNTAIN: - return Type.FLYING; + return PokemonType.FLYING; case Biome.BADLANDS: - return Type.GROUND; + return PokemonType.GROUND; case Biome.CAVE: case Biome.DESERT: - return Type.ROCK; + return PokemonType.ROCK; case Biome.ICE_CAVE: case Biome.SNOWY_FOREST: - return Type.ICE; + return PokemonType.ICE; case Biome.MEADOW: case Biome.FAIRY_CAVE: case Biome.ISLAND: - return Type.FAIRY; + return PokemonType.FAIRY; case Biome.POWER_PLANT: - return Type.ELECTRIC; + return PokemonType.ELECTRIC; case Biome.VOLCANO: - return Type.FIRE; + return PokemonType.FIRE; case Biome.GRAVEYARD: case Biome.TEMPLE: - return Type.GHOST; + return PokemonType.GHOST; case Biome.DOJO: case Biome.CONSTRUCTION_SITE: - return Type.FIGHTING; + return PokemonType.FIGHTING; case Biome.FACTORY: case Biome.LABORATORY: - return Type.STEEL; + return PokemonType.STEEL; case Biome.RUINS: case Biome.SPACE: - return Type.PSYCHIC; + return PokemonType.PSYCHIC; case Biome.WASTELAND: case Biome.END: - return Type.DRAGON; + return PokemonType.DRAGON; case Biome.ABYSS: - return Type.DARK; + return PokemonType.DARK; default: - return Type.UNKNOWN; + return PokemonType.UNKNOWN; } } } export class ChangeTypeAttr extends MoveEffectAttr { - private type: Type; + private type: PokemonType; - constructor(type: Type) { + constructor(type: PokemonType) { super(false, { trigger: MoveEffectTrigger.HIT }); this.type = type; @@ -6706,7 +6613,7 @@ export class ChangeTypeAttr extends MoveEffectAttr { target.summonData.types = [ this.type ]; target.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(target), typeName: i18next.t(`pokemonInfo:Type.${Type[this.type]}`) })); + globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(target), typeName: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) })); return true; } @@ -6717,9 +6624,9 @@ export class ChangeTypeAttr extends MoveEffectAttr { } export class AddTypeAttr extends MoveEffectAttr { - private type: Type; + private type: PokemonType; - constructor(type: Type) { + constructor(type: PokemonType) { super(false, { trigger: MoveEffectTrigger.HIT }); this.type = type; @@ -6729,7 +6636,7 @@ export class AddTypeAttr extends MoveEffectAttr { target.summonData.addedType = this.type; target.updateInfo(); - globalScene.queueMessage(i18next.t("moveTriggers:addType", { typeName: i18next.t(`pokemonInfo:Type.${Type[this.type]}`), pokemonName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:addType", { typeName: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`), pokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -6751,7 +6658,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr { const firstMoveType = target.getMoveset()[0]?.getMove().type!; // TODO: is this bang correct? user.summonData.types = [ firstMoveType ]; - globalScene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: i18next.t(`pokemonInfo:Type.${Type[firstMoveType]}`) })); + globalScene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: i18next.t(`pokemonInfo:Type.${PokemonType[firstMoveType]}`) })); return true; } @@ -6764,7 +6671,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr { * @extends OverrideMoveEffectAttr */ class CallMoveAttr extends OverrideMoveEffectAttr { - protected invalidMoves: Moves[]; + protected invalidMoves: ReadonlySet; protected hasTarget: boolean; apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const replaceMoveTarget = move.moveTarget === MoveTarget.NEAR_OTHER ? MoveTarget.NEAR_ENEMY : undefined; @@ -6789,7 +6696,7 @@ class CallMoveAttr extends OverrideMoveEffectAttr { * @extends CallMoveAttr to call a selected move */ export class RandomMoveAttr extends CallMoveAttr { - constructor(invalidMoves: Moves[]) { + constructor(invalidMoves: ReadonlySet) { super(); this.invalidMoves = invalidMoves; } @@ -6811,7 +6718,7 @@ export class RandomMoveAttr extends CallMoveAttr { * @param args Unused */ override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - const moveIds = Utils.getEnumValues(Moves).map(m => !this.invalidMoves.includes(m) && !allMoves[m].name.endsWith(" (N)") ? m : Moves.NONE); + const moveIds = Utils.getEnumValues(Moves).map(m => !this.invalidMoves.has(m) && !allMoves[m].name.endsWith(" (N)") ? m : Moves.NONE); let moveId: Moves = Moves.NONE; do { moveId = this.getMoveOverride() ?? moveIds[user.randSeedInt(moveIds.length)]; @@ -6834,7 +6741,7 @@ export class RandomMoveAttr extends CallMoveAttr { export class RandomMovesetMoveAttr extends CallMoveAttr { private includeParty: boolean; private moveId: number; - constructor(invalidMoves: Moves[], includeParty: boolean = false) { + constructor(invalidMoves: ReadonlySet, includeParty: boolean = false) { super(); this.includeParty = includeParty; this.invalidMoves = invalidMoves; @@ -6861,7 +6768,7 @@ export class RandomMovesetMoveAttr extends CallMoveAttr { allies = [ user ]; } const partyMoveset = allies.map(p => p.moveset).flat(); - const moves = partyMoveset.filter(m => !this.invalidMoves.includes(m!.moveId) && !m!.getMove().name.endsWith(" (N)")); + const moves = partyMoveset.filter(m => !this.invalidMoves.has(m!.moveId) && !m!.getMove().name.endsWith(" (N)")); if (moves.length === 0) { return false; } @@ -6872,282 +6779,6 @@ export class RandomMovesetMoveAttr extends CallMoveAttr { } } -const invalidMetronomeMoves: Moves[] = [ - Moves.AFTER_YOU, - Moves.APPLE_ACID, - Moves.ARMOR_CANNON, - Moves.ASSIST, - Moves.ASTRAL_BARRAGE, - Moves.AURA_WHEEL, - Moves.BANEFUL_BUNKER, - Moves.BEAK_BLAST, - Moves.BEHEMOTH_BASH, - Moves.BEHEMOTH_BLADE, - Moves.BELCH, - Moves.BESTOW, - Moves.BLAZING_TORQUE, - Moves.BODY_PRESS, - Moves.BRANCH_POKE, - Moves.BREAKING_SWIPE, - Moves.CELEBRATE, - Moves.CHATTER, - Moves.CHILLING_WATER, - Moves.CHILLY_RECEPTION, - Moves.CLANGOROUS_SOUL, - Moves.COLLISION_COURSE, - Moves.COMBAT_TORQUE, - Moves.COMEUPPANCE, - Moves.COPYCAT, - Moves.COUNTER, - Moves.COVET, - Moves.CRAFTY_SHIELD, - Moves.DECORATE, - Moves.DESTINY_BOND, - Moves.DETECT, - Moves.DIAMOND_STORM, - Moves.DOODLE, - Moves.DOUBLE_IRON_BASH, - Moves.DOUBLE_SHOCK, - Moves.DRAGON_ASCENT, - Moves.DRAGON_ENERGY, - Moves.DRUM_BEATING, - Moves.DYNAMAX_CANNON, - Moves.ELECTRO_DRIFT, - Moves.ENDURE, - Moves.ETERNABEAM, - Moves.FALSE_SURRENDER, - Moves.FEINT, - Moves.FIERY_WRATH, - Moves.FILLET_AWAY, - Moves.FLEUR_CANNON, - Moves.FOCUS_PUNCH, - Moves.FOLLOW_ME, - Moves.FREEZE_SHOCK, - Moves.FREEZING_GLARE, - Moves.GLACIAL_LANCE, - Moves.GRAV_APPLE, - Moves.HELPING_HAND, - Moves.HOLD_HANDS, - Moves.HYPER_DRILL, - Moves.HYPERSPACE_FURY, - Moves.HYPERSPACE_HOLE, - Moves.ICE_BURN, - Moves.INSTRUCT, - Moves.JET_PUNCH, - Moves.JUNGLE_HEALING, - Moves.KINGS_SHIELD, - Moves.LIFE_DEW, - Moves.LIGHT_OF_RUIN, - Moves.MAKE_IT_RAIN, - Moves.MAGICAL_TORQUE, - Moves.MAT_BLOCK, - Moves.ME_FIRST, - Moves.METEOR_ASSAULT, - Moves.METRONOME, - Moves.MIMIC, - Moves.MIND_BLOWN, - Moves.MIRROR_COAT, - Moves.MIRROR_MOVE, - Moves.MOONGEIST_BEAM, - Moves.NATURE_POWER, - Moves.NATURES_MADNESS, - Moves.NOXIOUS_TORQUE, - Moves.OBSTRUCT, - Moves.ORDER_UP, - Moves.ORIGIN_PULSE, - Moves.OVERDRIVE, - Moves.PHOTON_GEYSER, - Moves.PLASMA_FISTS, - Moves.POPULATION_BOMB, - Moves.POUNCE, - Moves.POWER_SHIFT, - Moves.PRECIPICE_BLADES, - Moves.PROTECT, - Moves.PYRO_BALL, - Moves.QUASH, - Moves.QUICK_GUARD, - Moves.RAGE_FIST, - Moves.RAGE_POWDER, - Moves.RAGING_BULL, - Moves.RAGING_FURY, - Moves.RELIC_SONG, - Moves.REVIVAL_BLESSING, - Moves.RUINATION, - Moves.SALT_CURE, - Moves.SECRET_SWORD, - Moves.SHED_TAIL, - Moves.SHELL_TRAP, - Moves.SILK_TRAP, - Moves.SKETCH, - Moves.SLEEP_TALK, - Moves.SNAP_TRAP, - Moves.SNARL, - Moves.SNATCH, - Moves.SNORE, - Moves.SNOWSCAPE, - Moves.SPECTRAL_THIEF, - Moves.SPICY_EXTRACT, - Moves.SPIKY_SHIELD, - Moves.SPIRIT_BREAK, - Moves.SPOTLIGHT, - Moves.STEAM_ERUPTION, - Moves.STEEL_BEAM, - Moves.STRANGE_STEAM, - Moves.STRUGGLE, - Moves.SUNSTEEL_STRIKE, - Moves.SURGING_STRIKES, - Moves.SWITCHEROO, - Moves.TECHNO_BLAST, - Moves.TERA_STARSTORM, - Moves.THIEF, - Moves.THOUSAND_ARROWS, - Moves.THOUSAND_WAVES, - Moves.THUNDER_CAGE, - Moves.THUNDEROUS_KICK, - Moves.TIDY_UP, - Moves.TRAILBLAZE, - Moves.TRANSFORM, - Moves.TRICK, - Moves.TWIN_BEAM, - Moves.V_CREATE, - Moves.WICKED_BLOW, - Moves.WICKED_TORQUE, - Moves.WIDE_GUARD, -]; - -const invalidAssistMoves: Moves[] = [ - Moves.ASSIST, - Moves.BANEFUL_BUNKER, - Moves.BEAK_BLAST, - Moves.BELCH, - Moves.BESTOW, - Moves.BOUNCE, - Moves.CELEBRATE, - Moves.CHATTER, - Moves.CIRCLE_THROW, - Moves.COPYCAT, - Moves.COUNTER, - Moves.COVET, - Moves.DESTINY_BOND, - Moves.DETECT, - Moves.DIG, - Moves.DIVE, - Moves.DRAGON_TAIL, - Moves.ENDURE, - Moves.FEINT, - Moves.FLY, - Moves.FOCUS_PUNCH, - Moves.FOLLOW_ME, - Moves.HELPING_HAND, - Moves.HOLD_HANDS, - Moves.KINGS_SHIELD, - Moves.MAT_BLOCK, - Moves.ME_FIRST, - Moves.METRONOME, - Moves.MIMIC, - Moves.MIRROR_COAT, - Moves.MIRROR_MOVE, - Moves.NATURE_POWER, - Moves.PHANTOM_FORCE, - Moves.PROTECT, - Moves.RAGE_POWDER, - Moves.ROAR, - Moves.SHADOW_FORCE, - Moves.SHELL_TRAP, - Moves.SKETCH, - Moves.SKY_DROP, - Moves.SLEEP_TALK, - Moves.SNATCH, - Moves.SPIKY_SHIELD, - Moves.SPOTLIGHT, - Moves.STRUGGLE, - Moves.SWITCHEROO, - Moves.THIEF, - Moves.TRANSFORM, - Moves.TRICK, - Moves.WHIRLWIND, -]; - -const invalidSleepTalkMoves: Moves[] = [ - Moves.ASSIST, - Moves.BELCH, - Moves.BEAK_BLAST, - Moves.BIDE, - Moves.BOUNCE, - Moves.COPYCAT, - Moves.DIG, - Moves.DIVE, - Moves.DYNAMAX_CANNON, - Moves.FREEZE_SHOCK, - Moves.FLY, - Moves.FOCUS_PUNCH, - Moves.GEOMANCY, - Moves.ICE_BURN, - Moves.ME_FIRST, - Moves.METRONOME, - Moves.MIRROR_MOVE, - Moves.MIMIC, - Moves.PHANTOM_FORCE, - Moves.RAZOR_WIND, - Moves.SHADOW_FORCE, - Moves.SHELL_TRAP, - Moves.SKETCH, - Moves.SKULL_BASH, - Moves.SKY_ATTACK, - Moves.SKY_DROP, - Moves.SLEEP_TALK, - Moves.SOLAR_BLADE, - Moves.SOLAR_BEAM, - Moves.STRUGGLE, - Moves.UPROAR, -]; - -const invalidCopycatMoves = [ - Moves.ASSIST, - Moves.BANEFUL_BUNKER, - Moves.BEAK_BLAST, - Moves.BEHEMOTH_BASH, - Moves.BEHEMOTH_BLADE, - Moves.BESTOW, - Moves.CELEBRATE, - Moves.CHATTER, - Moves.CIRCLE_THROW, - Moves.COPYCAT, - Moves.COUNTER, - Moves.COVET, - Moves.DESTINY_BOND, - Moves.DETECT, - Moves.DRAGON_TAIL, - Moves.ENDURE, - Moves.FEINT, - Moves.FOCUS_PUNCH, - Moves.FOLLOW_ME, - Moves.HELPING_HAND, - Moves.HOLD_HANDS, - Moves.KINGS_SHIELD, - Moves.MAT_BLOCK, - Moves.ME_FIRST, - Moves.METRONOME, - Moves.MIMIC, - Moves.MIRROR_COAT, - Moves.MIRROR_MOVE, - Moves.PROTECT, - Moves.RAGE_POWDER, - Moves.ROAR, - Moves.SHELL_TRAP, - Moves.SKETCH, - Moves.SLEEP_TALK, - Moves.SNATCH, - Moves.SPIKY_SHIELD, - Moves.SPOTLIGHT, - Moves.STRUGGLE, - Moves.SWITCHEROO, - Moves.THIEF, - Moves.TRANSFORM, - Moves.TRICK, - Moves.WHIRLWIND, -]; - export class NaturePowerAttr extends OverrideMoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { let moveId; @@ -7295,7 +6926,7 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr { */ export class CopyMoveAttr extends CallMoveAttr { private mirrorMove: boolean; - constructor(mirrorMove: boolean, invalidMoves: Moves[] = []) { + constructor(mirrorMove: boolean, invalidMoves: ReadonlySet = new Set()) { super(); this.mirrorMove = mirrorMove; this.invalidMoves = invalidMoves; @@ -7313,7 +6944,7 @@ export class CopyMoveAttr extends CallMoveAttr { return target.getMoveHistory().length !== 0; } else { const lastMove = globalScene.currentBattle.lastMove; - return lastMove !== undefined && !this.invalidMoves.includes(lastMove); + return lastMove !== undefined && !this.invalidMoves.has(lastMove); } }; } @@ -8258,7 +7889,7 @@ const failIfLastInPartyCondition: MoveConditionFunc = (user: Pokemon, target: Po return party.some(pokemon => pokemon.isActive() && !pokemon.isOnField()); }; -const failIfGhostTypeCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => !target.isOfType(Type.GHOST); +const failIfGhostTypeCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => !target.isOfType(PokemonType.GHOST); const failIfNoTargetHeldItemsCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => target.getHeldItems().filter(i => i.isTransferable)?.length > 0; @@ -8414,7 +8045,7 @@ export class ResistLastMoveTypeAttr extends MoveEffectAttr { } const moveData = allMoves[targetMove.move]; - if (moveData.type === Type.STELLAR || moveData.type === Type.UNKNOWN) { + if (moveData.type === PokemonType.STELLAR || moveData.type === PokemonType.UNKNOWN) { return false; } const userTypes = user.getTypes(); @@ -8424,7 +8055,7 @@ export class ResistLastMoveTypeAttr extends MoveEffectAttr { } const type = validTypes[user.randSeedInt(validTypes.length)]; user.summonData.types = [ type ]; - globalScene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: Utils.toReadableString(Type[type]) })); + globalScene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: Utils.toReadableString(PokemonType[type]) })); user.updateInfo(); return true; @@ -8434,10 +8065,10 @@ export class ResistLastMoveTypeAttr extends MoveEffectAttr { * Retrieve the types resisting a given type. Used by Conversion 2 * @returns An array populated with Types, or an empty array if no resistances exist (Unknown or Stellar type) */ - getTypeResistances(gameMode: GameMode, type: number): Type[] { - const typeResistances: Type[] = []; + getTypeResistances(gameMode: GameMode, type: number): PokemonType[] { + const typeResistances: PokemonType[] = []; - for (let i = 0; i < Object.keys(Type).length; i++) { + for (let i = 0; i < Object.keys(PokemonType).length; i++) { const multiplier = new NumberHolder(1); multiplier.value = getTypeDamageMultiplier(type, i); applyChallenges(gameMode, ChallengeType.TYPE_EFFECTIVENESS, multiplier); @@ -8490,7 +8121,7 @@ export class ExposedMoveAttr extends AddBattlerTagAttr { } -const unknownTypeCondition: MoveConditionFunc = (user, target, move) => !user.getTypes().includes(Type.UNKNOWN); +const unknownTypeCondition: MoveConditionFunc = (user, target, move) => !user.getTypes().includes(PokemonType.UNKNOWN); export type MoveTargetSet = { targets: BattlerIndex[]; @@ -8556,7 +8187,7 @@ export function getMoveTargets(user: Pokemon, move: Moves, replaceTarget?: MoveT multiple = true; break; case MoveTarget.CURSE: - set = user.getTypes(true).includes(Type.GHOST) ? (opponents.concat([ user.getAlly() ])) : [ user ]; + set = user.getTypes(true).includes(PokemonType.GHOST) ? (opponents.concat([ user.getAlly() ])) : [ user ]; break; } @@ -8564,153 +8195,153 @@ export function getMoveTargets(user: Pokemon, move: Moves, replaceTarget?: MoveT } export const allMoves: Move[] = [ - new SelfStatusMove(Moves.NONE, Type.NORMAL, MoveCategory.STATUS, -1, -1, 0, 1), + new SelfStatusMove(Moves.NONE, PokemonType.NORMAL, MoveCategory.STATUS, -1, -1, 0, 1), ]; export const selfStatLowerMoves: Moves[] = []; export function initMoves() { allMoves.push( - new AttackMove(Moves.POUND, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), - new AttackMove(Moves.KARATE_CHOP, Type.FIGHTING, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 1) + new AttackMove(Moves.POUND, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), + new AttackMove(Moves.KARATE_CHOP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 1) .attr(HighCritAttr), - new AttackMove(Moves.DOUBLE_SLAP, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 10, -1, 0, 1) + new AttackMove(Moves.DOUBLE_SLAP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 10, -1, 0, 1) .attr(MultiHitAttr), - new AttackMove(Moves.COMET_PUNCH, Type.NORMAL, MoveCategory.PHYSICAL, 18, 85, 15, -1, 0, 1) + new AttackMove(Moves.COMET_PUNCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 18, 85, 15, -1, 0, 1) .attr(MultiHitAttr) .punchingMove(), - new AttackMove(Moves.MEGA_PUNCH, Type.NORMAL, MoveCategory.PHYSICAL, 80, 85, 20, -1, 0, 1) + new AttackMove(Moves.MEGA_PUNCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 85, 20, -1, 0, 1) .punchingMove(), - new AttackMove(Moves.PAY_DAY, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 1) + new AttackMove(Moves.PAY_DAY, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 1) .attr(MoneyAttr) .makesContact(false), - new AttackMove(Moves.FIRE_PUNCH, Type.FIRE, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) + new AttackMove(Moves.FIRE_PUNCH, PokemonType.FIRE, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.BURN) .punchingMove(), - new AttackMove(Moves.ICE_PUNCH, Type.ICE, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) + new AttackMove(Moves.ICE_PUNCH, PokemonType.ICE, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.FREEZE) .punchingMove(), - new AttackMove(Moves.THUNDER_PUNCH, Type.ELECTRIC, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) + new AttackMove(Moves.THUNDER_PUNCH, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 75, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .punchingMove(), - new AttackMove(Moves.SCRATCH, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), - new AttackMove(Moves.VISE_GRIP, Type.NORMAL, MoveCategory.PHYSICAL, 55, 100, 30, -1, 0, 1), - new AttackMove(Moves.GUILLOTINE, Type.NORMAL, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) + new AttackMove(Moves.SCRATCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), + new AttackMove(Moves.VISE_GRIP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 55, 100, 30, -1, 0, 1), + new AttackMove(Moves.GUILLOTINE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) .attr(OneHitKOAttr) .attr(OneHitKOAccuracyAttr), - new ChargingAttackMove(Moves.RAZOR_WIND, Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 1) + new ChargingAttackMove(Moves.RAZOR_WIND, PokemonType.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:whippedUpAWhirlwind", { pokemonName: "{USER}" })) .attr(HighCritAttr) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new SelfStatusMove(Moves.SWORDS_DANCE, Type.NORMAL, -1, 20, -1, 0, 1) + new SelfStatusMove(Moves.SWORDS_DANCE, PokemonType.NORMAL, -1, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], 2, true) .danceMove(), - new AttackMove(Moves.CUT, Type.NORMAL, MoveCategory.PHYSICAL, 50, 95, 30, -1, 0, 1) + new AttackMove(Moves.CUT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 50, 95, 30, -1, 0, 1) .slicingMove(), - new AttackMove(Moves.GUST, Type.FLYING, MoveCategory.SPECIAL, 40, 100, 35, -1, 0, 1) + new AttackMove(Moves.GUST, PokemonType.FLYING, MoveCategory.SPECIAL, 40, 100, 35, -1, 0, 1) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.FLYING) .windMove(), - new AttackMove(Moves.WING_ATTACK, Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 35, -1, 0, 1), - new StatusMove(Moves.WHIRLWIND, Type.NORMAL, -1, 20, -1, -6, 1) + new AttackMove(Moves.WING_ATTACK, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, 100, 35, -1, 0, 1), + new StatusMove(Moves.WHIRLWIND, PokemonType.NORMAL, -1, 20, -1, -6, 1) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .ignoresSubstitute() .hidesTarget() .windMove() .reflectable(), - new ChargingAttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1) + new ChargingAttackMove(Moves.FLY, PokemonType.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1) .chargeText(i18next.t("moveTriggers:flewUpHigh", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) .condition(failOnGravityCondition), - new AttackMove(Moves.BIND, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) + new AttackMove(Moves.BIND, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) .attr(TrapAttr, BattlerTagType.BIND), - new AttackMove(Moves.SLAM, Type.NORMAL, MoveCategory.PHYSICAL, 80, 75, 20, -1, 0, 1), - new AttackMove(Moves.VINE_WHIP, Type.GRASS, MoveCategory.PHYSICAL, 45, 100, 25, -1, 0, 1), - new AttackMove(Moves.STOMP, Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 1) + new AttackMove(Moves.SLAM, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 75, 20, -1, 0, 1), + new AttackMove(Moves.VINE_WHIP, PokemonType.GRASS, MoveCategory.PHYSICAL, 45, 100, 25, -1, 0, 1), + new AttackMove(Moves.STOMP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 1) .attr(AlwaysHitMinimizeAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .attr(FlinchAttr), - new AttackMove(Moves.DOUBLE_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 30, 100, 30, -1, 0, 1) + new AttackMove(Moves.DOUBLE_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 30, 100, 30, -1, 0, 1) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.MEGA_KICK, Type.NORMAL, MoveCategory.PHYSICAL, 120, 75, 5, -1, 0, 1), - new AttackMove(Moves.JUMP_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, 0, 1) + new AttackMove(Moves.MEGA_KICK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 75, 5, -1, 0, 1), + new AttackMove(Moves.JUMP_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, 0, 1) .attr(MissEffectAttr, crashDamageFunc) .attr(NoEffectAttr, crashDamageFunc) .condition(failOnGravityCondition) .recklessMove(), - new AttackMove(Moves.ROLLING_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, 30, 0, 1) + new AttackMove(Moves.ROLLING_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, 30, 0, 1) .attr(FlinchAttr), - new StatusMove(Moves.SAND_ATTACK, Type.GROUND, 100, 15, -1, 0, 1) + new StatusMove(Moves.SAND_ATTACK, PokemonType.GROUND, 100, 15, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .reflectable(), - new AttackMove(Moves.HEADBUTT, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, 30, 0, 1) + new AttackMove(Moves.HEADBUTT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, 30, 0, 1) .attr(FlinchAttr), - new AttackMove(Moves.HORN_ATTACK, Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, 0, 1), - new AttackMove(Moves.FURY_ATTACK, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) + new AttackMove(Moves.HORN_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, 0, 1), + new AttackMove(Moves.FURY_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) .attr(MultiHitAttr), - new AttackMove(Moves.HORN_DRILL, Type.NORMAL, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) + new AttackMove(Moves.HORN_DRILL, PokemonType.NORMAL, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) .attr(OneHitKOAttr) .attr(OneHitKOAccuracyAttr), - new AttackMove(Moves.TACKLE, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), - new AttackMove(Moves.BODY_SLAM, Type.NORMAL, MoveCategory.PHYSICAL, 85, 100, 15, 30, 0, 1) + new AttackMove(Moves.TACKLE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, 0, 1), + new AttackMove(Moves.BODY_SLAM, PokemonType.NORMAL, MoveCategory.PHYSICAL, 85, 100, 15, 30, 0, 1) .attr(AlwaysHitMinimizeAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.WRAP, Type.NORMAL, MoveCategory.PHYSICAL, 15, 90, 20, -1, 0, 1) + new AttackMove(Moves.WRAP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 90, 20, -1, 0, 1) .attr(TrapAttr, BattlerTagType.WRAP), - new AttackMove(Moves.TAKE_DOWN, Type.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, -1, 0, 1) + new AttackMove(Moves.TAKE_DOWN, PokemonType.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, -1, 0, 1) .attr(RecoilAttr) .recklessMove(), - new AttackMove(Moves.THRASH, Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 1) + new AttackMove(Moves.THRASH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 1) .attr(FrenzyAttr) .attr(MissEffectAttr, frenzyMissFunc) .attr(NoEffectAttr, frenzyMissFunc) .target(MoveTarget.RANDOM_NEAR_ENEMY), - new AttackMove(Moves.DOUBLE_EDGE, Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 1) + new AttackMove(Moves.DOUBLE_EDGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 1) .attr(RecoilAttr, false, 0.33) .recklessMove(), - new StatusMove(Moves.TAIL_WHIP, Type.NORMAL, 100, 30, -1, 0, 1) + new StatusMove(Moves.TAIL_WHIP, PokemonType.NORMAL, 100, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.POISON_STING, Type.POISON, MoveCategory.PHYSICAL, 15, 100, 35, 30, 0, 1) + new AttackMove(Moves.POISON_STING, PokemonType.POISON, MoveCategory.PHYSICAL, 15, 100, 35, 30, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON) .makesContact(false), - new AttackMove(Moves.TWINEEDLE, Type.BUG, MoveCategory.PHYSICAL, 25, 100, 20, 20, 0, 1) + new AttackMove(Moves.TWINEEDLE, PokemonType.BUG, MoveCategory.PHYSICAL, 25, 100, 20, 20, 0, 1) .attr(MultiHitAttr, MultiHitType._2) .attr(StatusEffectAttr, StatusEffect.POISON) .makesContact(false), - new AttackMove(Moves.PIN_MISSILE, Type.BUG, MoveCategory.PHYSICAL, 25, 95, 20, -1, 0, 1) + new AttackMove(Moves.PIN_MISSILE, PokemonType.BUG, MoveCategory.PHYSICAL, 25, 95, 20, -1, 0, 1) .attr(MultiHitAttr) .makesContact(false), - new StatusMove(Moves.LEER, Type.NORMAL, 100, 30, -1, 0, 1) + new StatusMove(Moves.LEER, PokemonType.NORMAL, 100, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.BITE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 1) + new AttackMove(Moves.BITE, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 1) .attr(FlinchAttr) .bitingMove(), - new StatusMove(Moves.GROWL, Type.NORMAL, 100, 40, -1, 0, 1) + new StatusMove(Moves.GROWL, PokemonType.NORMAL, 100, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new StatusMove(Moves.ROAR, Type.NORMAL, -1, 20, -1, -6, 1) + new StatusMove(Moves.ROAR, PokemonType.NORMAL, -1, 20, -1, -6, 1) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .soundBased() .hidesTarget() .reflectable(), - new StatusMove(Moves.SING, Type.NORMAL, 55, 15, -1, 0, 1) + new StatusMove(Moves.SING, PokemonType.NORMAL, 55, 15, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .soundBased() .reflectable(), - new StatusMove(Moves.SUPERSONIC, Type.NORMAL, 55, 20, -1, 0, 1) + new StatusMove(Moves.SUPERSONIC, PokemonType.NORMAL, 55, 20, -1, 0, 1) .attr(ConfuseAttr) .soundBased() .reflectable(), - new AttackMove(Moves.SONIC_BOOM, Type.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, 0, 1) + new AttackMove(Moves.SONIC_BOOM, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, 0, 1) .attr(FixedDamageAttr, 20), - new StatusMove(Moves.DISABLE, Type.NORMAL, 100, 20, -1, 0, 1) + new StatusMove(Moves.DISABLE, PokemonType.NORMAL, 100, 20, -1, 0, 1) .attr(AddBattlerTagAttr, BattlerTagType.DISABLED, false, true) .condition((user, target, move) => { const lastRealMove = target.getLastXMoves(-1).find(m => !m.virtual); @@ -8718,423 +8349,423 @@ export function initMoves() { }) .ignoresSubstitute() .reflectable(), - new AttackMove(Moves.ACID, Type.POISON, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) + new AttackMove(Moves.ACID, PokemonType.POISON, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.EMBER, Type.FIRE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 1) + new AttackMove(Moves.EMBER, PokemonType.FIRE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.FLAMETHROWER, Type.FIRE, MoveCategory.SPECIAL, 90, 100, 15, 10, 0, 1) + new AttackMove(Moves.FLAMETHROWER, PokemonType.FIRE, MoveCategory.SPECIAL, 90, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.BURN), - new StatusMove(Moves.MIST, Type.ICE, -1, 30, -1, 0, 1) + new StatusMove(Moves.MIST, PokemonType.ICE, -1, 30, -1, 0, 1) .attr(AddArenaTagAttr, ArenaTagType.MIST, 5, true) .target(MoveTarget.USER_SIDE), - new AttackMove(Moves.WATER_GUN, Type.WATER, MoveCategory.SPECIAL, 40, 100, 25, -1, 0, 1), - new AttackMove(Moves.HYDRO_PUMP, Type.WATER, MoveCategory.SPECIAL, 110, 80, 5, -1, 0, 1), - new AttackMove(Moves.SURF, Type.WATER, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 1) + new AttackMove(Moves.WATER_GUN, PokemonType.WATER, MoveCategory.SPECIAL, 40, 100, 25, -1, 0, 1), + new AttackMove(Moves.HYDRO_PUMP, PokemonType.WATER, MoveCategory.SPECIAL, 110, 80, 5, -1, 0, 1), + new AttackMove(Moves.SURF, PokemonType.WATER, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 1) .target(MoveTarget.ALL_NEAR_OTHERS) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERWATER) .attr(GulpMissileTagAttr), - new AttackMove(Moves.ICE_BEAM, Type.ICE, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1) + new AttackMove(Moves.ICE_BEAM, PokemonType.ICE, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.FREEZE), - new AttackMove(Moves.BLIZZARD, Type.ICE, MoveCategory.SPECIAL, 110, 70, 5, 10, 0, 1) + new AttackMove(Moves.BLIZZARD, PokemonType.ICE, MoveCategory.SPECIAL, 110, 70, 5, 10, 0, 1) .attr(BlizzardAccuracyAttr) .attr(StatusEffectAttr, StatusEffect.FREEZE) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.PSYBEAM, Type.PSYCHIC, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) + new AttackMove(Moves.PSYBEAM, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) .attr(ConfuseAttr), - new AttackMove(Moves.BUBBLE_BEAM, Type.WATER, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) + new AttackMove(Moves.BUBBLE_BEAM, PokemonType.WATER, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new AttackMove(Moves.AURORA_BEAM, Type.ICE, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) + new AttackMove(Moves.AURORA_BEAM, PokemonType.ICE, MoveCategory.SPECIAL, 65, 100, 20, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.HYPER_BEAM, Type.NORMAL, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 1) + new AttackMove(Moves.HYPER_BEAM, PokemonType.NORMAL, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 1) .attr(RechargeAttr), - new AttackMove(Moves.PECK, Type.FLYING, MoveCategory.PHYSICAL, 35, 100, 35, -1, 0, 1), - new AttackMove(Moves.DRILL_PECK, Type.FLYING, MoveCategory.PHYSICAL, 80, 100, 20, -1, 0, 1), - new AttackMove(Moves.SUBMISSION, Type.FIGHTING, MoveCategory.PHYSICAL, 80, 80, 20, -1, 0, 1) + new AttackMove(Moves.PECK, PokemonType.FLYING, MoveCategory.PHYSICAL, 35, 100, 35, -1, 0, 1), + new AttackMove(Moves.DRILL_PECK, PokemonType.FLYING, MoveCategory.PHYSICAL, 80, 100, 20, -1, 0, 1), + new AttackMove(Moves.SUBMISSION, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 80, 80, 20, -1, 0, 1) .attr(RecoilAttr) .recklessMove(), - new AttackMove(Moves.LOW_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 1) + new AttackMove(Moves.LOW_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 1) .attr(WeightPowerAttr), - new AttackMove(Moves.COUNTER, Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, -5, 1) + new AttackMove(Moves.COUNTER, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, -5, 1) .attr(CounterDamageAttr, (move: Move) => move.category === MoveCategory.PHYSICAL, 2) .target(MoveTarget.ATTACKER), - new AttackMove(Moves.SEISMIC_TOSS, Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 1) + new AttackMove(Moves.SEISMIC_TOSS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 1) .attr(LevelDamageAttr), - new AttackMove(Moves.STRENGTH, Type.NORMAL, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 1), - new AttackMove(Moves.ABSORB, Type.GRASS, MoveCategory.SPECIAL, 20, 100, 25, -1, 0, 1) + new AttackMove(Moves.STRENGTH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 1), + new AttackMove(Moves.ABSORB, PokemonType.GRASS, MoveCategory.SPECIAL, 20, 100, 25, -1, 0, 1) .attr(HitHealAttr) .triageMove(), - new AttackMove(Moves.MEGA_DRAIN, Type.GRASS, MoveCategory.SPECIAL, 40, 100, 15, -1, 0, 1) + new AttackMove(Moves.MEGA_DRAIN, PokemonType.GRASS, MoveCategory.SPECIAL, 40, 100, 15, -1, 0, 1) .attr(HitHealAttr) .triageMove(), - new StatusMove(Moves.LEECH_SEED, Type.GRASS, 90, 10, -1, 0, 1) + new StatusMove(Moves.LEECH_SEED, PokemonType.GRASS, 90, 10, -1, 0, 1) .attr(LeechSeedAttr) - .condition((user, target, move) => !target.getTag(BattlerTagType.SEEDED) && !target.isOfType(Type.GRASS)) + .condition((user, target, move) => !target.getTag(BattlerTagType.SEEDED) && !target.isOfType(PokemonType.GRASS)) .reflectable(), - new SelfStatusMove(Moves.GROWTH, Type.NORMAL, -1, 20, -1, 0, 1) + new SelfStatusMove(Moves.GROWTH, PokemonType.NORMAL, -1, 20, -1, 0, 1) .attr(GrowthStatStageChangeAttr), - new AttackMove(Moves.RAZOR_LEAF, Type.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, 0, 1) + new AttackMove(Moves.RAZOR_LEAF, PokemonType.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, 0, 1) .attr(HighCritAttr) .makesContact(false) .slicingMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new ChargingAttackMove(Moves.SOLAR_BEAM, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) + new ChargingAttackMove(Moves.SOLAR_BEAM, PokemonType.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:tookInSunlight", { pokemonName: "{USER}" })) .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]) .attr(AntiSunlightPowerDecreaseAttr), - new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1) + new StatusMove(Moves.POISON_POWDER, PokemonType.POISON, 75, 35, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON) .powderMove() .reflectable(), - new StatusMove(Moves.STUN_SPORE, Type.GRASS, 75, 30, -1, 0, 1) + new StatusMove(Moves.STUN_SPORE, PokemonType.GRASS, 75, 30, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .powderMove() .reflectable(), - new StatusMove(Moves.SLEEP_POWDER, Type.GRASS, 75, 15, -1, 0, 1) + new StatusMove(Moves.SLEEP_POWDER, PokemonType.GRASS, 75, 15, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .powderMove() .reflectable(), - new AttackMove(Moves.PETAL_DANCE, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) + new AttackMove(Moves.PETAL_DANCE, PokemonType.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) .attr(FrenzyAttr) .attr(MissEffectAttr, frenzyMissFunc) .attr(NoEffectAttr, frenzyMissFunc) .makesContact() .danceMove() .target(MoveTarget.RANDOM_NEAR_ENEMY), - new StatusMove(Moves.STRING_SHOT, Type.BUG, 95, 40, -1, 0, 1) + new StatusMove(Moves.STRING_SHOT, PokemonType.BUG, 95, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], -2) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.DRAGON_RAGE, Type.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 1) + new AttackMove(Moves.DRAGON_RAGE, PokemonType.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 1) .attr(FixedDamageAttr, 40), - new AttackMove(Moves.FIRE_SPIN, Type.FIRE, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 1) + new AttackMove(Moves.FIRE_SPIN, PokemonType.FIRE, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 1) .attr(TrapAttr, BattlerTagType.FIRE_SPIN), - new AttackMove(Moves.THUNDER_SHOCK, Type.ELECTRIC, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) + new AttackMove(Moves.THUNDER_SHOCK, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.THUNDERBOLT, Type.ELECTRIC, MoveCategory.SPECIAL, 90, 100, 15, 10, 0, 1) + new AttackMove(Moves.THUNDERBOLT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 90, 100, 15, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new StatusMove(Moves.THUNDER_WAVE, Type.ELECTRIC, 90, 20, -1, 0, 1) + new StatusMove(Moves.THUNDER_WAVE, PokemonType.ELECTRIC, 90, 20, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .attr(RespectAttackTypeImmunityAttr) .reflectable(), - new AttackMove(Moves.THUNDER, Type.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 1) + new AttackMove(Moves.THUNDER, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .attr(ThunderAccuracyAttr) .attr(HitsTagAttr, BattlerTagType.FLYING), - new AttackMove(Moves.ROCK_THROW, Type.ROCK, MoveCategory.PHYSICAL, 50, 90, 15, -1, 0, 1) + new AttackMove(Moves.ROCK_THROW, PokemonType.ROCK, MoveCategory.PHYSICAL, 50, 90, 15, -1, 0, 1) .makesContact(false), - new AttackMove(Moves.EARTHQUAKE, Type.GROUND, MoveCategory.PHYSICAL, 100, 100, 10, -1, 0, 1) + new AttackMove(Moves.EARTHQUAKE, PokemonType.GROUND, MoveCategory.PHYSICAL, 100, 100, 10, -1, 0, 1) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERGROUND) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.FISSURE, Type.GROUND, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) + new AttackMove(Moves.FISSURE, PokemonType.GROUND, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) .attr(OneHitKOAttr) .attr(OneHitKOAccuracyAttr) .attr(HitsTagAttr, BattlerTagType.UNDERGROUND) .makesContact(false), - new ChargingAttackMove(Moves.DIG, Type.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) + new ChargingAttackMove(Moves.DIG, PokemonType.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:dugAHole", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERGROUND), - new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1) + new StatusMove(Moves.TOXIC, PokemonType.POISON, 90, 10, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.TOXIC) .attr(ToxicAccuracyAttr) .reflectable(), - new AttackMove(Moves.CONFUSION, Type.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, 10, 0, 1) + new AttackMove(Moves.CONFUSION, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, 10, 0, 1) .attr(ConfuseAttr), - new AttackMove(Moves.PSYCHIC, Type.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1) + new AttackMove(Moves.PSYCHIC, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new StatusMove(Moves.HYPNOSIS, Type.PSYCHIC, 60, 20, -1, 0, 1) + new StatusMove(Moves.HYPNOSIS, PokemonType.PSYCHIC, 60, 20, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .reflectable(), - new SelfStatusMove(Moves.MEDITATE, Type.PSYCHIC, -1, 40, -1, 0, 1) + new SelfStatusMove(Moves.MEDITATE, PokemonType.PSYCHIC, -1, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true), - new SelfStatusMove(Moves.AGILITY, Type.PSYCHIC, -1, 30, -1, 0, 1) + new SelfStatusMove(Moves.AGILITY, PokemonType.PSYCHIC, -1, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], 2, true), - new AttackMove(Moves.QUICK_ATTACK, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 1), - new AttackMove(Moves.RAGE, Type.NORMAL, MoveCategory.PHYSICAL, 20, 100, 20, -1, 0, 1) + new AttackMove(Moves.QUICK_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 1), + new AttackMove(Moves.RAGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 20, 100, 20, -1, 0, 1) .partial(), // No effect implemented - new SelfStatusMove(Moves.TELEPORT, Type.PSYCHIC, -1, 20, -1, -6, 1) + new SelfStatusMove(Moves.TELEPORT, PokemonType.PSYCHIC, -1, 20, -1, -6, 1) .attr(ForceSwitchOutAttr, true) .hidesUser(), - new AttackMove(Moves.NIGHT_SHADE, Type.GHOST, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1) + new AttackMove(Moves.NIGHT_SHADE, PokemonType.GHOST, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1) .attr(LevelDamageAttr), - new StatusMove(Moves.MIMIC, Type.NORMAL, -1, 10, -1, 0, 1) + new StatusMove(Moves.MIMIC, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(MovesetCopyMoveAttr) .ignoresSubstitute(), - new StatusMove(Moves.SCREECH, Type.NORMAL, 85, 40, -1, 0, 1) + new StatusMove(Moves.SCREECH, PokemonType.NORMAL, 85, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], -2) .soundBased() .reflectable(), - new SelfStatusMove(Moves.DOUBLE_TEAM, Type.NORMAL, -1, 15, -1, 0, 1) + new SelfStatusMove(Moves.DOUBLE_TEAM, PokemonType.NORMAL, -1, 15, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.EVA ], 1, true), - new SelfStatusMove(Moves.RECOVER, Type.NORMAL, -1, 5, -1, 0, 1) + new SelfStatusMove(Moves.RECOVER, PokemonType.NORMAL, -1, 5, -1, 0, 1) .attr(HealAttr, 0.5) .triageMove(), - new SelfStatusMove(Moves.HARDEN, Type.NORMAL, -1, 30, -1, 0, 1) + new SelfStatusMove(Moves.HARDEN, PokemonType.NORMAL, -1, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new SelfStatusMove(Moves.MINIMIZE, Type.NORMAL, -1, 10, -1, 0, 1) + new SelfStatusMove(Moves.MINIMIZE, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(AddBattlerTagAttr, BattlerTagType.MINIMIZED, true, false) .attr(StatStageChangeAttr, [ Stat.EVA ], 2, true), - new StatusMove(Moves.SMOKESCREEN, Type.NORMAL, 100, 20, -1, 0, 1) + new StatusMove(Moves.SMOKESCREEN, PokemonType.NORMAL, 100, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .reflectable(), - new StatusMove(Moves.CONFUSE_RAY, Type.GHOST, 100, 10, -1, 0, 1) + new StatusMove(Moves.CONFUSE_RAY, PokemonType.GHOST, 100, 10, -1, 0, 1) .attr(ConfuseAttr) .reflectable(), - new SelfStatusMove(Moves.WITHDRAW, Type.WATER, -1, 40, -1, 0, 1) + new SelfStatusMove(Moves.WITHDRAW, PokemonType.WATER, -1, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new SelfStatusMove(Moves.DEFENSE_CURL, Type.NORMAL, -1, 40, -1, 0, 1) + new SelfStatusMove(Moves.DEFENSE_CURL, PokemonType.NORMAL, -1, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new SelfStatusMove(Moves.BARRIER, Type.PSYCHIC, -1, 20, -1, 0, 1) + new SelfStatusMove(Moves.BARRIER, PokemonType.PSYCHIC, -1, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true), - new StatusMove(Moves.LIGHT_SCREEN, Type.PSYCHIC, -1, 30, -1, 0, 1) + new StatusMove(Moves.LIGHT_SCREEN, PokemonType.PSYCHIC, -1, 30, -1, 0, 1) .attr(AddArenaTagAttr, ArenaTagType.LIGHT_SCREEN, 5, true) .target(MoveTarget.USER_SIDE), - new SelfStatusMove(Moves.HAZE, Type.ICE, -1, 30, -1, 0, 1) + new SelfStatusMove(Moves.HAZE, PokemonType.ICE, -1, 30, -1, 0, 1) .ignoresSubstitute() .attr(ResetStatsAttr, true), - new StatusMove(Moves.REFLECT, Type.PSYCHIC, -1, 20, -1, 0, 1) + new StatusMove(Moves.REFLECT, PokemonType.PSYCHIC, -1, 20, -1, 0, 1) .attr(AddArenaTagAttr, ArenaTagType.REFLECT, 5, true) .target(MoveTarget.USER_SIDE), - new SelfStatusMove(Moves.FOCUS_ENERGY, Type.NORMAL, -1, 30, -1, 0, 1) + new SelfStatusMove(Moves.FOCUS_ENERGY, PokemonType.NORMAL, -1, 30, -1, 0, 1) .attr(AddBattlerTagAttr, BattlerTagType.CRIT_BOOST, true, true), - new AttackMove(Moves.BIDE, Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 10, -1, 1, 1) + new AttackMove(Moves.BIDE, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, -1, 10, -1, 1, 1) .target(MoveTarget.USER) .unimplemented(), - new SelfStatusMove(Moves.METRONOME, Type.NORMAL, -1, 10, -1, 0, 1) + new SelfStatusMove(Moves.METRONOME, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(RandomMoveAttr, invalidMetronomeMoves), - new StatusMove(Moves.MIRROR_MOVE, Type.FLYING, -1, 20, -1, 0, 1) + new StatusMove(Moves.MIRROR_MOVE, PokemonType.FLYING, -1, 20, -1, 0, 1) .attr(CopyMoveAttr, true), - new AttackMove(Moves.SELF_DESTRUCT, Type.NORMAL, MoveCategory.PHYSICAL, 200, 100, 5, -1, 0, 1) + new AttackMove(Moves.SELF_DESTRUCT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 200, 100, 5, -1, 0, 1) .attr(SacrificialAttr) .makesContact(false) .condition(failIfDampCondition) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.EGG_BOMB, Type.NORMAL, MoveCategory.PHYSICAL, 100, 75, 10, -1, 0, 1) + new AttackMove(Moves.EGG_BOMB, PokemonType.NORMAL, MoveCategory.PHYSICAL, 100, 75, 10, -1, 0, 1) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.LICK, Type.GHOST, MoveCategory.PHYSICAL, 30, 100, 30, 30, 0, 1) + new AttackMove(Moves.LICK, PokemonType.GHOST, MoveCategory.PHYSICAL, 30, 100, 30, 30, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.SMOG, Type.POISON, MoveCategory.SPECIAL, 30, 70, 20, 40, 0, 1) + new AttackMove(Moves.SMOG, PokemonType.POISON, MoveCategory.SPECIAL, 30, 70, 20, 40, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.SLUDGE, Type.POISON, MoveCategory.SPECIAL, 65, 100, 20, 30, 0, 1) + new AttackMove(Moves.SLUDGE, PokemonType.POISON, MoveCategory.SPECIAL, 65, 100, 20, 30, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.BONE_CLUB, Type.GROUND, MoveCategory.PHYSICAL, 65, 85, 20, 10, 0, 1) + new AttackMove(Moves.BONE_CLUB, PokemonType.GROUND, MoveCategory.PHYSICAL, 65, 85, 20, 10, 0, 1) .attr(FlinchAttr) .makesContact(false), - new AttackMove(Moves.FIRE_BLAST, Type.FIRE, MoveCategory.SPECIAL, 110, 85, 5, 10, 0, 1) + new AttackMove(Moves.FIRE_BLAST, PokemonType.FIRE, MoveCategory.SPECIAL, 110, 85, 5, 10, 0, 1) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.WATERFALL, Type.WATER, MoveCategory.PHYSICAL, 80, 100, 15, 20, 0, 1) + new AttackMove(Moves.WATERFALL, PokemonType.WATER, MoveCategory.PHYSICAL, 80, 100, 15, 20, 0, 1) .attr(FlinchAttr), - new AttackMove(Moves.CLAMP, Type.WATER, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 1) + new AttackMove(Moves.CLAMP, PokemonType.WATER, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 1) .attr(TrapAttr, BattlerTagType.CLAMP), - new AttackMove(Moves.SWIFT, Type.NORMAL, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 1) + new AttackMove(Moves.SWIFT, PokemonType.NORMAL, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new ChargingAttackMove(Moves.SKULL_BASH, Type.NORMAL, MoveCategory.PHYSICAL, 130, 100, 10, -1, 0, 1) + new ChargingAttackMove(Moves.SKULL_BASH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 130, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:loweredItsHead", { pokemonName: "{USER}" })) .chargeAttr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new AttackMove(Moves.SPIKE_CANNON, Type.NORMAL, MoveCategory.PHYSICAL, 20, 100, 15, -1, 0, 1) + new AttackMove(Moves.SPIKE_CANNON, PokemonType.NORMAL, MoveCategory.PHYSICAL, 20, 100, 15, -1, 0, 1) .attr(MultiHitAttr) .makesContact(false), - new AttackMove(Moves.CONSTRICT, Type.NORMAL, MoveCategory.PHYSICAL, 10, 100, 35, 10, 0, 1) + new AttackMove(Moves.CONSTRICT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 10, 100, 35, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new SelfStatusMove(Moves.AMNESIA, Type.PSYCHIC, -1, 20, -1, 0, 1) + new SelfStatusMove(Moves.AMNESIA, PokemonType.PSYCHIC, -1, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPDEF ], 2, true), - new StatusMove(Moves.KINESIS, Type.PSYCHIC, 80, 15, -1, 0, 1) + new StatusMove(Moves.KINESIS, PokemonType.PSYCHIC, 80, 15, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .reflectable(), - new SelfStatusMove(Moves.SOFT_BOILED, Type.NORMAL, -1, 5, -1, 0, 1) + new SelfStatusMove(Moves.SOFT_BOILED, PokemonType.NORMAL, -1, 5, -1, 0, 1) .attr(HealAttr, 0.5) .triageMove(), - new AttackMove(Moves.HIGH_JUMP_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 130, 90, 10, -1, 0, 1) + new AttackMove(Moves.HIGH_JUMP_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 130, 90, 10, -1, 0, 1) .attr(MissEffectAttr, crashDamageFunc) .attr(NoEffectAttr, crashDamageFunc) .condition(failOnGravityCondition) .recklessMove(), - new StatusMove(Moves.GLARE, Type.NORMAL, 100, 30, -1, 0, 1) + new StatusMove(Moves.GLARE, PokemonType.NORMAL, 100, 30, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .reflectable(), - new AttackMove(Moves.DREAM_EATER, Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, 0, 1) + new AttackMove(Moves.DREAM_EATER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, 0, 1) .attr(HitHealAttr) .condition(targetSleptOrComatoseCondition) .triageMove(), - new StatusMove(Moves.POISON_GAS, Type.POISON, 90, 40, -1, 0, 1) + new StatusMove(Moves.POISON_GAS, PokemonType.POISON, 90, 40, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.BARRAGE, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) + new AttackMove(Moves.BARRAGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) .attr(MultiHitAttr) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.LEECH_LIFE, Type.BUG, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) + new AttackMove(Moves.LEECH_LIFE, PokemonType.BUG, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) .attr(HitHealAttr) .triageMove(), - new StatusMove(Moves.LOVELY_KISS, Type.NORMAL, 75, 10, -1, 0, 1) + new StatusMove(Moves.LOVELY_KISS, PokemonType.NORMAL, 75, 10, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .reflectable(), - new ChargingAttackMove(Moves.SKY_ATTACK, Type.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1) + new ChargingAttackMove(Moves.SKY_ATTACK, PokemonType.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1) .chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" })) .attr(HighCritAttr) .attr(FlinchAttr) .makesContact(false), - new StatusMove(Moves.TRANSFORM, Type.NORMAL, -1, 10, -1, 0, 1) + new StatusMove(Moves.TRANSFORM, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(TransformAttr) // transforming from or into fusion pokemon causes various problems (such as crashes) .condition((user, target, move) => !target.getTag(BattlerTagType.SUBSTITUTE) && !user.fusionSpecies && !target.fusionSpecies) .ignoresProtect(), - new AttackMove(Moves.BUBBLE, Type.WATER, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) + new AttackMove(Moves.BUBBLE, PokemonType.WATER, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.DIZZY_PUNCH, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, 20, 0, 1) + new AttackMove(Moves.DIZZY_PUNCH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, 20, 0, 1) .attr(ConfuseAttr) .punchingMove(), - new StatusMove(Moves.SPORE, Type.GRASS, 100, 15, -1, 0, 1) + new StatusMove(Moves.SPORE, PokemonType.GRASS, 100, 15, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .powderMove() .reflectable(), - new StatusMove(Moves.FLASH, Type.NORMAL, 100, 20, -1, 0, 1) + new StatusMove(Moves.FLASH, PokemonType.NORMAL, 100, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .reflectable(), - new AttackMove(Moves.PSYWAVE, Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1) + new AttackMove(Moves.PSYWAVE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1) .attr(RandomLevelDamageAttr), - new SelfStatusMove(Moves.SPLASH, Type.NORMAL, -1, 40, -1, 0, 1) + new SelfStatusMove(Moves.SPLASH, PokemonType.NORMAL, -1, 40, -1, 0, 1) .attr(SplashAttr) .condition(failOnGravityCondition), - new SelfStatusMove(Moves.ACID_ARMOR, Type.POISON, -1, 20, -1, 0, 1) + new SelfStatusMove(Moves.ACID_ARMOR, PokemonType.POISON, -1, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true), - new AttackMove(Moves.CRABHAMMER, Type.WATER, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 1) + new AttackMove(Moves.CRABHAMMER, PokemonType.WATER, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 1) .attr(HighCritAttr), - new AttackMove(Moves.EXPLOSION, Type.NORMAL, MoveCategory.PHYSICAL, 250, 100, 5, -1, 0, 1) + new AttackMove(Moves.EXPLOSION, PokemonType.NORMAL, MoveCategory.PHYSICAL, 250, 100, 5, -1, 0, 1) .condition(failIfDampCondition) .attr(SacrificialAttr) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.FURY_SWIPES, Type.NORMAL, MoveCategory.PHYSICAL, 18, 80, 15, -1, 0, 1) + new AttackMove(Moves.FURY_SWIPES, PokemonType.NORMAL, MoveCategory.PHYSICAL, 18, 80, 15, -1, 0, 1) .attr(MultiHitAttr), - new AttackMove(Moves.BONEMERANG, Type.GROUND, MoveCategory.PHYSICAL, 50, 90, 10, -1, 0, 1) + new AttackMove(Moves.BONEMERANG, PokemonType.GROUND, MoveCategory.PHYSICAL, 50, 90, 10, -1, 0, 1) .attr(MultiHitAttr, MultiHitType._2) .makesContact(false), - new SelfStatusMove(Moves.REST, Type.PSYCHIC, -1, 5, -1, 0, 1) + new SelfStatusMove(Moves.REST, PokemonType.PSYCHIC, -1, 5, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP, true, 3, true) .attr(HealAttr, 1, true) .condition((user, target, move) => !user.isFullHp() && user.canSetStatus(StatusEffect.SLEEP, true, true)) .triageMove(), - new AttackMove(Moves.ROCK_SLIDE, Type.ROCK, MoveCategory.PHYSICAL, 75, 90, 10, 30, 0, 1) + new AttackMove(Moves.ROCK_SLIDE, PokemonType.ROCK, MoveCategory.PHYSICAL, 75, 90, 10, 30, 0, 1) .attr(FlinchAttr) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.HYPER_FANG, Type.NORMAL, MoveCategory.PHYSICAL, 80, 90, 15, 10, 0, 1) + new AttackMove(Moves.HYPER_FANG, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 90, 15, 10, 0, 1) .attr(FlinchAttr) .bitingMove(), - new SelfStatusMove(Moves.SHARPEN, Type.NORMAL, -1, 30, -1, 0, 1) + new SelfStatusMove(Moves.SHARPEN, PokemonType.NORMAL, -1, 30, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true), - new SelfStatusMove(Moves.CONVERSION, Type.NORMAL, -1, 30, -1, 0, 1) + new SelfStatusMove(Moves.CONVERSION, PokemonType.NORMAL, -1, 30, -1, 0, 1) .attr(FirstMoveTypeAttr), - new AttackMove(Moves.TRI_ATTACK, Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, 20, 0, 1) + new AttackMove(Moves.TRI_ATTACK, PokemonType.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, 20, 0, 1) .attr(MultiStatusEffectAttr, [ StatusEffect.BURN, StatusEffect.FREEZE, StatusEffect.PARALYSIS ]), - new AttackMove(Moves.SUPER_FANG, Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 10, -1, 0, 1) + new AttackMove(Moves.SUPER_FANG, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 90, 10, -1, 0, 1) .attr(TargetHalfHpDamageAttr), - new AttackMove(Moves.SLASH, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 1) + new AttackMove(Moves.SLASH, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 1) .attr(HighCritAttr) .slicingMove(), - new SelfStatusMove(Moves.SUBSTITUTE, Type.NORMAL, -1, 10, -1, 0, 1) + new SelfStatusMove(Moves.SUBSTITUTE, PokemonType.NORMAL, -1, 10, -1, 0, 1) .attr(AddSubstituteAttr, 0.25, false), - new AttackMove(Moves.STRUGGLE, Type.NORMAL, MoveCategory.PHYSICAL, 50, -1, 1, -1, 0, 1) + new AttackMove(Moves.STRUGGLE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 50, -1, 1, -1, 0, 1) .attr(RecoilAttr, true, 0.25, true) .attr(TypelessAttr) .target(MoveTarget.RANDOM_NEAR_ENEMY), - new StatusMove(Moves.SKETCH, Type.NORMAL, -1, 1, -1, 0, 2) + new StatusMove(Moves.SKETCH, PokemonType.NORMAL, -1, 1, -1, 0, 2) .ignoresSubstitute() .attr(SketchAttr), - new AttackMove(Moves.TRIPLE_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 10, 90, 10, -1, 0, 2) + new AttackMove(Moves.TRIPLE_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 10, 90, 10, -1, 0, 2) .attr(MultiHitAttr, MultiHitType._3) .attr(MultiHitPowerIncrementAttr, 3) .checkAllHits(), - new AttackMove(Moves.THIEF, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 2) + new AttackMove(Moves.THIEF, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 2) .attr(StealHeldItemChanceAttr, 0.3), - new StatusMove(Moves.SPIDER_WEB, Type.BUG, -1, 10, -1, 0, 2) + new StatusMove(Moves.SPIDER_WEB, PokemonType.BUG, -1, 10, -1, 0, 2) .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1) .reflectable(), - new StatusMove(Moves.MIND_READER, Type.NORMAL, -1, 5, -1, 0, 2) + new StatusMove(Moves.MIND_READER, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(IgnoreAccuracyAttr), - new StatusMove(Moves.NIGHTMARE, Type.GHOST, 100, 15, -1, 0, 2) + new StatusMove(Moves.NIGHTMARE, PokemonType.GHOST, 100, 15, -1, 0, 2) .attr(AddBattlerTagAttr, BattlerTagType.NIGHTMARE) .condition(targetSleptOrComatoseCondition), - new AttackMove(Moves.FLAME_WHEEL, Type.FIRE, MoveCategory.PHYSICAL, 60, 100, 25, 10, 0, 2) + new AttackMove(Moves.FLAME_WHEEL, PokemonType.FIRE, MoveCategory.PHYSICAL, 60, 100, 25, 10, 0, 2) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.SNORE, Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 15, 30, 0, 2) + new AttackMove(Moves.SNORE, PokemonType.NORMAL, MoveCategory.SPECIAL, 50, 100, 15, 30, 0, 2) .attr(BypassSleepAttr) .attr(FlinchAttr) .condition(userSleptOrComatoseCondition) .soundBased(), - new StatusMove(Moves.CURSE, Type.GHOST, -1, 10, -1, 0, 2) + new StatusMove(Moves.CURSE, PokemonType.GHOST, -1, 10, -1, 0, 2) .attr(CurseAttr) .ignoresSubstitute() .ignoresProtect() .target(MoveTarget.CURSE), - new AttackMove(Moves.FLAIL, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2) + new AttackMove(Moves.FLAIL, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2) .attr(LowHpPowerAttr), - new StatusMove(Moves.CONVERSION_2, Type.NORMAL, -1, 30, -1, 0, 2) + new StatusMove(Moves.CONVERSION_2, PokemonType.NORMAL, -1, 30, -1, 0, 2) .attr(ResistLastMoveTypeAttr) .ignoresSubstitute() .partial(), // Checks the move's original typing and not if its type is changed through some other means - new AttackMove(Moves.AEROBLAST, Type.FLYING, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 2) + new AttackMove(Moves.AEROBLAST, PokemonType.FLYING, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 2) .windMove() .attr(HighCritAttr), - new StatusMove(Moves.COTTON_SPORE, Type.GRASS, 100, 40, -1, 0, 2) + new StatusMove(Moves.COTTON_SPORE, PokemonType.GRASS, 100, 40, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPD ], -2) .powderMove() .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.REVERSAL, Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2) + new AttackMove(Moves.REVERSAL, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2) .attr(LowHpPowerAttr), - new StatusMove(Moves.SPITE, Type.GHOST, 100, 10, -1, 0, 2) + new StatusMove(Moves.SPITE, PokemonType.GHOST, 100, 10, -1, 0, 2) .ignoresSubstitute() .attr(ReducePpMoveAttr, 4) .reflectable(), - new AttackMove(Moves.POWDER_SNOW, Type.ICE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 2) + new AttackMove(Moves.POWDER_SNOW, PokemonType.ICE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 2) .attr(StatusEffectAttr, StatusEffect.FREEZE) .target(MoveTarget.ALL_NEAR_ENEMIES), - new SelfStatusMove(Moves.PROTECT, Type.NORMAL, -1, 10, -1, 4, 2) + new SelfStatusMove(Moves.PROTECT, PokemonType.NORMAL, -1, 10, -1, 4, 2) .attr(ProtectAttr) .condition(failIfLastCondition), - new AttackMove(Moves.MACH_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 2) + new AttackMove(Moves.MACH_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 2) .punchingMove(), - new StatusMove(Moves.SCARY_FACE, Type.NORMAL, 100, 10, -1, 0, 2) + new StatusMove(Moves.SCARY_FACE, PokemonType.NORMAL, 100, 10, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPD ], -2) .reflectable(), - new AttackMove(Moves.FEINT_ATTACK, Type.DARK, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 2), - new StatusMove(Moves.SWEET_KISS, Type.FAIRY, 75, 10, -1, 0, 2) + new AttackMove(Moves.FEINT_ATTACK, PokemonType.DARK, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 2), + new StatusMove(Moves.SWEET_KISS, PokemonType.FAIRY, 75, 10, -1, 0, 2) .attr(ConfuseAttr) .reflectable(), - new SelfStatusMove(Moves.BELLY_DRUM, Type.NORMAL, -1, 10, -1, 0, 2) + new SelfStatusMove(Moves.BELLY_DRUM, PokemonType.NORMAL, -1, 10, -1, 0, 2) .attr(CutHpStatStageBoostAttr, [ Stat.ATK ], 12, 2, (user) => { globalScene.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", { pokemonName: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) })); }), - new AttackMove(Moves.SLUDGE_BOMB, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 30, 0, 2) + new AttackMove(Moves.SLUDGE_BOMB, PokemonType.POISON, MoveCategory.SPECIAL, 90, 100, 10, 30, 0, 2) .attr(StatusEffectAttr, StatusEffect.POISON) .ballBombMove(), - new AttackMove(Moves.MUD_SLAP, Type.GROUND, MoveCategory.SPECIAL, 20, 100, 10, 100, 0, 2) + new AttackMove(Moves.MUD_SLAP, PokemonType.GROUND, MoveCategory.SPECIAL, 20, 100, 10, 100, 0, 2) .attr(StatStageChangeAttr, [ Stat.ACC ], -1), - new AttackMove(Moves.OCTAZOOKA, Type.WATER, MoveCategory.SPECIAL, 65, 85, 10, 50, 0, 2) + new AttackMove(Moves.OCTAZOOKA, PokemonType.WATER, MoveCategory.SPECIAL, 65, 85, 10, 50, 0, 2) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .ballBombMove(), - new StatusMove(Moves.SPIKES, Type.GROUND, -1, 20, -1, 0, 2) + new StatusMove(Moves.SPIKES, PokemonType.GROUND, -1, 20, -1, 0, 2) .attr(AddArenaTrapTagAttr, ArenaTagType.SPIKES) .target(MoveTarget.ENEMY_SIDE) .reflectable(), - new AttackMove(Moves.ZAP_CANNON, Type.ELECTRIC, MoveCategory.SPECIAL, 120, 50, 5, 100, 0, 2) + new AttackMove(Moves.ZAP_CANNON, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 120, 50, 5, 100, 0, 2) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .ballBombMove(), - new StatusMove(Moves.FORESIGHT, Type.NORMAL, -1, 40, -1, 0, 2) + new StatusMove(Moves.FORESIGHT, PokemonType.NORMAL, -1, 40, -1, 0, 2) .attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST) .ignoresSubstitute() .reflectable(), - new SelfStatusMove(Moves.DESTINY_BOND, Type.GHOST, -1, 5, -1, 0, 2) + new SelfStatusMove(Moves.DESTINY_BOND, PokemonType.GHOST, -1, 5, -1, 0, 2) .ignoresProtect() .attr(DestinyBondAttr) .condition((user, target, move) => { @@ -9146,120 +8777,120 @@ export function initMoves() { // - the previous move was unsuccessful return lastTurnMove.length === 0 || lastTurnMove[0].move !== move.id || lastTurnMove[0].result !== MoveResult.SUCCESS; }), - new StatusMove(Moves.PERISH_SONG, Type.NORMAL, -1, 5, -1, 0, 2) + new StatusMove(Moves.PERISH_SONG, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(FaintCountdownAttr) .ignoresProtect() .soundBased() .condition(failOnBossCondition) .target(MoveTarget.ALL), - new AttackMove(Moves.ICY_WIND, Type.ICE, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 2) + new AttackMove(Moves.ICY_WIND, PokemonType.ICE, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new SelfStatusMove(Moves.DETECT, Type.FIGHTING, -1, 5, -1, 4, 2) + new SelfStatusMove(Moves.DETECT, PokemonType.FIGHTING, -1, 5, -1, 4, 2) .attr(ProtectAttr) .condition(failIfLastCondition), - new AttackMove(Moves.BONE_RUSH, Type.GROUND, MoveCategory.PHYSICAL, 25, 90, 10, -1, 0, 2) + new AttackMove(Moves.BONE_RUSH, PokemonType.GROUND, MoveCategory.PHYSICAL, 25, 90, 10, -1, 0, 2) .attr(MultiHitAttr) .makesContact(false), - new StatusMove(Moves.LOCK_ON, Type.NORMAL, -1, 5, -1, 0, 2) + new StatusMove(Moves.LOCK_ON, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(IgnoreAccuracyAttr), - new AttackMove(Moves.OUTRAGE, Type.DRAGON, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 2) + new AttackMove(Moves.OUTRAGE, PokemonType.DRAGON, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 2) .attr(FrenzyAttr) .attr(MissEffectAttr, frenzyMissFunc) .attr(NoEffectAttr, frenzyMissFunc) .target(MoveTarget.RANDOM_NEAR_ENEMY), - new StatusMove(Moves.SANDSTORM, Type.ROCK, -1, 10, -1, 0, 2) + new StatusMove(Moves.SANDSTORM, PokemonType.ROCK, -1, 10, -1, 0, 2) .attr(WeatherChangeAttr, WeatherType.SANDSTORM) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.GIGA_DRAIN, Type.GRASS, MoveCategory.SPECIAL, 75, 100, 10, -1, 0, 2) + new AttackMove(Moves.GIGA_DRAIN, PokemonType.GRASS, MoveCategory.SPECIAL, 75, 100, 10, -1, 0, 2) .attr(HitHealAttr) .triageMove(), - new SelfStatusMove(Moves.ENDURE, Type.NORMAL, -1, 10, -1, 4, 2) + new SelfStatusMove(Moves.ENDURE, PokemonType.NORMAL, -1, 10, -1, 4, 2) .attr(ProtectAttr, BattlerTagType.ENDURING) .condition(failIfLastCondition), - new StatusMove(Moves.CHARM, Type.FAIRY, 100, 20, -1, 0, 2) + new StatusMove(Moves.CHARM, PokemonType.FAIRY, 100, 20, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.ATK ], -2) .reflectable(), - new AttackMove(Moves.ROLLOUT, Type.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 2) + new AttackMove(Moves.ROLLOUT, PokemonType.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 2) .partial() // Does not lock the user, also does not increase damage properly .attr(ConsecutiveUseDoublePowerAttr, 5, true, true, Moves.DEFENSE_CURL), - new AttackMove(Moves.FALSE_SWIPE, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 2) + new AttackMove(Moves.FALSE_SWIPE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 2) .attr(SurviveDamageAttr), - new StatusMove(Moves.SWAGGER, Type.NORMAL, 85, 15, -1, 0, 2) + new StatusMove(Moves.SWAGGER, PokemonType.NORMAL, 85, 15, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.ATK ], 2) .attr(ConfuseAttr) .reflectable(), - new SelfStatusMove(Moves.MILK_DRINK, Type.NORMAL, -1, 5, -1, 0, 2) + new SelfStatusMove(Moves.MILK_DRINK, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(HealAttr, 0.5) .triageMove(), - new AttackMove(Moves.SPARK, Type.ELECTRIC, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 2) + new AttackMove(Moves.SPARK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 2) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.FURY_CUTTER, Type.BUG, MoveCategory.PHYSICAL, 40, 95, 20, -1, 0, 2) + new AttackMove(Moves.FURY_CUTTER, PokemonType.BUG, MoveCategory.PHYSICAL, 40, 95, 20, -1, 0, 2) .attr(ConsecutiveUseDoublePowerAttr, 3, true) .slicingMove(), - new AttackMove(Moves.STEEL_WING, Type.STEEL, MoveCategory.PHYSICAL, 70, 90, 25, 10, 0, 2) + new AttackMove(Moves.STEEL_WING, PokemonType.STEEL, MoveCategory.PHYSICAL, 70, 90, 25, 10, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new StatusMove(Moves.MEAN_LOOK, Type.NORMAL, -1, 5, -1, 0, 2) + new StatusMove(Moves.MEAN_LOOK, PokemonType.NORMAL, -1, 5, -1, 0, 2) .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1) .reflectable(), - new StatusMove(Moves.ATTRACT, Type.NORMAL, 100, 15, -1, 0, 2) + new StatusMove(Moves.ATTRACT, PokemonType.NORMAL, 100, 15, -1, 0, 2) .attr(AddBattlerTagAttr, BattlerTagType.INFATUATED) .ignoresSubstitute() .condition((user, target, move) => user.isOppositeGender(target)) .reflectable(), - new SelfStatusMove(Moves.SLEEP_TALK, Type.NORMAL, -1, 10, -1, 0, 2) + new SelfStatusMove(Moves.SLEEP_TALK, PokemonType.NORMAL, -1, 10, -1, 0, 2) .attr(BypassSleepAttr) .attr(RandomMovesetMoveAttr, invalidSleepTalkMoves, false) .condition(userSleptOrComatoseCondition) .target(MoveTarget.NEAR_ENEMY), - new StatusMove(Moves.HEAL_BELL, Type.NORMAL, -1, 5, -1, 0, 2) + new StatusMove(Moves.HEAL_BELL, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(PartyStatusCureAttr, i18next.t("moveTriggers:bellChimed"), Abilities.SOUNDPROOF) .soundBased() .target(MoveTarget.PARTY), - new AttackMove(Moves.RETURN, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) + new AttackMove(Moves.RETURN, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) .attr(FriendshipPowerAttr), - new AttackMove(Moves.PRESENT, Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 15, -1, 0, 2) + new AttackMove(Moves.PRESENT, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 90, 15, -1, 0, 2) .attr(PresentPowerAttr) .makesContact(false), - new AttackMove(Moves.FRUSTRATION, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) + new AttackMove(Moves.FRUSTRATION, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) .attr(FriendshipPowerAttr, true), - new StatusMove(Moves.SAFEGUARD, Type.NORMAL, -1, 25, -1, 0, 2) + new StatusMove(Moves.SAFEGUARD, PokemonType.NORMAL, -1, 25, -1, 0, 2) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.SAFEGUARD, 5, true, true), - new StatusMove(Moves.PAIN_SPLIT, Type.NORMAL, -1, 20, -1, 0, 2) + new StatusMove(Moves.PAIN_SPLIT, PokemonType.NORMAL, -1, 20, -1, 0, 2) .attr(HpSplitAttr) .condition(failOnBossCondition), - new AttackMove(Moves.SACRED_FIRE, Type.FIRE, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 2) + new AttackMove(Moves.SACRED_FIRE, PokemonType.FIRE, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 2) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .makesContact(false), - new AttackMove(Moves.MAGNITUDE, Type.GROUND, MoveCategory.PHYSICAL, -1, 100, 30, -1, 0, 2) + new AttackMove(Moves.MAGNITUDE, PokemonType.GROUND, MoveCategory.PHYSICAL, -1, 100, 30, -1, 0, 2) .attr(PreMoveMessageAttr, magnitudeMessageFunc) .attr(MagnitudePowerAttr) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERGROUND) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.DYNAMIC_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 50, 5, 100, 0, 2) + new AttackMove(Moves.DYNAMIC_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 50, 5, 100, 0, 2) .attr(ConfuseAttr) .punchingMove(), - new AttackMove(Moves.MEGAHORN, Type.BUG, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 2), - new AttackMove(Moves.DRAGON_BREATH, Type.DRAGON, MoveCategory.SPECIAL, 60, 100, 20, 30, 0, 2) + new AttackMove(Moves.MEGAHORN, PokemonType.BUG, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 2), + new AttackMove(Moves.DRAGON_BREATH, PokemonType.DRAGON, MoveCategory.SPECIAL, 60, 100, 20, 30, 0, 2) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new SelfStatusMove(Moves.BATON_PASS, Type.NORMAL, -1, 40, -1, 0, 2) + new SelfStatusMove(Moves.BATON_PASS, PokemonType.NORMAL, -1, 40, -1, 0, 2) .attr(ForceSwitchOutAttr, true, SwitchType.BATON_PASS) .condition(failIfLastInPartyCondition) .hidesUser(), - new StatusMove(Moves.ENCORE, Type.NORMAL, 100, 5, -1, 0, 2) + new StatusMove(Moves.ENCORE, PokemonType.NORMAL, 100, 5, -1, 0, 2) .attr(AddBattlerTagAttr, BattlerTagType.ENCORE, false, true) .ignoresSubstitute() .condition((user, target, move) => new EncoreTag(user.id).canAdd(target)) .reflectable(), - new AttackMove(Moves.PURSUIT, Type.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 2) + new AttackMove(Moves.PURSUIT, PokemonType.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 2) .partial(), // No effect implemented - new AttackMove(Moves.RAPID_SPIN, Type.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2) + new AttackMove(Moves.RAPID_SPIN, PokemonType.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true) .attr(RemoveBattlerTagAttr, [ BattlerTagType.BIND, @@ -9275,445 +8906,445 @@ export function initMoves() { BattlerTagType.INFESTATION ], true) .attr(RemoveArenaTrapAttr), - new StatusMove(Moves.SWEET_SCENT, Type.NORMAL, 100, 20, -1, 0, 2) + new StatusMove(Moves.SWEET_SCENT, PokemonType.NORMAL, 100, 20, -1, 0, 2) .attr(StatStageChangeAttr, [ Stat.EVA ], -2) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.IRON_TAIL, Type.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, 30, 0, 2) + new AttackMove(Moves.IRON_TAIL, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, 30, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.METAL_CLAW, Type.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 10, 0, 2) + new AttackMove(Moves.METAL_CLAW, PokemonType.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 10, 0, 2) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true), - new AttackMove(Moves.VITAL_THROW, Type.FIGHTING, MoveCategory.PHYSICAL, 70, -1, 10, -1, -1, 2), - new SelfStatusMove(Moves.MORNING_SUN, Type.NORMAL, -1, 5, -1, 0, 2) + new AttackMove(Moves.VITAL_THROW, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 70, -1, 10, -1, -1, 2), + new SelfStatusMove(Moves.MORNING_SUN, PokemonType.NORMAL, -1, 5, -1, 0, 2) .attr(PlantHealAttr) .triageMove(), - new SelfStatusMove(Moves.SYNTHESIS, Type.GRASS, -1, 5, -1, 0, 2) + new SelfStatusMove(Moves.SYNTHESIS, PokemonType.GRASS, -1, 5, -1, 0, 2) .attr(PlantHealAttr) .triageMove(), - new SelfStatusMove(Moves.MOONLIGHT, Type.FAIRY, -1, 5, -1, 0, 2) + new SelfStatusMove(Moves.MOONLIGHT, PokemonType.FAIRY, -1, 5, -1, 0, 2) .attr(PlantHealAttr) .triageMove(), - new AttackMove(Moves.HIDDEN_POWER, Type.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 2) + new AttackMove(Moves.HIDDEN_POWER, PokemonType.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 2) .attr(HiddenPowerTypeAttr), - new AttackMove(Moves.CROSS_CHOP, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 80, 5, -1, 0, 2) + new AttackMove(Moves.CROSS_CHOP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 80, 5, -1, 0, 2) .attr(HighCritAttr), - new AttackMove(Moves.TWISTER, Type.DRAGON, MoveCategory.SPECIAL, 40, 100, 20, 20, 0, 2) + new AttackMove(Moves.TWISTER, PokemonType.DRAGON, MoveCategory.SPECIAL, 40, 100, 20, 20, 0, 2) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.FLYING) .attr(FlinchAttr) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.RAIN_DANCE, Type.WATER, -1, 5, -1, 0, 2) + new StatusMove(Moves.RAIN_DANCE, PokemonType.WATER, -1, 5, -1, 0, 2) .attr(WeatherChangeAttr, WeatherType.RAIN) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.SUNNY_DAY, Type.FIRE, -1, 5, -1, 0, 2) + new StatusMove(Moves.SUNNY_DAY, PokemonType.FIRE, -1, 5, -1, 0, 2) .attr(WeatherChangeAttr, WeatherType.SUNNY) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.CRUNCH, Type.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 20, 0, 2) + new AttackMove(Moves.CRUNCH, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 20, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .bitingMove(), - new AttackMove(Moves.MIRROR_COAT, Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 20, -1, -5, 2) + new AttackMove(Moves.MIRROR_COAT, PokemonType.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 20, -1, -5, 2) .attr(CounterDamageAttr, (move: Move) => move.category === MoveCategory.SPECIAL, 2) .target(MoveTarget.ATTACKER), - new StatusMove(Moves.PSYCH_UP, Type.NORMAL, -1, 10, -1, 0, 2) + new StatusMove(Moves.PSYCH_UP, PokemonType.NORMAL, -1, 10, -1, 0, 2) .ignoresSubstitute() .attr(CopyStatsAttr), - new AttackMove(Moves.EXTREME_SPEED, Type.NORMAL, MoveCategory.PHYSICAL, 80, 100, 5, -1, 2, 2), - new AttackMove(Moves.ANCIENT_POWER, Type.ROCK, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 2) + new AttackMove(Moves.EXTREME_SPEED, PokemonType.NORMAL, MoveCategory.PHYSICAL, 80, 100, 5, -1, 2, 2), + new AttackMove(Moves.ANCIENT_POWER, PokemonType.ROCK, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 2) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true), - new AttackMove(Moves.SHADOW_BALL, Type.GHOST, MoveCategory.SPECIAL, 80, 100, 15, 20, 0, 2) + new AttackMove(Moves.SHADOW_BALL, PokemonType.GHOST, MoveCategory.SPECIAL, 80, 100, 15, 20, 0, 2) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .ballBombMove(), - new AttackMove(Moves.FUTURE_SIGHT, Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 2) + new AttackMove(Moves.FUTURE_SIGHT, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 2) .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc, should not apply abilities or held items if user is off the field .ignoresProtect() .attr(DelayedAttackAttr, ArenaTagType.FUTURE_SIGHT, ChargeAnim.FUTURE_SIGHT_CHARGING, i18next.t("moveTriggers:foresawAnAttack", { pokemonName: "{USER}" })), - new AttackMove(Moves.ROCK_SMASH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, 50, 0, 2) + new AttackMove(Moves.ROCK_SMASH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, 50, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.WHIRLPOOL, Type.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 2) + new AttackMove(Moves.WHIRLPOOL, PokemonType.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, 0, 2) .attr(TrapAttr, BattlerTagType.WHIRLPOOL) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERWATER), - new AttackMove(Moves.BEAT_UP, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 2) + new AttackMove(Moves.BEAT_UP, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 2) .attr(MultiHitAttr, MultiHitType.BEAT_UP) .attr(BeatUpAttr) .makesContact(false), - new AttackMove(Moves.FAKE_OUT, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 10, 100, 3, 3) + new AttackMove(Moves.FAKE_OUT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 10, 100, 3, 3) .attr(FlinchAttr) .condition(new FirstMoveCondition()), - new AttackMove(Moves.UPROAR, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 3) + new AttackMove(Moves.UPROAR, PokemonType.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 3) .soundBased() .target(MoveTarget.RANDOM_NEAR_ENEMY) .partial(), // Does not lock the user, does not stop Pokemon from sleeping - new SelfStatusMove(Moves.STOCKPILE, Type.NORMAL, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.STOCKPILE, PokemonType.NORMAL, -1, 20, -1, 0, 3) .condition(user => (user.getTag(StockpilingTag)?.stockpiledCount ?? 0) < 3) .attr(AddBattlerTagAttr, BattlerTagType.STOCKPILING, true), - new AttackMove(Moves.SPIT_UP, Type.NORMAL, MoveCategory.SPECIAL, -1, -1, 10, -1, 0, 3) + new AttackMove(Moves.SPIT_UP, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 10, -1, 0, 3) .condition(hasStockpileStacksCondition) .attr(SpitUpPowerAttr, 100) .attr(RemoveBattlerTagAttr, [ BattlerTagType.STOCKPILING ], true), - new SelfStatusMove(Moves.SWALLOW, Type.NORMAL, -1, 10, -1, 0, 3) + new SelfStatusMove(Moves.SWALLOW, PokemonType.NORMAL, -1, 10, -1, 0, 3) .condition(hasStockpileStacksCondition) .attr(SwallowHealAttr) .attr(RemoveBattlerTagAttr, [ BattlerTagType.STOCKPILING ], true) .triageMove(), - new AttackMove(Moves.HEAT_WAVE, Type.FIRE, MoveCategory.SPECIAL, 95, 90, 10, 10, 0, 3) + new AttackMove(Moves.HEAT_WAVE, PokemonType.FIRE, MoveCategory.SPECIAL, 95, 90, 10, 10, 0, 3) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.HAIL, Type.ICE, -1, 10, -1, 0, 3) + new StatusMove(Moves.HAIL, PokemonType.ICE, -1, 10, -1, 0, 3) .attr(WeatherChangeAttr, WeatherType.HAIL) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.TORMENT, Type.DARK, 100, 15, -1, 0, 3) + new StatusMove(Moves.TORMENT, PokemonType.DARK, 100, 15, -1, 0, 3) .ignoresSubstitute() .edgeCase() // Incomplete implementation because of Uproar's partial implementation .attr(AddBattlerTagAttr, BattlerTagType.TORMENT, false, true, 1) .reflectable(), - new StatusMove(Moves.FLATTER, Type.DARK, 100, 15, -1, 0, 3) + new StatusMove(Moves.FLATTER, PokemonType.DARK, 100, 15, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1) .attr(ConfuseAttr) .reflectable(), - new StatusMove(Moves.WILL_O_WISP, Type.FIRE, 85, 15, -1, 0, 3) + new StatusMove(Moves.WILL_O_WISP, PokemonType.FIRE, 85, 15, -1, 0, 3) .attr(StatusEffectAttr, StatusEffect.BURN) .reflectable(), - new StatusMove(Moves.MEMENTO, Type.DARK, 100, 10, -1, 0, 3) + new StatusMove(Moves.MEMENTO, PokemonType.DARK, 100, 10, -1, 0, 3) .attr(SacrificialAttrOnHit) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -2), - new AttackMove(Moves.FACADE, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 3) + new AttackMove(Moves.FACADE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 3) .attr(MovePowerMultiplierAttr, (user, target, move) => user.status && (user.status.effect === StatusEffect.BURN || user.status.effect === StatusEffect.POISON || user.status.effect === StatusEffect.TOXIC || user.status.effect === StatusEffect.PARALYSIS) ? 2 : 1) .attr(BypassBurnDamageReductionAttr), - new AttackMove(Moves.FOCUS_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 20, -1, -3, 3) + new AttackMove(Moves.FOCUS_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 20, -1, -3, 3) .attr(MessageHeaderAttr, (user, move) => i18next.t("moveTriggers:isTighteningFocus", { pokemonName: getPokemonNameWithAffix(user) })) .attr(PreUseInterruptAttr, (user, target, move) => i18next.t("moveTriggers:lostFocus", { pokemonName: getPokemonNameWithAffix(user) }), user => !!user.turnData.attacksReceived.find(r => r.damage)) .punchingMove(), - new AttackMove(Moves.SMELLING_SALTS, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 3) + new AttackMove(Moves.SMELLING_SALTS, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 3) .attr(MovePowerMultiplierAttr, (user, target, move) => target.status?.effect === StatusEffect.PARALYSIS ? 2 : 1) .attr(HealStatusEffectAttr, true, StatusEffect.PARALYSIS), - new SelfStatusMove(Moves.FOLLOW_ME, Type.NORMAL, -1, 20, -1, 2, 3) + new SelfStatusMove(Moves.FOLLOW_ME, PokemonType.NORMAL, -1, 20, -1, 2, 3) .attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, true), - new StatusMove(Moves.NATURE_POWER, Type.NORMAL, -1, 20, -1, 0, 3) + new StatusMove(Moves.NATURE_POWER, PokemonType.NORMAL, -1, 20, -1, 0, 3) .attr(NaturePowerAttr), - new SelfStatusMove(Moves.CHARGE, Type.ELECTRIC, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.CHARGE, PokemonType.ELECTRIC, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPDEF ], 1, true) .attr(AddBattlerTagAttr, BattlerTagType.CHARGED, true, false), - new StatusMove(Moves.TAUNT, Type.DARK, 100, 20, -1, 0, 3) + new StatusMove(Moves.TAUNT, PokemonType.DARK, 100, 20, -1, 0, 3) .ignoresSubstitute() .attr(AddBattlerTagAttr, BattlerTagType.TAUNT, false, true, 4) .reflectable(), - new StatusMove(Moves.HELPING_HAND, Type.NORMAL, -1, 20, -1, 5, 3) + new StatusMove(Moves.HELPING_HAND, PokemonType.NORMAL, -1, 20, -1, 5, 3) .attr(AddBattlerTagAttr, BattlerTagType.HELPING_HAND) .ignoresSubstitute() .target(MoveTarget.NEAR_ALLY) .condition(failIfSingleBattle), - new StatusMove(Moves.TRICK, Type.PSYCHIC, 100, 10, -1, 0, 3) + new StatusMove(Moves.TRICK, PokemonType.PSYCHIC, 100, 10, -1, 0, 3) .unimplemented(), - new StatusMove(Moves.ROLE_PLAY, Type.PSYCHIC, -1, 10, -1, 0, 3) + new StatusMove(Moves.ROLE_PLAY, PokemonType.PSYCHIC, -1, 10, -1, 0, 3) .ignoresSubstitute() .attr(AbilityCopyAttr), - new SelfStatusMove(Moves.WISH, Type.NORMAL, -1, 10, -1, 0, 3) + new SelfStatusMove(Moves.WISH, PokemonType.NORMAL, -1, 10, -1, 0, 3) .triageMove() .attr(AddArenaTagAttr, ArenaTagType.WISH, 2, true), - new SelfStatusMove(Moves.ASSIST, Type.NORMAL, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.ASSIST, PokemonType.NORMAL, -1, 20, -1, 0, 3) .attr(RandomMovesetMoveAttr, invalidAssistMoves, true), - new SelfStatusMove(Moves.INGRAIN, Type.GRASS, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.INGRAIN, PokemonType.GRASS, -1, 20, -1, 0, 3) .attr(AddBattlerTagAttr, BattlerTagType.INGRAIN, true, true) .attr(AddBattlerTagAttr, BattlerTagType.IGNORE_FLYING, true, true) .attr(RemoveBattlerTagAttr, [ BattlerTagType.FLOATING ], true), - new AttackMove(Moves.SUPERPOWER, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 3) + new AttackMove(Moves.SUPERPOWER, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], -1, true), - new SelfStatusMove(Moves.MAGIC_COAT, Type.PSYCHIC, -1, 15, -1, 4, 3) + new SelfStatusMove(Moves.MAGIC_COAT, PokemonType.PSYCHIC, -1, 15, -1, 4, 3) .attr(AddBattlerTagAttr, BattlerTagType.MAGIC_COAT, true, true, 0) .condition(failIfLastCondition) // Interactions with stomping tantrum, instruct, and other moves that // rely on move history // Also will not reflect roar / whirlwind if the target has ForceSwitchOutImmunityAbAttr .edgeCase(), - new SelfStatusMove(Moves.RECYCLE, Type.NORMAL, -1, 10, -1, 0, 3) + new SelfStatusMove(Moves.RECYCLE, PokemonType.NORMAL, -1, 10, -1, 0, 3) .unimplemented(), - new AttackMove(Moves.REVENGE, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 3) + new AttackMove(Moves.REVENGE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 3) .attr(TurnDamagedDoublePowerAttr), - new AttackMove(Moves.BRICK_BREAK, Type.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 15, -1, 0, 3) + new AttackMove(Moves.BRICK_BREAK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 15, -1, 0, 3) .attr(RemoveScreensAttr), - new StatusMove(Moves.YAWN, Type.NORMAL, -1, 10, -1, 0, 3) + new StatusMove(Moves.YAWN, PokemonType.NORMAL, -1, 10, -1, 0, 3) .attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true) .condition((user, target, move) => !target.status && !target.isSafeguarded(user)) .reflectable(), - new AttackMove(Moves.KNOCK_OFF, Type.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3) + new AttackMove(Moves.KNOCK_OFF, PokemonType.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getHeldItems().filter(i => i.isTransferable).length > 0 ? 1.5 : 1) .attr(RemoveHeldItemAttr, false), - new AttackMove(Moves.ENDEAVOR, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 3) + new AttackMove(Moves.ENDEAVOR, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 3) .attr(MatchHpAttr) .condition(failOnBossCondition), - new AttackMove(Moves.ERUPTION, Type.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) + new AttackMove(Moves.ERUPTION, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) .attr(HpPowerAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.SKILL_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 3) + new StatusMove(Moves.SKILL_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 3) .ignoresSubstitute() .attr(SwitchAbilitiesAttr), - new StatusMove(Moves.IMPRISON, Type.PSYCHIC, 100, 10, -1, 0, 3) + new StatusMove(Moves.IMPRISON, PokemonType.PSYCHIC, 100, 10, -1, 0, 3) .ignoresSubstitute() .attr(AddArenaTagAttr, ArenaTagType.IMPRISON, 1, true, false) .target(MoveTarget.ENEMY_SIDE), - new SelfStatusMove(Moves.REFRESH, Type.NORMAL, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.REFRESH, PokemonType.NORMAL, -1, 20, -1, 0, 3) .attr(HealStatusEffectAttr, true, [ StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN ]) .condition((user, target, move) => !!user.status && (user.status.effect === StatusEffect.PARALYSIS || user.status.effect === StatusEffect.POISON || user.status.effect === StatusEffect.TOXIC || user.status.effect === StatusEffect.BURN)), - new SelfStatusMove(Moves.GRUDGE, Type.GHOST, -1, 5, -1, 0, 3) + new SelfStatusMove(Moves.GRUDGE, PokemonType.GHOST, -1, 5, -1, 0, 3) .attr(AddBattlerTagAttr, BattlerTagType.GRUDGE, true, undefined, 1), - new SelfStatusMove(Moves.SNATCH, Type.DARK, -1, 10, -1, 4, 3) + new SelfStatusMove(Moves.SNATCH, PokemonType.DARK, -1, 10, -1, 4, 3) .unimplemented(), - new AttackMove(Moves.SECRET_POWER, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, 30, 0, 3) + new AttackMove(Moves.SECRET_POWER, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, 30, 0, 3) .makesContact(false) .attr(SecretPowerAttr), - new ChargingAttackMove(Moves.DIVE, Type.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 3) + new ChargingAttackMove(Moves.DIVE, PokemonType.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 3) .chargeText(i18next.t("moveTriggers:hidUnderwater", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERWATER) .chargeAttr(GulpMissileTagAttr), - new AttackMove(Moves.ARM_THRUST, Type.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, 0, 3) + new AttackMove(Moves.ARM_THRUST, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, 0, 3) .attr(MultiHitAttr), - new SelfStatusMove(Moves.CAMOUFLAGE, Type.NORMAL, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.CAMOUFLAGE, PokemonType.NORMAL, -1, 20, -1, 0, 3) .attr(CopyBiomeTypeAttr), - new SelfStatusMove(Moves.TAIL_GLOW, Type.BUG, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.TAIL_GLOW, PokemonType.BUG, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], 3, true), - new AttackMove(Moves.LUSTER_PURGE, Type.PSYCHIC, MoveCategory.SPECIAL, 95, 100, 5, 50, 0, 3) + new AttackMove(Moves.LUSTER_PURGE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 95, 100, 5, 50, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new AttackMove(Moves.MIST_BALL, Type.PSYCHIC, MoveCategory.SPECIAL, 95, 100, 5, 50, 0, 3) + new AttackMove(Moves.MIST_BALL, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 95, 100, 5, 50, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .ballBombMove(), - new StatusMove(Moves.FEATHER_DANCE, Type.FLYING, 100, 15, -1, 0, 3) + new StatusMove(Moves.FEATHER_DANCE, PokemonType.FLYING, 100, 15, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK ], -2) .danceMove() .reflectable(), - new StatusMove(Moves.TEETER_DANCE, Type.NORMAL, 100, 20, -1, 0, 3) + new StatusMove(Moves.TEETER_DANCE, PokemonType.NORMAL, 100, 20, -1, 0, 3) .attr(ConfuseAttr) .danceMove() .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.BLAZE_KICK, Type.FIRE, MoveCategory.PHYSICAL, 85, 90, 10, 10, 0, 3) + new AttackMove(Moves.BLAZE_KICK, PokemonType.FIRE, MoveCategory.PHYSICAL, 85, 90, 10, 10, 0, 3) .attr(HighCritAttr) .attr(StatusEffectAttr, StatusEffect.BURN), - new StatusMove(Moves.MUD_SPORT, Type.GROUND, -1, 15, -1, 0, 3) + new StatusMove(Moves.MUD_SPORT, PokemonType.GROUND, -1, 15, -1, 0, 3) .ignoresProtect() .attr(AddArenaTagAttr, ArenaTagType.MUD_SPORT, 5) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.ICE_BALL, Type.ICE, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 3) + new AttackMove(Moves.ICE_BALL, PokemonType.ICE, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 3) .partial() // Does not lock the user properly, does not increase damage correctly .attr(ConsecutiveUseDoublePowerAttr, 5, true, true, Moves.DEFENSE_CURL) .ballBombMove(), - new AttackMove(Moves.NEEDLE_ARM, Type.GRASS, MoveCategory.PHYSICAL, 60, 100, 15, 30, 0, 3) + new AttackMove(Moves.NEEDLE_ARM, PokemonType.GRASS, MoveCategory.PHYSICAL, 60, 100, 15, 30, 0, 3) .attr(FlinchAttr), - new SelfStatusMove(Moves.SLACK_OFF, Type.NORMAL, -1, 5, -1, 0, 3) + new SelfStatusMove(Moves.SLACK_OFF, PokemonType.NORMAL, -1, 5, -1, 0, 3) .attr(HealAttr, 0.5) .triageMove(), - new AttackMove(Moves.HYPER_VOICE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 3) + new AttackMove(Moves.HYPER_VOICE, PokemonType.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 3) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.POISON_FANG, Type.POISON, MoveCategory.PHYSICAL, 50, 100, 15, 50, 0, 3) + new AttackMove(Moves.POISON_FANG, PokemonType.POISON, MoveCategory.PHYSICAL, 50, 100, 15, 50, 0, 3) .attr(StatusEffectAttr, StatusEffect.TOXIC) .bitingMove(), - new AttackMove(Moves.CRUSH_CLAW, Type.NORMAL, MoveCategory.PHYSICAL, 75, 95, 10, 50, 0, 3) + new AttackMove(Moves.CRUSH_CLAW, PokemonType.NORMAL, MoveCategory.PHYSICAL, 75, 95, 10, 50, 0, 3) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.BLAST_BURN, Type.FIRE, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) + new AttackMove(Moves.BLAST_BURN, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) .attr(RechargeAttr), - new AttackMove(Moves.HYDRO_CANNON, Type.WATER, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) + new AttackMove(Moves.HYDRO_CANNON, PokemonType.WATER, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) .attr(RechargeAttr), - new AttackMove(Moves.METEOR_MASH, Type.STEEL, MoveCategory.PHYSICAL, 90, 90, 10, 20, 0, 3) + new AttackMove(Moves.METEOR_MASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 90, 90, 10, 20, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true) .punchingMove(), - new AttackMove(Moves.ASTONISH, Type.GHOST, MoveCategory.PHYSICAL, 30, 100, 15, 30, 0, 3) + new AttackMove(Moves.ASTONISH, PokemonType.GHOST, MoveCategory.PHYSICAL, 30, 100, 15, 30, 0, 3) .attr(FlinchAttr), - new AttackMove(Moves.WEATHER_BALL, Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 3) + new AttackMove(Moves.WEATHER_BALL, PokemonType.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 3) .attr(WeatherBallTypeAttr) .attr(MovePowerMultiplierAttr, (user, target, move) => [ WeatherType.SUNNY, WeatherType.RAIN, WeatherType.SANDSTORM, WeatherType.HAIL, WeatherType.SNOW, WeatherType.FOG, WeatherType.HEAVY_RAIN, WeatherType.HARSH_SUN ].includes(globalScene.arena.weather?.weatherType!) && !globalScene.arena.weather?.isEffectSuppressed() ? 2 : 1) // TODO: is this bang correct? .ballBombMove(), - new StatusMove(Moves.AROMATHERAPY, Type.GRASS, -1, 5, -1, 0, 3) + new StatusMove(Moves.AROMATHERAPY, PokemonType.GRASS, -1, 5, -1, 0, 3) .attr(PartyStatusCureAttr, i18next.t("moveTriggers:soothingAromaWaftedThroughArea"), Abilities.SAP_SIPPER) .target(MoveTarget.PARTY), - new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3) + new StatusMove(Moves.FAKE_TEARS, PokemonType.DARK, 100, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2) .reflectable(), - new AttackMove(Moves.AIR_CUTTER, Type.FLYING, MoveCategory.SPECIAL, 60, 95, 25, -1, 0, 3) + new AttackMove(Moves.AIR_CUTTER, PokemonType.FLYING, MoveCategory.SPECIAL, 60, 95, 25, -1, 0, 3) .attr(HighCritAttr) .slicingMove() .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.OVERHEAT, Type.FIRE, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 3) + new AttackMove(Moves.OVERHEAT, PokemonType.FIRE, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE), - new StatusMove(Moves.ODOR_SLEUTH, Type.NORMAL, -1, 40, -1, 0, 3) + new StatusMove(Moves.ODOR_SLEUTH, PokemonType.NORMAL, -1, 40, -1, 0, 3) .attr(ExposedMoveAttr, BattlerTagType.IGNORE_GHOST) .ignoresSubstitute() .reflectable(), - new AttackMove(Moves.ROCK_TOMB, Type.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 100, 0, 3) + new AttackMove(Moves.ROCK_TOMB, PokemonType.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 100, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .makesContact(false), - new AttackMove(Moves.SILVER_WIND, Type.BUG, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 3) + new AttackMove(Moves.SILVER_WIND, PokemonType.BUG, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true) .windMove(), - new StatusMove(Moves.METAL_SOUND, Type.STEEL, 85, 40, -1, 0, 3) + new StatusMove(Moves.METAL_SOUND, PokemonType.STEEL, 85, 40, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2) .soundBased() .reflectable(), - new StatusMove(Moves.GRASS_WHISTLE, Type.GRASS, 55, 15, -1, 0, 3) + new StatusMove(Moves.GRASS_WHISTLE, PokemonType.GRASS, 55, 15, -1, 0, 3) .attr(StatusEffectAttr, StatusEffect.SLEEP) .soundBased() .reflectable(), - new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3) + new StatusMove(Moves.TICKLE, PokemonType.NORMAL, 100, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], -1) .reflectable(), - new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.COSMIC_POWER, PokemonType.PSYCHIC, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, true), - new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) + new AttackMove(Moves.WATER_SPOUT, PokemonType.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) .attr(HpPowerAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.SIGNAL_BEAM, Type.BUG, MoveCategory.SPECIAL, 75, 100, 15, 10, 0, 3) + new AttackMove(Moves.SIGNAL_BEAM, PokemonType.BUG, MoveCategory.SPECIAL, 75, 100, 15, 10, 0, 3) .attr(ConfuseAttr), - new AttackMove(Moves.SHADOW_PUNCH, Type.GHOST, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 3) + new AttackMove(Moves.SHADOW_PUNCH, PokemonType.GHOST, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 3) .punchingMove(), - new AttackMove(Moves.EXTRASENSORY, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 20, 10, 0, 3) + new AttackMove(Moves.EXTRASENSORY, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 20, 10, 0, 3) .attr(FlinchAttr), - new AttackMove(Moves.SKY_UPPERCUT, Type.FIGHTING, MoveCategory.PHYSICAL, 85, 90, 15, -1, 0, 3) + new AttackMove(Moves.SKY_UPPERCUT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 85, 90, 15, -1, 0, 3) .attr(HitsTagAttr, BattlerTagType.FLYING) .punchingMove(), - new AttackMove(Moves.SAND_TOMB, Type.GROUND, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 3) + new AttackMove(Moves.SAND_TOMB, PokemonType.GROUND, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 3) .attr(TrapAttr, BattlerTagType.SAND_TOMB) .makesContact(false), - new AttackMove(Moves.SHEER_COLD, Type.ICE, MoveCategory.SPECIAL, 200, 20, 5, -1, 0, 3) + new AttackMove(Moves.SHEER_COLD, PokemonType.ICE, MoveCategory.SPECIAL, 200, 20, 5, -1, 0, 3) .attr(IceNoEffectTypeAttr) .attr(OneHitKOAttr) .attr(SheerColdAccuracyAttr), - new AttackMove(Moves.MUDDY_WATER, Type.WATER, MoveCategory.SPECIAL, 90, 85, 10, 30, 0, 3) + new AttackMove(Moves.MUDDY_WATER, PokemonType.WATER, MoveCategory.SPECIAL, 90, 85, 10, 30, 0, 3) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.BULLET_SEED, Type.GRASS, MoveCategory.PHYSICAL, 25, 100, 30, -1, 0, 3) + new AttackMove(Moves.BULLET_SEED, PokemonType.GRASS, MoveCategory.PHYSICAL, 25, 100, 30, -1, 0, 3) .attr(MultiHitAttr) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.AERIAL_ACE, Type.FLYING, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 3) + new AttackMove(Moves.AERIAL_ACE, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 3) .slicingMove(), - new AttackMove(Moves.ICICLE_SPEAR, Type.ICE, MoveCategory.PHYSICAL, 25, 100, 30, -1, 0, 3) + new AttackMove(Moves.ICICLE_SPEAR, PokemonType.ICE, MoveCategory.PHYSICAL, 25, 100, 30, -1, 0, 3) .attr(MultiHitAttr) .makesContact(false), - new SelfStatusMove(Moves.IRON_DEFENSE, Type.STEEL, -1, 15, -1, 0, 3) + new SelfStatusMove(Moves.IRON_DEFENSE, PokemonType.STEEL, -1, 15, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true), - new StatusMove(Moves.BLOCK, Type.NORMAL, -1, 5, -1, 0, 3) + new StatusMove(Moves.BLOCK, PokemonType.NORMAL, -1, 5, -1, 0, 3) .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1) .reflectable(), - new StatusMove(Moves.HOWL, Type.NORMAL, -1, 40, -1, 0, 3) + new StatusMove(Moves.HOWL, PokemonType.NORMAL, -1, 40, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK ], 1) .soundBased() .target(MoveTarget.USER_AND_ALLIES), - new AttackMove(Moves.DRAGON_CLAW, Type.DRAGON, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 3), - new AttackMove(Moves.FRENZY_PLANT, Type.GRASS, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) + new AttackMove(Moves.DRAGON_CLAW, PokemonType.DRAGON, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 3), + new AttackMove(Moves.FRENZY_PLANT, PokemonType.GRASS, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 3) .attr(RechargeAttr), - new SelfStatusMove(Moves.BULK_UP, Type.FIGHTING, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.BULK_UP, PokemonType.FIGHTING, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], 1, true), - new ChargingAttackMove(Moves.BOUNCE, Type.FLYING, MoveCategory.PHYSICAL, 85, 85, 5, 30, 0, 3) + new ChargingAttackMove(Moves.BOUNCE, PokemonType.FLYING, MoveCategory.PHYSICAL, 85, 85, 5, 30, 0, 3) .chargeText(i18next.t("moveTriggers:sprangUp", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .condition(failOnGravityCondition), - new AttackMove(Moves.MUD_SHOT, Type.GROUND, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 3) + new AttackMove(Moves.MUD_SHOT, PokemonType.GROUND, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new AttackMove(Moves.POISON_TAIL, Type.POISON, MoveCategory.PHYSICAL, 50, 100, 25, 10, 0, 3) + new AttackMove(Moves.POISON_TAIL, PokemonType.POISON, MoveCategory.PHYSICAL, 50, 100, 25, 10, 0, 3) .attr(HighCritAttr) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.COVET, Type.NORMAL, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 3) + new AttackMove(Moves.COVET, PokemonType.NORMAL, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 3) .attr(StealHeldItemChanceAttr, 0.3), - new AttackMove(Moves.VOLT_TACKLE, Type.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 3) + new AttackMove(Moves.VOLT_TACKLE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 3) .attr(RecoilAttr, false, 0.33) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .recklessMove(), - new AttackMove(Moves.MAGICAL_LEAF, Type.GRASS, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 3), - new StatusMove(Moves.WATER_SPORT, Type.WATER, -1, 15, -1, 0, 3) + new AttackMove(Moves.MAGICAL_LEAF, PokemonType.GRASS, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 3), + new StatusMove(Moves.WATER_SPORT, PokemonType.WATER, -1, 15, -1, 0, 3) .ignoresProtect() .attr(AddArenaTagAttr, ArenaTagType.WATER_SPORT, 5) .target(MoveTarget.BOTH_SIDES), - new SelfStatusMove(Moves.CALM_MIND, Type.PSYCHIC, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.CALM_MIND, PokemonType.PSYCHIC, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF ], 1, true), - new AttackMove(Moves.LEAF_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 3) + new AttackMove(Moves.LEAF_BLADE, PokemonType.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 3) .attr(HighCritAttr) .slicingMove(), - new SelfStatusMove(Moves.DRAGON_DANCE, Type.DRAGON, -1, 20, -1, 0, 3) + new SelfStatusMove(Moves.DRAGON_DANCE, PokemonType.DRAGON, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPD ], 1, true) .danceMove(), - new AttackMove(Moves.ROCK_BLAST, Type.ROCK, MoveCategory.PHYSICAL, 25, 90, 10, -1, 0, 3) + new AttackMove(Moves.ROCK_BLAST, PokemonType.ROCK, MoveCategory.PHYSICAL, 25, 90, 10, -1, 0, 3) .attr(MultiHitAttr) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.SHOCK_WAVE, Type.ELECTRIC, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 3), - new AttackMove(Moves.WATER_PULSE, Type.WATER, MoveCategory.SPECIAL, 60, 100, 20, 20, 0, 3) + new AttackMove(Moves.SHOCK_WAVE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 60, -1, 20, -1, 0, 3), + new AttackMove(Moves.WATER_PULSE, PokemonType.WATER, MoveCategory.SPECIAL, 60, 100, 20, 20, 0, 3) .attr(ConfuseAttr) .pulseMove(), - new AttackMove(Moves.DOOM_DESIRE, Type.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 3) + new AttackMove(Moves.DOOM_DESIRE, PokemonType.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 3) .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc, should not apply abilities or held items if user is off the field .ignoresProtect() .attr(DelayedAttackAttr, ArenaTagType.DOOM_DESIRE, ChargeAnim.DOOM_DESIRE_CHARGING, i18next.t("moveTriggers:choseDoomDesireAsDestiny", { pokemonName: "{USER}" })), - new AttackMove(Moves.PSYCHO_BOOST, Type.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 3) + new AttackMove(Moves.PSYCHO_BOOST, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true), - new SelfStatusMove(Moves.ROOST, Type.FLYING, -1, 5, -1, 0, 4) + new SelfStatusMove(Moves.ROOST, PokemonType.FLYING, -1, 5, -1, 0, 4) .attr(HealAttr, 0.5) .attr(AddBattlerTagAttr, BattlerTagType.ROOSTED, true, false) .triageMove(), - new StatusMove(Moves.GRAVITY, Type.PSYCHIC, -1, 5, -1, 0, 4) + new StatusMove(Moves.GRAVITY, PokemonType.PSYCHIC, -1, 5, -1, 0, 4) .ignoresProtect() .attr(AddArenaTagAttr, ArenaTagType.GRAVITY, 5) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.MIRACLE_EYE, Type.PSYCHIC, -1, 40, -1, 0, 4) + new StatusMove(Moves.MIRACLE_EYE, PokemonType.PSYCHIC, -1, 40, -1, 0, 4) .attr(ExposedMoveAttr, BattlerTagType.IGNORE_DARK) .ignoresSubstitute() .reflectable(), - new AttackMove(Moves.WAKE_UP_SLAP, Type.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 4) + new AttackMove(Moves.WAKE_UP_SLAP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => targetSleptOrComatoseCondition(user, target, move) ? 2 : 1) .attr(HealStatusEffectAttr, false, StatusEffect.SLEEP), - new AttackMove(Moves.HAMMER_ARM, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 4) + new AttackMove(Moves.HAMMER_ARM, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPD ], -1, true) .punchingMove(), - new AttackMove(Moves.GYRO_BALL, Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) + new AttackMove(Moves.GYRO_BALL, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) .attr(GyroBallPowerAttr) .ballBombMove(), - new SelfStatusMove(Moves.HEALING_WISH, Type.PSYCHIC, -1, 10, -1, 0, 4) + new SelfStatusMove(Moves.HEALING_WISH, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) .attr(SacrificialFullRestoreAttr, false, "moveTriggers:sacrificialFullRestore") .triageMove() .condition(failIfLastInPartyCondition), - new AttackMove(Moves.BRINE, Type.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 4) + new AttackMove(Moves.BRINE, PokemonType.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getHpRatio() < 0.5 ? 2 : 1), - new AttackMove(Moves.NATURAL_GIFT, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 4) + new AttackMove(Moves.NATURAL_GIFT, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 4) .makesContact(false) .unimplemented(), - new AttackMove(Moves.FEINT, Type.NORMAL, MoveCategory.PHYSICAL, 30, 100, 10, -1, 2, 4) + new AttackMove(Moves.FEINT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 30, 100, 10, -1, 2, 4) .attr(RemoveBattlerTagAttr, [ BattlerTagType.PROTECTED ]) .attr(RemoveArenaTagsAttr, [ ArenaTagType.QUICK_GUARD, ArenaTagType.WIDE_GUARD, ArenaTagType.MAT_BLOCK, ArenaTagType.CRAFTY_SHIELD ], false) .makesContact(false) .ignoresProtect(), - new AttackMove(Moves.PLUCK, Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 4) + new AttackMove(Moves.PLUCK, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 4) .attr(StealEatBerryAttr), - new StatusMove(Moves.TAILWIND, Type.FLYING, -1, 15, -1, 0, 4) + new StatusMove(Moves.TAILWIND, PokemonType.FLYING, -1, 15, -1, 0, 4) .windMove() .attr(AddArenaTagAttr, ArenaTagType.TAILWIND, 4, true) .target(MoveTarget.USER_SIDE), - new StatusMove(Moves.ACUPRESSURE, Type.NORMAL, -1, 30, -1, 0, 4) + new StatusMove(Moves.ACUPRESSURE, PokemonType.NORMAL, -1, 30, -1, 0, 4) .attr(AcupressureStatStageChangeAttr) .target(MoveTarget.USER_OR_NEAR_ALLY), - new AttackMove(Moves.METAL_BURST, Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) + new AttackMove(Moves.METAL_BURST, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) .attr(CounterDamageAttr, (move: Move) => (move.category === MoveCategory.PHYSICAL || move.category === MoveCategory.SPECIAL), 1.5) .redirectCounter() .makesContact(false) .target(MoveTarget.ATTACKER), - new AttackMove(Moves.U_TURN, Type.BUG, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 4) + new AttackMove(Moves.U_TURN, PokemonType.BUG, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 4) .attr(ForceSwitchOutAttr, true), - new AttackMove(Moves.CLOSE_COMBAT, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) + new AttackMove(Moves.CLOSE_COMBAT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), - new AttackMove(Moves.PAYBACK, Type.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 4) + new AttackMove(Moves.PAYBACK, PokemonType.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getLastXMoves(1).find(m => m.turn === globalScene.currentBattle.turn) || globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.BALL ? 2 : 1), - new AttackMove(Moves.ASSURANCE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 4) + new AttackMove(Moves.ASSURANCE, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => target.turnData.damageTaken > 0 ? 2 : 1), - new StatusMove(Moves.EMBARGO, Type.DARK, 100, 15, -1, 0, 4) + new StatusMove(Moves.EMBARGO, PokemonType.DARK, 100, 15, -1, 0, 4) .reflectable() .unimplemented(), - new AttackMove(Moves.FLING, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) + new AttackMove(Moves.FLING, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) .makesContact(false) .unimplemented(), - new StatusMove(Moves.PSYCHO_SHIFT, Type.PSYCHIC, 100, 10, -1, 0, 4) + new StatusMove(Moves.PSYCHO_SHIFT, PokemonType.PSYCHIC, 100, 10, -1, 0, 4) .attr(PsychoShiftEffectAttr) .condition((user, target, move) => { let statusToApply = user.hasAbility(Abilities.COMATOSE) ? StatusEffect.SLEEP : undefined; @@ -9723,156 +9354,156 @@ export function initMoves() { return !!statusToApply && target.canSetStatus(statusToApply, false, false, user); } ), - new AttackMove(Moves.TRUMP_CARD, Type.NORMAL, MoveCategory.SPECIAL, -1, -1, 5, -1, 0, 4) + new AttackMove(Moves.TRUMP_CARD, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 5, -1, 0, 4) .makesContact() .attr(LessPPMorePowerAttr), - new StatusMove(Moves.HEAL_BLOCK, Type.PSYCHIC, 100, 15, -1, 0, 4) + new StatusMove(Moves.HEAL_BLOCK, PokemonType.PSYCHIC, 100, 15, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.HEAL_BLOCK, false, true, 5) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.WRING_OUT, Type.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 4) + new AttackMove(Moves.WRING_OUT, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 4) .attr(OpponentHighHpPowerAttr, 120) .makesContact(), - new SelfStatusMove(Moves.POWER_TRICK, Type.PSYCHIC, -1, 10, -1, 0, 4) + new SelfStatusMove(Moves.POWER_TRICK, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.POWER_TRICK, true), - new StatusMove(Moves.GASTRO_ACID, Type.POISON, 100, 10, -1, 0, 4) + new StatusMove(Moves.GASTRO_ACID, PokemonType.POISON, 100, 10, -1, 0, 4) .attr(SuppressAbilitiesAttr) .reflectable(), - new StatusMove(Moves.LUCKY_CHANT, Type.NORMAL, -1, 30, -1, 0, 4) + new StatusMove(Moves.LUCKY_CHANT, PokemonType.NORMAL, -1, 30, -1, 0, 4) .attr(AddArenaTagAttr, ArenaTagType.NO_CRIT, 5, true, true) .target(MoveTarget.USER_SIDE), - new StatusMove(Moves.ME_FIRST, Type.NORMAL, -1, 20, -1, 0, 4) + new StatusMove(Moves.ME_FIRST, PokemonType.NORMAL, -1, 20, -1, 0, 4) .ignoresSubstitute() .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new SelfStatusMove(Moves.COPYCAT, Type.NORMAL, -1, 20, -1, 0, 4) + new SelfStatusMove(Moves.COPYCAT, PokemonType.NORMAL, -1, 20, -1, 0, 4) .attr(CopyMoveAttr, false, invalidCopycatMoves), - new StatusMove(Moves.POWER_SWAP, Type.PSYCHIC, -1, 10, 100, 0, 4) + new StatusMove(Moves.POWER_SWAP, PokemonType.PSYCHIC, -1, 10, 100, 0, 4) .attr(SwapStatStagesAttr, [ Stat.ATK, Stat.SPATK ]) .ignoresSubstitute(), - new StatusMove(Moves.GUARD_SWAP, Type.PSYCHIC, -1, 10, 100, 0, 4) + new StatusMove(Moves.GUARD_SWAP, PokemonType.PSYCHIC, -1, 10, 100, 0, 4) .attr(SwapStatStagesAttr, [ Stat.DEF, Stat.SPDEF ]) .ignoresSubstitute(), - new AttackMove(Moves.PUNISHMENT, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) + new AttackMove(Moves.PUNISHMENT, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) .makesContact(true) .attr(PunishmentPowerAttr), - new AttackMove(Moves.LAST_RESORT, Type.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, 0, 4) + new AttackMove(Moves.LAST_RESORT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, 0, 4) .attr(LastResortAttr), - new StatusMove(Moves.WORRY_SEED, Type.GRASS, 100, 10, -1, 0, 4) + new StatusMove(Moves.WORRY_SEED, PokemonType.GRASS, 100, 10, -1, 0, 4) .attr(AbilityChangeAttr, Abilities.INSOMNIA) .reflectable(), - new AttackMove(Moves.SUCKER_PUNCH, Type.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, 1, 4) + new AttackMove(Moves.SUCKER_PUNCH, PokemonType.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, 1, 4) .condition((user, target, move) => globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.FIGHT && !target.turnData.acted && allMoves[globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.move?.move!].category !== MoveCategory.STATUS), // TODO: is this bang correct? - new StatusMove(Moves.TOXIC_SPIKES, Type.POISON, -1, 20, -1, 0, 4) + new StatusMove(Moves.TOXIC_SPIKES, PokemonType.POISON, -1, 20, -1, 0, 4) .attr(AddArenaTrapTagAttr, ArenaTagType.TOXIC_SPIKES) .target(MoveTarget.ENEMY_SIDE) .reflectable(), - new StatusMove(Moves.HEART_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 4) + new StatusMove(Moves.HEART_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) .attr(SwapStatStagesAttr, BATTLE_STATS) .ignoresSubstitute(), - new SelfStatusMove(Moves.AQUA_RING, Type.WATER, -1, 20, -1, 0, 4) + new SelfStatusMove(Moves.AQUA_RING, PokemonType.WATER, -1, 20, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.AQUA_RING, true, true), - new SelfStatusMove(Moves.MAGNET_RISE, Type.ELECTRIC, -1, 10, -1, 0, 4) + new SelfStatusMove(Moves.MAGNET_RISE, PokemonType.ELECTRIC, -1, 10, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.FLOATING, true, true, 5) .condition((user, target, move) => !globalScene.arena.getTag(ArenaTagType.GRAVITY) && [ BattlerTagType.FLOATING, BattlerTagType.IGNORE_FLYING, BattlerTagType.INGRAIN ].every((tag) => !user.getTag(tag))), - new AttackMove(Moves.FLARE_BLITZ, Type.FIRE, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 4) + new AttackMove(Moves.FLARE_BLITZ, PokemonType.FIRE, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 4) .attr(RecoilAttr, false, 0.33) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .recklessMove(), - new AttackMove(Moves.FORCE_PALM, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, 30, 0, 4) + new AttackMove(Moves.FORCE_PALM, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.AURA_SPHERE, Type.FIGHTING, MoveCategory.SPECIAL, 80, -1, 20, -1, 0, 4) + new AttackMove(Moves.AURA_SPHERE, PokemonType.FIGHTING, MoveCategory.SPECIAL, 80, -1, 20, -1, 0, 4) .pulseMove() .ballBombMove(), - new SelfStatusMove(Moves.ROCK_POLISH, Type.ROCK, -1, 20, -1, 0, 4) + new SelfStatusMove(Moves.ROCK_POLISH, PokemonType.ROCK, -1, 20, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPD ], 2, true), - new AttackMove(Moves.POISON_JAB, Type.POISON, MoveCategory.PHYSICAL, 80, 100, 20, 30, 0, 4) + new AttackMove(Moves.POISON_JAB, PokemonType.POISON, MoveCategory.PHYSICAL, 80, 100, 20, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.DARK_PULSE, Type.DARK, MoveCategory.SPECIAL, 80, 100, 15, 20, 0, 4) + new AttackMove(Moves.DARK_PULSE, PokemonType.DARK, MoveCategory.SPECIAL, 80, 100, 15, 20, 0, 4) .attr(FlinchAttr) .pulseMove(), - new AttackMove(Moves.NIGHT_SLASH, Type.DARK, MoveCategory.PHYSICAL, 70, 100, 15, -1, 0, 4) + new AttackMove(Moves.NIGHT_SLASH, PokemonType.DARK, MoveCategory.PHYSICAL, 70, 100, 15, -1, 0, 4) .attr(HighCritAttr) .slicingMove(), - new AttackMove(Moves.AQUA_TAIL, Type.WATER, MoveCategory.PHYSICAL, 90, 90, 10, -1, 0, 4), - new AttackMove(Moves.SEED_BOMB, Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 4) + new AttackMove(Moves.AQUA_TAIL, PokemonType.WATER, MoveCategory.PHYSICAL, 90, 90, 10, -1, 0, 4), + new AttackMove(Moves.SEED_BOMB, PokemonType.GRASS, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 4) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.AIR_SLASH, Type.FLYING, MoveCategory.SPECIAL, 75, 95, 15, 30, 0, 4) + new AttackMove(Moves.AIR_SLASH, PokemonType.FLYING, MoveCategory.SPECIAL, 75, 95, 15, 30, 0, 4) .attr(FlinchAttr) .slicingMove(), - new AttackMove(Moves.X_SCISSOR, Type.BUG, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 4) + new AttackMove(Moves.X_SCISSOR, PokemonType.BUG, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 4) .slicingMove(), - new AttackMove(Moves.BUG_BUZZ, Type.BUG, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) + new AttackMove(Moves.BUG_BUZZ, PokemonType.BUG, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .soundBased(), - new AttackMove(Moves.DRAGON_PULSE, Type.DRAGON, MoveCategory.SPECIAL, 85, 100, 10, -1, 0, 4) + new AttackMove(Moves.DRAGON_PULSE, PokemonType.DRAGON, MoveCategory.SPECIAL, 85, 100, 10, -1, 0, 4) .pulseMove(), - new AttackMove(Moves.DRAGON_RUSH, Type.DRAGON, MoveCategory.PHYSICAL, 100, 75, 10, 20, 0, 4) + new AttackMove(Moves.DRAGON_RUSH, PokemonType.DRAGON, MoveCategory.PHYSICAL, 100, 75, 10, 20, 0, 4) .attr(AlwaysHitMinimizeAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .attr(FlinchAttr), - new AttackMove(Moves.POWER_GEM, Type.ROCK, MoveCategory.SPECIAL, 80, 100, 20, -1, 0, 4), - new AttackMove(Moves.DRAIN_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 4) + new AttackMove(Moves.POWER_GEM, PokemonType.ROCK, MoveCategory.SPECIAL, 80, 100, 20, -1, 0, 4), + new AttackMove(Moves.DRAIN_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 4) .attr(HitHealAttr) .punchingMove() .triageMove(), - new AttackMove(Moves.VACUUM_WAVE, Type.FIGHTING, MoveCategory.SPECIAL, 40, 100, 30, -1, 1, 4), - new AttackMove(Moves.FOCUS_BLAST, Type.FIGHTING, MoveCategory.SPECIAL, 120, 70, 5, 10, 0, 4) + new AttackMove(Moves.VACUUM_WAVE, PokemonType.FIGHTING, MoveCategory.SPECIAL, 40, 100, 30, -1, 1, 4), + new AttackMove(Moves.FOCUS_BLAST, PokemonType.FIGHTING, MoveCategory.SPECIAL, 120, 70, 5, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .ballBombMove(), - new AttackMove(Moves.ENERGY_BALL, Type.GRASS, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) + new AttackMove(Moves.ENERGY_BALL, PokemonType.GRASS, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .ballBombMove(), - new AttackMove(Moves.BRAVE_BIRD, Type.FLYING, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 4) + new AttackMove(Moves.BRAVE_BIRD, PokemonType.FLYING, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 4) .attr(RecoilAttr, false, 0.33) .recklessMove(), - new AttackMove(Moves.EARTH_POWER, Type.GROUND, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) + new AttackMove(Moves.EARTH_POWER, PokemonType.GROUND, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new StatusMove(Moves.SWITCHEROO, Type.DARK, 100, 10, -1, 0, 4) + new StatusMove(Moves.SWITCHEROO, PokemonType.DARK, 100, 10, -1, 0, 4) .unimplemented(), - new AttackMove(Moves.GIGA_IMPACT, Type.NORMAL, MoveCategory.PHYSICAL, 150, 90, 5, -1, 0, 4) + new AttackMove(Moves.GIGA_IMPACT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 150, 90, 5, -1, 0, 4) .attr(RechargeAttr), - new SelfStatusMove(Moves.NASTY_PLOT, Type.DARK, -1, 20, -1, 0, 4) + new SelfStatusMove(Moves.NASTY_PLOT, PokemonType.DARK, -1, 20, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], 2, true), - new AttackMove(Moves.BULLET_PUNCH, Type.STEEL, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4) + new AttackMove(Moves.BULLET_PUNCH, PokemonType.STEEL, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4) .punchingMove(), - new AttackMove(Moves.AVALANCHE, Type.ICE, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 4) + new AttackMove(Moves.AVALANCHE, PokemonType.ICE, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 4) .attr(TurnDamagedDoublePowerAttr), - new AttackMove(Moves.ICE_SHARD, Type.ICE, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4) + new AttackMove(Moves.ICE_SHARD, PokemonType.ICE, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4) .makesContact(false), - new AttackMove(Moves.SHADOW_CLAW, Type.GHOST, MoveCategory.PHYSICAL, 70, 100, 15, -1, 0, 4) + new AttackMove(Moves.SHADOW_CLAW, PokemonType.GHOST, MoveCategory.PHYSICAL, 70, 100, 15, -1, 0, 4) .attr(HighCritAttr), - new AttackMove(Moves.THUNDER_FANG, Type.ELECTRIC, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) + new AttackMove(Moves.THUNDER_FANG, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) .attr(FlinchAttr) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .bitingMove(), - new AttackMove(Moves.ICE_FANG, Type.ICE, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) + new AttackMove(Moves.ICE_FANG, PokemonType.ICE, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) .attr(FlinchAttr) .attr(StatusEffectAttr, StatusEffect.FREEZE) .bitingMove(), - new AttackMove(Moves.FIRE_FANG, Type.FIRE, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) + new AttackMove(Moves.FIRE_FANG, PokemonType.FIRE, MoveCategory.PHYSICAL, 65, 95, 15, 10, 0, 4) .attr(FlinchAttr) .attr(StatusEffectAttr, StatusEffect.BURN) .bitingMove(), - new AttackMove(Moves.SHADOW_SNEAK, Type.GHOST, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4), - new AttackMove(Moves.MUD_BOMB, Type.GROUND, MoveCategory.SPECIAL, 65, 85, 10, 30, 0, 4) + new AttackMove(Moves.SHADOW_SNEAK, PokemonType.GHOST, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 4), + new AttackMove(Moves.MUD_BOMB, PokemonType.GROUND, MoveCategory.SPECIAL, 65, 85, 10, 30, 0, 4) .attr(StatStageChangeAttr, [ Stat.ACC ], -1) .ballBombMove(), - new AttackMove(Moves.PSYCHO_CUT, Type.PSYCHIC, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 4) + new AttackMove(Moves.PSYCHO_CUT, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 4) .attr(HighCritAttr) .slicingMove() .makesContact(false), - new AttackMove(Moves.ZEN_HEADBUTT, Type.PSYCHIC, MoveCategory.PHYSICAL, 80, 90, 15, 20, 0, 4) + new AttackMove(Moves.ZEN_HEADBUTT, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 80, 90, 15, 20, 0, 4) .attr(FlinchAttr), - new AttackMove(Moves.MIRROR_SHOT, Type.STEEL, MoveCategory.SPECIAL, 65, 85, 10, 30, 0, 4) + new AttackMove(Moves.MIRROR_SHOT, PokemonType.STEEL, MoveCategory.SPECIAL, 65, 85, 10, 30, 0, 4) .attr(StatStageChangeAttr, [ Stat.ACC ], -1), - new AttackMove(Moves.FLASH_CANNON, Type.STEEL, MoveCategory.SPECIAL, 80, 100, 10, 10, 0, 4) + new AttackMove(Moves.FLASH_CANNON, PokemonType.STEEL, MoveCategory.SPECIAL, 80, 100, 10, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new AttackMove(Moves.ROCK_CLIMB, Type.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, 20, 0, 4) + new AttackMove(Moves.ROCK_CLIMB, PokemonType.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, 20, 0, 4) .attr(ConfuseAttr), - new StatusMove(Moves.DEFOG, Type.FLYING, -1, 15, -1, 0, 4) + new StatusMove(Moves.DEFOG, PokemonType.FLYING, -1, 15, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.EVA ], -1) .attr(ClearWeatherAttr, WeatherType.FOG) .attr(ClearTerrainAttr) @@ -9880,129 +9511,129 @@ export function initMoves() { .attr(RemoveArenaTrapAttr, true) .attr(RemoveArenaTagsAttr, [ ArenaTagType.MIST, ArenaTagType.SAFEGUARD ], false) .reflectable(), - new StatusMove(Moves.TRICK_ROOM, Type.PSYCHIC, -1, 5, -1, -7, 4) + new StatusMove(Moves.TRICK_ROOM, PokemonType.PSYCHIC, -1, 5, -1, -7, 4) .attr(AddArenaTagAttr, ArenaTagType.TRICK_ROOM, 5) .ignoresProtect() .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.DRACO_METEOR, Type.DRAGON, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 4) + new AttackMove(Moves.DRACO_METEOR, PokemonType.DRAGON, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true), - new AttackMove(Moves.DISCHARGE, Type.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 4) + new AttackMove(Moves.DISCHARGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.LAVA_PLUME, Type.FIRE, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 4) + new AttackMove(Moves.LAVA_PLUME, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.BURN) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.LEAF_STORM, Type.GRASS, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 4) + new AttackMove(Moves.LEAF_STORM, PokemonType.GRASS, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true), - new AttackMove(Moves.POWER_WHIP, Type.GRASS, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 4), - new AttackMove(Moves.ROCK_WRECKER, Type.ROCK, MoveCategory.PHYSICAL, 150, 90, 5, -1, 0, 4) + new AttackMove(Moves.POWER_WHIP, PokemonType.GRASS, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 4), + new AttackMove(Moves.ROCK_WRECKER, PokemonType.ROCK, MoveCategory.PHYSICAL, 150, 90, 5, -1, 0, 4) .attr(RechargeAttr) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.CROSS_POISON, Type.POISON, MoveCategory.PHYSICAL, 70, 100, 20, 10, 0, 4) + new AttackMove(Moves.CROSS_POISON, PokemonType.POISON, MoveCategory.PHYSICAL, 70, 100, 20, 10, 0, 4) .attr(HighCritAttr) .attr(StatusEffectAttr, StatusEffect.POISON) .slicingMove(), - new AttackMove(Moves.GUNK_SHOT, Type.POISON, MoveCategory.PHYSICAL, 120, 80, 5, 30, 0, 4) + new AttackMove(Moves.GUNK_SHOT, PokemonType.POISON, MoveCategory.PHYSICAL, 120, 80, 5, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.POISON) .makesContact(false), - new AttackMove(Moves.IRON_HEAD, Type.STEEL, MoveCategory.PHYSICAL, 80, 100, 15, 30, 0, 4) + new AttackMove(Moves.IRON_HEAD, PokemonType.STEEL, MoveCategory.PHYSICAL, 80, 100, 15, 30, 0, 4) .attr(FlinchAttr), - new AttackMove(Moves.MAGNET_BOMB, Type.STEEL, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 4) + new AttackMove(Moves.MAGNET_BOMB, PokemonType.STEEL, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 4) .makesContact(false) .ballBombMove(), - new AttackMove(Moves.STONE_EDGE, Type.ROCK, MoveCategory.PHYSICAL, 100, 80, 5, -1, 0, 4) + new AttackMove(Moves.STONE_EDGE, PokemonType.ROCK, MoveCategory.PHYSICAL, 100, 80, 5, -1, 0, 4) .attr(HighCritAttr) .makesContact(false), - new StatusMove(Moves.CAPTIVATE, Type.NORMAL, 100, 20, -1, 0, 4) + new StatusMove(Moves.CAPTIVATE, PokemonType.NORMAL, 100, 20, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2) .condition((user, target, move) => target.isOppositeGender(user)) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new StatusMove(Moves.STEALTH_ROCK, Type.ROCK, -1, 20, -1, 0, 4) + new StatusMove(Moves.STEALTH_ROCK, PokemonType.ROCK, -1, 20, -1, 0, 4) .attr(AddArenaTrapTagAttr, ArenaTagType.STEALTH_ROCK) .target(MoveTarget.ENEMY_SIDE) .reflectable(), - new AttackMove(Moves.GRASS_KNOT, Type.GRASS, MoveCategory.SPECIAL, -1, 100, 20, -1, 0, 4) + new AttackMove(Moves.GRASS_KNOT, PokemonType.GRASS, MoveCategory.SPECIAL, -1, 100, 20, -1, 0, 4) .attr(WeightPowerAttr) .makesContact(), - new AttackMove(Moves.CHATTER, Type.FLYING, MoveCategory.SPECIAL, 65, 100, 20, 100, 0, 4) + new AttackMove(Moves.CHATTER, PokemonType.FLYING, MoveCategory.SPECIAL, 65, 100, 20, 100, 0, 4) .attr(ConfuseAttr) .soundBased(), - new AttackMove(Moves.JUDGMENT, Type.NORMAL, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 4) + new AttackMove(Moves.JUDGMENT, PokemonType.NORMAL, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 4) .attr(FormChangeItemTypeAttr), - new AttackMove(Moves.BUG_BITE, Type.BUG, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 4) + new AttackMove(Moves.BUG_BITE, PokemonType.BUG, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 4) .attr(StealEatBerryAttr), - new AttackMove(Moves.CHARGE_BEAM, Type.ELECTRIC, MoveCategory.SPECIAL, 50, 90, 10, 70, 0, 4) + new AttackMove(Moves.CHARGE_BEAM, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 50, 90, 10, 70, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1, true), - new AttackMove(Moves.WOOD_HAMMER, Type.GRASS, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 4) + new AttackMove(Moves.WOOD_HAMMER, PokemonType.GRASS, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 4) .attr(RecoilAttr, false, 0.33) .recklessMove(), - new AttackMove(Moves.AQUA_JET, Type.WATER, MoveCategory.PHYSICAL, 40, 100, 20, -1, 1, 4), - new AttackMove(Moves.ATTACK_ORDER, Type.BUG, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 4) + new AttackMove(Moves.AQUA_JET, PokemonType.WATER, MoveCategory.PHYSICAL, 40, 100, 20, -1, 1, 4), + new AttackMove(Moves.ATTACK_ORDER, PokemonType.BUG, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 4) .attr(HighCritAttr) .makesContact(false), - new SelfStatusMove(Moves.DEFEND_ORDER, Type.BUG, -1, 10, -1, 0, 4) + new SelfStatusMove(Moves.DEFEND_ORDER, PokemonType.BUG, -1, 10, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, true), - new SelfStatusMove(Moves.HEAL_ORDER, Type.BUG, -1, 5, -1, 0, 4) + new SelfStatusMove(Moves.HEAL_ORDER, PokemonType.BUG, -1, 5, -1, 0, 4) .attr(HealAttr, 0.5) .triageMove(), - new AttackMove(Moves.HEAD_SMASH, Type.ROCK, MoveCategory.PHYSICAL, 150, 80, 5, -1, 0, 4) + new AttackMove(Moves.HEAD_SMASH, PokemonType.ROCK, MoveCategory.PHYSICAL, 150, 80, 5, -1, 0, 4) .attr(RecoilAttr, false, 0.5) .recklessMove(), - new AttackMove(Moves.DOUBLE_HIT, Type.NORMAL, MoveCategory.PHYSICAL, 35, 90, 10, -1, 0, 4) + new AttackMove(Moves.DOUBLE_HIT, PokemonType.NORMAL, MoveCategory.PHYSICAL, 35, 90, 10, -1, 0, 4) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.ROAR_OF_TIME, Type.DRAGON, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 4) + new AttackMove(Moves.ROAR_OF_TIME, PokemonType.DRAGON, MoveCategory.SPECIAL, 150, 90, 5, -1, 0, 4) .attr(RechargeAttr), - new AttackMove(Moves.SPACIAL_REND, Type.DRAGON, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 4) + new AttackMove(Moves.SPACIAL_REND, PokemonType.DRAGON, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 4) .attr(HighCritAttr), - new SelfStatusMove(Moves.LUNAR_DANCE, Type.PSYCHIC, -1, 10, -1, 0, 4) + new SelfStatusMove(Moves.LUNAR_DANCE, PokemonType.PSYCHIC, -1, 10, -1, 0, 4) .attr(SacrificialFullRestoreAttr, true, "moveTriggers:lunarDanceRestore") .danceMove() .triageMove() .condition(failIfLastInPartyCondition), - new AttackMove(Moves.CRUSH_GRIP, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) + new AttackMove(Moves.CRUSH_GRIP, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) .attr(OpponentHighHpPowerAttr, 120), - new AttackMove(Moves.MAGMA_STORM, Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4) + new AttackMove(Moves.MAGMA_STORM, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4) .attr(TrapAttr, BattlerTagType.MAGMA_STORM), - new StatusMove(Moves.DARK_VOID, Type.DARK, 80, 10, -1, 0, 4) //Accuracy from Generations 4-6 + new StatusMove(Moves.DARK_VOID, PokemonType.DARK, 80, 10, -1, 0, 4) //Accuracy from Generations 4-6 .attr(StatusEffectAttr, StatusEffect.SLEEP) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new AttackMove(Moves.SEED_FLARE, Type.GRASS, MoveCategory.SPECIAL, 120, 85, 5, 40, 0, 4) + new AttackMove(Moves.SEED_FLARE, PokemonType.GRASS, MoveCategory.SPECIAL, 120, 85, 5, 40, 0, 4) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2), - new AttackMove(Moves.OMINOUS_WIND, Type.GHOST, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 4) + new AttackMove(Moves.OMINOUS_WIND, PokemonType.GHOST, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 4) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true) .windMove(), - new ChargingAttackMove(Moves.SHADOW_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) + new ChargingAttackMove(Moves.SHADOW_FORCE, PokemonType.GHOST, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) .chargeText(i18next.t("moveTriggers:vanishedInstantly", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.HIDDEN) .ignoresProtect(), - new SelfStatusMove(Moves.HONE_CLAWS, Type.DARK, -1, 15, -1, 0, 5) + new SelfStatusMove(Moves.HONE_CLAWS, PokemonType.DARK, -1, 15, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.ACC ], 1, true), - new StatusMove(Moves.WIDE_GUARD, Type.ROCK, -1, 10, -1, 3, 5) + new StatusMove(Moves.WIDE_GUARD, PokemonType.ROCK, -1, 10, -1, 3, 5) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.WIDE_GUARD, 1, true, true) .condition(failIfLastCondition), - new StatusMove(Moves.GUARD_SPLIT, Type.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(Moves.GUARD_SPLIT, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .attr(AverageStatsAttr, [ Stat.DEF, Stat.SPDEF ], "moveTriggers:sharedGuard"), - new StatusMove(Moves.POWER_SPLIT, Type.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(Moves.POWER_SPLIT, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .attr(AverageStatsAttr, [ Stat.ATK, Stat.SPATK ], "moveTriggers:sharedPower"), - new StatusMove(Moves.WONDER_ROOM, Type.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(Moves.WONDER_ROOM, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .ignoresProtect() .target(MoveTarget.BOTH_SIDES) .unimplemented(), - new AttackMove(Moves.PSYSHOCK, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) + new AttackMove(Moves.PSYSHOCK, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) .attr(DefDefAttr), - new AttackMove(Moves.VENOSHOCK, Type.POISON, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) + new AttackMove(Moves.VENOSHOCK, PokemonType.POISON, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) .attr(MovePowerMultiplierAttr, (user, target, move) => target.status && (target.status.effect === StatusEffect.POISON || target.status.effect === StatusEffect.TOXIC) ? 2 : 1), - new SelfStatusMove(Moves.AUTOTOMIZE, Type.STEEL, -1, 15, -1, 0, 5) + new SelfStatusMove(Moves.AUTOTOMIZE, PokemonType.STEEL, -1, 15, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], 2, true) .attr(AddBattlerTagAttr, BattlerTagType.AUTOTOMIZED, true), - new SelfStatusMove(Moves.RAGE_POWDER, Type.BUG, -1, 20, -1, 2, 5) + new SelfStatusMove(Moves.RAGE_POWDER, PokemonType.BUG, -1, 20, -1, 2, 5) .powderMove() .attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, true), - new StatusMove(Moves.TELEKINESIS, Type.PSYCHIC, -1, 15, -1, 0, 5) + new StatusMove(Moves.TELEKINESIS, PokemonType.PSYCHIC, -1, 15, -1, 0, 5) .condition(failOnGravityCondition) .condition((_user, target, _move) => ![ Species.DIGLETT, Species.DUGTRIO, Species.ALOLA_DIGLETT, Species.ALOLA_DUGTRIO, Species.SANDYGAST, Species.PALOSSAND, Species.WIGLETT, Species.WUGTRIO ].includes(target.species.speciesId)) .condition((_user, target, _move) => !(target.species.speciesId === Species.GENGAR && target.getFormKey() === "mega")) @@ -10010,125 +9641,125 @@ export function initMoves() { .attr(AddBattlerTagAttr, BattlerTagType.TELEKINESIS, false, true, 3) .attr(AddBattlerTagAttr, BattlerTagType.FLOATING, false, true, 3) .reflectable(), - new StatusMove(Moves.MAGIC_ROOM, Type.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(Moves.MAGIC_ROOM, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .ignoresProtect() .target(MoveTarget.BOTH_SIDES) .unimplemented(), - new AttackMove(Moves.SMACK_DOWN, Type.ROCK, MoveCategory.PHYSICAL, 50, 100, 15, 100, 0, 5) + new AttackMove(Moves.SMACK_DOWN, PokemonType.ROCK, MoveCategory.PHYSICAL, 50, 100, 15, 100, 0, 5) .attr(AddBattlerTagAttr, BattlerTagType.IGNORE_FLYING, false, false, 1, 1, true) .attr(AddBattlerTagAttr, BattlerTagType.INTERRUPTED) .attr(RemoveBattlerTagAttr, [ BattlerTagType.FLYING, BattlerTagType.FLOATING, BattlerTagType.TELEKINESIS ]) .attr(HitsTagAttr, BattlerTagType.FLYING) .makesContact(false), - new AttackMove(Moves.STORM_THROW, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) + new AttackMove(Moves.STORM_THROW, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) .attr(CritOnlyAttr), - new AttackMove(Moves.FLAME_BURST, Type.FIRE, MoveCategory.SPECIAL, 70, 100, 15, -1, 0, 5) + new AttackMove(Moves.FLAME_BURST, PokemonType.FIRE, MoveCategory.SPECIAL, 70, 100, 15, -1, 0, 5) .attr(FlameBurstAttr), - new AttackMove(Moves.SLUDGE_WAVE, Type.POISON, MoveCategory.SPECIAL, 95, 100, 10, 10, 0, 5) + new AttackMove(Moves.SLUDGE_WAVE, PokemonType.POISON, MoveCategory.SPECIAL, 95, 100, 10, 10, 0, 5) .attr(StatusEffectAttr, StatusEffect.POISON) .target(MoveTarget.ALL_NEAR_OTHERS), - new SelfStatusMove(Moves.QUIVER_DANCE, Type.BUG, -1, 20, -1, 0, 5) + new SelfStatusMove(Moves.QUIVER_DANCE, PokemonType.BUG, -1, 20, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true) .danceMove(), - new AttackMove(Moves.HEAVY_SLAM, Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 5) + new AttackMove(Moves.HEAVY_SLAM, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 5) .attr(AlwaysHitMinimizeAttr) .attr(CompareWeightPowerAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED), - new AttackMove(Moves.SYNCHRONOISE, Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 5) + new AttackMove(Moves.SYNCHRONOISE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 5) .target(MoveTarget.ALL_NEAR_OTHERS) .condition(unknownTypeCondition) .attr(hitsSameTypeAttr), - new AttackMove(Moves.ELECTRO_BALL, Type.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 5) + new AttackMove(Moves.ELECTRO_BALL, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 5) .attr(ElectroBallPowerAttr) .ballBombMove(), - new StatusMove(Moves.SOAK, Type.WATER, 100, 20, -1, 0, 5) - .attr(ChangeTypeAttr, Type.WATER) + new StatusMove(Moves.SOAK, PokemonType.WATER, 100, 20, -1, 0, 5) + .attr(ChangeTypeAttr, PokemonType.WATER) .reflectable(), - new AttackMove(Moves.FLAME_CHARGE, Type.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 5) + new AttackMove(Moves.FLAME_CHARGE, PokemonType.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true), - new SelfStatusMove(Moves.COIL, Type.POISON, -1, 20, -1, 0, 5) + new SelfStatusMove(Moves.COIL, PokemonType.POISON, -1, 20, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.ACC ], 1, true), - new AttackMove(Moves.LOW_SWEEP, Type.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 20, 100, 0, 5) + new AttackMove(Moves.LOW_SWEEP, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new AttackMove(Moves.ACID_SPRAY, Type.POISON, MoveCategory.SPECIAL, 40, 100, 20, 100, 0, 5) + new AttackMove(Moves.ACID_SPRAY, PokemonType.POISON, MoveCategory.SPECIAL, 40, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2) .ballBombMove(), - new AttackMove(Moves.FOUL_PLAY, Type.DARK, MoveCategory.PHYSICAL, 95, 100, 15, -1, 0, 5) + new AttackMove(Moves.FOUL_PLAY, PokemonType.DARK, MoveCategory.PHYSICAL, 95, 100, 15, -1, 0, 5) .attr(TargetAtkUserAtkAttr), - new StatusMove(Moves.SIMPLE_BEAM, Type.NORMAL, 100, 15, -1, 0, 5) + new StatusMove(Moves.SIMPLE_BEAM, PokemonType.NORMAL, 100, 15, -1, 0, 5) .attr(AbilityChangeAttr, Abilities.SIMPLE) .reflectable(), - new StatusMove(Moves.ENTRAINMENT, Type.NORMAL, 100, 15, -1, 0, 5) + new StatusMove(Moves.ENTRAINMENT, PokemonType.NORMAL, 100, 15, -1, 0, 5) .attr(AbilityGiveAttr) .reflectable(), - new StatusMove(Moves.AFTER_YOU, Type.NORMAL, -1, 15, -1, 0, 5) + new StatusMove(Moves.AFTER_YOU, PokemonType.NORMAL, -1, 15, -1, 0, 5) .ignoresProtect() .ignoresSubstitute() .target(MoveTarget.NEAR_OTHER) .condition(failIfSingleBattle) .condition((user, target, move) => !target.turnData.acted) .attr(AfterYouAttr), - new AttackMove(Moves.ROUND, Type.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 5) + new AttackMove(Moves.ROUND, PokemonType.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 5) .attr(CueNextRoundAttr) .attr(RoundPowerAttr) .soundBased(), - new AttackMove(Moves.ECHOED_VOICE, Type.NORMAL, MoveCategory.SPECIAL, 40, 100, 15, -1, 0, 5) + new AttackMove(Moves.ECHOED_VOICE, PokemonType.NORMAL, MoveCategory.SPECIAL, 40, 100, 15, -1, 0, 5) .attr(ConsecutiveUseMultiBasePowerAttr, 5, false) .soundBased(), - new AttackMove(Moves.CHIP_AWAY, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 5) + new AttackMove(Moves.CHIP_AWAY, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 5) .attr(IgnoreOpponentStatStagesAttr), - new AttackMove(Moves.CLEAR_SMOG, Type.POISON, MoveCategory.SPECIAL, 50, -1, 15, -1, 0, 5) + new AttackMove(Moves.CLEAR_SMOG, PokemonType.POISON, MoveCategory.SPECIAL, 50, -1, 15, -1, 0, 5) .attr(ResetStatsAttr, false), - new AttackMove(Moves.STORED_POWER, Type.PSYCHIC, MoveCategory.SPECIAL, 20, 100, 10, -1, 0, 5) + new AttackMove(Moves.STORED_POWER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 20, 100, 10, -1, 0, 5) .attr(PositiveStatStagePowerAttr), - new StatusMove(Moves.QUICK_GUARD, Type.FIGHTING, -1, 15, -1, 3, 5) + new StatusMove(Moves.QUICK_GUARD, PokemonType.FIGHTING, -1, 15, -1, 3, 5) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.QUICK_GUARD, 1, true, true) .condition(failIfLastCondition), - new SelfStatusMove(Moves.ALLY_SWITCH, Type.PSYCHIC, -1, 15, -1, 2, 5) + new SelfStatusMove(Moves.ALLY_SWITCH, PokemonType.PSYCHIC, -1, 15, -1, 2, 5) .ignoresProtect() .unimplemented(), - new AttackMove(Moves.SCALD, Type.WATER, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 5) + new AttackMove(Moves.SCALD, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 15, 30, 0, 5) .attr(HealStatusEffectAttr, false, StatusEffect.FREEZE) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN), - new SelfStatusMove(Moves.SHELL_SMASH, Type.NORMAL, -1, 15, -1, 0, 5) + new SelfStatusMove(Moves.SHELL_SMASH, PokemonType.NORMAL, -1, 15, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK, Stat.SPD ], 2, true) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), - new StatusMove(Moves.HEAL_PULSE, Type.PSYCHIC, -1, 10, -1, 0, 5) + new StatusMove(Moves.HEAL_PULSE, PokemonType.PSYCHIC, -1, 10, -1, 0, 5) .attr(HealAttr, 0.5, false, false) .pulseMove() .triageMove() .reflectable(), - new AttackMove(Moves.HEX, Type.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) + new AttackMove(Moves.HEX, PokemonType.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) .attr( MovePowerMultiplierAttr, (user, target, move) => target.status || target.hasAbility(Abilities.COMATOSE) ? 2 : 1), - new ChargingAttackMove(Moves.SKY_DROP, Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) + new ChargingAttackMove(Moves.SKY_DROP, PokemonType.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) .chargeText(i18next.t("moveTriggers:tookTargetIntoSky", { pokemonName: "{USER}", targetName: "{TARGET}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) .condition(failOnGravityCondition) .condition((user, target, move) => !target.getTag(BattlerTagType.SUBSTITUTE)) .partial(), // Should immobilize the target, Flying types should take no damage. cf https://bulbapedia.bulbagarden.net/wiki/Sky_Drop_(move) and https://www.smogon.com/dex/sv/moves/sky-drop/ - new SelfStatusMove(Moves.SHIFT_GEAR, Type.STEEL, -1, 10, -1, 0, 5) + new SelfStatusMove(Moves.SHIFT_GEAR, PokemonType.STEEL, -1, 10, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true) .attr(StatStageChangeAttr, [ Stat.SPD ], 2, true), - new AttackMove(Moves.CIRCLE_THROW, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) + new AttackMove(Moves.CIRCLE_THROW, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .hidesTarget(), - new AttackMove(Moves.INCINERATE, Type.FIRE, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 5) + new AttackMove(Moves.INCINERATE, PokemonType.FIRE, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 5) .target(MoveTarget.ALL_NEAR_ENEMIES) .attr(RemoveHeldItemAttr, true), - new StatusMove(Moves.QUASH, Type.DARK, 100, 15, -1, 0, 5) + new StatusMove(Moves.QUASH, PokemonType.DARK, 100, 15, -1, 0, 5) .condition(failIfSingleBattle) .condition((user, target, move) => !target.turnData.acted) .attr(ForceLastAttr), - new AttackMove(Moves.ACROBATICS, Type.FLYING, MoveCategory.PHYSICAL, 55, 100, 15, -1, 0, 5) + new AttackMove(Moves.ACROBATICS, PokemonType.FLYING, MoveCategory.PHYSICAL, 55, 100, 15, -1, 0, 5) .attr(MovePowerMultiplierAttr, (user, target, move) => Math.max(1, 2 - 0.2 * user.getHeldItems().filter(i => i.isTransferable).reduce((v, m) => v + m.stackCount, 0))), - new StatusMove(Moves.REFLECT_TYPE, Type.NORMAL, -1, 15, -1, 0, 5) + new StatusMove(Moves.REFLECT_TYPE, PokemonType.NORMAL, -1, 15, -1, 0, 5) .ignoresSubstitute() .attr(CopyTypeAttr), - new AttackMove(Moves.RETALIATE, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 5, -1, 0, 5) + new AttackMove(Moves.RETALIATE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 70, 100, 5, -1, 0, 5) .attr(MovePowerMultiplierAttr, (user, target, move) => { const turn = globalScene.currentBattle.turn; const lastPlayerFaint = globalScene.currentBattle.playerFaintsHistory[globalScene.currentBattle.playerFaintsHistory.length - 1]; @@ -10138,16 +9769,16 @@ export function initMoves() { (lastEnemyFaint !== undefined && turn - lastEnemyFaint.turn === 1 && !user.isPlayer()) ) ? 2 : 1; }), - new AttackMove(Moves.FINAL_GAMBIT, Type.FIGHTING, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 5) + new AttackMove(Moves.FINAL_GAMBIT, PokemonType.FIGHTING, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 5) .attr(UserHpDamageAttr) .attr(SacrificialAttrOnHit), - new StatusMove(Moves.BESTOW, Type.NORMAL, -1, 15, -1, 0, 5) + new StatusMove(Moves.BESTOW, PokemonType.NORMAL, -1, 15, -1, 0, 5) .ignoresProtect() .ignoresSubstitute() .unimplemented(), - new AttackMove(Moves.INFERNO, Type.FIRE, MoveCategory.SPECIAL, 100, 50, 5, 100, 0, 5) + new AttackMove(Moves.INFERNO, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 50, 5, 100, 0, 5) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.WATER_PLEDGE, Type.WATER, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) + new AttackMove(Moves.WATER_PLEDGE, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) .attr(AwaitCombinedPledgeAttr) .attr(CombinedPledgeTypeAttr) .attr(CombinedPledgePowerAttr) @@ -10155,7 +9786,7 @@ export function initMoves() { .attr(AddPledgeEffectAttr, ArenaTagType.WATER_FIRE_PLEDGE, Moves.FIRE_PLEDGE, true) .attr(AddPledgeEffectAttr, ArenaTagType.GRASS_WATER_PLEDGE, Moves.GRASS_PLEDGE) .attr(BypassRedirectAttr, true), - new AttackMove(Moves.FIRE_PLEDGE, Type.FIRE, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) + new AttackMove(Moves.FIRE_PLEDGE, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) .attr(AwaitCombinedPledgeAttr) .attr(CombinedPledgeTypeAttr) .attr(CombinedPledgePowerAttr) @@ -10163,7 +9794,7 @@ export function initMoves() { .attr(AddPledgeEffectAttr, ArenaTagType.FIRE_GRASS_PLEDGE, Moves.GRASS_PLEDGE) .attr(AddPledgeEffectAttr, ArenaTagType.WATER_FIRE_PLEDGE, Moves.WATER_PLEDGE, true) .attr(BypassRedirectAttr, true), - new AttackMove(Moves.GRASS_PLEDGE, Type.GRASS, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) + new AttackMove(Moves.GRASS_PLEDGE, PokemonType.GRASS, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) .attr(AwaitCombinedPledgeAttr) .attr(CombinedPledgeTypeAttr) .attr(CombinedPledgePowerAttr) @@ -10171,300 +9802,300 @@ export function initMoves() { .attr(AddPledgeEffectAttr, ArenaTagType.GRASS_WATER_PLEDGE, Moves.WATER_PLEDGE) .attr(AddPledgeEffectAttr, ArenaTagType.FIRE_GRASS_PLEDGE, Moves.FIRE_PLEDGE) .attr(BypassRedirectAttr, true), - new AttackMove(Moves.VOLT_SWITCH, Type.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 5) + new AttackMove(Moves.VOLT_SWITCH, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 5) .attr(ForceSwitchOutAttr, true), - new AttackMove(Moves.STRUGGLE_BUG, Type.BUG, MoveCategory.SPECIAL, 50, 100, 20, 100, 0, 5) + new AttackMove(Moves.STRUGGLE_BUG, PokemonType.BUG, MoveCategory.SPECIAL, 50, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.BULLDOZE, Type.GROUND, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 5) + new AttackMove(Moves.BULLDOZE, PokemonType.GROUND, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.FROST_BREATH, Type.ICE, MoveCategory.SPECIAL, 60, 90, 10, 100, 0, 5) + new AttackMove(Moves.FROST_BREATH, PokemonType.ICE, MoveCategory.SPECIAL, 60, 90, 10, 100, 0, 5) .attr(CritOnlyAttr), - new AttackMove(Moves.DRAGON_TAIL, Type.DRAGON, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) + new AttackMove(Moves.DRAGON_TAIL, PokemonType.DRAGON, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .hidesTarget(), - new SelfStatusMove(Moves.WORK_UP, Type.NORMAL, -1, 30, -1, 0, 5) + new SelfStatusMove(Moves.WORK_UP, PokemonType.NORMAL, -1, 30, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, true), - new AttackMove(Moves.ELECTROWEB, Type.ELECTRIC, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) + new AttackMove(Moves.ELECTROWEB, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.WILD_CHARGE, Type.ELECTRIC, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 5) + new AttackMove(Moves.WILD_CHARGE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 5) .attr(RecoilAttr) .recklessMove(), - new AttackMove(Moves.DRILL_RUN, Type.GROUND, MoveCategory.PHYSICAL, 80, 95, 10, -1, 0, 5) + new AttackMove(Moves.DRILL_RUN, PokemonType.GROUND, MoveCategory.PHYSICAL, 80, 95, 10, -1, 0, 5) .attr(HighCritAttr), - new AttackMove(Moves.DUAL_CHOP, Type.DRAGON, MoveCategory.PHYSICAL, 40, 90, 15, -1, 0, 5) + new AttackMove(Moves.DUAL_CHOP, PokemonType.DRAGON, MoveCategory.PHYSICAL, 40, 90, 15, -1, 0, 5) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.HEART_STAMP, Type.PSYCHIC, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 5) + new AttackMove(Moves.HEART_STAMP, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 5) .attr(FlinchAttr), - new AttackMove(Moves.HORN_LEECH, Type.GRASS, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 5) + new AttackMove(Moves.HORN_LEECH, PokemonType.GRASS, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 5) .attr(HitHealAttr) .triageMove(), - new AttackMove(Moves.SACRED_SWORD, Type.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 5) + new AttackMove(Moves.SACRED_SWORD, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 5) .attr(IgnoreOpponentStatStagesAttr) .slicingMove(), - new AttackMove(Moves.RAZOR_SHELL, Type.WATER, MoveCategory.PHYSICAL, 75, 95, 10, 50, 0, 5) + new AttackMove(Moves.RAZOR_SHELL, PokemonType.WATER, MoveCategory.PHYSICAL, 75, 95, 10, 50, 0, 5) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .slicingMove(), - new AttackMove(Moves.HEAT_CRASH, Type.FIRE, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 5) + new AttackMove(Moves.HEAT_CRASH, PokemonType.FIRE, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 5) .attr(AlwaysHitMinimizeAttr) .attr(CompareWeightPowerAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED), - new AttackMove(Moves.LEAF_TORNADO, Type.GRASS, MoveCategory.SPECIAL, 65, 90, 10, 50, 0, 5) + new AttackMove(Moves.LEAF_TORNADO, PokemonType.GRASS, MoveCategory.SPECIAL, 65, 90, 10, 50, 0, 5) .attr(StatStageChangeAttr, [ Stat.ACC ], -1), - new AttackMove(Moves.STEAMROLLER, Type.BUG, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 5) + new AttackMove(Moves.STEAMROLLER, PokemonType.BUG, MoveCategory.PHYSICAL, 65, 100, 20, 30, 0, 5) .attr(AlwaysHitMinimizeAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .attr(FlinchAttr), - new SelfStatusMove(Moves.COTTON_GUARD, Type.GRASS, -1, 10, -1, 0, 5) + new SelfStatusMove(Moves.COTTON_GUARD, PokemonType.GRASS, -1, 10, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.DEF ], 3, true), - new AttackMove(Moves.NIGHT_DAZE, Type.DARK, MoveCategory.SPECIAL, 85, 95, 10, 40, 0, 5) + new AttackMove(Moves.NIGHT_DAZE, PokemonType.DARK, MoveCategory.SPECIAL, 85, 95, 10, 40, 0, 5) .attr(StatStageChangeAttr, [ Stat.ACC ], -1), - new AttackMove(Moves.PSYSTRIKE, Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 5) + new AttackMove(Moves.PSYSTRIKE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 5) .attr(DefDefAttr), - new AttackMove(Moves.TAIL_SLAP, Type.NORMAL, MoveCategory.PHYSICAL, 25, 85, 10, -1, 0, 5) + new AttackMove(Moves.TAIL_SLAP, PokemonType.NORMAL, MoveCategory.PHYSICAL, 25, 85, 10, -1, 0, 5) .attr(MultiHitAttr), - new AttackMove(Moves.HURRICANE, Type.FLYING, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 5) + new AttackMove(Moves.HURRICANE, PokemonType.FLYING, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 5) .attr(ThunderAccuracyAttr) .attr(ConfuseAttr) .attr(HitsTagAttr, BattlerTagType.FLYING) .windMove(), - new AttackMove(Moves.HEAD_CHARGE, Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 5) + new AttackMove(Moves.HEAD_CHARGE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, 0, 5) .attr(RecoilAttr) .recklessMove(), - new AttackMove(Moves.GEAR_GRIND, Type.STEEL, MoveCategory.PHYSICAL, 50, 85, 15, -1, 0, 5) + new AttackMove(Moves.GEAR_GRIND, PokemonType.STEEL, MoveCategory.PHYSICAL, 50, 85, 15, -1, 0, 5) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.SEARING_SHOT, Type.FIRE, MoveCategory.SPECIAL, 100, 100, 5, 30, 0, 5) + new AttackMove(Moves.SEARING_SHOT, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 100, 5, 30, 0, 5) .attr(StatusEffectAttr, StatusEffect.BURN) .ballBombMove() .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.TECHNO_BLAST, Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 5) + new AttackMove(Moves.TECHNO_BLAST, PokemonType.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 5) .attr(TechnoBlastTypeAttr), - new AttackMove(Moves.RELIC_SONG, Type.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, 10, 0, 5) + new AttackMove(Moves.RELIC_SONG, PokemonType.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, 10, 0, 5) .attr(StatusEffectAttr, StatusEffect.SLEEP) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.SECRET_SWORD, Type.FIGHTING, MoveCategory.SPECIAL, 85, 100, 10, -1, 0, 5) + new AttackMove(Moves.SECRET_SWORD, PokemonType.FIGHTING, MoveCategory.SPECIAL, 85, 100, 10, -1, 0, 5) .attr(DefDefAttr) .slicingMove(), - new AttackMove(Moves.GLACIATE, Type.ICE, MoveCategory.SPECIAL, 65, 95, 10, 100, 0, 5) + new AttackMove(Moves.GLACIATE, PokemonType.ICE, MoveCategory.SPECIAL, 65, 95, 10, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.BOLT_STRIKE, Type.ELECTRIC, MoveCategory.PHYSICAL, 130, 85, 5, 20, 0, 5) + new AttackMove(Moves.BOLT_STRIKE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 130, 85, 5, 20, 0, 5) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.BLUE_FLARE, Type.FIRE, MoveCategory.SPECIAL, 130, 85, 5, 20, 0, 5) + new AttackMove(Moves.BLUE_FLARE, PokemonType.FIRE, MoveCategory.SPECIAL, 130, 85, 5, 20, 0, 5) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.FIERY_DANCE, Type.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 50, 0, 5) + new AttackMove(Moves.FIERY_DANCE, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 50, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1, true) .danceMove(), - new ChargingAttackMove(Moves.FREEZE_SHOCK, Type.ICE, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 5) + new ChargingAttackMove(Moves.FREEZE_SHOCK, PokemonType.ICE, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 5) .chargeText(i18next.t("moveTriggers:becameCloakedInFreezingLight", { pokemonName: "{USER}" })) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .makesContact(false), - new ChargingAttackMove(Moves.ICE_BURN, Type.ICE, MoveCategory.SPECIAL, 140, 90, 5, 30, 0, 5) + new ChargingAttackMove(Moves.ICE_BURN, PokemonType.ICE, MoveCategory.SPECIAL, 140, 90, 5, 30, 0, 5) .chargeText(i18next.t("moveTriggers:becameCloakedInFreezingAir", { pokemonName: "{USER}" })) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.SNARL, Type.DARK, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) + new AttackMove(Moves.SNARL, PokemonType.DARK, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.ICICLE_CRASH, Type.ICE, MoveCategory.PHYSICAL, 85, 90, 10, 30, 0, 5) + new AttackMove(Moves.ICICLE_CRASH, PokemonType.ICE, MoveCategory.PHYSICAL, 85, 90, 10, 30, 0, 5) .attr(FlinchAttr) .makesContact(false), - new AttackMove(Moves.V_CREATE, Type.FIRE, MoveCategory.PHYSICAL, 180, 95, 5, -1, 0, 5) + new AttackMove(Moves.V_CREATE, PokemonType.FIRE, MoveCategory.PHYSICAL, 180, 95, 5, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF, Stat.SPD ], -1, true), - new AttackMove(Moves.FUSION_FLARE, Type.FIRE, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 5) + new AttackMove(Moves.FUSION_FLARE, PokemonType.FIRE, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 5) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(LastMoveDoublePowerAttr, Moves.FUSION_BOLT), - new AttackMove(Moves.FUSION_BOLT, Type.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 5) + new AttackMove(Moves.FUSION_BOLT, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 5) .attr(LastMoveDoublePowerAttr, Moves.FUSION_FLARE) .makesContact(false), - new AttackMove(Moves.FLYING_PRESS, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, 0, 6) + new AttackMove(Moves.FLYING_PRESS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, 0, 6) .attr(AlwaysHitMinimizeAttr) .attr(FlyingTypeMultiplierAttr) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.MINIMIZED) .condition(failOnGravityCondition), - new StatusMove(Moves.MAT_BLOCK, Type.FIGHTING, -1, 10, -1, 0, 6) + new StatusMove(Moves.MAT_BLOCK, PokemonType.FIGHTING, -1, 10, -1, 0, 6) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.MAT_BLOCK, 1, true, true) .condition(new FirstMoveCondition()) .condition(failIfLastCondition), - new AttackMove(Moves.BELCH, Type.POISON, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 6) + new AttackMove(Moves.BELCH, PokemonType.POISON, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 6) .condition((user, target, move) => user.battleData.berriesEaten.length > 0), - new StatusMove(Moves.ROTOTILLER, Type.GROUND, -1, 10, -1, 0, 6) + new StatusMove(Moves.ROTOTILLER, PokemonType.GROUND, -1, 10, -1, 0, 6) .target(MoveTarget.ALL) .condition((user, target, move) => { // If any fielded pokémon is grass-type and grounded. - return [ ...globalScene.getEnemyParty(), ...globalScene.getPlayerParty() ].some((poke) => poke.isOfType(Type.GRASS) && poke.isGrounded()); + return [ ...globalScene.getEnemyParty(), ...globalScene.getPlayerParty() ].some((poke) => poke.isOfType(PokemonType.GRASS) && poke.isGrounded()); }) - .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, false, { condition: (user, target, move) => target.isOfType(Type.GRASS) && target.isGrounded() }), - new StatusMove(Moves.STICKY_WEB, Type.BUG, -1, 20, -1, 0, 6) + .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, false, { condition: (user, target, move) => target.isOfType(PokemonType.GRASS) && target.isGrounded() }), + new StatusMove(Moves.STICKY_WEB, PokemonType.BUG, -1, 20, -1, 0, 6) .attr(AddArenaTrapTagAttr, ArenaTagType.STICKY_WEB) .target(MoveTarget.ENEMY_SIDE) .reflectable(), - new AttackMove(Moves.FELL_STINGER, Type.BUG, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 6) + new AttackMove(Moves.FELL_STINGER, PokemonType.BUG, MoveCategory.PHYSICAL, 50, 100, 25, -1, 0, 6) .attr(PostVictoryStatStageChangeAttr, [ Stat.ATK ], 3, true ), - new ChargingAttackMove(Moves.PHANTOM_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) + new ChargingAttackMove(Moves.PHANTOM_FORCE, PokemonType.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) .chargeText(i18next.t("moveTriggers:vanishedInstantly", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.HIDDEN) .ignoresProtect(), - new StatusMove(Moves.TRICK_OR_TREAT, Type.GHOST, 100, 20, -1, 0, 6) - .attr(AddTypeAttr, Type.GHOST) + new StatusMove(Moves.TRICK_OR_TREAT, PokemonType.GHOST, 100, 20, -1, 0, 6) + .attr(AddTypeAttr, PokemonType.GHOST) .reflectable(), - new StatusMove(Moves.NOBLE_ROAR, Type.NORMAL, 100, 30, -1, 0, 6) + new StatusMove(Moves.NOBLE_ROAR, PokemonType.NORMAL, 100, 30, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1) .soundBased() .reflectable(), - new StatusMove(Moves.ION_DELUGE, Type.ELECTRIC, -1, 25, -1, 1, 6) + new StatusMove(Moves.ION_DELUGE, PokemonType.ELECTRIC, -1, 25, -1, 1, 6) .attr(AddArenaTagAttr, ArenaTagType.ION_DELUGE) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.PARABOLIC_CHARGE, Type.ELECTRIC, MoveCategory.SPECIAL, 65, 100, 20, -1, 0, 6) + new AttackMove(Moves.PARABOLIC_CHARGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 65, 100, 20, -1, 0, 6) .attr(HitHealAttr) .target(MoveTarget.ALL_NEAR_OTHERS) .triageMove(), - new StatusMove(Moves.FORESTS_CURSE, Type.GRASS, 100, 20, -1, 0, 6) - .attr(AddTypeAttr, Type.GRASS) + new StatusMove(Moves.FORESTS_CURSE, PokemonType.GRASS, 100, 20, -1, 0, 6) + .attr(AddTypeAttr, PokemonType.GRASS) .reflectable(), - new AttackMove(Moves.PETAL_BLIZZARD, Type.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 6) + new AttackMove(Moves.PETAL_BLIZZARD, PokemonType.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 6) .windMove() .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.FREEZE_DRY, Type.ICE, MoveCategory.SPECIAL, 70, 100, 20, 10, 0, 6) + new AttackMove(Moves.FREEZE_DRY, PokemonType.ICE, MoveCategory.SPECIAL, 70, 100, 20, 10, 0, 6) .attr(StatusEffectAttr, StatusEffect.FREEZE) .attr(FreezeDryAttr), - new AttackMove(Moves.DISARMING_VOICE, Type.FAIRY, MoveCategory.SPECIAL, 40, -1, 15, -1, 0, 6) + new AttackMove(Moves.DISARMING_VOICE, PokemonType.FAIRY, MoveCategory.SPECIAL, 40, -1, 15, -1, 0, 6) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.PARTING_SHOT, Type.DARK, 100, 20, -1, 0, 6) + new StatusMove(Moves.PARTING_SHOT, PokemonType.DARK, 100, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, false, { trigger: MoveEffectTrigger.PRE_APPLY }) .attr(ForceSwitchOutAttr, true) .soundBased() .reflectable(), - new StatusMove(Moves.TOPSY_TURVY, Type.DARK, -1, 20, -1, 0, 6) + new StatusMove(Moves.TOPSY_TURVY, PokemonType.DARK, -1, 20, -1, 0, 6) .attr(InvertStatsAttr) .reflectable(), - new AttackMove(Moves.DRAINING_KISS, Type.FAIRY, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 6) + new AttackMove(Moves.DRAINING_KISS, PokemonType.FAIRY, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 6) .attr(HitHealAttr, 0.75) .makesContact() .triageMove(), - new StatusMove(Moves.CRAFTY_SHIELD, Type.FAIRY, -1, 10, -1, 3, 6) + new StatusMove(Moves.CRAFTY_SHIELD, PokemonType.FAIRY, -1, 10, -1, 3, 6) .target(MoveTarget.USER_SIDE) .attr(AddArenaTagAttr, ArenaTagType.CRAFTY_SHIELD, 1, true, true) .condition(failIfLastCondition), - new StatusMove(Moves.FLOWER_SHIELD, Type.FAIRY, -1, 10, -1, 0, 6) + new StatusMove(Moves.FLOWER_SHIELD, PokemonType.FAIRY, -1, 10, -1, 0, 6) .target(MoveTarget.ALL) - .attr(StatStageChangeAttr, [ Stat.DEF ], 1, false, { condition: (user, target, move) => target.getTypes().includes(Type.GRASS) && !target.getTag(SemiInvulnerableTag) }), - new StatusMove(Moves.GRASSY_TERRAIN, Type.GRASS, -1, 10, -1, 0, 6) + .attr(StatStageChangeAttr, [ Stat.DEF ], 1, false, { condition: (user, target, move) => target.getTypes().includes(PokemonType.GRASS) && !target.getTag(SemiInvulnerableTag) }), + new StatusMove(Moves.GRASSY_TERRAIN, PokemonType.GRASS, -1, 10, -1, 0, 6) .attr(TerrainChangeAttr, TerrainType.GRASSY) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.MISTY_TERRAIN, Type.FAIRY, -1, 10, -1, 0, 6) + new StatusMove(Moves.MISTY_TERRAIN, PokemonType.FAIRY, -1, 10, -1, 0, 6) .attr(TerrainChangeAttr, TerrainType.MISTY) .target(MoveTarget.BOTH_SIDES), - new StatusMove(Moves.ELECTRIFY, Type.ELECTRIC, -1, 20, -1, 0, 6) + new StatusMove(Moves.ELECTRIFY, PokemonType.ELECTRIC, -1, 20, -1, 0, 6) .attr(AddBattlerTagAttr, BattlerTagType.ELECTRIFIED, false, true), - new AttackMove(Moves.PLAY_ROUGH, Type.FAIRY, MoveCategory.PHYSICAL, 90, 90, 10, 10, 0, 6) + new AttackMove(Moves.PLAY_ROUGH, PokemonType.FAIRY, MoveCategory.PHYSICAL, 90, 90, 10, 10, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.FAIRY_WIND, Type.FAIRY, MoveCategory.SPECIAL, 40, 100, 30, -1, 0, 6) + new AttackMove(Moves.FAIRY_WIND, PokemonType.FAIRY, MoveCategory.SPECIAL, 40, 100, 30, -1, 0, 6) .windMove(), - new AttackMove(Moves.MOONBLAST, Type.FAIRY, MoveCategory.SPECIAL, 95, 100, 15, 30, 0, 6) + new AttackMove(Moves.MOONBLAST, PokemonType.FAIRY, MoveCategory.SPECIAL, 95, 100, 15, 30, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), - new AttackMove(Moves.BOOMBURST, Type.NORMAL, MoveCategory.SPECIAL, 140, 100, 10, -1, 0, 6) + new AttackMove(Moves.BOOMBURST, PokemonType.NORMAL, MoveCategory.SPECIAL, 140, 100, 10, -1, 0, 6) .soundBased() .target(MoveTarget.ALL_NEAR_OTHERS), - new StatusMove(Moves.FAIRY_LOCK, Type.FAIRY, -1, 10, -1, 0, 6) + new StatusMove(Moves.FAIRY_LOCK, PokemonType.FAIRY, -1, 10, -1, 0, 6) .ignoresSubstitute() .ignoresProtect() .target(MoveTarget.BOTH_SIDES) .attr(AddArenaTagAttr, ArenaTagType.FAIRY_LOCK, 2, true), - new SelfStatusMove(Moves.KINGS_SHIELD, Type.STEEL, -1, 10, -1, 4, 6) + new SelfStatusMove(Moves.KINGS_SHIELD, PokemonType.STEEL, -1, 10, -1, 4, 6) .attr(ProtectAttr, BattlerTagType.KINGS_SHIELD) .condition(failIfLastCondition), - new StatusMove(Moves.PLAY_NICE, Type.NORMAL, -1, 20, -1, 0, 6) + new StatusMove(Moves.PLAY_NICE, PokemonType.NORMAL, -1, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .ignoresSubstitute() .reflectable(), - new StatusMove(Moves.CONFIDE, Type.NORMAL, -1, 20, -1, 0, 6) + new StatusMove(Moves.CONFIDE, PokemonType.NORMAL, -1, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .soundBased() .reflectable(), - new AttackMove(Moves.DIAMOND_STORM, Type.ROCK, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 6) + new AttackMove(Moves.DIAMOND_STORM, PokemonType.ROCK, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 6) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true, { firstTargetOnly: true }) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.STEAM_ERUPTION, Type.WATER, MoveCategory.SPECIAL, 110, 95, 5, 30, 0, 6) + new AttackMove(Moves.STEAM_ERUPTION, PokemonType.WATER, MoveCategory.SPECIAL, 110, 95, 5, 30, 0, 6) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(HealStatusEffectAttr, false, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.HYPERSPACE_HOLE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, -1, 5, -1, 0, 6) + new AttackMove(Moves.HYPERSPACE_HOLE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, -1, 5, -1, 0, 6) .ignoresProtect() .ignoresSubstitute(), - new AttackMove(Moves.WATER_SHURIKEN, Type.WATER, MoveCategory.SPECIAL, 15, 100, 20, -1, 1, 6) + new AttackMove(Moves.WATER_SHURIKEN, PokemonType.WATER, MoveCategory.SPECIAL, 15, 100, 20, -1, 1, 6) .attr(MultiHitAttr) .attr(WaterShurikenPowerAttr) .attr(WaterShurikenMultiHitTypeAttr), - new AttackMove(Moves.MYSTICAL_FIRE, Type.FIRE, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 6) + new AttackMove(Moves.MYSTICAL_FIRE, PokemonType.FIRE, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), - new SelfStatusMove(Moves.SPIKY_SHIELD, Type.GRASS, -1, 10, -1, 4, 6) + new SelfStatusMove(Moves.SPIKY_SHIELD, PokemonType.GRASS, -1, 10, -1, 4, 6) .attr(ProtectAttr, BattlerTagType.SPIKY_SHIELD) .condition(failIfLastCondition), - new StatusMove(Moves.AROMATIC_MIST, Type.FAIRY, -1, 20, -1, 0, 6) + new StatusMove(Moves.AROMATIC_MIST, PokemonType.FAIRY, -1, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPDEF ], 1) .ignoresSubstitute() .condition(failIfSingleBattle) .target(MoveTarget.NEAR_ALLY), - new StatusMove(Moves.EERIE_IMPULSE, Type.ELECTRIC, 100, 15, -1, 0, 6) + new StatusMove(Moves.EERIE_IMPULSE, PokemonType.ELECTRIC, 100, 15, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2) .reflectable(), - new StatusMove(Moves.VENOM_DRENCH, Type.POISON, 100, 20, -1, 0, 6) + new StatusMove(Moves.VENOM_DRENCH, PokemonType.POISON, 100, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK, Stat.SPD ], -1, false, { condition: (user, target, move) => target.status?.effect === StatusEffect.POISON || target.status?.effect === StatusEffect.TOXIC }) .target(MoveTarget.ALL_NEAR_ENEMIES) .reflectable(), - new StatusMove(Moves.POWDER, Type.BUG, 100, 20, -1, 1, 6) + new StatusMove(Moves.POWDER, PokemonType.BUG, 100, 20, -1, 1, 6) .attr(AddBattlerTagAttr, BattlerTagType.POWDER, false, true) .ignoresSubstitute() .powderMove() .reflectable(), - new ChargingSelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6) + new ChargingSelfStatusMove(Moves.GEOMANCY, PokemonType.FAIRY, -1, 10, -1, 0, 6) .chargeText(i18next.t("moveTriggers:isChargingPower", { pokemonName: "{USER}" })) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true), - new StatusMove(Moves.MAGNETIC_FLUX, Type.ELECTRIC, -1, 20, -1, 0, 6) + new StatusMove(Moves.MAGNETIC_FLUX, PokemonType.ELECTRIC, -1, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, false, { condition: (user, target, move) => !![ Abilities.PLUS, Abilities.MINUS ].find(a => target.hasAbility(a, false)) }) .ignoresSubstitute() .target(MoveTarget.USER_AND_ALLIES) .condition((user, target, move) => !![ user, user.getAlly() ].filter(p => p?.isActive()).find(p => !![ Abilities.PLUS, Abilities.MINUS ].find(a => p.hasAbility(a, false)))), - new StatusMove(Moves.HAPPY_HOUR, Type.NORMAL, -1, 30, -1, 0, 6) // No animation + new StatusMove(Moves.HAPPY_HOUR, PokemonType.NORMAL, -1, 30, -1, 0, 6) // No animation .attr(AddArenaTagAttr, ArenaTagType.HAPPY_HOUR, null, true) .target(MoveTarget.USER_SIDE), - new StatusMove(Moves.ELECTRIC_TERRAIN, Type.ELECTRIC, -1, 10, -1, 0, 6) + new StatusMove(Moves.ELECTRIC_TERRAIN, PokemonType.ELECTRIC, -1, 10, -1, 0, 6) .attr(TerrainChangeAttr, TerrainType.ELECTRIC) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.DAZZLING_GLEAM, Type.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 6) + new AttackMove(Moves.DAZZLING_GLEAM, PokemonType.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 6) .target(MoveTarget.ALL_NEAR_ENEMIES), - new SelfStatusMove(Moves.CELEBRATE, Type.NORMAL, -1, 40, -1, 0, 6) + new SelfStatusMove(Moves.CELEBRATE, PokemonType.NORMAL, -1, 40, -1, 0, 6) .attr(CelebrateAttr), - new StatusMove(Moves.HOLD_HANDS, Type.NORMAL, -1, 40, -1, 0, 6) + new StatusMove(Moves.HOLD_HANDS, PokemonType.NORMAL, -1, 40, -1, 0, 6) .ignoresSubstitute() .target(MoveTarget.NEAR_ALLY), - new StatusMove(Moves.BABY_DOLL_EYES, Type.FAIRY, 100, 30, -1, 1, 6) + new StatusMove(Moves.BABY_DOLL_EYES, PokemonType.FAIRY, 100, 30, -1, 1, 6) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .reflectable(), - new AttackMove(Moves.NUZZLE, Type.ELECTRIC, MoveCategory.PHYSICAL, 20, 100, 20, 100, 0, 6) + new AttackMove(Moves.NUZZLE, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 20, 100, 20, 100, 0, 6) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.HOLD_BACK, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 6) + new AttackMove(Moves.HOLD_BACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 6) .attr(SurviveDamageAttr), - new AttackMove(Moves.INFESTATION, Type.BUG, MoveCategory.SPECIAL, 20, 100, 20, -1, 0, 6) + new AttackMove(Moves.INFESTATION, PokemonType.BUG, MoveCategory.SPECIAL, 20, 100, 20, -1, 0, 6) .makesContact() .attr(TrapAttr, BattlerTagType.INFESTATION), - new AttackMove(Moves.POWER_UP_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 20, 100, 0, 6) + new AttackMove(Moves.POWER_UP_PUNCH, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 20, 100, 0, 6) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true) .punchingMove(), - new AttackMove(Moves.OBLIVION_WING, Type.FLYING, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 6) + new AttackMove(Moves.OBLIVION_WING, PokemonType.FLYING, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 6) .attr(HitHealAttr, 0.75) .triageMove(), - new AttackMove(Moves.THOUSAND_ARROWS, Type.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) + new AttackMove(Moves.THOUSAND_ARROWS, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) .attr(NeutralDamageAgainstFlyingTypeMultiplierAttr) .attr(AddBattlerTagAttr, BattlerTagType.IGNORE_FLYING, false, false, 1, 1, true) .attr(HitsTagAttr, BattlerTagType.FLYING) @@ -10473,372 +10104,372 @@ export function initMoves() { .attr(RemoveBattlerTagAttr, [ BattlerTagType.FLYING, BattlerTagType.FLOATING, BattlerTagType.TELEKINESIS ]) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.THOUSAND_WAVES, Type.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) + new AttackMove(Moves.THOUSAND_WAVES, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, false, 1, 1, true) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.LANDS_WRATH, Type.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) + new AttackMove(Moves.LANDS_WRATH, PokemonType.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.LIGHT_OF_RUIN, Type.FAIRY, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 6) + new AttackMove(Moves.LIGHT_OF_RUIN, PokemonType.FAIRY, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 6) .attr(RecoilAttr, false, 0.5) .recklessMove(), - new AttackMove(Moves.ORIGIN_PULSE, Type.WATER, MoveCategory.SPECIAL, 110, 85, 10, -1, 0, 6) + new AttackMove(Moves.ORIGIN_PULSE, PokemonType.WATER, MoveCategory.SPECIAL, 110, 85, 10, -1, 0, 6) .pulseMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.PRECIPICE_BLADES, Type.GROUND, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 6) + new AttackMove(Moves.PRECIPICE_BLADES, PokemonType.GROUND, MoveCategory.PHYSICAL, 120, 85, 10, -1, 0, 6) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.DRAGON_ASCENT, Type.FLYING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 6) + new AttackMove(Moves.DRAGON_ASCENT, PokemonType.FLYING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), - new AttackMove(Moves.HYPERSPACE_FURY, Type.DARK, MoveCategory.PHYSICAL, 100, -1, 5, -1, 0, 6) + new AttackMove(Moves.HYPERSPACE_FURY, PokemonType.DARK, MoveCategory.PHYSICAL, 100, -1, 5, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.DEF ], -1, true) .ignoresSubstitute() .makesContact(false) .ignoresProtect(), /* Unused */ - new AttackMove(Moves.BREAKNECK_BLITZ__PHYSICAL, Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.BREAKNECK_BLITZ__PHYSICAL, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BREAKNECK_BLITZ__SPECIAL, Type.NORMAL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.BREAKNECK_BLITZ__SPECIAL, PokemonType.NORMAL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.ALL_OUT_PUMMELING__PHYSICAL, Type.FIGHTING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.ALL_OUT_PUMMELING__PHYSICAL, PokemonType.FIGHTING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.ALL_OUT_PUMMELING__SPECIAL, Type.FIGHTING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.ALL_OUT_PUMMELING__SPECIAL, PokemonType.FIGHTING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SUPERSONIC_SKYSTRIKE__PHYSICAL, Type.FLYING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.SUPERSONIC_SKYSTRIKE__PHYSICAL, PokemonType.FLYING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SUPERSONIC_SKYSTRIKE__SPECIAL, Type.FLYING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.SUPERSONIC_SKYSTRIKE__SPECIAL, PokemonType.FLYING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.ACID_DOWNPOUR__PHYSICAL, Type.POISON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.ACID_DOWNPOUR__PHYSICAL, PokemonType.POISON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.ACID_DOWNPOUR__SPECIAL, Type.POISON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.ACID_DOWNPOUR__SPECIAL, PokemonType.POISON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.TECTONIC_RAGE__PHYSICAL, Type.GROUND, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.TECTONIC_RAGE__PHYSICAL, PokemonType.GROUND, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.TECTONIC_RAGE__SPECIAL, Type.GROUND, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.TECTONIC_RAGE__SPECIAL, PokemonType.GROUND, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CONTINENTAL_CRUSH__PHYSICAL, Type.ROCK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.CONTINENTAL_CRUSH__PHYSICAL, PokemonType.ROCK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CONTINENTAL_CRUSH__SPECIAL, Type.ROCK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.CONTINENTAL_CRUSH__SPECIAL, PokemonType.ROCK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SAVAGE_SPIN_OUT__PHYSICAL, Type.BUG, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.SAVAGE_SPIN_OUT__PHYSICAL, PokemonType.BUG, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SAVAGE_SPIN_OUT__SPECIAL, Type.BUG, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.SAVAGE_SPIN_OUT__SPECIAL, PokemonType.BUG, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.NEVER_ENDING_NIGHTMARE__PHYSICAL, Type.GHOST, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.NEVER_ENDING_NIGHTMARE__PHYSICAL, PokemonType.GHOST, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.NEVER_ENDING_NIGHTMARE__SPECIAL, Type.GHOST, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.NEVER_ENDING_NIGHTMARE__SPECIAL, PokemonType.GHOST, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CORKSCREW_CRASH__PHYSICAL, Type.STEEL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.CORKSCREW_CRASH__PHYSICAL, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CORKSCREW_CRASH__SPECIAL, Type.STEEL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.CORKSCREW_CRASH__SPECIAL, PokemonType.STEEL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.INFERNO_OVERDRIVE__PHYSICAL, Type.FIRE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.INFERNO_OVERDRIVE__PHYSICAL, PokemonType.FIRE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.INFERNO_OVERDRIVE__SPECIAL, Type.FIRE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.INFERNO_OVERDRIVE__SPECIAL, PokemonType.FIRE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.HYDRO_VORTEX__PHYSICAL, Type.WATER, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.HYDRO_VORTEX__PHYSICAL, PokemonType.WATER, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.HYDRO_VORTEX__SPECIAL, Type.WATER, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.HYDRO_VORTEX__SPECIAL, PokemonType.WATER, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BLOOM_DOOM__PHYSICAL, Type.GRASS, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.BLOOM_DOOM__PHYSICAL, PokemonType.GRASS, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BLOOM_DOOM__SPECIAL, Type.GRASS, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.BLOOM_DOOM__SPECIAL, PokemonType.GRASS, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.GIGAVOLT_HAVOC__PHYSICAL, Type.ELECTRIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.GIGAVOLT_HAVOC__PHYSICAL, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.GIGAVOLT_HAVOC__SPECIAL, Type.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.GIGAVOLT_HAVOC__SPECIAL, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SHATTERED_PSYCHE__PHYSICAL, Type.PSYCHIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.SHATTERED_PSYCHE__PHYSICAL, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SHATTERED_PSYCHE__SPECIAL, Type.PSYCHIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.SHATTERED_PSYCHE__SPECIAL, PokemonType.PSYCHIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SUBZERO_SLAMMER__PHYSICAL, Type.ICE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.SUBZERO_SLAMMER__PHYSICAL, PokemonType.ICE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SUBZERO_SLAMMER__SPECIAL, Type.ICE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.SUBZERO_SLAMMER__SPECIAL, PokemonType.ICE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.DEVASTATING_DRAKE__PHYSICAL, Type.DRAGON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.DEVASTATING_DRAKE__PHYSICAL, PokemonType.DRAGON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.DEVASTATING_DRAKE__SPECIAL, Type.DRAGON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.DEVASTATING_DRAKE__SPECIAL, PokemonType.DRAGON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BLACK_HOLE_ECLIPSE__PHYSICAL, Type.DARK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.BLACK_HOLE_ECLIPSE__PHYSICAL, PokemonType.DARK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.BLACK_HOLE_ECLIPSE__SPECIAL, Type.DARK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.BLACK_HOLE_ECLIPSE__SPECIAL, PokemonType.DARK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.TWINKLE_TACKLE__PHYSICAL, Type.FAIRY, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.TWINKLE_TACKLE__PHYSICAL, PokemonType.FAIRY, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.TWINKLE_TACKLE__SPECIAL, Type.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.TWINKLE_TACKLE__SPECIAL, PokemonType.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.CATASTROPIKA, Type.ELECTRIC, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) + new AttackMove(Moves.CATASTROPIKA, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) .unimplemented(), /* End Unused */ - new SelfStatusMove(Moves.SHORE_UP, Type.GROUND, -1, 5, -1, 0, 7) + new SelfStatusMove(Moves.SHORE_UP, PokemonType.GROUND, -1, 5, -1, 0, 7) .attr(SandHealAttr) .triageMove(), - new AttackMove(Moves.FIRST_IMPRESSION, Type.BUG, MoveCategory.PHYSICAL, 90, 100, 10, -1, 2, 7) + new AttackMove(Moves.FIRST_IMPRESSION, PokemonType.BUG, MoveCategory.PHYSICAL, 90, 100, 10, -1, 2, 7) .condition(new FirstMoveCondition()), - new SelfStatusMove(Moves.BANEFUL_BUNKER, Type.POISON, -1, 10, -1, 4, 7) + new SelfStatusMove(Moves.BANEFUL_BUNKER, PokemonType.POISON, -1, 10, -1, 4, 7) .attr(ProtectAttr, BattlerTagType.BANEFUL_BUNKER) .condition(failIfLastCondition), - new AttackMove(Moves.SPIRIT_SHACKLE, Type.GHOST, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 7) + new AttackMove(Moves.SPIRIT_SHACKLE, PokemonType.GHOST, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 7) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, false, 1, 1, true) .makesContact(false), - new AttackMove(Moves.DARKEST_LARIAT, Type.DARK, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 7) + new AttackMove(Moves.DARKEST_LARIAT, PokemonType.DARK, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 7) .attr(IgnoreOpponentStatStagesAttr), - new AttackMove(Moves.SPARKLING_ARIA, Type.WATER, MoveCategory.SPECIAL, 90, 100, 10, 100, 0, 7) + new AttackMove(Moves.SPARKLING_ARIA, PokemonType.WATER, MoveCategory.SPECIAL, 90, 100, 10, 100, 0, 7) .attr(HealStatusEffectAttr, false, StatusEffect.BURN) .soundBased() .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.ICE_HAMMER, Type.ICE, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 7) + new AttackMove(Moves.ICE_HAMMER, PokemonType.ICE, MoveCategory.PHYSICAL, 100, 90, 10, -1, 0, 7) .attr(StatStageChangeAttr, [ Stat.SPD ], -1, true) .punchingMove(), - new StatusMove(Moves.FLORAL_HEALING, Type.FAIRY, -1, 10, -1, 0, 7) + new StatusMove(Moves.FLORAL_HEALING, PokemonType.FAIRY, -1, 10, -1, 0, 7) .attr(BoostHealAttr, 0.5, 2 / 3, true, false, (user, target, move) => globalScene.arena.terrain?.terrainType === TerrainType.GRASSY) .triageMove() .reflectable(), - new AttackMove(Moves.HIGH_HORSEPOWER, Type.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, -1, 0, 7), - new StatusMove(Moves.STRENGTH_SAP, Type.GRASS, 100, 10, -1, 0, 7) + new AttackMove(Moves.HIGH_HORSEPOWER, PokemonType.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, -1, 0, 7), + new StatusMove(Moves.STRENGTH_SAP, PokemonType.GRASS, 100, 10, -1, 0, 7) .attr(HitHealAttr, null, Stat.ATK) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .condition((user, target, move) => target.getStatStage(Stat.ATK) > -6) .triageMove() .reflectable(), - new ChargingAttackMove(Moves.SOLAR_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7) + new ChargingAttackMove(Moves.SOLAR_BLADE, PokemonType.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7) .chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" })) .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]) .attr(AntiSunlightPowerDecreaseAttr) .slicingMove(), - new AttackMove(Moves.LEAFAGE, Type.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7) + new AttackMove(Moves.LEAFAGE, PokemonType.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7) .makesContact(false), - new StatusMove(Moves.SPOTLIGHT, Type.NORMAL, -1, 15, -1, 3, 7) + new StatusMove(Moves.SPOTLIGHT, PokemonType.NORMAL, -1, 15, -1, 3, 7) .attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, false) .condition(failIfSingleBattle) .reflectable(), - new StatusMove(Moves.TOXIC_THREAD, Type.POISON, 100, 20, -1, 0, 7) + new StatusMove(Moves.TOXIC_THREAD, PokemonType.POISON, 100, 20, -1, 0, 7) .attr(StatusEffectAttr, StatusEffect.POISON) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .reflectable(), - new SelfStatusMove(Moves.LASER_FOCUS, Type.NORMAL, -1, 30, -1, 0, 7) + new SelfStatusMove(Moves.LASER_FOCUS, PokemonType.NORMAL, -1, 30, -1, 0, 7) .attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_CRIT, true, false), - new StatusMove(Moves.GEAR_UP, Type.STEEL, -1, 20, -1, 0, 7) + new StatusMove(Moves.GEAR_UP, PokemonType.STEEL, -1, 20, -1, 0, 7) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, false, { condition: (user, target, move) => !![ Abilities.PLUS, Abilities.MINUS ].find(a => target.hasAbility(a, false)) }) .ignoresSubstitute() .target(MoveTarget.USER_AND_ALLIES) .condition((user, target, move) => !![ user, user.getAlly() ].filter(p => p?.isActive()).find(p => !![ Abilities.PLUS, Abilities.MINUS ].find(a => p.hasAbility(a, false)))), - new AttackMove(Moves.THROAT_CHOP, Type.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) + new AttackMove(Moves.THROAT_CHOP, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) .attr(AddBattlerTagAttr, BattlerTagType.THROAT_CHOPPED), - new AttackMove(Moves.POLLEN_PUFF, Type.BUG, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) + new AttackMove(Moves.POLLEN_PUFF, PokemonType.BUG, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) .attr(StatusCategoryOnAllyAttr) .attr(HealOnAllyAttr, 0.5, true, false) .ballBombMove(), - new AttackMove(Moves.ANCHOR_SHOT, Type.STEEL, MoveCategory.PHYSICAL, 80, 100, 20, 100, 0, 7) + new AttackMove(Moves.ANCHOR_SHOT, PokemonType.STEEL, MoveCategory.PHYSICAL, 80, 100, 20, 100, 0, 7) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, false, 1, 1, true), - new StatusMove(Moves.PSYCHIC_TERRAIN, Type.PSYCHIC, -1, 10, -1, 0, 7) + new StatusMove(Moves.PSYCHIC_TERRAIN, PokemonType.PSYCHIC, -1, 10, -1, 0, 7) .attr(TerrainChangeAttr, TerrainType.PSYCHIC) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.LUNGE, Type.BUG, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) + new AttackMove(Moves.LUNGE, PokemonType.BUG, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.FIRE_LASH, Type.FIRE, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) + new AttackMove(Moves.FIRE_LASH, PokemonType.FIRE, MoveCategory.PHYSICAL, 80, 100, 15, 100, 0, 7) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.POWER_TRIP, Type.DARK, MoveCategory.PHYSICAL, 20, 100, 10, -1, 0, 7) + new AttackMove(Moves.POWER_TRIP, PokemonType.DARK, MoveCategory.PHYSICAL, 20, 100, 10, -1, 0, 7) .attr(PositiveStatStagePowerAttr), - new AttackMove(Moves.BURN_UP, Type.FIRE, MoveCategory.SPECIAL, 130, 100, 5, -1, 0, 7) + new AttackMove(Moves.BURN_UP, PokemonType.FIRE, MoveCategory.SPECIAL, 130, 100, 5, -1, 0, 7) .condition((user) => { const userTypes = user.getTypes(true); - return userTypes.includes(Type.FIRE); + return userTypes.includes(PokemonType.FIRE); }) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(AddBattlerTagAttr, BattlerTagType.BURNED_UP, true, false) - .attr(RemoveTypeAttr, Type.FIRE, (user) => { + .attr(RemoveTypeAttr, PokemonType.FIRE, (user) => { globalScene.queueMessage(i18next.t("moveTriggers:burnedItselfOut", { pokemonName: getPokemonNameWithAffix(user) })); }), - new StatusMove(Moves.SPEED_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 7) + new StatusMove(Moves.SPEED_SWAP, PokemonType.PSYCHIC, -1, 10, -1, 0, 7) .attr(SwapStatAttr, Stat.SPD) .ignoresSubstitute(), - new AttackMove(Moves.SMART_STRIKE, Type.STEEL, MoveCategory.PHYSICAL, 70, -1, 10, -1, 0, 7), - new StatusMove(Moves.PURIFY, Type.POISON, -1, 20, -1, 0, 7) + new AttackMove(Moves.SMART_STRIKE, PokemonType.STEEL, MoveCategory.PHYSICAL, 70, -1, 10, -1, 0, 7), + new StatusMove(Moves.PURIFY, PokemonType.POISON, -1, 20, -1, 0, 7) .condition( (user: Pokemon, target: Pokemon, move: Move) => isNonVolatileStatusEffect(target.status?.effect!)) // TODO: is this bang correct? .attr(HealAttr, 0.5) .attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects()) .triageMove() .reflectable(), - new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) + new AttackMove(Moves.REVELATION_DANCE, PokemonType.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) .danceMove() .attr(MatchUserTypeAttr), - new AttackMove(Moves.CORE_ENFORCER, Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 7) + new AttackMove(Moves.CORE_ENFORCER, PokemonType.DRAGON, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 7) .target(MoveTarget.ALL_NEAR_ENEMIES) .attr(SuppressAbilitiesIfActedAttr), - new AttackMove(Moves.TROP_KICK, Type.GRASS, MoveCategory.PHYSICAL, 70, 100, 15, 100, 0, 7) + new AttackMove(Moves.TROP_KICK, PokemonType.GRASS, MoveCategory.PHYSICAL, 70, 100, 15, 100, 0, 7) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new StatusMove(Moves.INSTRUCT, Type.PSYCHIC, -1, 15, -1, 0, 7) + new StatusMove(Moves.INSTRUCT, PokemonType.PSYCHIC, -1, 15, -1, 0, 7) .ignoresSubstitute() .attr(RepeatMoveAttr) // incorrect interactions with Gigaton Hammer, Blood Moon & Torment // Also has incorrect interactions with Dancer due to the latter // erroneously adding copied moves to move history. .edgeCase(), - new AttackMove(Moves.BEAK_BLAST, Type.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, -3, 7) + new AttackMove(Moves.BEAK_BLAST, PokemonType.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, -3, 7) .attr(BeakBlastHeaderAttr) .ballBombMove() .makesContact(false), - new AttackMove(Moves.CLANGING_SCALES, Type.DRAGON, MoveCategory.SPECIAL, 110, 100, 5, -1, 0, 7) + new AttackMove(Moves.CLANGING_SCALES, PokemonType.DRAGON, MoveCategory.SPECIAL, 110, 100, 5, -1, 0, 7) .attr(StatStageChangeAttr, [ Stat.DEF ], -1, true, { firstTargetOnly: true }) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.DRAGON_HAMMER, Type.DRAGON, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 7), - new AttackMove(Moves.BRUTAL_SWING, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 7) + new AttackMove(Moves.DRAGON_HAMMER, PokemonType.DRAGON, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 7), + new AttackMove(Moves.BRUTAL_SWING, PokemonType.DARK, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 7) .target(MoveTarget.ALL_NEAR_OTHERS), - new StatusMove(Moves.AURORA_VEIL, Type.ICE, -1, 20, -1, 0, 7) + new StatusMove(Moves.AURORA_VEIL, PokemonType.ICE, -1, 20, -1, 0, 7) .condition((user, target, move) => (globalScene.arena.weather?.weatherType === WeatherType.HAIL || globalScene.arena.weather?.weatherType === WeatherType.SNOW) && !globalScene.arena.weather?.isEffectSuppressed()) .attr(AddArenaTagAttr, ArenaTagType.AURORA_VEIL, 5, true) .target(MoveTarget.USER_SIDE), /* Unused */ - new AttackMove(Moves.SINISTER_ARROW_RAID, Type.GHOST, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) + new AttackMove(Moves.SINISTER_ARROW_RAID, PokemonType.GHOST, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) .unimplemented() .makesContact(false) .edgeCase(), // I assume it's because the user needs spirit shackle and decidueye - new AttackMove(Moves.MALICIOUS_MOONSAULT, Type.DARK, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) + new AttackMove(Moves.MALICIOUS_MOONSAULT, PokemonType.DARK, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) .unimplemented() .attr(AlwaysHitMinimizeAttr) .attr(HitsTagAttr, BattlerTagType.MINIMIZED, true) .edgeCase(), // I assume it's because it needs darkest lariat and incineroar - new AttackMove(Moves.OCEANIC_OPERETTA, Type.WATER, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) + new AttackMove(Moves.OCEANIC_OPERETTA, PokemonType.WATER, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) .unimplemented() .edgeCase(), // I assume it's because it needs sparkling aria and primarina - new AttackMove(Moves.GUARDIAN_OF_ALOLA, Type.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) + new AttackMove(Moves.GUARDIAN_OF_ALOLA, PokemonType.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.SOUL_STEALING_7_STAR_STRIKE, Type.GHOST, MoveCategory.PHYSICAL, 195, -1, 1, -1, 0, 7) + new AttackMove(Moves.SOUL_STEALING_7_STAR_STRIKE, PokemonType.GHOST, MoveCategory.PHYSICAL, 195, -1, 1, -1, 0, 7) .unimplemented(), - new AttackMove(Moves.STOKED_SPARKSURFER, Type.ELECTRIC, MoveCategory.SPECIAL, 175, -1, 1, 100, 0, 7) + new AttackMove(Moves.STOKED_SPARKSURFER, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 175, -1, 1, 100, 0, 7) .unimplemented() .edgeCase(), // I assume it's because it needs thunderbolt and Alola Raichu - new AttackMove(Moves.PULVERIZING_PANCAKE, Type.NORMAL, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) + new AttackMove(Moves.PULVERIZING_PANCAKE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) .unimplemented() .edgeCase(), // I assume it's because it needs giga impact and snorlax - new SelfStatusMove(Moves.EXTREME_EVOBOOST, Type.NORMAL, -1, 1, -1, 0, 7) + new SelfStatusMove(Moves.EXTREME_EVOBOOST, PokemonType.NORMAL, -1, 1, -1, 0, 7) .unimplemented() .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true), - new AttackMove(Moves.GENESIS_SUPERNOVA, Type.PSYCHIC, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) + new AttackMove(Moves.GENESIS_SUPERNOVA, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) .unimplemented() .attr(TerrainChangeAttr, TerrainType.PSYCHIC), /* End Unused */ - new AttackMove(Moves.SHELL_TRAP, Type.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, -3, 7) + new AttackMove(Moves.SHELL_TRAP, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, -3, 7) .attr(AddBattlerTagHeaderAttr, BattlerTagType.SHELL_TRAP) .target(MoveTarget.ALL_NEAR_ENEMIES) // Fails if the user was not hit by a physical attack during the turn .condition((user, target, move) => user.getTag(ShellTrapTag)?.activated === true), - new AttackMove(Moves.FLEUR_CANNON, Type.FAIRY, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 7) + new AttackMove(Moves.FLEUR_CANNON, PokemonType.FAIRY, MoveCategory.SPECIAL, 130, 90, 5, -1, 0, 7) .attr(StatStageChangeAttr, [ Stat.SPATK ], -2, true), - new AttackMove(Moves.PSYCHIC_FANGS, Type.PSYCHIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 7) + new AttackMove(Moves.PSYCHIC_FANGS, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 7) .bitingMove() .attr(RemoveScreensAttr), - new AttackMove(Moves.STOMPING_TANTRUM, Type.GROUND, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 7) + new AttackMove(Moves.STOMPING_TANTRUM, PokemonType.GROUND, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 7) .attr(MovePowerMultiplierAttr, (user, target, move) => user.getLastXMoves(2)[1]?.result === MoveResult.MISS || user.getLastXMoves(2)[1]?.result === MoveResult.FAIL ? 2 : 1), - new AttackMove(Moves.SHADOW_BONE, Type.GHOST, MoveCategory.PHYSICAL, 85, 100, 10, 20, 0, 7) + new AttackMove(Moves.SHADOW_BONE, PokemonType.GHOST, MoveCategory.PHYSICAL, 85, 100, 10, 20, 0, 7) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .makesContact(false), - new AttackMove(Moves.ACCELEROCK, Type.ROCK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 1, 7), - new AttackMove(Moves.LIQUIDATION, Type.WATER, MoveCategory.PHYSICAL, 85, 100, 10, 20, 0, 7) + new AttackMove(Moves.ACCELEROCK, PokemonType.ROCK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 1, 7), + new AttackMove(Moves.LIQUIDATION, PokemonType.WATER, MoveCategory.PHYSICAL, 85, 100, 10, 20, 0, 7) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.PRISMATIC_LASER, Type.PSYCHIC, MoveCategory.SPECIAL, 160, 100, 10, -1, 0, 7) + new AttackMove(Moves.PRISMATIC_LASER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 160, 100, 10, -1, 0, 7) .attr(RechargeAttr), - new AttackMove(Moves.SPECTRAL_THIEF, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 7) + new AttackMove(Moves.SPECTRAL_THIEF, PokemonType.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 7) .attr(SpectralThiefAttr) .ignoresSubstitute(), - new AttackMove(Moves.SUNSTEEL_STRIKE, Type.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 7) + new AttackMove(Moves.SUNSTEEL_STRIKE, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 7) .ignoresAbilities(), - new AttackMove(Moves.MOONGEIST_BEAM, Type.GHOST, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7) + new AttackMove(Moves.MOONGEIST_BEAM, PokemonType.GHOST, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7) .ignoresAbilities(), - new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, -1, 0, 7) + new StatusMove(Moves.TEARFUL_LOOK, PokemonType.NORMAL, -1, 20, -1, 0, 7) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1) .reflectable(), - new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7) + new AttackMove(Moves.ZING_ZAP, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7) .attr(FlinchAttr), - new AttackMove(Moves.NATURES_MADNESS, Type.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7) + new AttackMove(Moves.NATURES_MADNESS, PokemonType.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7) .attr(TargetHalfHpDamageAttr), - new AttackMove(Moves.MULTI_ATTACK, Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 7) + new AttackMove(Moves.MULTI_ATTACK, PokemonType.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 7) .attr(FormChangeItemTypeAttr), /* Unused */ - new AttackMove(Moves.TEN_MILLION_VOLT_THUNDERBOLT, Type.ELECTRIC, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) + new AttackMove(Moves.TEN_MILLION_VOLT_THUNDERBOLT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) .unimplemented() .edgeCase(), // I assume it's because it needs thunderbolt and pikachu in a cap /* End Unused */ - new AttackMove(Moves.MIND_BLOWN, Type.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 7) + new AttackMove(Moves.MIND_BLOWN, PokemonType.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 7) .condition(failIfDampCondition) .attr(HalfSacrificialAttr) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.PLASMA_FISTS, Type.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 15, -1, 0, 7) + new AttackMove(Moves.PLASMA_FISTS, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 15, -1, 0, 7) .attr(AddArenaTagAttr, ArenaTagType.ION_DELUGE, 1) .punchingMove(), - new AttackMove(Moves.PHOTON_GEYSER, Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7) + new AttackMove(Moves.PHOTON_GEYSER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 7) .attr(PhotonGeyserCategoryAttr) .ignoresAbilities(), /* Unused */ - new AttackMove(Moves.LIGHT_THAT_BURNS_THE_SKY, Type.PSYCHIC, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) + new AttackMove(Moves.LIGHT_THAT_BURNS_THE_SKY, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) .unimplemented() .attr(PhotonGeyserCategoryAttr) .ignoresAbilities(), - new AttackMove(Moves.SEARING_SUNRAZE_SMASH, Type.STEEL, MoveCategory.PHYSICAL, 200, -1, 1, -1, 0, 7) + new AttackMove(Moves.SEARING_SUNRAZE_SMASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 200, -1, 1, -1, 0, 7) .unimplemented() .ignoresAbilities(), - new AttackMove(Moves.MENACING_MOONRAZE_MAELSTROM, Type.GHOST, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) + new AttackMove(Moves.MENACING_MOONRAZE_MAELSTROM, PokemonType.GHOST, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) .unimplemented() .ignoresAbilities(), - new AttackMove(Moves.LETS_SNUGGLE_FOREVER, Type.FAIRY, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) + new AttackMove(Moves.LETS_SNUGGLE_FOREVER, PokemonType.FAIRY, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) .unimplemented() .edgeCase(), // I assume it needs play rough and mimikyu - new AttackMove(Moves.SPLINTERED_STORMSHARDS, Type.ROCK, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) + new AttackMove(Moves.SPLINTERED_STORMSHARDS, PokemonType.ROCK, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) .unimplemented() .attr(ClearTerrainAttr) .makesContact(false), - new AttackMove(Moves.CLANGOROUS_SOULBLAZE, Type.DRAGON, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) + new AttackMove(Moves.CLANGOROUS_SOULBLAZE, PokemonType.DRAGON, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) .unimplemented() .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true, { firstTargetOnly: true }) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES) .edgeCase(), // I assume it needs clanging scales and Kommo-O /* End Unused */ - new AttackMove(Moves.ZIPPY_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 50, 100, 15, -1, 2, 7) // LGPE Implementation + new AttackMove(Moves.ZIPPY_ZAP, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 50, 100, 15, -1, 2, 7) // LGPE Implementation .attr(CritOnlyAttr), - new AttackMove(Moves.SPLISHY_SPLASH, Type.WATER, MoveCategory.SPECIAL, 90, 100, 15, 30, 0, 7) + new AttackMove(Moves.SPLISHY_SPLASH, PokemonType.WATER, MoveCategory.SPECIAL, 90, 100, 15, 30, 0, 7) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.FLOATY_FALL, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, 30, 0, 7) + new AttackMove(Moves.FLOATY_FALL, PokemonType.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, 30, 0, 7) .attr(FlinchAttr), - new AttackMove(Moves.PIKA_PAPOW, Type.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 20, -1, 0, 7) + new AttackMove(Moves.PIKA_PAPOW, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 20, -1, 0, 7) .attr(FriendshipPowerAttr), - new AttackMove(Moves.BOUNCY_BUBBLE, Type.WATER, MoveCategory.SPECIAL, 60, 100, 20, -1, 0, 7) + new AttackMove(Moves.BOUNCY_BUBBLE, PokemonType.WATER, MoveCategory.SPECIAL, 60, 100, 20, -1, 0, 7) .attr(HitHealAttr, 1) .triageMove(), - new AttackMove(Moves.BUZZY_BUZZ, Type.ELECTRIC, MoveCategory.SPECIAL, 60, 100, 20, 100, 0, 7) + new AttackMove(Moves.BUZZY_BUZZ, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 60, 100, 20, 100, 0, 7) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), - new AttackMove(Moves.SIZZLY_SLIDE, Type.FIRE, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 7) + new AttackMove(Moves.SIZZLY_SLIDE, PokemonType.FIRE, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 7) .attr(StatusEffectAttr, StatusEffect.BURN), - new AttackMove(Moves.GLITZY_GLOW, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 95, 15, -1, 0, 7) + new AttackMove(Moves.GLITZY_GLOW, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 95, 15, -1, 0, 7) .attr(AddArenaTagAttr, ArenaTagType.LIGHT_SCREEN, 5, false, true), - new AttackMove(Moves.BADDY_BAD, Type.DARK, MoveCategory.SPECIAL, 80, 95, 15, -1, 0, 7) + new AttackMove(Moves.BADDY_BAD, PokemonType.DARK, MoveCategory.SPECIAL, 80, 95, 15, -1, 0, 7) .attr(AddArenaTagAttr, ArenaTagType.REFLECT, 5, false, true), - new AttackMove(Moves.SAPPY_SEED, Type.GRASS, MoveCategory.PHYSICAL, 100, 90, 10, 100, 0, 7) + new AttackMove(Moves.SAPPY_SEED, PokemonType.GRASS, MoveCategory.PHYSICAL, 100, 90, 10, 100, 0, 7) .attr(LeechSeedAttr) .makesContact(false), - new AttackMove(Moves.FREEZY_FROST, Type.ICE, MoveCategory.SPECIAL, 100, 90, 10, -1, 0, 7) + new AttackMove(Moves.FREEZY_FROST, PokemonType.ICE, MoveCategory.SPECIAL, 100, 90, 10, -1, 0, 7) .attr(ResetStatsAttr, true), - new AttackMove(Moves.SPARKLY_SWIRL, Type.FAIRY, MoveCategory.SPECIAL, 120, 85, 5, -1, 0, 7) + new AttackMove(Moves.SPARKLY_SWIRL, PokemonType.FAIRY, MoveCategory.SPECIAL, 120, 85, 5, -1, 0, 7) .attr(PartyStatusCureAttr, null, Abilities.NONE), - new AttackMove(Moves.VEEVEE_VOLLEY, Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 20, -1, 0, 7) + new AttackMove(Moves.VEEVEE_VOLLEY, PokemonType.NORMAL, MoveCategory.PHYSICAL, -1, -1, 20, -1, 0, 7) .attr(FriendshipPowerAttr), - new AttackMove(Moves.DOUBLE_IRON_BASH, Type.STEEL, MoveCategory.PHYSICAL, 60, 100, 5, 30, 0, 7) + new AttackMove(Moves.DOUBLE_IRON_BASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 60, 100, 5, 30, 0, 7) .attr(MultiHitAttr, MultiHitType._2) .attr(FlinchAttr) .punchingMove(), /* Unused */ - new SelfStatusMove(Moves.MAX_GUARD, Type.NORMAL, -1, 10, -1, 4, 8) + new SelfStatusMove(Moves.MAX_GUARD, PokemonType.NORMAL, -1, 10, -1, 4, 8) .unimplemented() .attr(ProtectAttr) .condition(failIfLastCondition), /* End Unused */ - new AttackMove(Moves.DYNAMAX_CANNON, Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) + new AttackMove(Moves.DYNAMAX_CANNON, PokemonType.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, target, move) => { // Move is only stronger against overleveled foes. if (target.level > globalScene.getMaxExpLevel()) { @@ -10851,13 +10482,13 @@ export function initMoves() { }) .attr(DiscourageFrequentUseAttr), - new AttackMove(Moves.SNIPE_SHOT, Type.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 8) + new AttackMove(Moves.SNIPE_SHOT, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 8) .attr(HighCritAttr) .attr(BypassRedirectAttr), - new AttackMove(Moves.JAW_LOCK, Type.DARK, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) + new AttackMove(Moves.JAW_LOCK, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) .attr(JawLockAttr) .bitingMove(), - new SelfStatusMove(Moves.STUFF_CHEEKS, Type.NORMAL, -1, 10, -1, 0, 8) + new SelfStatusMove(Moves.STUFF_CHEEKS, PokemonType.NORMAL, -1, 10, -1, 0, 8) .attr(EatBerryAttr) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true) .condition((user) => { @@ -10865,326 +10496,326 @@ export function initMoves() { return userBerries.length > 0; }) .edgeCase(), // Stuff Cheeks should not be selectable when the user does not have a berry, see wiki - new SelfStatusMove(Moves.NO_RETREAT, Type.FIGHTING, -1, 5, -1, 0, 8) + new SelfStatusMove(Moves.NO_RETREAT, PokemonType.FIGHTING, -1, 5, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true) .attr(AddBattlerTagAttr, BattlerTagType.NO_RETREAT, true, false) .condition((user, target, move) => user.getTag(TrappedTag)?.sourceMove !== Moves.NO_RETREAT), // fails if the user is currently trapped by No Retreat - new StatusMove(Moves.TAR_SHOT, Type.ROCK, 100, 15, -1, 0, 8) + new StatusMove(Moves.TAR_SHOT, PokemonType.ROCK, 100, 15, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .attr(AddBattlerTagAttr, BattlerTagType.TAR_SHOT, false) .reflectable(), - new StatusMove(Moves.MAGIC_POWDER, Type.PSYCHIC, 100, 20, -1, 0, 8) - .attr(ChangeTypeAttr, Type.PSYCHIC) + new StatusMove(Moves.MAGIC_POWDER, PokemonType.PSYCHIC, 100, 20, -1, 0, 8) + .attr(ChangeTypeAttr, PokemonType.PSYCHIC) .powderMove() .reflectable(), - new AttackMove(Moves.DRAGON_DARTS, Type.DRAGON, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 8) + new AttackMove(Moves.DRAGON_DARTS, PokemonType.DRAGON, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 8) .attr(MultiHitAttr, MultiHitType._2) .makesContact(false) .partial(), // smart targetting is unimplemented - new StatusMove(Moves.TEATIME, Type.NORMAL, -1, 10, -1, 0, 8) + new StatusMove(Moves.TEATIME, PokemonType.NORMAL, -1, 10, -1, 0, 8) .attr(EatBerryAttr) .target(MoveTarget.ALL), - new StatusMove(Moves.OCTOLOCK, Type.FIGHTING, 100, 15, -1, 0, 8) + new StatusMove(Moves.OCTOLOCK, PokemonType.FIGHTING, 100, 15, -1, 0, 8) .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.OCTOLOCK, false, true, 1), - new AttackMove(Moves.BOLT_BEAK, Type.ELECTRIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) + new AttackMove(Moves.BOLT_BEAK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) .attr(FirstAttackDoublePowerAttr), - new AttackMove(Moves.FISHIOUS_REND, Type.WATER, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) + new AttackMove(Moves.FISHIOUS_REND, PokemonType.WATER, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) .attr(FirstAttackDoublePowerAttr) .bitingMove(), - new StatusMove(Moves.COURT_CHANGE, Type.NORMAL, 100, 10, -1, 0, 8) + new StatusMove(Moves.COURT_CHANGE, PokemonType.NORMAL, 100, 10, -1, 0, 8) .attr(SwapArenaTagsAttr, [ ArenaTagType.AURORA_VEIL, ArenaTagType.LIGHT_SCREEN, ArenaTagType.MIST, ArenaTagType.REFLECT, ArenaTagType.SPIKES, ArenaTagType.STEALTH_ROCK, ArenaTagType.STICKY_WEB, ArenaTagType.TAILWIND, ArenaTagType.TOXIC_SPIKES ]), /* Unused */ - new AttackMove(Moves.MAX_FLARE, Type.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_FLARE, PokemonType.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_FLUTTERBY, Type.BUG, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_FLUTTERBY, PokemonType.BUG, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_LIGHTNING, Type.ELECTRIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_LIGHTNING, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_STRIKE, Type.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_STRIKE, PokemonType.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_KNUCKLE, Type.FIGHTING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_KNUCKLE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_PHANTASM, Type.GHOST, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_PHANTASM, PokemonType.GHOST, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_HAILSTORM, Type.ICE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_HAILSTORM, PokemonType.ICE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_OOZE, Type.POISON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_OOZE, PokemonType.POISON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_GEYSER, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_GEYSER, PokemonType.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_AIRSTREAM, Type.FLYING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_AIRSTREAM, PokemonType.FLYING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_STARFALL, Type.FAIRY, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_STARFALL, PokemonType.FAIRY, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_WYRMWIND, Type.DRAGON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_WYRMWIND, PokemonType.DRAGON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_MINDSTORM, Type.PSYCHIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_MINDSTORM, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_ROCKFALL, Type.ROCK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_ROCKFALL, PokemonType.ROCK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_QUAKE, Type.GROUND, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_QUAKE, PokemonType.GROUND, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_DARKNESS, Type.DARK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_DARKNESS, PokemonType.DARK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_OVERGROWTH, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_OVERGROWTH, PokemonType.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), - new AttackMove(Moves.MAX_STEELSPIKE, Type.STEEL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.MAX_STEELSPIKE, PokemonType.STEEL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented(), /* End Unused */ - new SelfStatusMove(Moves.CLANGOROUS_SOUL, Type.DRAGON, 100, 5, -1, 0, 8) + new SelfStatusMove(Moves.CLANGOROUS_SOUL, PokemonType.DRAGON, 100, 5, -1, 0, 8) .attr(CutHpStatStageBoostAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, 3) .soundBased() .danceMove(), - new AttackMove(Moves.BODY_PRESS, Type.FIGHTING, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) + new AttackMove(Moves.BODY_PRESS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) .attr(DefAtkAttr), - new StatusMove(Moves.DECORATE, Type.FAIRY, -1, 15, -1, 0, 8) + new StatusMove(Moves.DECORATE, PokemonType.FAIRY, -1, 15, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 2) .ignoresProtect(), - new AttackMove(Moves.DRUM_BEATING, Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) + new AttackMove(Moves.DRUM_BEATING, PokemonType.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .makesContact(false), - new AttackMove(Moves.SNAP_TRAP, Type.GRASS, MoveCategory.PHYSICAL, 35, 100, 15, -1, 0, 8) + new AttackMove(Moves.SNAP_TRAP, PokemonType.GRASS, MoveCategory.PHYSICAL, 35, 100, 15, -1, 0, 8) .attr(TrapAttr, BattlerTagType.SNAP_TRAP), - new AttackMove(Moves.PYRO_BALL, Type.FIRE, MoveCategory.PHYSICAL, 120, 90, 5, 10, 0, 8) + new AttackMove(Moves.PYRO_BALL, PokemonType.FIRE, MoveCategory.PHYSICAL, 120, 90, 5, 10, 0, 8) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .ballBombMove() .makesContact(false), - new AttackMove(Moves.BEHEMOTH_BLADE, Type.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 8) + new AttackMove(Moves.BEHEMOTH_BLADE, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 8) .slicingMove(), - new AttackMove(Moves.BEHEMOTH_BASH, Type.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 8), - new AttackMove(Moves.AURA_WHEEL, Type.ELECTRIC, MoveCategory.PHYSICAL, 110, 100, 10, 100, 0, 8) + new AttackMove(Moves.BEHEMOTH_BASH, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 8), + new AttackMove(Moves.AURA_WHEEL, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 110, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true) .makesContact(false) .attr(AuraWheelTypeAttr), - new AttackMove(Moves.BREAKING_SWIPE, Type.DRAGON, MoveCategory.PHYSICAL, 60, 100, 15, 100, 0, 8) + new AttackMove(Moves.BREAKING_SWIPE, PokemonType.DRAGON, MoveCategory.PHYSICAL, 60, 100, 15, 100, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.BRANCH_POKE, Type.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 8), - new AttackMove(Moves.OVERDRIVE, Type.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) + new AttackMove(Moves.BRANCH_POKE, PokemonType.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 8), + new AttackMove(Moves.OVERDRIVE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.APPLE_ACID, Type.GRASS, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 8) + new AttackMove(Moves.APPLE_ACID, PokemonType.GRASS, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), - new AttackMove(Moves.GRAV_APPLE, Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) + new AttackMove(Moves.GRAV_APPLE, PokemonType.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTag(ArenaTagType.GRAVITY) ? 1.5 : 1) .makesContact(false), - new AttackMove(Moves.SPIRIT_BREAK, Type.FAIRY, MoveCategory.PHYSICAL, 75, 100, 15, 100, 0, 8) + new AttackMove(Moves.SPIRIT_BREAK, PokemonType.FAIRY, MoveCategory.PHYSICAL, 75, 100, 15, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), - new AttackMove(Moves.STRANGE_STEAM, Type.FAIRY, MoveCategory.SPECIAL, 90, 95, 10, 20, 0, 8) + new AttackMove(Moves.STRANGE_STEAM, PokemonType.FAIRY, MoveCategory.SPECIAL, 90, 95, 10, 20, 0, 8) .attr(ConfuseAttr), - new StatusMove(Moves.LIFE_DEW, Type.WATER, -1, 10, -1, 0, 8) + new StatusMove(Moves.LIFE_DEW, PokemonType.WATER, -1, 10, -1, 0, 8) .attr(HealAttr, 0.25, true, false) .target(MoveTarget.USER_AND_ALLIES) .ignoresProtect(), - new SelfStatusMove(Moves.OBSTRUCT, Type.DARK, 100, 10, -1, 4, 8) + new SelfStatusMove(Moves.OBSTRUCT, PokemonType.DARK, 100, 10, -1, 4, 8) .attr(ProtectAttr, BattlerTagType.OBSTRUCT) .condition(failIfLastCondition), - new AttackMove(Moves.FALSE_SURRENDER, Type.DARK, MoveCategory.PHYSICAL, 80, -1, 10, -1, 0, 8), - new AttackMove(Moves.METEOR_ASSAULT, Type.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 5, -1, 0, 8) + new AttackMove(Moves.FALSE_SURRENDER, PokemonType.DARK, MoveCategory.PHYSICAL, 80, -1, 10, -1, 0, 8), + new AttackMove(Moves.METEOR_ASSAULT, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 5, -1, 0, 8) .attr(RechargeAttr) .makesContact(false), - new AttackMove(Moves.ETERNABEAM, Type.DRAGON, MoveCategory.SPECIAL, 160, 90, 5, -1, 0, 8) + new AttackMove(Moves.ETERNABEAM, PokemonType.DRAGON, MoveCategory.SPECIAL, 160, 90, 5, -1, 0, 8) .attr(RechargeAttr), - new AttackMove(Moves.STEEL_BEAM, Type.STEEL, MoveCategory.SPECIAL, 140, 95, 5, -1, 0, 8) + new AttackMove(Moves.STEEL_BEAM, PokemonType.STEEL, MoveCategory.SPECIAL, 140, 95, 5, -1, 0, 8) .attr(HalfSacrificialAttr), - new AttackMove(Moves.EXPANDING_FORCE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) + new AttackMove(Moves.EXPANDING_FORCE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? 1.5 : 1) .attr(VariableTargetAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? MoveTarget.ALL_NEAR_ENEMIES : MoveTarget.NEAR_OTHER), - new AttackMove(Moves.STEEL_ROLLER, Type.STEEL, MoveCategory.PHYSICAL, 130, 100, 5, -1, 0, 8) + new AttackMove(Moves.STEEL_ROLLER, PokemonType.STEEL, MoveCategory.PHYSICAL, 130, 100, 5, -1, 0, 8) .attr(ClearTerrainAttr) .condition((user, target, move) => !!globalScene.arena.terrain), - new AttackMove(Moves.SCALE_SHOT, Type.DRAGON, MoveCategory.PHYSICAL, 25, 90, 20, -1, 0, 8) + new AttackMove(Moves.SCALE_SHOT, PokemonType.DRAGON, MoveCategory.PHYSICAL, 25, 90, 20, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true, { lastHitOnly: true }) .attr(StatStageChangeAttr, [ Stat.DEF ], -1, true, { lastHitOnly: true }) .attr(MultiHitAttr) .makesContact(false), - new ChargingAttackMove(Moves.METEOR_BEAM, Type.ROCK, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 8) + new ChargingAttackMove(Moves.METEOR_BEAM, PokemonType.ROCK, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 8) .chargeText(i18next.t("moveTriggers:isOverflowingWithSpacePower", { pokemonName: "{USER}" })) .chargeAttr(StatStageChangeAttr, [ Stat.SPATK ], 1, true), - new AttackMove(Moves.SHELL_SIDE_ARM, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) + new AttackMove(Moves.SHELL_SIDE_ARM, PokemonType.POISON, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) .attr(ShellSideArmCategoryAttr) .attr(StatusEffectAttr, StatusEffect.POISON) .partial(), // Physical version of the move does not make contact - new AttackMove(Moves.MISTY_EXPLOSION, Type.FAIRY, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) + new AttackMove(Moves.MISTY_EXPLOSION, PokemonType.FAIRY, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) .attr(SacrificialAttr) .target(MoveTarget.ALL_NEAR_OTHERS) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.MISTY && user.isGrounded() ? 1.5 : 1) .condition(failIfDampCondition) .makesContact(false), - new AttackMove(Moves.GRASSY_GLIDE, Type.GRASS, MoveCategory.PHYSICAL, 55, 100, 20, -1, 0, 8) + new AttackMove(Moves.GRASSY_GLIDE, PokemonType.GRASS, MoveCategory.PHYSICAL, 55, 100, 20, -1, 0, 8) .attr(IncrementMovePriorityAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && user.isGrounded()), - new AttackMove(Moves.RISING_VOLTAGE, Type.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 8) + new AttackMove(Moves.RISING_VOLTAGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.ELECTRIC && target.isGrounded() ? 2 : 1), - new AttackMove(Moves.TERRAIN_PULSE, Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 8) + new AttackMove(Moves.TERRAIN_PULSE, PokemonType.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 8) .attr(TerrainPulseTypeAttr) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() !== TerrainType.NONE && user.isGrounded() ? 2 : 1) .pulseMove(), - new AttackMove(Moves.SKITTER_SMACK, Type.BUG, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) + new AttackMove(Moves.SKITTER_SMACK, PokemonType.BUG, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), - new AttackMove(Moves.BURNING_JEALOUSY, Type.FIRE, MoveCategory.SPECIAL, 70, 100, 5, 100, 0, 8) + new AttackMove(Moves.BURNING_JEALOUSY, PokemonType.FIRE, MoveCategory.SPECIAL, 70, 100, 5, 100, 0, 8) .attr(StatusIfBoostedAttr, StatusEffect.BURN) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.LASH_OUT, Type.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) + new AttackMove(Moves.LASH_OUT, PokemonType.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, _target, _move) => user.turnData.statStagesDecreased ? 2 : 1), - new AttackMove(Moves.POLTERGEIST, Type.GHOST, MoveCategory.PHYSICAL, 110, 90, 5, -1, 0, 8) + new AttackMove(Moves.POLTERGEIST, PokemonType.GHOST, MoveCategory.PHYSICAL, 110, 90, 5, -1, 0, 8) .condition(failIfNoTargetHeldItemsCondition) .attr(PreMoveMessageAttr, attackedByItemMessageFunc) .makesContact(false), - new StatusMove(Moves.CORROSIVE_GAS, Type.POISON, 100, 40, -1, 0, 8) + new StatusMove(Moves.CORROSIVE_GAS, PokemonType.POISON, 100, 40, -1, 0, 8) .target(MoveTarget.ALL_NEAR_OTHERS) .reflectable() .unimplemented(), - new StatusMove(Moves.COACHING, Type.FIGHTING, -1, 10, -1, 0, 8) + new StatusMove(Moves.COACHING, PokemonType.FIGHTING, -1, 10, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], 1) .target(MoveTarget.NEAR_ALLY) .condition(failIfSingleBattle), - new AttackMove(Moves.FLIP_TURN, Type.WATER, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 8) + new AttackMove(Moves.FLIP_TURN, PokemonType.WATER, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 8) .attr(ForceSwitchOutAttr, true), - new AttackMove(Moves.TRIPLE_AXEL, Type.ICE, MoveCategory.PHYSICAL, 20, 90, 10, -1, 0, 8) + new AttackMove(Moves.TRIPLE_AXEL, PokemonType.ICE, MoveCategory.PHYSICAL, 20, 90, 10, -1, 0, 8) .attr(MultiHitAttr, MultiHitType._3) .attr(MultiHitPowerIncrementAttr, 3) .checkAllHits(), - new AttackMove(Moves.DUAL_WINGBEAT, Type.FLYING, MoveCategory.PHYSICAL, 40, 90, 10, -1, 0, 8) + new AttackMove(Moves.DUAL_WINGBEAT, PokemonType.FLYING, MoveCategory.PHYSICAL, 40, 90, 10, -1, 0, 8) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.SCORCHING_SANDS, Type.GROUND, MoveCategory.SPECIAL, 70, 100, 10, 30, 0, 8) + new AttackMove(Moves.SCORCHING_SANDS, PokemonType.GROUND, MoveCategory.SPECIAL, 70, 100, 10, 30, 0, 8) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(HealStatusEffectAttr, false, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN), - new StatusMove(Moves.JUNGLE_HEALING, Type.GRASS, -1, 10, -1, 0, 8) + new StatusMove(Moves.JUNGLE_HEALING, PokemonType.GRASS, -1, 10, -1, 0, 8) .attr(HealAttr, 0.25, true, false) .attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects()) .target(MoveTarget.USER_AND_ALLIES), - new AttackMove(Moves.WICKED_BLOW, Type.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) + new AttackMove(Moves.WICKED_BLOW, PokemonType.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) .attr(CritOnlyAttr) .punchingMove(), - new AttackMove(Moves.SURGING_STRIKES, Type.WATER, MoveCategory.PHYSICAL, 25, 100, 5, -1, 0, 8) + new AttackMove(Moves.SURGING_STRIKES, PokemonType.WATER, MoveCategory.PHYSICAL, 25, 100, 5, -1, 0, 8) .attr(MultiHitAttr, MultiHitType._3) .attr(CritOnlyAttr) .punchingMove(), - new AttackMove(Moves.THUNDER_CAGE, Type.ELECTRIC, MoveCategory.SPECIAL, 80, 90, 15, -1, 0, 8) + new AttackMove(Moves.THUNDER_CAGE, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 80, 90, 15, -1, 0, 8) .attr(TrapAttr, BattlerTagType.THUNDER_CAGE), - new AttackMove(Moves.DRAGON_ENERGY, Type.DRAGON, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 8) + new AttackMove(Moves.DRAGON_ENERGY, PokemonType.DRAGON, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 8) .attr(HpPowerAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.FREEZING_GLARE, Type.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 8) + new AttackMove(Moves.FREEZING_GLARE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 8) .attr(StatusEffectAttr, StatusEffect.FREEZE), - new AttackMove(Moves.FIERY_WRATH, Type.DARK, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) + new AttackMove(Moves.FIERY_WRATH, PokemonType.DARK, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) .attr(FlinchAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.THUNDEROUS_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 100, 0, 8) + new AttackMove(Moves.THUNDEROUS_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF ], -1), - new AttackMove(Moves.GLACIAL_LANCE, Type.ICE, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8) + new AttackMove(Moves.GLACIAL_LANCE, PokemonType.ICE, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .makesContact(false), - new AttackMove(Moves.ASTRAL_BARRAGE, Type.GHOST, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 8) + new AttackMove(Moves.ASTRAL_BARRAGE, PokemonType.GHOST, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.EERIE_SPELL, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 5, 100, 0, 8) + new AttackMove(Moves.EERIE_SPELL, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 5, 100, 0, 8) .attr(AttackReducePpMoveAttr, 3) .soundBased(), - new AttackMove(Moves.DIRE_CLAW, Type.POISON, MoveCategory.PHYSICAL, 80, 100, 15, 50, 0, 8) + new AttackMove(Moves.DIRE_CLAW, PokemonType.POISON, MoveCategory.PHYSICAL, 80, 100, 15, 50, 0, 8) .attr(MultiStatusEffectAttr, [ StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP ]), - new AttackMove(Moves.PSYSHIELD_BASH, Type.PSYCHIC, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) + new AttackMove(Moves.PSYSHIELD_BASH, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), - new SelfStatusMove(Moves.POWER_SHIFT, Type.NORMAL, -1, 10, -1, 0, 8) + new SelfStatusMove(Moves.POWER_SHIFT, PokemonType.NORMAL, -1, 10, -1, 0, 8) .target(MoveTarget.USER) .attr(ShiftStatAttr, Stat.ATK, Stat.DEF), - new AttackMove(Moves.STONE_AXE, Type.ROCK, MoveCategory.PHYSICAL, 65, 90, 15, 100, 0, 8) + new AttackMove(Moves.STONE_AXE, PokemonType.ROCK, MoveCategory.PHYSICAL, 65, 90, 15, 100, 0, 8) .attr(AddArenaTrapTagHitAttr, ArenaTagType.STEALTH_ROCK) .slicingMove(), - new AttackMove(Moves.SPRINGTIDE_STORM, Type.FAIRY, MoveCategory.SPECIAL, 100, 80, 5, 30, 0, 8) + new AttackMove(Moves.SPRINGTIDE_STORM, PokemonType.FAIRY, MoveCategory.SPECIAL, 100, 80, 5, 30, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK ], -1) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.MYSTICAL_POWER, Type.PSYCHIC, MoveCategory.SPECIAL, 70, 90, 10, 100, 0, 8) + new AttackMove(Moves.MYSTICAL_POWER, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 70, 90, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1, true), - new AttackMove(Moves.RAGING_FURY, Type.FIRE, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 8) + new AttackMove(Moves.RAGING_FURY, PokemonType.FIRE, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 8) .makesContact(false) .attr(FrenzyAttr) .attr(MissEffectAttr, frenzyMissFunc) .attr(NoEffectAttr, frenzyMissFunc) .target(MoveTarget.RANDOM_NEAR_ENEMY), - new AttackMove(Moves.WAVE_CRASH, Type.WATER, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 8) + new AttackMove(Moves.WAVE_CRASH, PokemonType.WATER, MoveCategory.PHYSICAL, 120, 100, 10, -1, 0, 8) .attr(RecoilAttr, false, 0.33) .recklessMove(), - new AttackMove(Moves.CHLOROBLAST, Type.GRASS, MoveCategory.SPECIAL, 150, 95, 5, -1, 0, 8) + new AttackMove(Moves.CHLOROBLAST, PokemonType.GRASS, MoveCategory.SPECIAL, 150, 95, 5, -1, 0, 8) .attr(RecoilAttr, true, 0.5), - new AttackMove(Moves.MOUNTAIN_GALE, Type.ICE, MoveCategory.PHYSICAL, 100, 85, 10, 30, 0, 8) + new AttackMove(Moves.MOUNTAIN_GALE, PokemonType.ICE, MoveCategory.PHYSICAL, 100, 85, 10, 30, 0, 8) .makesContact(false) .attr(FlinchAttr), - new SelfStatusMove(Moves.VICTORY_DANCE, Type.FIGHTING, -1, 10, -1, 0, 8) + new SelfStatusMove(Moves.VICTORY_DANCE, PokemonType.FIGHTING, -1, 10, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPD ], 1, true) .danceMove(), - new AttackMove(Moves.HEADLONG_RUSH, Type.GROUND, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8) + new AttackMove(Moves.HEADLONG_RUSH, PokemonType.GROUND, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true) .punchingMove(), - new AttackMove(Moves.BARB_BARRAGE, Type.POISON, MoveCategory.PHYSICAL, 60, 100, 10, 50, 0, 8) + new AttackMove(Moves.BARB_BARRAGE, PokemonType.POISON, MoveCategory.PHYSICAL, 60, 100, 10, 50, 0, 8) .makesContact(false) .attr(MovePowerMultiplierAttr, (user, target, move) => target.status && (target.status.effect === StatusEffect.POISON || target.status.effect === StatusEffect.TOXIC) ? 2 : 1) .attr(StatusEffectAttr, StatusEffect.POISON), - new AttackMove(Moves.ESPER_WING, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 8) + new AttackMove(Moves.ESPER_WING, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 8) .attr(HighCritAttr) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true), - new AttackMove(Moves.BITTER_MALICE, Type.GHOST, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 8) + new AttackMove(Moves.BITTER_MALICE, PokemonType.GHOST, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new SelfStatusMove(Moves.SHELTER, Type.STEEL, -1, 10, 100, 0, 8) + new SelfStatusMove(Moves.SHELTER, PokemonType.STEEL, -1, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true), - new AttackMove(Moves.TRIPLE_ARROWS, Type.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 30, 0, 8) + new AttackMove(Moves.TRIPLE_ARROWS, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 30, 0, 8) .makesContact(false) .attr(HighCritAttr) .attr(StatStageChangeAttr, [ Stat.DEF ], -1, false, { effectChanceOverride: 50 }) .attr(FlinchAttr), - new AttackMove(Moves.INFERNAL_PARADE, Type.GHOST, MoveCategory.SPECIAL, 60, 100, 15, 30, 0, 8) + new AttackMove(Moves.INFERNAL_PARADE, PokemonType.GHOST, MoveCategory.SPECIAL, 60, 100, 15, 30, 0, 8) .attr(StatusEffectAttr, StatusEffect.BURN) .attr(MovePowerMultiplierAttr, (user, target, move) => target.status ? 2 : 1), - new AttackMove(Moves.CEASELESS_EDGE, Type.DARK, MoveCategory.PHYSICAL, 65, 90, 15, 100, 0, 8) + new AttackMove(Moves.CEASELESS_EDGE, PokemonType.DARK, MoveCategory.PHYSICAL, 65, 90, 15, 100, 0, 8) .attr(AddArenaTrapTagHitAttr, ArenaTagType.SPIKES) .slicingMove(), - new AttackMove(Moves.BLEAKWIND_STORM, Type.FLYING, MoveCategory.SPECIAL, 100, 80, 10, 30, 0, 8) + new AttackMove(Moves.BLEAKWIND_STORM, PokemonType.FLYING, MoveCategory.SPECIAL, 100, 80, 10, 30, 0, 8) .attr(StormAccuracyAttr) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.WILDBOLT_STORM, Type.ELECTRIC, MoveCategory.SPECIAL, 100, 80, 10, 20, 0, 8) + new AttackMove(Moves.WILDBOLT_STORM, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 100, 80, 10, 20, 0, 8) .attr(StormAccuracyAttr) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.SANDSEAR_STORM, Type.GROUND, MoveCategory.SPECIAL, 100, 80, 10, 20, 0, 8) + new AttackMove(Moves.SANDSEAR_STORM, PokemonType.GROUND, MoveCategory.SPECIAL, 100, 80, 10, 20, 0, 8) .attr(StormAccuracyAttr) .attr(StatusEffectAttr, StatusEffect.BURN) .windMove() .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.LUNAR_BLESSING, Type.PSYCHIC, -1, 5, -1, 0, 8) + new StatusMove(Moves.LUNAR_BLESSING, PokemonType.PSYCHIC, -1, 5, -1, 0, 8) .attr(HealAttr, 0.25, true, false) .attr(HealStatusEffectAttr, false, getNonVolatileStatusEffects()) .target(MoveTarget.USER_AND_ALLIES) .triageMove(), - new SelfStatusMove(Moves.TAKE_HEART, Type.PSYCHIC, -1, 10, -1, 0, 8) + new SelfStatusMove(Moves.TAKE_HEART, PokemonType.PSYCHIC, -1, 10, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF ], 1, true) .attr(HealStatusEffectAttr, true, [ StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN, StatusEffect.SLEEP ]), /* Unused - new AttackMove(Moves.G_MAX_WILDFIRE, Type.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.G_MAX_WILDFIRE, PokemonType.Fire, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), new AttackMove(Moves.G_MAX_BEFUDDLE, Type.BUG, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) @@ -11259,7 +10890,7 @@ export function initMoves() { new AttackMove(Moves.G_MAX_FOAM_BURST, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_CENTIFERNO, Type.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.G_MAX_CENTIFERNO, PokemonType.Fire, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), new AttackMove(Moves.G_MAX_VINE_LASH, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) @@ -11271,7 +10902,7 @@ export function initMoves() { new AttackMove(Moves.G_MAX_DRUM_SOLO, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), - new AttackMove(Moves.G_MAX_FIREBALL, Type.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) + new AttackMove(Moves.G_MAX_FIREBALL, PokemonType.Fire, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), new AttackMove(Moves.G_MAX_HYDROSNIPE, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) @@ -11284,56 +10915,56 @@ export function initMoves() { .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), End Unused */ - new AttackMove(Moves.TERA_BLAST, Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 9) + new AttackMove(Moves.TERA_BLAST, PokemonType.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 9) .attr(TeraMoveCategoryAttr) .attr(TeraBlastTypeAttr) .attr(TeraBlastPowerAttr) - .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, true, { condition: (user, target, move) => user.isTerastallized && user.isOfType(Type.STELLAR) }), - new SelfStatusMove(Moves.SILK_TRAP, Type.BUG, -1, 10, -1, 4, 9) + .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, true, { condition: (user, target, move) => user.isTerastallized && user.isOfType(PokemonType.STELLAR) }), + new SelfStatusMove(Moves.SILK_TRAP, PokemonType.BUG, -1, 10, -1, 4, 9) .attr(ProtectAttr, BattlerTagType.SILK_TRAP) .condition(failIfLastCondition), - new AttackMove(Moves.AXE_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 90, 10, 30, 0, 9) + new AttackMove(Moves.AXE_KICK, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 120, 90, 10, 30, 0, 9) .attr(MissEffectAttr, crashDamageFunc) .attr(NoEffectAttr, crashDamageFunc) .attr(ConfuseAttr) .recklessMove(), - new AttackMove(Moves.LAST_RESPECTS, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) + new AttackMove(Moves.LAST_RESPECTS, PokemonType.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => 1 + Math.min(user.isPlayer() ? globalScene.arena.playerFaints : globalScene.currentBattle.enemyFaints, 100)) .makesContact(false), - new AttackMove(Moves.LUMINA_CRASH, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) + new AttackMove(Moves.LUMINA_CRASH, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2), - new AttackMove(Moves.ORDER_UP, Type.DRAGON, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 9) + new AttackMove(Moves.ORDER_UP, PokemonType.DRAGON, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 9) .attr(OrderUpStatBoostAttr) .makesContact(false), - new AttackMove(Moves.JET_PUNCH, Type.WATER, MoveCategory.PHYSICAL, 60, 100, 15, -1, 1, 9) + new AttackMove(Moves.JET_PUNCH, PokemonType.WATER, MoveCategory.PHYSICAL, 60, 100, 15, -1, 1, 9) .punchingMove(), - new StatusMove(Moves.SPICY_EXTRACT, Type.GRASS, -1, 15, -1, 0, 9) + new StatusMove(Moves.SPICY_EXTRACT, PokemonType.GRASS, -1, 15, -1, 0, 9) .attr(StatStageChangeAttr, [ Stat.ATK ], 2) .attr(StatStageChangeAttr, [ Stat.DEF ], -2), - new AttackMove(Moves.SPIN_OUT, Type.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) + new AttackMove(Moves.SPIN_OUT, PokemonType.STEEL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPD ], -2, true), - new AttackMove(Moves.POPULATION_BOMB, Type.NORMAL, MoveCategory.PHYSICAL, 20, 90, 10, -1, 0, 9) + new AttackMove(Moves.POPULATION_BOMB, PokemonType.NORMAL, MoveCategory.PHYSICAL, 20, 90, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._10) .slicingMove() .checkAllHits(), - new AttackMove(Moves.ICE_SPINNER, Type.ICE, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 9) + new AttackMove(Moves.ICE_SPINNER, PokemonType.ICE, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 9) .attr(ClearTerrainAttr), - new AttackMove(Moves.GLAIVE_RUSH, Type.DRAGON, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 9) + new AttackMove(Moves.GLAIVE_RUSH, PokemonType.DRAGON, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 9) .attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_GET_HIT, true, false, 0, 0, true) .attr(AddBattlerTagAttr, BattlerTagType.RECEIVE_DOUBLE_DAMAGE, true, false, 0, 0, true) .condition((user, target, move) => { return !(target.getTag(BattlerTagType.PROTECTED)?.tagType === "PROTECTED" || globalScene.arena.getTag(ArenaTagType.MAT_BLOCK)?.tagType === "MAT_BLOCK"); }), - new StatusMove(Moves.REVIVAL_BLESSING, Type.NORMAL, -1, 1, -1, 0, 9) + new StatusMove(Moves.REVIVAL_BLESSING, PokemonType.NORMAL, -1, 1, -1, 0, 9) .triageMove() .attr(RevivalBlessingAttr) .target(MoveTarget.USER), - new AttackMove(Moves.SALT_CURE, Type.ROCK, MoveCategory.PHYSICAL, 40, 100, 15, 100, 0, 9) + new AttackMove(Moves.SALT_CURE, PokemonType.ROCK, MoveCategory.PHYSICAL, 40, 100, 15, 100, 0, 9) .attr(AddBattlerTagAttr, BattlerTagType.SALT_CURED) .makesContact(false), - new AttackMove(Moves.TRIPLE_DIVE, Type.WATER, MoveCategory.PHYSICAL, 30, 95, 10, -1, 0, 9) + new AttackMove(Moves.TRIPLE_DIVE, PokemonType.WATER, MoveCategory.PHYSICAL, 30, 95, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._3), - new AttackMove(Moves.MORTAL_SPIN, Type.POISON, MoveCategory.PHYSICAL, 30, 100, 15, 100, 0, 9) + new AttackMove(Moves.MORTAL_SPIN, PokemonType.POISON, MoveCategory.PHYSICAL, 30, 100, 15, 100, 0, 9) .attr(LapseBattlerTagAttr, [ BattlerTagType.BIND, BattlerTagType.WRAP, @@ -11350,176 +10981,176 @@ export function initMoves() { .attr(StatusEffectAttr, StatusEffect.POISON) .attr(RemoveArenaTrapAttr) .target(MoveTarget.ALL_NEAR_ENEMIES), - new StatusMove(Moves.DOODLE, Type.NORMAL, 100, 10, -1, 0, 9) + new StatusMove(Moves.DOODLE, PokemonType.NORMAL, 100, 10, -1, 0, 9) .attr(AbilityCopyAttr, true), - new SelfStatusMove(Moves.FILLET_AWAY, Type.NORMAL, -1, 10, -1, 0, 9) + new SelfStatusMove(Moves.FILLET_AWAY, PokemonType.NORMAL, -1, 10, -1, 0, 9) .attr(CutHpStatStageBoostAttr, [ Stat.ATK, Stat.SPATK, Stat.SPD ], 2, 2), - new AttackMove(Moves.KOWTOW_CLEAVE, Type.DARK, MoveCategory.PHYSICAL, 85, -1, 10, -1, 0, 9) + new AttackMove(Moves.KOWTOW_CLEAVE, PokemonType.DARK, MoveCategory.PHYSICAL, 85, -1, 10, -1, 0, 9) .slicingMove(), - new AttackMove(Moves.FLOWER_TRICK, Type.GRASS, MoveCategory.PHYSICAL, 70, -1, 10, 100, 0, 9) + new AttackMove(Moves.FLOWER_TRICK, PokemonType.GRASS, MoveCategory.PHYSICAL, 70, -1, 10, 100, 0, 9) .attr(CritOnlyAttr) .makesContact(false), - new AttackMove(Moves.TORCH_SONG, Type.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) + new AttackMove(Moves.TORCH_SONG, PokemonType.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPATK ], 1, true) .soundBased(), - new AttackMove(Moves.AQUA_STEP, Type.WATER, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 9) + new AttackMove(Moves.AQUA_STEP, PokemonType.WATER, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true) .danceMove(), - new AttackMove(Moves.RAGING_BULL, Type.NORMAL, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 9) + new AttackMove(Moves.RAGING_BULL, PokemonType.NORMAL, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 9) .attr(RagingBullTypeAttr) .attr(RemoveScreensAttr), - new AttackMove(Moves.MAKE_IT_RAIN, Type.STEEL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) + new AttackMove(Moves.MAKE_IT_RAIN, PokemonType.STEEL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) .attr(MoneyAttr) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1, true, { firstTargetOnly: true }) .target(MoveTarget.ALL_NEAR_ENEMIES), - new AttackMove(Moves.PSYBLADE, Type.PSYCHIC, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 9) + new AttackMove(Moves.PSYBLADE, PokemonType.PSYCHIC, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.ELECTRIC && user.isGrounded() ? 1.5 : 1) .slicingMove(), - new AttackMove(Moves.HYDRO_STEAM, Type.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 9) + new AttackMove(Moves.HYDRO_STEAM, PokemonType.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 9) .attr(IgnoreWeatherTypeDebuffAttr, WeatherType.SUNNY) .attr(MovePowerMultiplierAttr, (user, target, move) => [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(globalScene.arena.weather?.weatherType!) && !globalScene.arena.weather?.isEffectSuppressed() ? 1.5 : 1), // TODO: is this bang correct? - new AttackMove(Moves.RUINATION, Type.DARK, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 9) + new AttackMove(Moves.RUINATION, PokemonType.DARK, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 9) .attr(TargetHalfHpDamageAttr), - new AttackMove(Moves.COLLISION_COURSE, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) + new AttackMove(Moves.COLLISION_COURSE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2 ? 5461 / 4096 : 1), - new AttackMove(Moves.ELECTRO_DRIFT, Type.ELECTRIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 9) + new AttackMove(Moves.ELECTRO_DRIFT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2 ? 5461 / 4096 : 1) .makesContact(), - new SelfStatusMove(Moves.SHED_TAIL, Type.NORMAL, -1, 10, -1, 0, 9) + new SelfStatusMove(Moves.SHED_TAIL, PokemonType.NORMAL, -1, 10, -1, 0, 9) .attr(AddSubstituteAttr, 0.5, true) .attr(ForceSwitchOutAttr, true, SwitchType.SHED_TAIL) .condition(failIfLastInPartyCondition), - new SelfStatusMove(Moves.CHILLY_RECEPTION, Type.ICE, -1, 10, -1, 0, 9) + new SelfStatusMove(Moves.CHILLY_RECEPTION, PokemonType.ICE, -1, 10, -1, 0, 9) .attr(PreMoveMessageAttr, (user, move) => i18next.t("moveTriggers:chillyReception", { pokemonName: getPokemonNameWithAffix(user) })) .attr(ChillyReceptionAttr, true), - new SelfStatusMove(Moves.TIDY_UP, Type.NORMAL, -1, 10, -1, 0, 9) + new SelfStatusMove(Moves.TIDY_UP, PokemonType.NORMAL, -1, 10, -1, 0, 9) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPD ], 1, true) .attr(RemoveArenaTrapAttr, true) .attr(RemoveAllSubstitutesAttr), - new StatusMove(Moves.SNOWSCAPE, Type.ICE, -1, 10, -1, 0, 9) + new StatusMove(Moves.SNOWSCAPE, PokemonType.ICE, -1, 10, -1, 0, 9) .attr(WeatherChangeAttr, WeatherType.SNOW) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.POUNCE, Type.BUG, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 9) + new AttackMove(Moves.POUNCE, PokemonType.BUG, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), - new AttackMove(Moves.TRAILBLAZE, Type.GRASS, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 9) + new AttackMove(Moves.TRAILBLAZE, PokemonType.GRASS, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true), - new AttackMove(Moves.CHILLING_WATER, Type.WATER, MoveCategory.SPECIAL, 50, 100, 20, 100, 0, 9) + new AttackMove(Moves.CHILLING_WATER, PokemonType.WATER, MoveCategory.SPECIAL, 50, 100, 20, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.ATK ], -1), - new AttackMove(Moves.HYPER_DRILL, Type.NORMAL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) + new AttackMove(Moves.HYPER_DRILL, PokemonType.NORMAL, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) .ignoresProtect(), - new AttackMove(Moves.TWIN_BEAM, Type.PSYCHIC, MoveCategory.SPECIAL, 40, 100, 10, -1, 0, 9) + new AttackMove(Moves.TWIN_BEAM, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 40, 100, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._2), - new AttackMove(Moves.RAGE_FIST, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) + new AttackMove(Moves.RAGE_FIST, PokemonType.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) .edgeCase() // Counter incorrectly increases on confusion self-hits .attr(RageFistPowerAttr) .punchingMove(), - new AttackMove(Moves.ARMOR_CANNON, Type.FIRE, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) + new AttackMove(Moves.ARMOR_CANNON, PokemonType.FIRE, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), - new AttackMove(Moves.BITTER_BLADE, Type.FIRE, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 9) + new AttackMove(Moves.BITTER_BLADE, PokemonType.FIRE, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 9) .attr(HitHealAttr) .slicingMove() .triageMove(), - new AttackMove(Moves.DOUBLE_SHOCK, Type.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 9) + new AttackMove(Moves.DOUBLE_SHOCK, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 9) .condition((user) => { const userTypes = user.getTypes(true); - return userTypes.includes(Type.ELECTRIC); + return userTypes.includes(PokemonType.ELECTRIC); }) .attr(AddBattlerTagAttr, BattlerTagType.DOUBLE_SHOCKED, true, false) - .attr(RemoveTypeAttr, Type.ELECTRIC, (user) => { + .attr(RemoveTypeAttr, PokemonType.ELECTRIC, (user) => { globalScene.queueMessage(i18next.t("moveTriggers:usedUpAllElectricity", { pokemonName: getPokemonNameWithAffix(user) })); }), - new AttackMove(Moves.GIGATON_HAMMER, Type.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9) + new AttackMove(Moves.GIGATON_HAMMER, PokemonType.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9) .makesContact(false) .condition((user, target, move) => { const turnMove = user.getLastXMoves(1); return !turnMove.length || turnMove[0].move !== move.id || turnMove[0].result !== MoveResult.SUCCESS; }), // TODO Add Instruct/Encore interaction - new AttackMove(Moves.COMEUPPANCE, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9) + new AttackMove(Moves.COMEUPPANCE, PokemonType.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9) .attr(CounterDamageAttr, (move: Move) => (move.category === MoveCategory.PHYSICAL || move.category === MoveCategory.SPECIAL), 1.5) .redirectCounter() .target(MoveTarget.ATTACKER), - new AttackMove(Moves.AQUA_CUTTER, Type.WATER, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 9) + new AttackMove(Moves.AQUA_CUTTER, PokemonType.WATER, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 9) .attr(HighCritAttr) .slicingMove() .makesContact(false), - new AttackMove(Moves.BLAZING_TORQUE, Type.FIRE, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 9) + new AttackMove(Moves.BLAZING_TORQUE, PokemonType.FIRE, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 9) .attr(StatusEffectAttr, StatusEffect.BURN) .makesContact(false), - new AttackMove(Moves.WICKED_TORQUE, Type.DARK, MoveCategory.PHYSICAL, 80, 100, 10, 10, 0, 9) + new AttackMove(Moves.WICKED_TORQUE, PokemonType.DARK, MoveCategory.PHYSICAL, 80, 100, 10, 10, 0, 9) .attr(StatusEffectAttr, StatusEffect.SLEEP) .makesContact(false), - new AttackMove(Moves.NOXIOUS_TORQUE, Type.POISON, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) + new AttackMove(Moves.NOXIOUS_TORQUE, PokemonType.POISON, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) .attr(StatusEffectAttr, StatusEffect.POISON) .makesContact(false), - new AttackMove(Moves.COMBAT_TORQUE, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) + new AttackMove(Moves.COMBAT_TORQUE, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) .makesContact(false), - new AttackMove(Moves.MAGICAL_TORQUE, Type.FAIRY, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) + new AttackMove(Moves.MAGICAL_TORQUE, PokemonType.FAIRY, MoveCategory.PHYSICAL, 100, 100, 10, 30, 0, 9) .attr(ConfuseAttr) .makesContact(false), - new AttackMove(Moves.BLOOD_MOON, Type.NORMAL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 9) + new AttackMove(Moves.BLOOD_MOON, PokemonType.NORMAL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 9) .condition((user, target, move) => { const turnMove = user.getLastXMoves(1); return !turnMove.length || turnMove[0].move !== move.id || turnMove[0].result !== MoveResult.SUCCESS; }), // TODO Add Instruct/Encore interaction - new AttackMove(Moves.MATCHA_GOTCHA, Type.GRASS, MoveCategory.SPECIAL, 80, 90, 15, 20, 0, 9) + new AttackMove(Moves.MATCHA_GOTCHA, PokemonType.GRASS, MoveCategory.SPECIAL, 80, 90, 15, 20, 0, 9) .attr(HitHealAttr) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(HealStatusEffectAttr, false, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) .target(MoveTarget.ALL_NEAR_ENEMIES) .triageMove(), - new AttackMove(Moves.SYRUP_BOMB, Type.GRASS, MoveCategory.SPECIAL, 60, 85, 10, -1, 0, 9) + new AttackMove(Moves.SYRUP_BOMB, PokemonType.GRASS, MoveCategory.SPECIAL, 60, 85, 10, -1, 0, 9) .attr(AddBattlerTagAttr, BattlerTagType.SYRUP_BOMB, false, false, 3) .ballBombMove(), - new AttackMove(Moves.IVY_CUDGEL, Type.GRASS, MoveCategory.PHYSICAL, 100, 100, 10, -1, 0, 9) + new AttackMove(Moves.IVY_CUDGEL, PokemonType.GRASS, MoveCategory.PHYSICAL, 100, 100, 10, -1, 0, 9) .attr(IvyCudgelTypeAttr) .attr(HighCritAttr) .makesContact(false), - new ChargingAttackMove(Moves.ELECTRO_SHOT, Type.ELECTRIC, MoveCategory.SPECIAL, 130, 100, 10, 100, 0, 9) + new ChargingAttackMove(Moves.ELECTRO_SHOT, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 130, 100, 10, 100, 0, 9) .chargeText(i18next.t("moveTriggers:absorbedElectricity", { pokemonName: "{USER}" })) .chargeAttr(StatStageChangeAttr, [ Stat.SPATK ], 1, true) .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), - new AttackMove(Moves.TERA_STARSTORM, Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) + new AttackMove(Moves.TERA_STARSTORM, PokemonType.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) .attr(TeraMoveCategoryAttr) .attr(TeraStarstormTypeAttr) .attr(VariableTargetAttr, (user, target, move) => user.hasSpecies(Species.TERAPAGOS) && user.isTerastallized ? MoveTarget.ALL_NEAR_ENEMIES : MoveTarget.NEAR_OTHER) .partial(), /** Does not ignore abilities that affect stats, relevant in determining the move's category {@see TeraMoveCategoryAttr} */ - new AttackMove(Moves.FICKLE_BEAM, Type.DRAGON, MoveCategory.SPECIAL, 80, 100, 5, 30, 0, 9) + new AttackMove(Moves.FICKLE_BEAM, PokemonType.DRAGON, MoveCategory.SPECIAL, 80, 100, 5, 30, 0, 9) .attr(PreMoveMessageAttr, doublePowerChanceMessageFunc) .attr(DoublePowerChanceAttr), - new SelfStatusMove(Moves.BURNING_BULWARK, Type.FIRE, -1, 10, -1, 4, 9) + new SelfStatusMove(Moves.BURNING_BULWARK, PokemonType.FIRE, -1, 10, -1, 4, 9) .attr(ProtectAttr, BattlerTagType.BURNING_BULWARK) .condition(failIfLastCondition), - new AttackMove(Moves.THUNDERCLAP, Type.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 5, -1, 1, 9) + new AttackMove(Moves.THUNDERCLAP, PokemonType.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 5, -1, 1, 9) .condition((user, target, move) => globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.FIGHT && !target.turnData.acted && allMoves[globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.move?.move!].category !== MoveCategory.STATUS), // TODO: is this bang correct? - new AttackMove(Moves.MIGHTY_CLEAVE, Type.ROCK, MoveCategory.PHYSICAL, 95, 100, 5, -1, 0, 9) + new AttackMove(Moves.MIGHTY_CLEAVE, PokemonType.ROCK, MoveCategory.PHYSICAL, 95, 100, 5, -1, 0, 9) .slicingMove() .ignoresProtect(), - new AttackMove(Moves.TACHYON_CUTTER, Type.STEEL, MoveCategory.SPECIAL, 50, -1, 10, -1, 0, 9) + new AttackMove(Moves.TACHYON_CUTTER, PokemonType.STEEL, MoveCategory.SPECIAL, 50, -1, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._2) .slicingMove(), - new AttackMove(Moves.HARD_PRESS, Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9) + new AttackMove(Moves.HARD_PRESS, PokemonType.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9) .attr(OpponentHighHpPowerAttr, 100), - new StatusMove(Moves.DRAGON_CHEER, Type.DRAGON, -1, 15, -1, 0, 9) + new StatusMove(Moves.DRAGON_CHEER, PokemonType.DRAGON, -1, 15, -1, 0, 9) .attr(AddBattlerTagAttr, BattlerTagType.DRAGON_CHEER, false, true) .target(MoveTarget.NEAR_ALLY), - new AttackMove(Moves.ALLURING_VOICE, Type.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 9) + new AttackMove(Moves.ALLURING_VOICE, PokemonType.FAIRY, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 9) .attr(AddBattlerTagIfBoostedAttr, BattlerTagType.CONFUSED) .soundBased(), - new AttackMove(Moves.TEMPER_FLARE, Type.FIRE, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 9) + new AttackMove(Moves.TEMPER_FLARE, PokemonType.FIRE, MoveCategory.PHYSICAL, 75, 100, 10, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => user.getLastXMoves(2)[1]?.result === MoveResult.MISS || user.getLastXMoves(2)[1]?.result === MoveResult.FAIL ? 2 : 1), - new AttackMove(Moves.SUPERCELL_SLAM, Type.ELECTRIC, MoveCategory.PHYSICAL, 100, 95, 15, -1, 0, 9) + new AttackMove(Moves.SUPERCELL_SLAM, PokemonType.ELECTRIC, MoveCategory.PHYSICAL, 100, 95, 15, -1, 0, 9) .attr(MissEffectAttr, crashDamageFunc) .attr(NoEffectAttr, crashDamageFunc) .recklessMove(), - new AttackMove(Moves.PSYCHIC_NOISE, Type.PSYCHIC, MoveCategory.SPECIAL, 75, 100, 10, -1, 0, 9) + new AttackMove(Moves.PSYCHIC_NOISE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 75, 100, 10, -1, 0, 9) .soundBased() .attr(AddBattlerTagAttr, BattlerTagType.HEAL_BLOCK, false, false, 2), - new AttackMove(Moves.UPPER_HAND, Type.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 15, 100, 3, 9) + new AttackMove(Moves.UPPER_HAND, PokemonType.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 15, 100, 3, 9) .attr(FlinchAttr) .condition(new UpperHandCondition()), - new AttackMove(Moves.MALIGNANT_CHAIN, Type.POISON, MoveCategory.SPECIAL, 100, 100, 5, 50, 0, 9) + new AttackMove(Moves.MALIGNANT_CHAIN, PokemonType.POISON, MoveCategory.SPECIAL, 100, 100, 5, 50, 0, 9) .attr(StatusEffectAttr, StatusEffect.TOXIC) ); allMoves.map(m => { diff --git a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts index 209cc7a7ec5..9a95cf305be 100644 --- a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts +++ b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts @@ -41,7 +41,7 @@ import { HeldItemRequirement, TypeRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import type { AttackTypeBoosterModifierType, ModifierTypeOption } from "#app/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type"; import type { @@ -56,7 +56,7 @@ import { } from "#app/modifier/modifier"; import i18next from "i18next"; import MoveInfoOverlay from "#app/ui/move-info-overlay"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; @@ -205,8 +205,8 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = CombinationPokemonRequirement.Some( // Must have at least 1 Bug type on team, OR have a bug item somewhere on the team new HeldItemRequirement([ "BypassSpeedChanceModifier", "ContactHeldItemTransferChanceModifier" ], 1), - new AttackTypeBoosterHeldItemTypeRequirement(Type.BUG, 1), - new TypeRequirement(Type.BUG, false, 1) + new AttackTypeBoosterHeldItemTypeRequirement(PokemonType.BUG, 1), + new TypeRequirement(PokemonType.BUG, false, 1) ) ) .withMaxAllowedEncounters(1) @@ -280,7 +280,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = const requiredItems = [ generateModifierType(modifierTypes.QUICK_CLAW), generateModifierType(modifierTypes.GRIP_CLAW), - generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.BUG ]), + generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ PokemonType.BUG ]), ]; const requiredItemString = requiredItems.map(m => m?.name ?? "unknown").join("/"); @@ -328,7 +328,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = ) .withOption(MysteryEncounterOptionBuilder .newOptionWithMode(MysteryEncounterOptionMode.DISABLED_OR_DEFAULT) - .withPrimaryPokemonRequirement(new TypeRequirement(Type.BUG, false, 1)) // Must have 1 Bug type on team + .withPrimaryPokemonRequirement(new TypeRequirement(PokemonType.BUG, false, 1)) // Must have 1 Bug type on team .withDialogue({ buttonLabel: `${namespace}:option.2.label`, buttonTooltip: `${namespace}:option.2.tooltip`, @@ -339,7 +339,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = const encounter = globalScene.currentBattle.mysteryEncounter!; // Player gets different rewards depending on the number of bug types they have - const numBugTypes = globalScene.getPlayerParty().filter(p => p.isOfType(Type.BUG, true)).length; + const numBugTypes = globalScene.getPlayerParty().filter(p => p.isOfType(PokemonType.BUG, true)).length; const numBugTypesText = i18next.t(`${namespace}:numBugTypes`, { count: numBugTypes }); encounter.setDialogueToken("numBugTypes", numBugTypesText); @@ -419,7 +419,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = CombinationPokemonRequirement.Some( // Meets one or both of the below reqs new HeldItemRequirement([ "BypassSpeedChanceModifier", "ContactHeldItemTransferChanceModifier" ], 1), - new AttackTypeBoosterHeldItemTypeRequirement(Type.BUG, 1) + new AttackTypeBoosterHeldItemTypeRequirement(PokemonType.BUG, 1) ) ) .withDialogue({ @@ -445,7 +445,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = const validItems = pokemon.getHeldItems().filter(item => { return (item instanceof BypassSpeedChanceModifier || item instanceof ContactHeldItemTransferChanceModifier || - (item instanceof AttackTypeBoosterModifier && (item.type as AttackTypeBoosterModifierType).moveType === Type.BUG)) && + (item instanceof AttackTypeBoosterModifier && (item.type as AttackTypeBoosterModifierType).moveType === PokemonType.BUG)) && item.isTransferable; }); @@ -471,7 +471,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = const hasValidItem = pokemon.getHeldItems().some(item => { return item instanceof BypassSpeedChanceModifier || item instanceof ContactHeldItemTransferChanceModifier || - (item instanceof AttackTypeBoosterModifier && (item.type as AttackTypeBoosterModifierType).moveType === Type.BUG); + (item instanceof AttackTypeBoosterModifier && (item.type as AttackTypeBoosterModifierType).moveType === PokemonType.BUG); }); if (!hasValidItem) { return getEncounterText(`${namespace}:option.3.invalid_selection`) ?? null; diff --git a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts index e660b0b873c..c9fc7975a3f 100644 --- a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts +++ b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts @@ -15,7 +15,7 @@ import { TrainerType } from "#enums/trainer-type"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Abilities } from "#enums/abilities"; import { applyAbilityOverrideToPokemon, applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { randSeedInt, randSeedShuffle } from "#app/utils"; @@ -31,7 +31,7 @@ import { BerryType } from "#enums/berry-type"; import { BattlerIndex } from "#app/battle"; import { Moves } from "#enums/moves"; import { EncounterBattleAnim } from "#app/data/battle-anims"; -import { MoveCategory } from "#app/data/move"; +import { MoveCategory } from "#enums/MoveCategory"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import { EncounterAnim } from "#enums/encounter-anims"; @@ -354,13 +354,13 @@ export const ClowningAroundEncounter: MysteryEncounter = priorityTypes = randSeedShuffle(priorityTypes); } - const newTypes = [ Type.UNKNOWN ]; - let secondType: Type | null = null; + const newTypes = [ PokemonType.UNKNOWN ]; + let secondType: PokemonType | null = null; while (secondType === null || secondType === newTypes[0] || originalTypes.includes(secondType)) { if (priorityTypes.length > 0) { secondType = priorityTypes.pop() ?? null; } else { - secondType = randSeedInt(18) as Type; + secondType = randSeedInt(18) as PokemonType; } } newTypes.push(secondType); diff --git a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts index 3b6ab8b0c05..6e55566fe8a 100644 --- a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts +++ b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts @@ -1,4 +1,4 @@ -import type { Type } from "#enums/type"; +import type { PokemonType } from "#enums/pokemon-type"; import { isNullOrUndefined, randSeedInt } from "#app/utils"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; @@ -166,10 +166,10 @@ export const DarkDealEncounter: MysteryEncounter = // Start encounter with random legendary (7-10 starter strength) that has level additive // If this is a mono-type challenge, always ensure the required type is filtered for - let bossTypes: Type[] = encounter.misc.removedTypes; + let bossTypes: PokemonType[] = encounter.misc.removedTypes; const singleTypeChallenges = globalScene.gameMode.challenges.filter(c => c.value && c.id === Challenges.SINGLE_TYPE); if (globalScene.gameMode.isChallenge && singleTypeChallenges.length > 0) { - bossTypes = singleTypeChallenges.map(c => (c.value - 1) as Type); + bossTypes = singleTypeChallenges.map(c => (c.value - 1) as PokemonType); } const bossModifiers: PokemonHeldItemModifier[] = encounter.misc.modifiers; diff --git a/src/data/mystery-encounters/encounters/field-trip-encounter.ts b/src/data/mystery-encounters/encounters/field-trip-encounter.ts index 8bb5c68eec0..0e5d6ff87bc 100644 --- a/src/data/mystery-encounters/encounters/field-trip-encounter.ts +++ b/src/data/mystery-encounters/encounters/field-trip-encounter.ts @@ -1,4 +1,4 @@ -import { MoveCategory } from "#app/data/move"; +import { MoveCategory } from "#enums/MoveCategory"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { generateModifierTypeOption, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterExp, setEncounterRewards } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import type { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; diff --git a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts index c52540584b3..1f425dc9ea9 100644 --- a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts +++ b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts @@ -11,7 +11,7 @@ import { AbilityRequirement, CombinationPokemonRequirement, TypeRequirement } fr import { Species } from "#enums/species"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Gender } from "#app/data/gender"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { BattlerIndex } from "#app/battle"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; @@ -188,7 +188,7 @@ export const FieryFalloutEncounter: MysteryEncounter = async () => { // Damage non-fire types and burn 1 random non-fire type member + give it Heatproof const encounter = globalScene.currentBattle.mysteryEncounter!; - const nonFireTypes = globalScene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.getTypes().includes(Type.FIRE)); + const nonFireTypes = globalScene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.getTypes().includes(PokemonType.FIRE)); for (const pkm of nonFireTypes) { const percentage = DAMAGE_PERCENTAGE / 100; @@ -221,7 +221,7 @@ export const FieryFalloutEncounter: MysteryEncounter = .newOptionWithMode(MysteryEncounterOptionMode.DISABLED_OR_SPECIAL) .withPrimaryPokemonRequirement( CombinationPokemonRequirement.Some( - new TypeRequirement(Type.FIRE, true, 1), + new TypeRequirement(PokemonType.FIRE, true, 1), new AbilityRequirement(FIRE_RESISTANT_ABILITIES, true) ) ) // Will set option3PrimaryName dialogue token automatically @@ -266,7 +266,7 @@ function giveLeadPokemonAttackTypeBoostItem() { // Generate type booster held item, default to Charcoal if item fails to generate let boosterModifierType = generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER) as AttackTypeBoosterModifierType; if (!boosterModifierType) { - boosterModifierType = generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.FIRE ]) as AttackTypeBoosterModifierType; + boosterModifierType = generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ PokemonType.FIRE ]) as AttackTypeBoosterModifierType; } applyModifierTypeToPlayerPokemon(leadPokemon, boosterModifierType); diff --git a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts index 16015c80fc8..57e6fec91bb 100644 --- a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts +++ b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts @@ -15,7 +15,7 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { Biome } from "#enums/biome"; import { getBiomeKey } from "#app/field/arena"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { getPartyLuckValue, modifierTypes } from "#app/modifier/modifier-type"; import { TrainerSlot } from "#app/data/trainer-config"; import { BattlerTagType } from "#enums/battler-tag-type"; @@ -30,7 +30,7 @@ const namespace = "mysteryEncounters/teleportingHijinks"; const MONEY_COST_MULTIPLIER = 1.75; const BIOME_CANDIDATES = [ Biome.SPACE, Biome.FAIRY_CAVE, Biome.LABORATORY, Biome.ISLAND, Biome.WASTELAND, Biome.DOJO ]; -const MACHINE_INTERFACING_TYPES = [ Type.ELECTRIC, Type.STEEL ]; +const MACHINE_INTERFACING_TYPES = [ PokemonType.ELECTRIC, PokemonType.STEEL ]; /** * Teleporting Hijinks encounter. @@ -149,8 +149,8 @@ export const TeleportingHijinksEncounter: MysteryEncounter = }], }; - const magnet = generateModifierTypeOption(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.STEEL ])!; - const metalCoat = generateModifierTypeOption(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.ELECTRIC ])!; + const magnet = generateModifierTypeOption(modifierTypes.ATTACK_TYPE_BOOSTER, [ PokemonType.STEEL ])!; + const metalCoat = generateModifierTypeOption(modifierTypes.ATTACK_TYPE_BOOSTER, [ PokemonType.ELECTRIC ])!; setEncounterRewards({ guaranteedModifierTypeOptions: [ magnet, metalCoat ], fillRemaining: true }); await transitionMysteryEncounterIntroVisuals(true, true); await initBattleWithEnemyConfig(config); diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index a4e80c158bb..802296bfd98 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -24,7 +24,7 @@ import { EggTier } from "#enums/egg-type"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { getPokeballTintColor } from "#app/data/pokeball"; import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; @@ -386,7 +386,7 @@ function getPartyConfig(): EnemyPartyConfig { nature: Nature.ADAMANT, moveSet: [ Moves.METEOR_MASH, Moves.FIRE_PUNCH, Moves.ICE_PUNCH, Moves.THUNDER_PUNCH ], ivs: [ 31, 31, 31, 31, 31, 31 ], - tera: Type.STEEL, + tera: PokemonType.STEEL, } ] }; diff --git a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts index 7d3f6f4c5bc..c1a74f67c49 100644 --- a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts @@ -13,7 +13,7 @@ import { Abilities } from "#enums/abilities"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Moves } from "#enums/moves"; import { Nature } from "#enums/nature"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { BerryType } from "#enums/berry-type"; import { Stat } from "#enums/stat"; import { SpeciesFormChangeAbilityTrigger } from "#app/data/pokemon-forms"; @@ -303,12 +303,12 @@ function getVictoriaTrainerConfig(): EnemyPartyConfig { moveSet: [ Moves.PSYSHOCK, Moves.MOONBLAST, Moves.SHADOW_BALL, Moves.WILL_O_WISP ], modifierConfigs: [ { - modifier: generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.PSYCHIC ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ PokemonType.PSYCHIC ]) as PokemonHeldItemModifierType, stackCount: 1, isTransferable: false }, { - modifier: generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.FAIRY ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ PokemonType.FAIRY ]) as PokemonHeldItemModifierType, stackCount: 1, isTransferable: false } diff --git a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts index 6e6381888f1..6c0219688da 100644 --- a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts +++ b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts @@ -17,7 +17,7 @@ import PokemonData from "#app/system/pokemon-data"; import { isNullOrUndefined, randSeedInt } from "#app/utils"; import type { Moves } from "#enums/moves"; import { BattlerIndex } from "#app/battle"; -import { SelfStatusMove } from "#app/data/move"; +import { SelfStatusMove } from "#app/data/moves/move"; import { PokeballType } from "#enums/pokeball"; import { BattlerTagType } from "#enums/battler-tag-type"; import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; diff --git a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts index 454d179c003..4f9338ac5cc 100644 --- a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts +++ b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts @@ -1,4 +1,4 @@ -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; import { globalScene } from "#app/global-scene"; @@ -528,10 +528,10 @@ async function postProcessTransformedPokemon(previousPokemon: PlayerPokemon, new // Randomize the second type of the pokemon // If the pokemon does not normally have a second type, it will gain 1 - const newTypes = [ Type.UNKNOWN ]; - let newType = randSeedInt(18) as Type; + const newTypes = [ PokemonType.UNKNOWN ]; + let newType = randSeedInt(18) as PokemonType; while (newType === newTypes[0]) { - newType = randSeedInt(18) as Type; + newType = randSeedInt(18) as PokemonType; } newTypes.push(newType); if (!newPokemon.customPokemonData) { diff --git a/src/data/mystery-encounters/mystery-encounter-option.ts b/src/data/mystery-encounters/mystery-encounter-option.ts index d0078b3686e..ce9d4839c49 100644 --- a/src/data/mystery-encounters/mystery-encounter-option.ts +++ b/src/data/mystery-encounters/mystery-encounter-option.ts @@ -3,7 +3,7 @@ import type { Moves } from "#app/enums/moves"; import type { PlayerPokemon } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { globalScene } from "#app/global-scene"; -import type { Type } from "#enums/type"; +import type { PokemonType } from "#enums/pokemon-type"; import { EncounterPokemonRequirement, EncounterSceneRequirement, MoneyRequirement, TypeRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import type { CanLearnMoveRequirementOptions } from "./requirements/can-learn-move-requirement"; import { CanLearnMoveRequirement } from "./requirements/can-learn-move-requirement"; @@ -254,7 +254,7 @@ export class MysteryEncounterOptionBuilder implements Partial pokemon?.getTypes().includes(ty)); if (includedTypes.length > 0) { - return [ "type", Type[includedTypes[0]] ]; + return [ "type", PokemonType[includedTypes[0]] ]; } return [ "type", "" ]; } @@ -878,12 +878,12 @@ export class HeldItemRequirement extends EncounterPokemonRequirement { } export class AttackTypeBoosterHeldItemTypeRequirement extends EncounterPokemonRequirement { - requiredHeldItemTypes: Type[]; + requiredHeldItemTypes: PokemonType[]; minNumberOfPokemon: number; invertQuery: boolean; requireTransferable: boolean; - constructor(heldItemTypes: Type | Type[], minNumberOfPokemon: number = 1, invertQuery: boolean = false, requireTransferable: boolean = true) { + constructor(heldItemTypes: PokemonType | PokemonType[], minNumberOfPokemon: number = 1, invertQuery: boolean = false, requireTransferable: boolean = true) { super(); this.minNumberOfPokemon = minNumberOfPokemon; this.invertQuery = invertQuery; diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index 1f740763148..a6ca236f735 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -46,7 +46,7 @@ import type { Variant } from "#app/data/variant"; import { StatusEffect } from "#enums/status-effect"; import { globalScene } from "#app/global-scene"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Type } from "#app/enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { getNatureName } from "#app/data/nature"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -101,7 +101,7 @@ export interface EnemyPokemonConfig { modifierConfigs?: HeldModifierConfig[]; tags?: BattlerTagType[]; dataSource?: PokemonData; - tera?: Type; + tera?: PokemonType; aiType?: AiType; } @@ -334,7 +334,7 @@ export async function initBattleWithEnemyConfig(partyConfig: EnemyPartyConfig): } // Set tera - if (config.tera && config.tera !== Type.UNKNOWN) { + if (config.tera && config.tera !== PokemonType.UNKNOWN) { enemyPokemon.teraType = config.tera; if (battle.trainer) { battle.trainer.config.setInstantTera(e); diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index be7d11d6cf1..3871b919e62 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -13,7 +13,7 @@ import { Mode } from "#app/ui/ui"; import type { PartyOption } from "#app/ui/party-ui-handler"; import { PartyUiMode } from "#app/ui/party-ui-handler"; import { Species } from "#enums/species"; -import type { Type } from "#enums/type"; +import type { PokemonType } from "#enums/pokemon-type"; import type PokemonSpecies from "#app/data/pokemon-species"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; @@ -209,7 +209,7 @@ export function getHighestStatTotalPlayerPokemon(isAllowed: boolean = false, isF * @param allowMythical * @returns */ -export function getRandomSpeciesByStarterCost(starterTiers: number | [number, number], excludedSpecies?: Species[], types?: Type[], allowSubLegendary: boolean = true, allowLegendary: boolean = true, allowMythical: boolean = true): Species { +export function getRandomSpeciesByStarterCost(starterTiers: number | [number, number], excludedSpecies?: Species[], types?: PokemonType[], allowSubLegendary: boolean = true, allowLegendary: boolean = true, allowMythical: boolean = true): Species { let min = Array.isArray(starterTiers) ? starterTiers[0] : starterTiers; let max = Array.isArray(starterTiers) ? starterTiers[1] : starterTiers; diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index 46dfbfecae2..1192f7f17c1 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -1,7 +1,8 @@ import { PokemonFormChangeItemModifier } from "../modifier/modifier"; import type Pokemon from "../field/pokemon"; import { StatusEffect } from "#enums/status-effect"; -import { MoveCategory, allMoves } from "./move"; +import { allMoves } from "./moves/move"; +import { MoveCategory } from "#enums/MoveCategory"; import type { Constructor, nil } from "#app/utils"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index c9d49f29440..796678a200c 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -14,7 +14,7 @@ import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate } from "#app/data/exp"; import type { EvolutionLevel } from "#app/data/balance/pokemon-evolutions"; import { SpeciesWildEvolutionDelay, pokemonEvolutions, pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; import { pokemonFormLevelMoves, pokemonFormLevelMoves as pokemonSpeciesFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves"; import type { Stat } from "#enums/stat"; @@ -164,8 +164,8 @@ export abstract class PokemonSpeciesForm { public speciesId: Species; protected _formIndex: number; protected _generation: number; - readonly type1: Type; - readonly type2: Type | null; + readonly type1: PokemonType; + readonly type2: PokemonType | null; readonly height: number; readonly weight: number; readonly ability1: Abilities; @@ -179,7 +179,7 @@ export abstract class PokemonSpeciesForm { readonly genderDiffs: boolean; readonly isStarterSelectable: boolean; - constructor(type1: Type, type2: Type | null, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities, + constructor(type1: PokemonType, type2: PokemonType | null, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities, baseTotal: number, baseHp: number, baseAtk: number, baseDef: number, baseSpatk: number, baseSpdef: number, baseSpd: number, catchRate: number, baseFriendship: number, baseExp: number, genderDiffs: boolean, isStarterSelectable: boolean ) { @@ -662,7 +662,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali readonly forms: PokemonForm[]; constructor(id: Species, generation: number, subLegendary: boolean, legendary: boolean, mythical: boolean, species: string, - type1: Type, type2: Type | null, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities, + type1: PokemonType, type2: PokemonType | null, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities, baseTotal: number, baseHp: number, baseAtk: number, baseDef: number, baseSpatk: number, baseSpdef: number, baseSpd: number, catchRate: number, baseFriendship: number, baseExp: number, growthRate: GrowthRate, malePercent: number | null, genderDiffs: boolean, canChangeForm?: boolean, ...forms: PokemonForm[] @@ -1072,7 +1072,7 @@ export class PokemonForm extends PokemonSpeciesForm { // This is a collection of form keys that have in-run form changes, but should still be separately selectable from the start screen private starterSelectableKeys: string[] = [ "10", "50", "10-pc", "50-pc", "red", "orange", "yellow", "green", "blue", "indigo", "violet" ]; - constructor(formName: string, formKey: string, type1: Type, type2: Type | null, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities, + constructor(formName: string, formKey: string, type1: PokemonType, type2: PokemonType | null, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities, baseTotal: number, baseHp: number, baseAtk: number, baseDef: number, baseSpatk: number, baseSpdef: number, baseSpd: number, catchRate: number, baseFriendship: number, baseExp: number, genderDiffs: boolean = false, formSpriteKey: string | null = null, isStarterSelectable: boolean = false, isUnobtainable: boolean = false @@ -1114,1777 +1114,1777 @@ export const allSpecies: PokemonSpecies[] = []; export function initSpecies() { allSpecies.push( - new PokemonSpecies(Species.BULBASAUR, 1, false, false, false, "Seed Pokémon", Type.GRASS, Type.POISON, 0.7, 6.9, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 318, 45, 49, 49, 65, 65, 45, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.IVYSAUR, 1, false, false, false, "Seed Pokémon", Type.GRASS, Type.POISON, 1, 13, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 405, 60, 62, 63, 80, 80, 60, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.VENUSAUR, 1, false, false, false, "Seed Pokémon", Type.GRASS, Type.POISON, 2, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, GrowthRate.MEDIUM_SLOW, 87.5, true, true, - new PokemonForm("Normal", "", Type.GRASS, Type.POISON, 2, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.GRASS, Type.POISON, 2.4, 155.5, Abilities.THICK_FAT, Abilities.THICK_FAT, Abilities.THICK_FAT, 625, 80, 100, 123, 122, 120, 80, 45, 50, 263, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.POISON, 24, 999.9, Abilities.EFFECT_SPORE, Abilities.NONE, Abilities.EFFECT_SPORE, 625, 120, 82, 98, 130, 115, 80, 45, 50, 263, true), - ), - new PokemonSpecies(Species.CHARMANDER, 1, false, false, false, "Lizard Pokémon", Type.FIRE, null, 0.6, 8.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 309, 39, 52, 43, 60, 50, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CHARMELEON, 1, false, false, false, "Flame Pokémon", Type.FIRE, null, 1.1, 19, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 405, 58, 64, 58, 80, 65, 80, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CHARIZARD, 1, false, false, false, "Flame Pokémon", Type.FIRE, Type.FLYING, 1.7, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.FIRE, Type.FLYING, 1.7, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, false, null, true), - new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, Type.FIRE, Type.DRAGON, 1.7, 110.5, Abilities.TOUGH_CLAWS, Abilities.NONE, Abilities.TOUGH_CLAWS, 634, 78, 130, 111, 130, 85, 100, 45, 50, 267), - new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, Type.FIRE, Type.FLYING, 1.7, 100.5, Abilities.DROUGHT, Abilities.NONE, Abilities.DROUGHT, 634, 78, 104, 78, 159, 115, 100, 45, 50, 267), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, Type.FLYING, 28, 999.9, Abilities.BERSERK, Abilities.NONE, Abilities.BERSERK, 634, 118, 84, 93, 139, 100, 100, 45, 50, 267), - ), - new PokemonSpecies(Species.SQUIRTLE, 1, false, false, false, "Tiny Turtle Pokémon", Type.WATER, null, 0.5, 9, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 314, 44, 48, 65, 50, 64, 43, 45, 50, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.WARTORTLE, 1, false, false, false, "Turtle Pokémon", Type.WATER, null, 1, 22.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 405, 59, 63, 80, 65, 80, 58, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.BLASTOISE, 1, false, false, false, "Shellfish Pokémon", Type.WATER, null, 1.6, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.WATER, null, 1.6, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.WATER, null, 1.6, 101.1, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.MEGA_LAUNCHER, 630, 79, 103, 120, 135, 115, 78, 45, 50, 265), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.STEEL, 25, 999.9, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.SHELL_ARMOR, 630, 119, 83, 135, 115, 110, 68, 45, 50, 265), - ), - new PokemonSpecies(Species.CATERPIE, 1, false, false, false, "Worm Pokémon", Type.BUG, null, 0.3, 2.9, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 45, 30, 35, 20, 20, 45, 255, 50, 39, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.METAPOD, 1, false, false, false, "Cocoon Pokémon", Type.BUG, null, 0.7, 9.9, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 20, 55, 25, 25, 30, 120, 50, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BUTTERFREE, 1, false, false, false, "Butterfly Pokémon", Type.BUG, Type.FLYING, 1.1, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", Type.BUG, Type.FLYING, 1.1, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, true, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.FLYING, 17, 999.9, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.COMPOUND_EYES, 495, 85, 35, 80, 120, 90, 85, 45, 50, 198, true), - ), - new PokemonSpecies(Species.WEEDLE, 1, false, false, false, "Hairy Bug Pokémon", Type.BUG, Type.POISON, 0.3, 3.2, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 40, 35, 30, 20, 20, 50, 255, 70, 39, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KAKUNA, 1, false, false, false, "Cocoon Pokémon", Type.BUG, Type.POISON, 0.6, 10, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 45, 25, 50, 25, 25, 35, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEEDRILL, 1, false, false, false, "Poison Bee Pokémon", Type.BUG, Type.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.BUG, Type.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.BUG, Type.POISON, 1.4, 40.5, Abilities.ADAPTABILITY, Abilities.NONE, Abilities.ADAPTABILITY, 495, 65, 150, 40, 15, 80, 145, 45, 70, 198), - ), - new PokemonSpecies(Species.PIDGEY, 1, false, false, false, "Tiny Bird Pokémon", Type.NORMAL, Type.FLYING, 0.3, 1.8, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 251, 40, 45, 40, 35, 35, 56, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PIDGEOTTO, 1, false, false, false, "Bird Pokémon", Type.NORMAL, Type.FLYING, 1.1, 30, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 349, 63, 60, 55, 50, 50, 71, 120, 70, 122, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PIDGEOT, 1, false, false, false, "Bird Pokémon", Type.NORMAL, Type.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.NORMAL, Type.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.NORMAL, Type.FLYING, 2.2, 50.5, Abilities.NO_GUARD, Abilities.NO_GUARD, Abilities.NO_GUARD, 579, 83, 80, 80, 135, 80, 121, 45, 70, 240), - ), - new PokemonSpecies(Species.RATTATA, 1, false, false, false, "Mouse Pokémon", Type.NORMAL, null, 0.3, 3.5, Abilities.RUN_AWAY, Abilities.GUTS, Abilities.HUSTLE, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.RATICATE, 1, false, false, false, "Mouse Pokémon", Type.NORMAL, null, 0.7, 18.5, Abilities.RUN_AWAY, Abilities.GUTS, Abilities.HUSTLE, 413, 55, 81, 60, 50, 70, 97, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SPEAROW, 1, false, false, false, "Tiny Bird Pokémon", Type.NORMAL, Type.FLYING, 0.3, 2, Abilities.KEEN_EYE, Abilities.NONE, Abilities.SNIPER, 262, 40, 60, 30, 31, 31, 70, 255, 70, 52, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FEAROW, 1, false, false, false, "Beak Pokémon", Type.NORMAL, Type.FLYING, 1.2, 38, Abilities.KEEN_EYE, Abilities.NONE, Abilities.SNIPER, 442, 65, 90, 65, 61, 61, 100, 90, 70, 155, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.EKANS, 1, false, false, false, "Snake Pokémon", Type.POISON, null, 2, 6.9, Abilities.INTIMIDATE, Abilities.SHED_SKIN, Abilities.UNNERVE, 288, 35, 60, 44, 40, 54, 55, 255, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ARBOK, 1, false, false, false, "Cobra Pokémon", Type.POISON, null, 3.5, 65, Abilities.INTIMIDATE, Abilities.SHED_SKIN, Abilities.UNNERVE, 448, 60, 95, 69, 65, 79, 80, 90, 70, 157, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PIKACHU, 1, false, false, false, "Mouse Pokémon", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, true, null, true), - new PokemonForm("Partner", "partner", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), - new PokemonForm("Cosplay", "cosplay", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Cool Cosplay", "cool-cosplay", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Beauty Cosplay", "beauty-cosplay", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Cute Cosplay", "cute-cosplay", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Smart Cosplay", "smart-cosplay", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("Tough Cosplay", "tough-cosplay", Type.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, null, 21, 999.9, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.LIGHTNING_ROD, 530, 125, 95, 60, 90, 70, 90, 190, 50, 112), //+100 BST from Partner Form - ), - new PokemonSpecies(Species.RAICHU, 1, false, false, false, "Mouse Pokémon", Type.ELECTRIC, null, 0.8, 30, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 485, 60, 90, 55, 90, 80, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SANDSHREW, 1, false, false, false, "Mouse Pokémon", Type.GROUND, null, 0.6, 12, Abilities.SAND_VEIL, Abilities.NONE, Abilities.SAND_RUSH, 300, 50, 75, 85, 20, 30, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SANDSLASH, 1, false, false, false, "Mouse Pokémon", Type.GROUND, null, 1, 29.5, Abilities.SAND_VEIL, Abilities.NONE, Abilities.SAND_RUSH, 450, 75, 100, 110, 45, 55, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.NIDORAN_F, 1, false, false, false, "Poison Pin Pokémon", Type.POISON, null, 0.4, 7, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 275, 55, 47, 52, 40, 40, 41, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.NIDORINA, 1, false, false, false, "Poison Pin Pokémon", Type.POISON, null, 0.8, 20, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 365, 70, 62, 67, 55, 55, 56, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.NIDOQUEEN, 1, false, false, false, "Drill Pokémon", Type.POISON, Type.GROUND, 1.3, 60, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.SHEER_FORCE, 505, 90, 92, 87, 75, 85, 76, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.NIDORAN_M, 1, false, false, false, "Poison Pin Pokémon", Type.POISON, null, 0.5, 9, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 273, 46, 57, 40, 40, 40, 50, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 100, false), - new PokemonSpecies(Species.NIDORINO, 1, false, false, false, "Poison Pin Pokémon", Type.POISON, null, 0.9, 19.5, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 365, 61, 72, 57, 55, 55, 65, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 100, false), - new PokemonSpecies(Species.NIDOKING, 1, false, false, false, "Drill Pokémon", Type.POISON, Type.GROUND, 1.4, 62, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.SHEER_FORCE, 505, 81, 102, 77, 85, 75, 85, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 100, false), - new PokemonSpecies(Species.CLEFAIRY, 1, false, false, false, "Fairy Pokémon", Type.FAIRY, null, 0.6, 7.5, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.FRIEND_GUARD, 323, 70, 45, 48, 60, 65, 35, 150, 140, 113, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.CLEFABLE, 1, false, false, false, "Fairy Pokémon", Type.FAIRY, null, 1.3, 40, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.UNAWARE, 483, 95, 70, 73, 95, 90, 60, 25, 140, 242, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.VULPIX, 1, false, false, false, "Fox Pokémon", Type.FIRE, null, 0.6, 9.9, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.DROUGHT, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(Species.NINETALES, 1, false, false, false, "Fox Pokémon", Type.FIRE, null, 1.1, 19.9, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.DROUGHT, 505, 73, 76, 75, 81, 100, 100, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(Species.JIGGLYPUFF, 1, false, false, false, "Balloon Pokémon", Type.NORMAL, Type.FAIRY, 0.5, 5.5, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRIEND_GUARD, 270, 115, 45, 20, 45, 25, 20, 170, 50, 95, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.WIGGLYTUFF, 1, false, false, false, "Balloon Pokémon", Type.NORMAL, Type.FAIRY, 1, 12, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRISK, 435, 140, 70, 45, 85, 50, 45, 50, 50, 218, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.ZUBAT, 1, false, false, false, "Bat Pokémon", Type.POISON, Type.FLYING, 0.8, 7.5, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.INFILTRATOR, 245, 40, 45, 35, 30, 40, 55, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.GOLBAT, 1, false, false, false, "Bat Pokémon", Type.POISON, Type.FLYING, 1.6, 55, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.INFILTRATOR, 455, 75, 80, 70, 65, 75, 90, 90, 50, 159, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.ODDISH, 1, false, false, false, "Weed Pokémon", Type.GRASS, Type.POISON, 0.5, 5.4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.RUN_AWAY, 320, 45, 50, 55, 75, 65, 30, 255, 50, 64, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GLOOM, 1, false, false, false, "Weed Pokémon", Type.GRASS, Type.POISON, 0.8, 8.6, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.STENCH, 395, 60, 65, 70, 85, 75, 40, 120, 50, 138, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.VILEPLUME, 1, false, false, false, "Flower Pokémon", Type.GRASS, Type.POISON, 1.2, 18.6, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.EFFECT_SPORE, 490, 75, 80, 85, 110, 90, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.PARAS, 1, false, false, false, "Mushroom Pokémon", Type.BUG, Type.GRASS, 0.3, 5.4, Abilities.EFFECT_SPORE, Abilities.DRY_SKIN, Abilities.DAMP, 285, 35, 70, 55, 45, 55, 25, 190, 70, 57, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PARASECT, 1, false, false, false, "Mushroom Pokémon", Type.BUG, Type.GRASS, 1, 29.5, Abilities.EFFECT_SPORE, Abilities.DRY_SKIN, Abilities.DAMP, 405, 60, 95, 80, 60, 80, 30, 75, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VENONAT, 1, false, false, false, "Insect Pokémon", Type.BUG, Type.POISON, 1, 30, Abilities.COMPOUND_EYES, Abilities.TINTED_LENS, Abilities.RUN_AWAY, 305, 60, 55, 50, 40, 55, 45, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VENOMOTH, 1, false, false, false, "Poison Moth Pokémon", Type.BUG, Type.POISON, 1.5, 12.5, Abilities.SHIELD_DUST, Abilities.TINTED_LENS, Abilities.WONDER_SKIN, 450, 70, 65, 60, 90, 75, 90, 75, 70, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DIGLETT, 1, false, false, false, "Mole Pokémon", Type.GROUND, null, 0.2, 0.8, Abilities.SAND_VEIL, Abilities.ARENA_TRAP, Abilities.SAND_FORCE, 265, 10, 55, 25, 35, 45, 95, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUGTRIO, 1, false, false, false, "Mole Pokémon", Type.GROUND, null, 0.7, 33.3, Abilities.SAND_VEIL, Abilities.ARENA_TRAP, Abilities.SAND_FORCE, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MEOWTH, 1, false, false, false, "Scratch Cat Pokémon", Type.NORMAL, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.NORMAL, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 33, 999.9, Abilities.TECHNICIAN, Abilities.TECHNICIAN, Abilities.TECHNICIAN, 540, 115, 110, 65, 65, 70, 115, 255, 50, 58), //+100 BST from Persian - ), - new PokemonSpecies(Species.PERSIAN, 1, false, false, false, "Classy Cat Pokémon", Type.NORMAL, null, 1, 32, Abilities.LIMBER, Abilities.TECHNICIAN, Abilities.UNNERVE, 440, 65, 70, 60, 65, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PSYDUCK, 1, false, false, false, "Duck Pokémon", Type.WATER, null, 0.8, 19.6, Abilities.DAMP, Abilities.CLOUD_NINE, Abilities.SWIFT_SWIM, 320, 50, 52, 48, 65, 50, 55, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GOLDUCK, 1, false, false, false, "Duck Pokémon", Type.WATER, null, 1.7, 76.6, Abilities.DAMP, Abilities.CLOUD_NINE, Abilities.SWIFT_SWIM, 500, 80, 82, 78, 95, 80, 85, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MANKEY, 1, false, false, false, "Pig Monkey Pokémon", Type.FIGHTING, null, 0.5, 28, Abilities.VITAL_SPIRIT, Abilities.ANGER_POINT, Abilities.DEFIANT, 305, 40, 80, 35, 35, 45, 70, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PRIMEAPE, 1, false, false, false, "Pig Monkey Pokémon", Type.FIGHTING, null, 1, 32, Abilities.VITAL_SPIRIT, Abilities.ANGER_POINT, Abilities.DEFIANT, 455, 65, 105, 60, 60, 70, 95, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GROWLITHE, 1, false, false, false, "Puppy Pokémon", Type.FIRE, null, 0.7, 19, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.JUSTIFIED, 350, 55, 70, 45, 70, 50, 60, 190, 50, 70, GrowthRate.SLOW, 75, false), - new PokemonSpecies(Species.ARCANINE, 1, false, false, false, "Legendary Pokémon", Type.FIRE, null, 1.9, 155, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.JUSTIFIED, 555, 90, 110, 80, 100, 80, 95, 75, 50, 194, GrowthRate.SLOW, 75, false), - new PokemonSpecies(Species.POLIWAG, 1, false, false, false, "Tadpole Pokémon", Type.WATER, null, 0.6, 12.4, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.SWIFT_SWIM, 300, 40, 50, 40, 40, 40, 90, 255, 50, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.POLIWHIRL, 1, false, false, false, "Tadpole Pokémon", Type.WATER, null, 1, 20, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.SWIFT_SWIM, 385, 65, 65, 65, 50, 50, 90, 120, 50, 135, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.POLIWRATH, 1, false, false, false, "Tadpole Pokémon", Type.WATER, Type.FIGHTING, 1.3, 54, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.SWIFT_SWIM, 510, 90, 95, 95, 70, 90, 70, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ABRA, 1, false, false, false, "Psi Pokémon", Type.PSYCHIC, null, 0.9, 19.5, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 310, 25, 20, 15, 105, 55, 90, 200, 50, 62, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.KADABRA, 1, false, false, false, "Psi Pokémon", Type.PSYCHIC, null, 1.3, 56.5, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 400, 40, 35, 30, 120, 70, 105, 100, 50, 140, GrowthRate.MEDIUM_SLOW, 75, true), - new PokemonSpecies(Species.ALAKAZAM, 1, false, false, false, "Psi Pokémon", Type.PSYCHIC, null, 1.5, 48, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, GrowthRate.MEDIUM_SLOW, 75, true, true, - new PokemonForm("Normal", "", Type.PSYCHIC, null, 1.5, 48, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.PSYCHIC, null, 1.2, 48, Abilities.TRACE, Abilities.TRACE, Abilities.TRACE, 600, 55, 50, 65, 175, 105, 150, 50, 50, 250, true), - ), - new PokemonSpecies(Species.MACHOP, 1, false, false, false, "Superpower Pokémon", Type.FIGHTING, null, 0.8, 19.5, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 305, 70, 80, 50, 35, 35, 35, 180, 50, 61, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.MACHOKE, 1, false, false, false, "Superpower Pokémon", Type.FIGHTING, null, 1.5, 70.5, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 405, 80, 100, 70, 50, 60, 45, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.MACHAMP, 1, false, false, false, "Superpower Pokémon", Type.FIGHTING, null, 1.6, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false, true, - new PokemonForm("Normal", "", Type.FIGHTING, null, 1.6, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIGHTING, null, 25, 999.9, Abilities.GUTS, Abilities.GUTS, Abilities.GUTS, 605, 115, 170, 95, 65, 95, 65, 45, 50, 253), - ), - new PokemonSpecies(Species.BELLSPROUT, 1, false, false, false, "Flower Pokémon", Type.GRASS, Type.POISON, 0.7, 4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 300, 50, 75, 35, 70, 30, 40, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WEEPINBELL, 1, false, false, false, "Flycatcher Pokémon", Type.GRASS, Type.POISON, 1, 6.4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 390, 65, 90, 50, 85, 45, 55, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.VICTREEBEL, 1, false, false, false, "Flycatcher Pokémon", Type.GRASS, Type.POISON, 1.7, 15.5, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 490, 80, 105, 65, 100, 70, 70, 45, 70, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TENTACOOL, 1, false, false, false, "Jellyfish Pokémon", Type.WATER, Type.POISON, 0.9, 45.5, Abilities.CLEAR_BODY, Abilities.LIQUID_OOZE, Abilities.RAIN_DISH, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TENTACRUEL, 1, false, false, false, "Jellyfish Pokémon", Type.WATER, Type.POISON, 1.6, 55, Abilities.CLEAR_BODY, Abilities.LIQUID_OOZE, Abilities.RAIN_DISH, 515, 80, 70, 65, 80, 120, 100, 60, 50, 180, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GEODUDE, 1, false, false, false, "Rock Pokémon", Type.ROCK, Type.GROUND, 0.4, 20, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GRAVELER, 1, false, false, false, "Rock Pokémon", Type.ROCK, Type.GROUND, 1, 105, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GOLEM, 1, false, false, false, "Megaton Pokémon", Type.ROCK, Type.GROUND, 1.4, 300, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 495, 80, 120, 130, 55, 65, 45, 45, 70, 248, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PONYTA, 1, false, false, false, "Fire Horse Pokémon", Type.FIRE, null, 1, 30, Abilities.RUN_AWAY, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RAPIDASH, 1, false, false, false, "Fire Horse Pokémon", Type.FIRE, null, 1.7, 95, Abilities.RUN_AWAY, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SLOWPOKE, 1, false, false, false, "Dopey Pokémon", Type.WATER, Type.PSYCHIC, 1.2, 36, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SLOWBRO, 1, false, false, false, "Hermit Crab Pokémon", Type.WATER, Type.PSYCHIC, 1.6, 78.5, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.WATER, Type.PSYCHIC, 1.6, 78.5, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.WATER, Type.PSYCHIC, 2, 120, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, 590, 95, 75, 180, 130, 80, 30, 75, 50, 172), - ), - new PokemonSpecies(Species.MAGNEMITE, 1, false, false, false, "Magnet Pokémon", Type.ELECTRIC, Type.STEEL, 0.3, 6, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.ANALYTIC, 325, 25, 35, 70, 95, 55, 45, 190, 50, 65, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.MAGNETON, 1, false, false, false, "Magnet Pokémon", Type.ELECTRIC, Type.STEEL, 1, 60, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.ANALYTIC, 465, 50, 60, 95, 120, 70, 70, 60, 50, 163, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.FARFETCHD, 1, false, false, false, "Wild Duck Pokémon", Type.NORMAL, Type.FLYING, 0.8, 15, Abilities.KEEN_EYE, Abilities.INNER_FOCUS, Abilities.DEFIANT, 377, 52, 90, 55, 58, 62, 60, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DODUO, 1, false, false, false, "Twin Bird Pokémon", Type.NORMAL, Type.FLYING, 1.4, 39.2, Abilities.RUN_AWAY, Abilities.EARLY_BIRD, Abilities.TANGLED_FEET, 310, 35, 85, 45, 35, 35, 75, 190, 70, 62, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.DODRIO, 1, false, false, false, "Triple Bird Pokémon", Type.NORMAL, Type.FLYING, 1.8, 85.2, Abilities.RUN_AWAY, Abilities.EARLY_BIRD, Abilities.TANGLED_FEET, 470, 60, 110, 70, 60, 60, 110, 45, 70, 165, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SEEL, 1, false, false, false, "Sea Lion Pokémon", Type.WATER, null, 1.1, 90, Abilities.THICK_FAT, Abilities.HYDRATION, Abilities.ICE_BODY, 325, 65, 45, 55, 45, 70, 45, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DEWGONG, 1, false, false, false, "Sea Lion Pokémon", Type.WATER, Type.ICE, 1.7, 120, Abilities.THICK_FAT, Abilities.HYDRATION, Abilities.ICE_BODY, 475, 90, 70, 80, 70, 95, 70, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GRIMER, 1, false, false, false, "Sludge Pokémon", Type.POISON, null, 0.9, 30, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.POISON_TOUCH, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MUK, 1, false, false, false, "Sludge Pokémon", Type.POISON, null, 1.2, 30, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.POISON_TOUCH, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SHELLDER, 1, false, false, false, "Bivalve Pokémon", Type.WATER, null, 0.3, 4, Abilities.SHELL_ARMOR, Abilities.SKILL_LINK, Abilities.OVERCOAT, 305, 30, 65, 100, 45, 25, 40, 190, 50, 61, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CLOYSTER, 1, false, false, false, "Bivalve Pokémon", Type.WATER, Type.ICE, 1.5, 132.5, Abilities.SHELL_ARMOR, Abilities.SKILL_LINK, Abilities.OVERCOAT, 525, 50, 95, 180, 85, 45, 70, 60, 50, 184, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GASTLY, 1, false, false, false, "Gas Pokémon", Type.GHOST, Type.POISON, 1.3, 0.1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 310, 30, 35, 30, 100, 35, 80, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.HAUNTER, 1, false, false, false, "Gas Pokémon", Type.GHOST, Type.POISON, 1.6, 0.1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 405, 45, 50, 45, 115, 55, 95, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GENGAR, 1, false, false, false, "Shadow Pokémon", Type.GHOST, Type.POISON, 1.5, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.GHOST, Type.POISON, 1.5, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.GHOST, Type.POISON, 1.4, 40.5, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.NONE, 600, 60, 65, 80, 170, 95, 130, 45, 50, 250), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GHOST, Type.POISON, 20, 999.9, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 600, 140, 65, 70, 140, 85, 100, 45, 50, 250), - ), - new PokemonSpecies(Species.ONIX, 1, false, false, false, "Rock Snake Pokémon", Type.ROCK, Type.GROUND, 8.8, 210, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.WEAK_ARMOR, 385, 35, 45, 160, 30, 45, 70, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DROWZEE, 1, false, false, false, "Hypnosis Pokémon", Type.PSYCHIC, null, 1, 32.4, Abilities.INSOMNIA, Abilities.FOREWARN, Abilities.INNER_FOCUS, 328, 60, 48, 45, 43, 90, 42, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HYPNO, 1, false, false, false, "Hypnosis Pokémon", Type.PSYCHIC, null, 1.6, 75.6, Abilities.INSOMNIA, Abilities.FOREWARN, Abilities.INNER_FOCUS, 483, 85, 73, 70, 73, 115, 67, 75, 70, 169, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.KRABBY, 1, false, false, false, "River Crab Pokémon", Type.WATER, null, 0.4, 6.5, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 325, 30, 105, 90, 25, 25, 50, 225, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KINGLER, 1, false, false, false, "Pincer Pokémon", Type.WATER, null, 1.3, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.WATER, null, 1.3, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 19, 999.9, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 575, 90, 155, 140, 50, 70, 70, 60, 50, 166), - ), - new PokemonSpecies(Species.VOLTORB, 1, false, false, false, "Ball Pokémon", Type.ELECTRIC, null, 0.5, 10.4, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 70, 66, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.ELECTRODE, 1, false, false, false, "Ball Pokémon", Type.ELECTRIC, null, 1.2, 66.6, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.EXEGGCUTE, 1, false, false, false, "Egg Pokémon", Type.GRASS, Type.PSYCHIC, 0.4, 2.5, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HARVEST, 325, 60, 40, 80, 60, 45, 40, 90, 50, 65, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.EXEGGUTOR, 1, false, false, false, "Coconut Pokémon", Type.GRASS, Type.PSYCHIC, 2, 120, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HARVEST, 530, 95, 95, 85, 125, 75, 55, 45, 50, 186, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CUBONE, 1, false, false, false, "Lonely Pokémon", Type.GROUND, null, 0.4, 6.5, Abilities.ROCK_HEAD, Abilities.LIGHTNING_ROD, Abilities.BATTLE_ARMOR, 320, 50, 50, 95, 40, 50, 35, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MAROWAK, 1, false, false, false, "Bone Keeper Pokémon", Type.GROUND, null, 1, 45, Abilities.ROCK_HEAD, Abilities.LIGHTNING_ROD, Abilities.BATTLE_ARMOR, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HITMONLEE, 1, false, false, false, "Kicking Pokémon", Type.FIGHTING, null, 1.5, 49.8, Abilities.LIMBER, Abilities.RECKLESS, Abilities.UNBURDEN, 455, 50, 120, 53, 35, 110, 87, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.HITMONCHAN, 1, false, false, false, "Punching Pokémon", Type.FIGHTING, null, 1.4, 50.2, Abilities.KEEN_EYE, Abilities.IRON_FIST, Abilities.INNER_FOCUS, 455, 50, 105, 79, 35, 110, 76, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.LICKITUNG, 1, false, false, false, "Licking Pokémon", Type.NORMAL, null, 1.2, 65.5, Abilities.OWN_TEMPO, Abilities.OBLIVIOUS, Abilities.CLOUD_NINE, 385, 90, 55, 75, 60, 75, 30, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KOFFING, 1, false, false, false, "Poison Gas Pokémon", Type.POISON, null, 0.6, 1, Abilities.LEVITATE, Abilities.NEUTRALIZING_GAS, Abilities.STENCH, 340, 40, 65, 95, 60, 45, 35, 190, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WEEZING, 1, false, false, false, "Poison Gas Pokémon", Type.POISON, null, 1.2, 9.5, Abilities.LEVITATE, Abilities.NEUTRALIZING_GAS, Abilities.STENCH, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RHYHORN, 1, false, false, false, "Spikes Pokémon", Type.GROUND, Type.ROCK, 1, 115, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, Abilities.RECKLESS, 345, 80, 85, 95, 30, 30, 25, 120, 50, 69, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.RHYDON, 1, false, false, false, "Drill Pokémon", Type.GROUND, Type.ROCK, 1.9, 120, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, Abilities.RECKLESS, 485, 105, 130, 120, 45, 45, 40, 60, 50, 170, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.CHANSEY, 1, false, false, false, "Egg Pokémon", Type.NORMAL, null, 1.1, 34.6, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.HEALER, 450, 250, 5, 5, 35, 105, 50, 30, 140, 395, GrowthRate.FAST, 0, false), - new PokemonSpecies(Species.TANGELA, 1, false, false, false, "Vine Pokémon", Type.GRASS, null, 1, 35, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.REGENERATOR, 435, 65, 55, 115, 100, 40, 60, 45, 50, 87, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KANGASKHAN, 1, false, false, false, "Parent Pokémon", Type.NORMAL, null, 2.2, 80, Abilities.EARLY_BIRD, Abilities.SCRAPPY, Abilities.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, GrowthRate.MEDIUM_FAST, 0, false, true, - new PokemonForm("Normal", "", Type.NORMAL, null, 2.2, 80, Abilities.EARLY_BIRD, Abilities.SCRAPPY, Abilities.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.NORMAL, null, 2.2, 100, Abilities.PARENTAL_BOND, Abilities.PARENTAL_BOND, Abilities.PARENTAL_BOND, 590, 105, 125, 100, 60, 100, 100, 45, 50, 172), - ), - new PokemonSpecies(Species.HORSEA, 1, false, false, false, "Dragon Pokémon", Type.WATER, null, 0.4, 8, Abilities.SWIFT_SWIM, Abilities.SNIPER, Abilities.DAMP, 295, 30, 40, 70, 70, 25, 60, 225, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SEADRA, 1, false, false, false, "Dragon Pokémon", Type.WATER, null, 1.2, 25, Abilities.POISON_POINT, Abilities.SNIPER, Abilities.DAMP, 440, 55, 65, 95, 95, 45, 85, 75, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GOLDEEN, 1, false, false, false, "Goldfish Pokémon", Type.WATER, null, 0.6, 15, Abilities.SWIFT_SWIM, Abilities.WATER_VEIL, Abilities.LIGHTNING_ROD, 320, 45, 67, 60, 35, 50, 63, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SEAKING, 1, false, false, false, "Goldfish Pokémon", Type.WATER, null, 1.3, 39, Abilities.SWIFT_SWIM, Abilities.WATER_VEIL, Abilities.LIGHTNING_ROD, 450, 80, 92, 65, 65, 80, 68, 60, 50, 158, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.STARYU, 1, false, false, false, "Star Shape Pokémon", Type.WATER, null, 0.8, 34.5, Abilities.ILLUMINATE, Abilities.NATURAL_CURE, Abilities.ANALYTIC, 340, 30, 45, 55, 70, 55, 85, 225, 50, 68, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.STARMIE, 1, false, false, false, "Mysterious Pokémon", Type.WATER, Type.PSYCHIC, 1.1, 80, Abilities.ILLUMINATE, Abilities.NATURAL_CURE, Abilities.ANALYTIC, 520, 60, 75, 85, 100, 85, 115, 60, 50, 182, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MR_MIME, 1, false, false, false, "Barrier Pokémon", Type.PSYCHIC, Type.FAIRY, 1.3, 54.5, Abilities.SOUNDPROOF, Abilities.FILTER, Abilities.TECHNICIAN, 460, 40, 45, 65, 100, 120, 90, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCYTHER, 1, false, false, false, "Mantis Pokémon", Type.BUG, Type.FLYING, 1.5, 56, Abilities.SWARM, Abilities.TECHNICIAN, Abilities.STEADFAST, 500, 70, 110, 80, 55, 80, 105, 45, 50, 100, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.JYNX, 1, false, false, false, "Human Shape Pokémon", Type.ICE, Type.PSYCHIC, 1.4, 40.6, Abilities.OBLIVIOUS, Abilities.FOREWARN, Abilities.DRY_SKIN, 455, 65, 50, 35, 115, 95, 95, 45, 50, 159, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.ELECTABUZZ, 1, false, false, false, "Electric Pokémon", Type.ELECTRIC, null, 1.1, 30, Abilities.STATIC, Abilities.NONE, Abilities.VITAL_SPIRIT, 490, 65, 83, 57, 95, 85, 105, 45, 50, 172, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.MAGMAR, 1, false, false, false, "Spitfire Pokémon", Type.FIRE, null, 1.3, 44.5, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 495, 65, 95, 57, 100, 85, 93, 45, 50, 173, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.PINSIR, 1, false, false, false, "Stag Beetle Pokémon", Type.BUG, null, 1.5, 55, Abilities.HYPER_CUTTER, Abilities.MOLD_BREAKER, Abilities.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.BUG, null, 1.5, 55, Abilities.HYPER_CUTTER, Abilities.MOLD_BREAKER, Abilities.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.BUG, Type.FLYING, 1.7, 59, Abilities.AERILATE, Abilities.AERILATE, Abilities.AERILATE, 600, 65, 155, 120, 65, 90, 105, 45, 50, 175), - ), - new PokemonSpecies(Species.TAUROS, 1, false, false, false, "Wild Bull Pokémon", Type.NORMAL, null, 1.4, 88.4, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.SHEER_FORCE, 490, 75, 100, 95, 40, 70, 110, 45, 50, 172, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.MAGIKARP, 1, false, false, false, "Fish Pokémon", Type.WATER, null, 0.9, 10, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.RATTLED, 200, 20, 10, 55, 15, 20, 80, 255, 50, 40, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.GYARADOS, 1, false, false, false, "Atrocious Pokémon", Type.WATER, Type.FLYING, 6.5, 235, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", Type.WATER, Type.FLYING, 6.5, 235, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.WATER, Type.DARK, 6.5, 305, Abilities.MOLD_BREAKER, Abilities.MOLD_BREAKER, Abilities.MOLD_BREAKER, 640, 95, 155, 109, 70, 130, 81, 45, 50, 189, true), - ), - new PokemonSpecies(Species.LAPRAS, 1, false, false, false, "Transport Pokémon", Type.WATER, Type.ICE, 2.5, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.WATER, Type.ICE, 2.5, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ICE, 24, 999.9, Abilities.SHIELD_DUST, Abilities.SHIELD_DUST, Abilities.SHIELD_DUST, 635, 170, 85, 85, 105, 130, 60, 45, 50, 187), - ), - new PokemonSpecies(Species.DITTO, 1, false, false, false, "Transform Pokémon", Type.NORMAL, null, 0.3, 4, Abilities.LIMBER, Abilities.NONE, Abilities.IMPOSTER, 288, 48, 48, 48, 48, 48, 48, 35, 50, 101, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.EEVEE, 1, false, false, false, "Evolution Pokémon", Type.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, GrowthRate.MEDIUM_FAST, 87.5, false, true, - new PokemonForm("Normal", "", Type.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, false, null, true), - new PokemonForm("Partner", "partner", Type.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 435, 65, 75, 70, 65, 85, 75, 45, 50, 65, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 18, 999.9, Abilities.PROTEAN, Abilities.PROTEAN, Abilities.PROTEAN, 535, 110, 90, 70, 95, 85, 85, 45, 50, 65), //+100 BST from Partner Form - ), - new PokemonSpecies(Species.VAPOREON, 1, false, false, false, "Bubble Jet Pokémon", Type.WATER, null, 1, 29, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.HYDRATION, 525, 130, 65, 60, 110, 95, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.JOLTEON, 1, false, false, false, "Lightning Pokémon", Type.ELECTRIC, null, 0.8, 24.5, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.QUICK_FEET, 525, 65, 65, 60, 110, 95, 130, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.FLAREON, 1, false, false, false, "Flame Pokémon", Type.FIRE, null, 0.9, 25, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.GUTS, 525, 65, 130, 60, 95, 110, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.PORYGON, 1, false, false, false, "Virtual Pokémon", Type.NORMAL, null, 0.8, 36.5, Abilities.TRACE, Abilities.DOWNLOAD, Abilities.ANALYTIC, 395, 65, 60, 70, 85, 75, 40, 45, 50, 79, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.OMANYTE, 1, false, false, false, "Spiral Pokémon", Type.ROCK, Type.WATER, 0.4, 7.5, Abilities.SWIFT_SWIM, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 355, 35, 40, 100, 90, 55, 35, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.OMASTAR, 1, false, false, false, "Spiral Pokémon", Type.ROCK, Type.WATER, 1, 35, Abilities.SWIFT_SWIM, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 495, 70, 60, 125, 115, 70, 55, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.KABUTO, 1, false, false, false, "Shellfish Pokémon", Type.ROCK, Type.WATER, 0.5, 11.5, Abilities.SWIFT_SWIM, Abilities.BATTLE_ARMOR, Abilities.WEAK_ARMOR, 355, 30, 80, 90, 55, 45, 55, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.KABUTOPS, 1, false, false, false, "Shellfish Pokémon", Type.ROCK, Type.WATER, 1.3, 40.5, Abilities.SWIFT_SWIM, Abilities.BATTLE_ARMOR, Abilities.WEAK_ARMOR, 495, 60, 115, 105, 65, 70, 80, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.AERODACTYL, 1, false, false, false, "Fossil Pokémon", Type.ROCK, Type.FLYING, 1.8, 59, Abilities.ROCK_HEAD, Abilities.PRESSURE, Abilities.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, GrowthRate.SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.ROCK, Type.FLYING, 1.8, 59, Abilities.ROCK_HEAD, Abilities.PRESSURE, Abilities.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ROCK, Type.FLYING, 2.1, 79, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 615, 80, 135, 85, 70, 95, 150, 45, 50, 180), - ), - new PokemonSpecies(Species.SNORLAX, 1, false, false, false, "Sleeping Pokémon", Type.NORMAL, null, 2.1, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, GrowthRate.SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.NORMAL, null, 2.1, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 35, 999.9, Abilities.HARVEST, Abilities.HARVEST, Abilities.HARVEST, 640, 200, 135, 80, 80, 125, 20, 25, 50, 189), - ), - new PokemonSpecies(Species.ARTICUNO, 1, true, false, false, "Freeze Pokémon", Type.ICE, Type.FLYING, 1.7, 55.4, Abilities.PRESSURE, Abilities.NONE, Abilities.SNOW_CLOAK, 580, 90, 85, 100, 95, 125, 85, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ZAPDOS, 1, true, false, false, "Electric Pokémon", Type.ELECTRIC, Type.FLYING, 1.6, 52.6, Abilities.PRESSURE, Abilities.NONE, Abilities.STATIC, 580, 90, 90, 85, 125, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MOLTRES, 1, true, false, false, "Flame Pokémon", Type.FIRE, Type.FLYING, 2, 60, Abilities.PRESSURE, Abilities.NONE, Abilities.FLAME_BODY, 580, 90, 100, 90, 125, 85, 90, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DRATINI, 1, false, false, false, "Dragon Pokémon", Type.DRAGON, null, 1.8, 3.3, Abilities.SHED_SKIN, Abilities.NONE, Abilities.MARVEL_SCALE, 300, 41, 64, 45, 50, 50, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAGONAIR, 1, false, false, false, "Dragon Pokémon", Type.DRAGON, null, 4, 16.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.MARVEL_SCALE, 420, 61, 84, 65, 70, 70, 70, 45, 35, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAGONITE, 1, false, false, false, "Dragon Pokémon", Type.DRAGON, Type.FLYING, 2.2, 210, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.MULTISCALE, 600, 91, 134, 95, 100, 100, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.MEWTWO, 1, false, true, false, "Genetic Pokémon", Type.PSYCHIC, null, 2, 122, Abilities.PRESSURE, Abilities.NONE, Abilities.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.PSYCHIC, null, 2, 122, Abilities.PRESSURE, Abilities.NONE, Abilities.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, false, null, true), - new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, Type.PSYCHIC, Type.FIGHTING, 2.3, 127, Abilities.STEADFAST, Abilities.NONE, Abilities.STEADFAST, 780, 106, 190, 100, 154, 100, 130, 3, 0, 340), - new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, Type.PSYCHIC, null, 1.5, 33, Abilities.INSOMNIA, Abilities.NONE, Abilities.INSOMNIA, 780, 106, 150, 70, 194, 120, 140, 3, 0, 340), - ), - new PokemonSpecies(Species.MEW, 1, false, false, true, "New Species Pokémon", Type.PSYCHIC, null, 0.4, 4, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.CHIKORITA, 2, false, false, false, "Leaf Pokémon", Type.GRASS, null, 0.9, 6.4, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 318, 45, 49, 65, 49, 65, 45, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.BAYLEEF, 2, false, false, false, "Leaf Pokémon", Type.GRASS, null, 1.2, 15.8, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 405, 60, 62, 80, 63, 80, 60, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MEGANIUM, 2, false, false, false, "Herb Pokémon", Type.GRASS, null, 1.8, 100.5, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 525, 80, 82, 100, 83, 100, 80, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(Species.CYNDAQUIL, 2, false, false, false, "Fire Mouse Pokémon", Type.FIRE, null, 0.5, 7.9, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 309, 39, 52, 43, 60, 50, 65, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUILAVA, 2, false, false, false, "Volcano Pokémon", Type.FIRE, null, 0.9, 19, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 405, 58, 64, 58, 80, 65, 80, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TYPHLOSION, 2, false, false, false, "Volcano Pokémon", Type.FIRE, null, 1.7, 79.5, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 534, 78, 84, 78, 109, 85, 100, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TOTODILE, 2, false, false, false, "Big Jaw Pokémon", Type.WATER, null, 0.6, 9.5, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 314, 50, 65, 64, 44, 48, 43, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CROCONAW, 2, false, false, false, "Big Jaw Pokémon", Type.WATER, null, 1.1, 25, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 405, 65, 80, 80, 59, 63, 58, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FERALIGATR, 2, false, false, false, "Big Jaw Pokémon", Type.WATER, null, 2.3, 88.8, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 530, 85, 105, 100, 79, 83, 78, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SENTRET, 2, false, false, false, "Scout Pokémon", Type.NORMAL, null, 0.8, 6, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.FRISK, 215, 35, 46, 34, 35, 45, 20, 255, 70, 43, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FURRET, 2, false, false, false, "Long Body Pokémon", Type.NORMAL, null, 1.8, 32.5, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.FRISK, 415, 85, 76, 64, 45, 55, 90, 90, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HOOTHOOT, 2, false, false, false, "Owl Pokémon", Type.NORMAL, Type.FLYING, 0.7, 21.2, Abilities.INSOMNIA, Abilities.KEEN_EYE, Abilities.TINTED_LENS, 262, 60, 30, 30, 36, 56, 50, 255, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.NOCTOWL, 2, false, false, false, "Owl Pokémon", Type.NORMAL, Type.FLYING, 1.6, 40.8, Abilities.INSOMNIA, Abilities.KEEN_EYE, Abilities.TINTED_LENS, 452, 100, 50, 50, 86, 96, 70, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LEDYBA, 2, false, false, false, "Five Star Pokémon", Type.BUG, Type.FLYING, 1, 10.8, Abilities.SWARM, Abilities.EARLY_BIRD, Abilities.RATTLED, 265, 40, 20, 30, 40, 80, 55, 255, 70, 53, GrowthRate.FAST, 50, true), - new PokemonSpecies(Species.LEDIAN, 2, false, false, false, "Five Star Pokémon", Type.BUG, Type.FLYING, 1.4, 35.6, Abilities.SWARM, Abilities.EARLY_BIRD, Abilities.IRON_FIST, 390, 55, 35, 50, 55, 110, 85, 90, 70, 137, GrowthRate.FAST, 50, true), - new PokemonSpecies(Species.SPINARAK, 2, false, false, false, "String Spit Pokémon", Type.BUG, Type.POISON, 0.5, 8.5, Abilities.SWARM, Abilities.INSOMNIA, Abilities.SNIPER, 250, 40, 60, 40, 40, 40, 30, 255, 70, 50, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.ARIADOS, 2, false, false, false, "Long Leg Pokémon", Type.BUG, Type.POISON, 1.1, 33.5, Abilities.SWARM, Abilities.INSOMNIA, Abilities.SNIPER, 400, 70, 90, 70, 60, 70, 40, 90, 70, 140, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.CROBAT, 2, false, false, false, "Bat Pokémon", Type.POISON, Type.FLYING, 1.8, 75, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.INFILTRATOR, 535, 85, 90, 80, 70, 80, 130, 90, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CHINCHOU, 2, false, false, false, "Angler Pokémon", Type.WATER, Type.ELECTRIC, 0.5, 12, Abilities.VOLT_ABSORB, Abilities.ILLUMINATE, Abilities.WATER_ABSORB, 330, 75, 38, 38, 56, 56, 67, 190, 50, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.LANTURN, 2, false, false, false, "Light Pokémon", Type.WATER, Type.ELECTRIC, 1.2, 22.5, Abilities.VOLT_ABSORB, Abilities.ILLUMINATE, Abilities.WATER_ABSORB, 460, 125, 58, 58, 76, 76, 67, 75, 50, 161, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PICHU, 2, false, false, false, "Tiny Mouse Pokémon", Type.ELECTRIC, null, 0.3, 2, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", Type.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), - new PokemonForm("Spiky-Eared", "spiky", Type.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), - ), - new PokemonSpecies(Species.CLEFFA, 2, false, false, false, "Star Shape Pokémon", Type.FAIRY, null, 0.3, 3, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.FRIEND_GUARD, 218, 50, 25, 28, 45, 55, 15, 150, 140, 44, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.IGGLYBUFF, 2, false, false, false, "Balloon Pokémon", Type.NORMAL, Type.FAIRY, 0.3, 1, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRIEND_GUARD, 210, 90, 30, 15, 40, 20, 15, 170, 50, 42, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.TOGEPI, 2, false, false, false, "Spike Ball Pokémon", Type.FAIRY, null, 0.3, 1.5, Abilities.HUSTLE, Abilities.SERENE_GRACE, Abilities.SUPER_LUCK, 245, 35, 20, 65, 40, 65, 20, 190, 50, 49, GrowthRate.FAST, 87.5, false), - new PokemonSpecies(Species.TOGETIC, 2, false, false, false, "Happiness Pokémon", Type.FAIRY, Type.FLYING, 0.6, 3.2, Abilities.HUSTLE, Abilities.SERENE_GRACE, Abilities.SUPER_LUCK, 405, 55, 40, 85, 80, 105, 40, 75, 50, 142, GrowthRate.FAST, 87.5, false), - new PokemonSpecies(Species.NATU, 2, false, false, false, "Tiny Bird Pokémon", Type.PSYCHIC, Type.FLYING, 0.2, 2, Abilities.SYNCHRONIZE, Abilities.EARLY_BIRD, Abilities.MAGIC_BOUNCE, 320, 40, 50, 45, 70, 45, 70, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.XATU, 2, false, false, false, "Mystic Pokémon", Type.PSYCHIC, Type.FLYING, 1.5, 15, Abilities.SYNCHRONIZE, Abilities.EARLY_BIRD, Abilities.MAGIC_BOUNCE, 470, 65, 75, 70, 95, 70, 95, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.MAREEP, 2, false, false, false, "Wool Pokémon", Type.ELECTRIC, null, 0.6, 7.8, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 280, 55, 40, 40, 65, 45, 35, 235, 70, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.FLAAFFY, 2, false, false, false, "Wool Pokémon", Type.ELECTRIC, null, 0.8, 13.3, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 365, 70, 55, 55, 80, 60, 45, 120, 70, 128, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.AMPHAROS, 2, false, false, false, "Light Pokémon", Type.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ELECTRIC, Type.DRAGON, 1.4, 61.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.MOLD_BREAKER, 610, 90, 95, 105, 165, 110, 45, 45, 70, 255), - ), - new PokemonSpecies(Species.BELLOSSOM, 2, false, false, false, "Flower Pokémon", Type.GRASS, null, 0.4, 5.8, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HEALER, 490, 75, 80, 95, 90, 100, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MARILL, 2, false, false, false, "Aqua Mouse Pokémon", Type.WATER, Type.FAIRY, 0.4, 8.5, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 250, 70, 20, 50, 20, 50, 40, 190, 50, 88, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.AZUMARILL, 2, false, false, false, "Aqua Rabbit Pokémon", Type.WATER, Type.FAIRY, 0.8, 28.5, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 420, 100, 50, 80, 60, 80, 50, 75, 50, 210, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.SUDOWOODO, 2, false, false, false, "Imitation Pokémon", Type.ROCK, null, 1.2, 38, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.RATTLED, 410, 70, 100, 115, 30, 65, 30, 65, 50, 144, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.POLITOED, 2, false, false, false, "Frog Pokémon", Type.WATER, null, 1.1, 33.9, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.DRIZZLE, 500, 90, 75, 75, 90, 100, 70, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.HOPPIP, 2, false, false, false, "Cottonweed Pokémon", Type.GRASS, Type.FLYING, 0.4, 0.5, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 250, 35, 35, 40, 35, 55, 50, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SKIPLOOM, 2, false, false, false, "Cottonweed Pokémon", Type.GRASS, Type.FLYING, 0.6, 1, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 340, 55, 45, 50, 45, 65, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.JUMPLUFF, 2, false, false, false, "Cottonweed Pokémon", Type.GRASS, Type.FLYING, 0.8, 3, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 460, 75, 55, 70, 55, 95, 110, 45, 70, 230, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.AIPOM, 2, false, false, false, "Long Tail Pokémon", Type.NORMAL, null, 0.8, 11.5, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.SKILL_LINK, 360, 55, 70, 55, 40, 55, 85, 45, 70, 72, GrowthRate.FAST, 50, true), - new PokemonSpecies(Species.SUNKERN, 2, false, false, false, "Seed Pokémon", Type.GRASS, null, 0.3, 1.8, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.EARLY_BIRD, 180, 30, 30, 30, 30, 30, 30, 235, 70, 36, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SUNFLORA, 2, false, false, false, "Sun Pokémon", Type.GRASS, null, 0.8, 8.5, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.EARLY_BIRD, 425, 75, 75, 55, 105, 85, 30, 120, 70, 149, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.YANMA, 2, false, false, false, "Clear Wing Pokémon", Type.BUG, Type.FLYING, 1.2, 38, Abilities.SPEED_BOOST, Abilities.COMPOUND_EYES, Abilities.FRISK, 390, 65, 65, 45, 75, 45, 95, 75, 70, 78, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WOOPER, 2, false, false, false, "Water Fish Pokémon", Type.WATER, Type.GROUND, 0.4, 8.5, Abilities.DAMP, Abilities.WATER_ABSORB, Abilities.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.QUAGSIRE, 2, false, false, false, "Water Fish Pokémon", Type.WATER, Type.GROUND, 1.4, 75, Abilities.DAMP, Abilities.WATER_ABSORB, Abilities.UNAWARE, 430, 95, 85, 85, 65, 65, 35, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.ESPEON, 2, false, false, false, "Sun Pokémon", Type.PSYCHIC, null, 0.9, 26.5, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.MAGIC_BOUNCE, 525, 65, 65, 60, 130, 95, 110, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.UMBREON, 2, false, false, false, "Moonlight Pokémon", Type.DARK, null, 1, 27, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.INNER_FOCUS, 525, 95, 65, 110, 60, 130, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.MURKROW, 2, false, false, false, "Darkness Pokémon", Type.DARK, Type.FLYING, 0.5, 2.1, Abilities.INSOMNIA, Abilities.SUPER_LUCK, Abilities.PRANKSTER, 405, 60, 85, 42, 85, 42, 91, 30, 35, 81, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SLOWKING, 2, false, false, false, "Royal Pokémon", Type.WATER, Type.PSYCHIC, 2, 79.5, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 75, 80, 100, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MISDREAVUS, 2, false, false, false, "Screech Pokémon", Type.GHOST, null, 0.7, 1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 435, 60, 60, 60, 85, 85, 85, 45, 35, 87, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.UNOWN, 2, false, false, false, "Symbol Pokémon", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("A", "a", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("B", "b", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("C", "c", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("D", "d", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("E", "e", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("F", "f", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("G", "g", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("H", "h", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("I", "i", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("J", "j", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("K", "k", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("L", "l", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("M", "m", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("N", "n", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("O", "o", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("P", "p", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("Q", "q", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("R", "r", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("S", "s", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("T", "t", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("U", "u", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("V", "v", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("W", "w", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("X", "x", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("Y", "y", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("Z", "z", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("!", "exclamation", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - new PokemonForm("?", "question", Type.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), - ), - new PokemonSpecies(Species.WOBBUFFET, 2, false, false, false, "Patient Pokémon", Type.PSYCHIC, null, 1.3, 28.5, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.TELEPATHY, 405, 190, 33, 58, 33, 58, 33, 45, 50, 142, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.GIRAFARIG, 2, false, false, false, "Long Neck Pokémon", Type.NORMAL, Type.PSYCHIC, 1.5, 41.5, Abilities.INNER_FOCUS, Abilities.EARLY_BIRD, Abilities.SAP_SIPPER, 455, 70, 80, 65, 90, 65, 85, 60, 70, 159, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.PINECO, 2, false, false, false, "Bagworm Pokémon", Type.BUG, null, 0.6, 7.2, Abilities.STURDY, Abilities.NONE, Abilities.OVERCOAT, 290, 50, 65, 90, 35, 35, 15, 190, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FORRETRESS, 2, false, false, false, "Bagworm Pokémon", Type.BUG, Type.STEEL, 1.2, 125.8, Abilities.STURDY, Abilities.NONE, Abilities.OVERCOAT, 465, 75, 90, 140, 60, 60, 40, 75, 70, 163, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUNSPARCE, 2, false, false, false, "Land Snake Pokémon", Type.NORMAL, null, 1.5, 14, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 415, 100, 70, 70, 65, 65, 45, 190, 50, 145, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GLIGAR, 2, false, false, false, "Fly Scorpion Pokémon", Type.GROUND, Type.FLYING, 1.1, 64.8, Abilities.HYPER_CUTTER, Abilities.SAND_VEIL, Abilities.IMMUNITY, 430, 65, 75, 105, 35, 65, 85, 60, 70, 86, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.STEELIX, 2, false, false, false, "Iron Snake Pokémon", Type.STEEL, Type.GROUND, 9.2, 400, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", Type.STEEL, Type.GROUND, 9.2, 400, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.STEEL, Type.GROUND, 10.5, 740, Abilities.SAND_FORCE, Abilities.SAND_FORCE, Abilities.SAND_FORCE, 610, 75, 125, 230, 55, 95, 30, 25, 50, 179, true), - ), - new PokemonSpecies(Species.SNUBBULL, 2, false, false, false, "Fairy Pokémon", Type.FAIRY, null, 0.6, 7.8, Abilities.INTIMIDATE, Abilities.RUN_AWAY, Abilities.RATTLED, 300, 60, 80, 50, 40, 40, 30, 190, 70, 60, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.GRANBULL, 2, false, false, false, "Fairy Pokémon", Type.FAIRY, null, 1.4, 48.7, Abilities.INTIMIDATE, Abilities.QUICK_FEET, Abilities.RATTLED, 450, 90, 120, 75, 60, 60, 45, 75, 70, 158, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.QWILFISH, 2, false, false, false, "Balloon Pokémon", Type.WATER, Type.POISON, 0.5, 3.9, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCIZOR, 2, false, false, false, "Pincer Pokémon", Type.BUG, Type.STEEL, 1.8, 118, Abilities.SWARM, Abilities.TECHNICIAN, Abilities.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", Type.BUG, Type.STEEL, 1.8, 118, Abilities.SWARM, Abilities.TECHNICIAN, Abilities.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.BUG, Type.STEEL, 2, 125, Abilities.TECHNICIAN, Abilities.TECHNICIAN, Abilities.TECHNICIAN, 600, 70, 150, 140, 65, 100, 75, 25, 50, 175, true), - ), - new PokemonSpecies(Species.SHUCKLE, 2, false, false, false, "Mold Pokémon", Type.BUG, Type.ROCK, 0.6, 20.5, Abilities.STURDY, Abilities.GLUTTONY, Abilities.CONTRARY, 505, 20, 10, 230, 10, 230, 5, 190, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.HERACROSS, 2, false, false, false, "Single Horn Pokémon", Type.BUG, Type.FIGHTING, 1.5, 54, Abilities.SWARM, Abilities.GUTS, Abilities.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", Type.BUG, Type.FIGHTING, 1.5, 54, Abilities.SWARM, Abilities.GUTS, Abilities.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.BUG, Type.FIGHTING, 1.7, 62.5, Abilities.SKILL_LINK, Abilities.SKILL_LINK, Abilities.SKILL_LINK, 600, 80, 185, 115, 40, 105, 75, 45, 50, 175, true), - ), - new PokemonSpecies(Species.SNEASEL, 2, false, false, false, "Sharp Claw Pokémon", Type.DARK, Type.ICE, 0.9, 28, Abilities.INNER_FOCUS, Abilities.KEEN_EYE, Abilities.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.TEDDIURSA, 2, false, false, false, "Little Bear Pokémon", Type.NORMAL, null, 0.6, 8.8, Abilities.PICKUP, Abilities.QUICK_FEET, Abilities.HONEY_GATHER, 330, 60, 80, 50, 50, 50, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.URSARING, 2, false, false, false, "Hibernator Pokémon", Type.NORMAL, null, 1.8, 125.8, Abilities.GUTS, Abilities.QUICK_FEET, Abilities.UNNERVE, 500, 90, 130, 75, 75, 75, 55, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.SLUGMA, 2, false, false, false, "Lava Pokémon", Type.FIRE, null, 0.7, 35, Abilities.MAGMA_ARMOR, Abilities.FLAME_BODY, Abilities.WEAK_ARMOR, 250, 40, 40, 40, 70, 40, 20, 190, 70, 50, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MAGCARGO, 2, false, false, false, "Lava Pokémon", Type.FIRE, Type.ROCK, 0.8, 55, Abilities.MAGMA_ARMOR, Abilities.FLAME_BODY, Abilities.WEAK_ARMOR, 430, 60, 50, 120, 90, 80, 30, 75, 70, 151, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SWINUB, 2, false, false, false, "Pig Pokémon", Type.ICE, Type.GROUND, 0.4, 6.5, Abilities.OBLIVIOUS, Abilities.SNOW_CLOAK, Abilities.THICK_FAT, 250, 50, 50, 40, 30, 30, 50, 225, 50, 50, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PILOSWINE, 2, false, false, false, "Swine Pokémon", Type.ICE, Type.GROUND, 1.1, 55.8, Abilities.OBLIVIOUS, Abilities.SNOW_CLOAK, Abilities.THICK_FAT, 450, 100, 100, 80, 60, 60, 50, 75, 50, 158, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.CORSOLA, 2, false, false, false, "Coral Pokémon", Type.WATER, Type.ROCK, 0.6, 5, Abilities.HUSTLE, Abilities.NATURAL_CURE, Abilities.REGENERATOR, 410, 65, 55, 95, 65, 95, 35, 60, 50, 144, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.REMORAID, 2, false, false, false, "Jet Pokémon", Type.WATER, null, 0.6, 12, Abilities.HUSTLE, Abilities.SNIPER, Abilities.MOODY, 300, 35, 65, 35, 65, 35, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.OCTILLERY, 2, false, false, false, "Jet Pokémon", Type.WATER, null, 0.9, 28.5, Abilities.SUCTION_CUPS, Abilities.SNIPER, Abilities.MOODY, 480, 75, 105, 75, 105, 75, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.DELIBIRD, 2, false, false, false, "Delivery Pokémon", Type.ICE, Type.FLYING, 0.9, 16, Abilities.VITAL_SPIRIT, Abilities.HUSTLE, Abilities.INSOMNIA, 330, 45, 55, 45, 65, 45, 75, 45, 50, 116, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.MANTINE, 2, false, false, false, "Kite Pokémon", Type.WATER, Type.FLYING, 2.1, 220, Abilities.SWIFT_SWIM, Abilities.WATER_ABSORB, Abilities.WATER_VEIL, 485, 85, 40, 70, 80, 140, 70, 25, 50, 170, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SKARMORY, 2, false, false, false, "Armor Bird Pokémon", Type.STEEL, Type.FLYING, 1.7, 50.5, Abilities.KEEN_EYE, Abilities.STURDY, Abilities.WEAK_ARMOR, 465, 65, 80, 140, 40, 70, 70, 25, 50, 163, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HOUNDOUR, 2, false, false, false, "Dark Pokémon", Type.DARK, Type.FIRE, 0.6, 10.8, Abilities.EARLY_BIRD, Abilities.FLASH_FIRE, Abilities.UNNERVE, 330, 45, 60, 30, 80, 50, 65, 120, 35, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HOUNDOOM, 2, false, false, false, "Dark Pokémon", Type.DARK, Type.FIRE, 1.4, 35, Abilities.EARLY_BIRD, Abilities.FLASH_FIRE, Abilities.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", Type.DARK, Type.FIRE, 1.4, 35, Abilities.EARLY_BIRD, Abilities.FLASH_FIRE, Abilities.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DARK, Type.FIRE, 1.9, 49.5, Abilities.SOLAR_POWER, Abilities.SOLAR_POWER, Abilities.SOLAR_POWER, 600, 75, 90, 90, 140, 90, 115, 45, 35, 175, true), - ), - new PokemonSpecies(Species.KINGDRA, 2, false, false, false, "Dragon Pokémon", Type.WATER, Type.DRAGON, 1.8, 152, Abilities.SWIFT_SWIM, Abilities.SNIPER, Abilities.DAMP, 540, 75, 95, 95, 95, 95, 85, 45, 50, 270, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PHANPY, 2, false, false, false, "Long Nose Pokémon", Type.GROUND, null, 0.5, 33.5, Abilities.PICKUP, Abilities.NONE, Abilities.SAND_VEIL, 330, 90, 60, 60, 40, 40, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DONPHAN, 2, false, false, false, "Armor Pokémon", Type.GROUND, null, 1.1, 120, Abilities.STURDY, Abilities.NONE, Abilities.SAND_VEIL, 500, 90, 120, 120, 60, 60, 50, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.PORYGON2, 2, false, false, false, "Virtual Pokémon", Type.NORMAL, null, 0.6, 32.5, Abilities.TRACE, Abilities.DOWNLOAD, Abilities.ANALYTIC, 515, 85, 80, 90, 105, 95, 60, 45, 50, 180, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.STANTLER, 2, false, false, false, "Big Horn Pokémon", Type.NORMAL, null, 1.4, 71.2, Abilities.INTIMIDATE, Abilities.FRISK, Abilities.SAP_SIPPER, 465, 73, 95, 62, 85, 65, 85, 45, 70, 163, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SMEARGLE, 2, false, false, false, "Painter Pokémon", Type.NORMAL, null, 1.2, 58, Abilities.OWN_TEMPO, Abilities.TECHNICIAN, Abilities.MOODY, 250, 55, 20, 35, 20, 45, 75, 45, 70, 88, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.TYROGUE, 2, false, false, false, "Scuffle Pokémon", Type.FIGHTING, null, 0.7, 21, Abilities.GUTS, Abilities.STEADFAST, Abilities.VITAL_SPIRIT, 210, 35, 35, 35, 35, 35, 35, 75, 50, 42, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.HITMONTOP, 2, false, false, false, "Handstand Pokémon", Type.FIGHTING, null, 1.4, 48, Abilities.INTIMIDATE, Abilities.TECHNICIAN, Abilities.STEADFAST, 455, 50, 95, 95, 35, 110, 70, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.SMOOCHUM, 2, false, false, false, "Kiss Pokémon", Type.ICE, Type.PSYCHIC, 0.4, 6, Abilities.OBLIVIOUS, Abilities.FOREWARN, Abilities.HYDRATION, 305, 45, 30, 15, 85, 65, 65, 45, 50, 61, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.ELEKID, 2, false, false, false, "Electric Pokémon", Type.ELECTRIC, null, 0.6, 23.5, Abilities.STATIC, Abilities.NONE, Abilities.VITAL_SPIRIT, 360, 45, 63, 37, 65, 55, 95, 45, 50, 72, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.MAGBY, 2, false, false, false, "Live Coal Pokémon", Type.FIRE, null, 0.7, 21.4, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 365, 45, 75, 37, 70, 55, 83, 45, 50, 73, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.MILTANK, 2, false, false, false, "Milk Cow Pokémon", Type.NORMAL, null, 1.2, 75.5, Abilities.THICK_FAT, Abilities.SCRAPPY, Abilities.SAP_SIPPER, 490, 95, 80, 105, 40, 70, 100, 45, 50, 172, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.BLISSEY, 2, false, false, false, "Happiness Pokémon", Type.NORMAL, null, 1.5, 46.8, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.HEALER, 540, 255, 10, 10, 75, 135, 55, 30, 140, 608, GrowthRate.FAST, 0, false), - new PokemonSpecies(Species.RAIKOU, 2, true, false, false, "Thunder Pokémon", Type.ELECTRIC, null, 1.9, 178, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 90, 85, 75, 115, 100, 115, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ENTEI, 2, true, false, false, "Volcano Pokémon", Type.FIRE, null, 2.1, 198, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 115, 115, 85, 90, 75, 100, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SUICUNE, 2, true, false, false, "Aurora Pokémon", Type.WATER, null, 2, 187, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 100, 75, 115, 90, 115, 85, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.LARVITAR, 2, false, false, false, "Rock Skin Pokémon", Type.ROCK, Type.GROUND, 0.6, 72, Abilities.GUTS, Abilities.NONE, Abilities.SAND_VEIL, 300, 50, 64, 50, 45, 50, 41, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PUPITAR, 2, false, false, false, "Hard Shell Pokémon", Type.ROCK, Type.GROUND, 1.2, 152, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 410, 70, 84, 70, 65, 70, 51, 45, 35, 144, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TYRANITAR, 2, false, false, false, "Armor Pokémon", Type.ROCK, Type.DARK, 2, 202, Abilities.SAND_STREAM, Abilities.NONE, Abilities.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.ROCK, Type.DARK, 2, 202, Abilities.SAND_STREAM, Abilities.NONE, Abilities.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ROCK, Type.DARK, 2.5, 255, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_STREAM, 700, 100, 164, 150, 95, 120, 71, 45, 35, 300), - ), - new PokemonSpecies(Species.LUGIA, 2, false, true, false, "Diving Pokémon", Type.PSYCHIC, Type.FLYING, 5.2, 216, Abilities.PRESSURE, Abilities.NONE, Abilities.MULTISCALE, 680, 106, 90, 130, 90, 154, 110, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.HO_OH, 2, false, true, false, "Rainbow Pokémon", Type.FIRE, Type.FLYING, 3.8, 199, Abilities.PRESSURE, Abilities.NONE, Abilities.REGENERATOR, 680, 106, 130, 90, 110, 154, 90, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CELEBI, 2, false, false, true, "Time Travel Pokémon", Type.PSYCHIC, Type.GRASS, 0.6, 5, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.TREECKO, 3, false, false, false, "Wood Gecko Pokémon", Type.GRASS, null, 0.5, 5, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 310, 40, 45, 35, 65, 55, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.GROVYLE, 3, false, false, false, "Wood Gecko Pokémon", Type.GRASS, null, 0.9, 21.6, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 405, 50, 65, 45, 85, 65, 95, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SCEPTILE, 3, false, false, false, "Forest Pokémon", Type.GRASS, null, 1.7, 52.2, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.GRASS, null, 1.7, 52.2, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.GRASS, Type.DRAGON, 1.9, 55.2, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.LIGHTNING_ROD, 630, 70, 110, 75, 145, 85, 145, 45, 50, 265), - ), - new PokemonSpecies(Species.TORCHIC, 3, false, false, false, "Chick Pokémon", Type.FIRE, null, 0.4, 2.5, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 310, 45, 60, 40, 70, 50, 45, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(Species.COMBUSKEN, 3, false, false, false, "Young Fowl Pokémon", Type.FIRE, Type.FIGHTING, 0.9, 19.5, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 405, 60, 85, 60, 85, 60, 55, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(Species.BLAZIKEN, 3, false, false, false, "Blaze Pokémon", Type.FIRE, Type.FIGHTING, 1.9, 52, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, true, true, - new PokemonForm("Normal", "", Type.FIRE, Type.FIGHTING, 1.9, 52, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.FIRE, Type.FIGHTING, 1.9, 52, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.SPEED_BOOST, 630, 80, 160, 80, 130, 80, 100, 45, 50, 265, true), - ), - new PokemonSpecies(Species.MUDKIP, 3, false, false, false, "Mud Fish Pokémon", Type.WATER, null, 0.4, 7.6, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 310, 50, 70, 50, 50, 50, 40, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MARSHTOMP, 3, false, false, false, "Mud Fish Pokémon", Type.WATER, Type.GROUND, 0.7, 28, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 405, 70, 85, 70, 60, 70, 50, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SWAMPERT, 3, false, false, false, "Mud Fish Pokémon", Type.WATER, Type.GROUND, 1.5, 81.9, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.WATER, Type.GROUND, 1.5, 81.9, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.WATER, Type.GROUND, 1.9, 102, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.SWIFT_SWIM, 635, 100, 150, 110, 95, 110, 70, 45, 50, 268), - ), - new PokemonSpecies(Species.POOCHYENA, 3, false, false, false, "Bite Pokémon", Type.DARK, null, 0.5, 13.6, Abilities.RUN_AWAY, Abilities.QUICK_FEET, Abilities.RATTLED, 220, 35, 55, 35, 30, 30, 35, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MIGHTYENA, 3, false, false, false, "Bite Pokémon", Type.DARK, null, 1, 37, Abilities.INTIMIDATE, Abilities.QUICK_FEET, Abilities.MOXIE, 420, 70, 90, 70, 60, 60, 70, 127, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ZIGZAGOON, 3, false, false, false, "Tiny Raccoon Pokémon", Type.NORMAL, null, 0.4, 17.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LINOONE, 3, false, false, false, "Rushing Pokémon", Type.NORMAL, null, 0.5, 32.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WURMPLE, 3, false, false, false, "Worm Pokémon", Type.BUG, null, 0.3, 3.6, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 45, 45, 35, 20, 30, 20, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SILCOON, 3, false, false, false, "Cocoon Pokémon", Type.BUG, null, 0.6, 10, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEAUTIFLY, 3, false, false, false, "Butterfly Pokémon", Type.BUG, Type.FLYING, 1, 28.4, Abilities.SWARM, Abilities.NONE, Abilities.RIVALRY, 395, 60, 70, 50, 100, 50, 65, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.CASCOON, 3, false, false, false, "Cocoon Pokémon", Type.BUG, null, 0.7, 11.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUSTOX, 3, false, false, false, "Poison Moth Pokémon", Type.BUG, Type.POISON, 1.2, 31.6, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.COMPOUND_EYES, 385, 60, 50, 70, 50, 90, 65, 45, 70, 193, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.LOTAD, 3, false, false, false, "Water Weed Pokémon", Type.WATER, Type.GRASS, 0.5, 2.6, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 220, 40, 30, 30, 40, 50, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LOMBRE, 3, false, false, false, "Jolly Pokémon", Type.WATER, Type.GRASS, 1.2, 32.5, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 340, 60, 50, 50, 60, 70, 50, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LUDICOLO, 3, false, false, false, "Carefree Pokémon", Type.WATER, Type.GRASS, 1.5, 55, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 480, 80, 70, 70, 90, 100, 70, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SEEDOT, 3, false, false, false, "Acorn Pokémon", Type.GRASS, null, 0.5, 4, Abilities.CHLOROPHYLL, Abilities.EARLY_BIRD, Abilities.PICKPOCKET, 220, 40, 40, 50, 30, 30, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.NUZLEAF, 3, false, false, false, "Wily Pokémon", Type.GRASS, Type.DARK, 1, 28, Abilities.CHLOROPHYLL, Abilities.EARLY_BIRD, Abilities.PICKPOCKET, 340, 70, 70, 40, 60, 40, 60, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SHIFTRY, 3, false, false, false, "Wicked Pokémon", Type.GRASS, Type.DARK, 1.3, 59.6, Abilities.CHLOROPHYLL, Abilities.WIND_RIDER, Abilities.PICKPOCKET, 480, 90, 100, 60, 90, 60, 80, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.TAILLOW, 3, false, false, false, "Tiny Swallow Pokémon", Type.NORMAL, Type.FLYING, 0.3, 2.3, Abilities.GUTS, Abilities.NONE, Abilities.SCRAPPY, 270, 40, 55, 30, 30, 30, 85, 200, 70, 54, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SWELLOW, 3, false, false, false, "Swallow Pokémon", Type.NORMAL, Type.FLYING, 0.7, 19.8, Abilities.GUTS, Abilities.NONE, Abilities.SCRAPPY, 455, 60, 85, 60, 75, 50, 125, 45, 70, 159, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WINGULL, 3, false, false, false, "Seagull Pokémon", Type.WATER, Type.FLYING, 0.6, 9.5, Abilities.KEEN_EYE, Abilities.HYDRATION, Abilities.RAIN_DISH, 270, 40, 30, 30, 55, 30, 85, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PELIPPER, 3, false, false, false, "Water Bird Pokémon", Type.WATER, Type.FLYING, 1.2, 28, Abilities.KEEN_EYE, Abilities.DRIZZLE, Abilities.RAIN_DISH, 440, 60, 50, 100, 95, 70, 65, 45, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RALTS, 3, false, false, false, "Feeling Pokémon", Type.PSYCHIC, Type.FAIRY, 0.4, 6.6, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 198, 28, 25, 25, 45, 35, 40, 235, 35, 40, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.KIRLIA, 3, false, false, false, "Emotion Pokémon", Type.PSYCHIC, Type.FAIRY, 0.8, 20.2, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 278, 38, 35, 35, 65, 55, 50, 120, 35, 97, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GARDEVOIR, 3, false, false, false, "Embrace Pokémon", Type.PSYCHIC, Type.FAIRY, 1.6, 48.4, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.PSYCHIC, Type.FAIRY, 1.6, 48.4, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.PSYCHIC, Type.FAIRY, 1.6, 48.4, Abilities.PIXILATE, Abilities.PIXILATE, Abilities.PIXILATE, 618, 68, 85, 65, 165, 135, 100, 45, 35, 259), - ), - new PokemonSpecies(Species.SURSKIT, 3, false, false, false, "Pond Skater Pokémon", Type.BUG, Type.WATER, 0.5, 1.7, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.RAIN_DISH, 269, 40, 30, 32, 50, 52, 65, 200, 70, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MASQUERAIN, 3, false, false, false, "Eyeball Pokémon", Type.BUG, Type.FLYING, 0.8, 3.6, Abilities.INTIMIDATE, Abilities.NONE, Abilities.UNNERVE, 454, 70, 60, 62, 100, 82, 80, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SHROOMISH, 3, false, false, false, "Mushroom Pokémon", Type.GRASS, null, 0.4, 4.5, Abilities.EFFECT_SPORE, Abilities.POISON_HEAL, Abilities.QUICK_FEET, 295, 60, 40, 60, 40, 60, 35, 255, 70, 59, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.BRELOOM, 3, false, false, false, "Mushroom Pokémon", Type.GRASS, Type.FIGHTING, 1.2, 39.2, Abilities.EFFECT_SPORE, Abilities.POISON_HEAL, Abilities.TECHNICIAN, 460, 60, 130, 80, 60, 60, 70, 90, 70, 161, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.SLAKOTH, 3, false, false, false, "Slacker Pokémon", Type.NORMAL, null, 0.8, 24, Abilities.TRUANT, Abilities.NONE, Abilities.STALL, 280, 60, 60, 60, 35, 35, 30, 255, 70, 56, GrowthRate.SLOW, 50, false), //Custom Hidden - new PokemonSpecies(Species.VIGOROTH, 3, false, false, false, "Wild Monkey Pokémon", Type.NORMAL, null, 1.4, 46.5, Abilities.VITAL_SPIRIT, Abilities.NONE, Abilities.INSOMNIA, 440, 80, 80, 80, 55, 55, 90, 120, 70, 154, GrowthRate.SLOW, 50, false), //Custom Hidden - new PokemonSpecies(Species.SLAKING, 3, false, false, false, "Lazy Pokémon", Type.NORMAL, null, 2, 130.5, Abilities.TRUANT, Abilities.NONE, Abilities.STALL, 670, 150, 160, 100, 95, 65, 100, 45, 70, 285, GrowthRate.SLOW, 50, false), //Custom Hidden - new PokemonSpecies(Species.NINCADA, 3, false, false, false, "Trainee Pokémon", Type.BUG, Type.GROUND, 0.5, 5.5, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.RUN_AWAY, 266, 31, 45, 90, 30, 30, 40, 255, 50, 53, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.NINJASK, 3, false, false, false, "Ninja Pokémon", Type.BUG, Type.FLYING, 0.8, 12, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.INFILTRATOR, 456, 61, 90, 45, 50, 50, 160, 120, 50, 160, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.SHEDINJA, 3, false, false, false, "Shed Pokémon", Type.BUG, Type.GHOST, 0.8, 1.2, Abilities.WONDER_GUARD, Abilities.NONE, Abilities.NONE, 236, 1, 90, 45, 30, 30, 40, 45, 50, 83, GrowthRate.ERRATIC, null, false), - new PokemonSpecies(Species.WHISMUR, 3, false, false, false, "Whisper Pokémon", Type.NORMAL, null, 0.6, 16.3, Abilities.SOUNDPROOF, Abilities.NONE, Abilities.RATTLED, 240, 64, 51, 23, 51, 23, 28, 190, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LOUDRED, 3, false, false, false, "Big Voice Pokémon", Type.NORMAL, null, 1, 40.5, Abilities.SOUNDPROOF, Abilities.NONE, Abilities.SCRAPPY, 360, 84, 71, 43, 71, 43, 48, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.EXPLOUD, 3, false, false, false, "Loud Noise Pokémon", Type.NORMAL, null, 1.5, 84, Abilities.SOUNDPROOF, Abilities.NONE, Abilities.SCRAPPY, 490, 104, 91, 63, 91, 73, 68, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MAKUHITA, 3, false, false, false, "Guts Pokémon", Type.FIGHTING, null, 1, 86.4, Abilities.THICK_FAT, Abilities.GUTS, Abilities.SHEER_FORCE, 237, 72, 60, 30, 20, 30, 25, 180, 70, 47, GrowthRate.FLUCTUATING, 75, false), - new PokemonSpecies(Species.HARIYAMA, 3, false, false, false, "Arm Thrust Pokémon", Type.FIGHTING, null, 2.3, 253.8, Abilities.THICK_FAT, Abilities.GUTS, Abilities.SHEER_FORCE, 474, 144, 120, 60, 40, 60, 50, 200, 70, 166, GrowthRate.FLUCTUATING, 75, false), - new PokemonSpecies(Species.AZURILL, 3, false, false, false, "Polka Dot Pokémon", Type.NORMAL, Type.FAIRY, 0.2, 2, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 190, 50, 20, 40, 20, 40, 20, 150, 50, 38, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.NOSEPASS, 3, false, false, false, "Compass Pokémon", Type.ROCK, null, 1, 97, Abilities.STURDY, Abilities.MAGNET_PULL, Abilities.SAND_FORCE, 375, 30, 45, 135, 45, 90, 30, 255, 70, 75, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SKITTY, 3, false, false, false, "Kitten Pokémon", Type.NORMAL, null, 0.6, 11, Abilities.CUTE_CHARM, Abilities.NORMALIZE, Abilities.WONDER_SKIN, 260, 50, 45, 45, 35, 35, 50, 255, 70, 52, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.DELCATTY, 3, false, false, false, "Prim Pokémon", Type.NORMAL, null, 1.1, 32.6, Abilities.CUTE_CHARM, Abilities.NORMALIZE, Abilities.WONDER_SKIN, 400, 70, 65, 65, 55, 55, 90, 60, 70, 140, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.SABLEYE, 3, false, false, false, "Darkness Pokémon", Type.DARK, Type.GHOST, 0.5, 11, Abilities.KEEN_EYE, Abilities.STALL, Abilities.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.DARK, Type.GHOST, 0.5, 11, Abilities.KEEN_EYE, Abilities.STALL, Abilities.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DARK, Type.GHOST, 0.5, 161, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 480, 50, 85, 125, 85, 115, 20, 45, 35, 133), - ), - new PokemonSpecies(Species.MAWILE, 3, false, false, false, "Deceiver Pokémon", Type.STEEL, Type.FAIRY, 0.6, 11.5, Abilities.HYPER_CUTTER, Abilities.INTIMIDATE, Abilities.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, GrowthRate.FAST, 50, false, true, - new PokemonForm("Normal", "", Type.STEEL, Type.FAIRY, 0.6, 11.5, Abilities.HYPER_CUTTER, Abilities.INTIMIDATE, Abilities.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.STEEL, Type.FAIRY, 1, 23.5, Abilities.HUGE_POWER, Abilities.HUGE_POWER, Abilities.HUGE_POWER, 480, 50, 105, 125, 55, 95, 50, 45, 50, 133), - ), - new PokemonSpecies(Species.ARON, 3, false, false, false, "Iron Armor Pokémon", Type.STEEL, Type.ROCK, 0.4, 60, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 330, 50, 70, 100, 40, 40, 30, 180, 35, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.LAIRON, 3, false, false, false, "Iron Armor Pokémon", Type.STEEL, Type.ROCK, 0.9, 120, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 430, 60, 90, 140, 50, 50, 40, 90, 35, 151, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.AGGRON, 3, false, false, false, "Iron Armor Pokémon", Type.STEEL, Type.ROCK, 2.1, 360, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.STEEL, Type.ROCK, 2.1, 360, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.STEEL, null, 2.2, 395, Abilities.FILTER, Abilities.FILTER, Abilities.FILTER, 630, 70, 140, 230, 60, 80, 50, 45, 35, 265), - ), - new PokemonSpecies(Species.MEDITITE, 3, false, false, false, "Meditate Pokémon", Type.FIGHTING, Type.PSYCHIC, 0.6, 11.2, Abilities.PURE_POWER, Abilities.NONE, Abilities.TELEPATHY, 280, 30, 40, 55, 40, 55, 60, 180, 70, 56, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.MEDICHAM, 3, false, false, false, "Meditate Pokémon", Type.FIGHTING, Type.PSYCHIC, 1.3, 31.5, Abilities.PURE_POWER, Abilities.NONE, Abilities.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", Type.FIGHTING, Type.PSYCHIC, 1.3, 31.5, Abilities.PURE_POWER, Abilities.NONE, Abilities.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.FIGHTING, Type.PSYCHIC, 1.3, 31.5, Abilities.PURE_POWER, Abilities.NONE, Abilities.PURE_POWER, 510, 60, 100, 85, 80, 85, 100, 90, 70, 144, true), - ), - new PokemonSpecies(Species.ELECTRIKE, 3, false, false, false, "Lightning Pokémon", Type.ELECTRIC, null, 0.6, 15.2, Abilities.STATIC, Abilities.LIGHTNING_ROD, Abilities.MINUS, 295, 40, 45, 40, 65, 40, 65, 120, 50, 59, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.MANECTRIC, 3, false, false, false, "Discharge Pokémon", Type.ELECTRIC, null, 1.5, 40.2, Abilities.STATIC, Abilities.LIGHTNING_ROD, Abilities.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.ELECTRIC, null, 1.5, 40.2, Abilities.STATIC, Abilities.LIGHTNING_ROD, Abilities.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ELECTRIC, null, 1.8, 44, Abilities.INTIMIDATE, Abilities.INTIMIDATE, Abilities.INTIMIDATE, 575, 70, 75, 80, 135, 80, 135, 45, 50, 166), - ), - new PokemonSpecies(Species.PLUSLE, 3, false, false, false, "Cheering Pokémon", Type.ELECTRIC, null, 0.4, 4.2, Abilities.PLUS, Abilities.NONE, Abilities.LIGHTNING_ROD, 405, 60, 50, 40, 85, 75, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MINUN, 3, false, false, false, "Cheering Pokémon", Type.ELECTRIC, null, 0.4, 4.2, Abilities.MINUS, Abilities.NONE, Abilities.VOLT_ABSORB, 405, 60, 40, 50, 75, 85, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VOLBEAT, 3, false, false, false, "Firefly Pokémon", Type.BUG, null, 0.7, 17.7, Abilities.ILLUMINATE, Abilities.SWARM, Abilities.PRANKSTER, 430, 65, 73, 75, 47, 85, 85, 150, 70, 151, GrowthRate.ERRATIC, 100, false), - new PokemonSpecies(Species.ILLUMISE, 3, false, false, false, "Firefly Pokémon", Type.BUG, null, 0.6, 17.7, Abilities.OBLIVIOUS, Abilities.TINTED_LENS, Abilities.PRANKSTER, 430, 65, 47, 75, 73, 85, 85, 150, 70, 151, GrowthRate.FLUCTUATING, 0, false), - new PokemonSpecies(Species.ROSELIA, 3, false, false, false, "Thorn Pokémon", Type.GRASS, Type.POISON, 0.3, 2, Abilities.NATURAL_CURE, Abilities.POISON_POINT, Abilities.LEAF_GUARD, 400, 50, 60, 45, 100, 80, 65, 150, 50, 140, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.GULPIN, 3, false, false, false, "Stomach Pokémon", Type.POISON, null, 0.4, 10.3, Abilities.LIQUID_OOZE, Abilities.STICKY_HOLD, Abilities.GLUTTONY, 302, 70, 43, 53, 43, 53, 40, 225, 70, 60, GrowthRate.FLUCTUATING, 50, true), - new PokemonSpecies(Species.SWALOT, 3, false, false, false, "Poison Bag Pokémon", Type.POISON, null, 1.7, 80, Abilities.LIQUID_OOZE, Abilities.STICKY_HOLD, Abilities.GLUTTONY, 467, 100, 73, 83, 73, 83, 55, 75, 70, 163, GrowthRate.FLUCTUATING, 50, true), - new PokemonSpecies(Species.CARVANHA, 3, false, false, false, "Savage Pokémon", Type.WATER, Type.DARK, 0.8, 20.8, Abilities.ROUGH_SKIN, Abilities.NONE, Abilities.SPEED_BOOST, 305, 45, 90, 20, 65, 20, 65, 225, 35, 61, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SHARPEDO, 3, false, false, false, "Brutal Pokémon", Type.WATER, Type.DARK, 1.8, 88.8, Abilities.ROUGH_SKIN, Abilities.NONE, Abilities.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.WATER, Type.DARK, 1.8, 88.8, Abilities.ROUGH_SKIN, Abilities.NONE, Abilities.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.WATER, Type.DARK, 2.5, 130.3, Abilities.STRONG_JAW, Abilities.NONE, Abilities.STRONG_JAW, 560, 70, 140, 70, 110, 65, 105, 60, 35, 161), - ), - new PokemonSpecies(Species.WAILMER, 3, false, false, false, "Ball Whale Pokémon", Type.WATER, null, 2, 130, Abilities.WATER_VEIL, Abilities.OBLIVIOUS, Abilities.PRESSURE, 400, 130, 70, 35, 70, 35, 60, 125, 50, 80, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.WAILORD, 3, false, false, false, "Float Whale Pokémon", Type.WATER, null, 14.5, 398, Abilities.WATER_VEIL, Abilities.OBLIVIOUS, Abilities.PRESSURE, 500, 170, 90, 45, 90, 45, 60, 60, 50, 175, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.NUMEL, 3, false, false, false, "Numb Pokémon", Type.FIRE, Type.GROUND, 0.7, 24, Abilities.OBLIVIOUS, Abilities.SIMPLE, Abilities.OWN_TEMPO, 305, 60, 60, 40, 65, 45, 35, 255, 70, 61, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.CAMERUPT, 3, false, false, false, "Eruption Pokémon", Type.FIRE, Type.GROUND, 1.9, 220, Abilities.MAGMA_ARMOR, Abilities.SOLID_ROCK, Abilities.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, GrowthRate.MEDIUM_FAST, 50, true, true, - new PokemonForm("Normal", "", Type.FIRE, Type.GROUND, 1.9, 220, Abilities.MAGMA_ARMOR, Abilities.SOLID_ROCK, Abilities.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.FIRE, Type.GROUND, 2.5, 320.5, Abilities.SHEER_FORCE, Abilities.SHEER_FORCE, Abilities.SHEER_FORCE, 560, 70, 120, 100, 145, 105, 20, 150, 70, 161), - ), - new PokemonSpecies(Species.TORKOAL, 3, false, false, false, "Coal Pokémon", Type.FIRE, null, 0.5, 80.4, Abilities.WHITE_SMOKE, Abilities.DROUGHT, Abilities.SHELL_ARMOR, 470, 70, 85, 140, 85, 70, 20, 90, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SPOINK, 3, false, false, false, "Bounce Pokémon", Type.PSYCHIC, null, 0.7, 30.6, Abilities.THICK_FAT, Abilities.OWN_TEMPO, Abilities.GLUTTONY, 330, 60, 25, 35, 70, 80, 60, 255, 70, 66, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.GRUMPIG, 3, false, false, false, "Manipulate Pokémon", Type.PSYCHIC, null, 0.9, 71.5, Abilities.THICK_FAT, Abilities.OWN_TEMPO, Abilities.GLUTTONY, 470, 80, 45, 65, 90, 110, 80, 60, 70, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.SPINDA, 3, false, false, false, "Spot Panda Pokémon", Type.NORMAL, null, 1.1, 5, Abilities.OWN_TEMPO, Abilities.TANGLED_FEET, Abilities.CONTRARY, 360, 60, 60, 60, 60, 60, 60, 255, 70, 126, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.TRAPINCH, 3, false, false, false, "Ant Pit Pokémon", Type.GROUND, null, 0.7, 15, Abilities.HYPER_CUTTER, Abilities.ARENA_TRAP, Abilities.SHEER_FORCE, 290, 45, 100, 45, 45, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.VIBRAVA, 3, false, false, false, "Vibration Pokémon", Type.GROUND, Type.DRAGON, 1.1, 15.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 340, 50, 70, 50, 50, 50, 70, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.FLYGON, 3, false, false, false, "Mystic Pokémon", Type.GROUND, Type.DRAGON, 2, 82, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 80, 100, 80, 80, 80, 100, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CACNEA, 3, false, false, false, "Cactus Pokémon", Type.GRASS, null, 0.4, 51.3, Abilities.SAND_VEIL, Abilities.NONE, Abilities.WATER_ABSORB, 335, 50, 85, 40, 85, 40, 35, 190, 35, 67, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CACTURNE, 3, false, false, false, "Scarecrow Pokémon", Type.GRASS, Type.DARK, 1.3, 77.4, Abilities.SAND_VEIL, Abilities.NONE, Abilities.WATER_ABSORB, 475, 70, 115, 60, 115, 60, 55, 60, 35, 166, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SWABLU, 3, false, false, false, "Cotton Bird Pokémon", Type.NORMAL, Type.FLYING, 0.4, 1.2, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.CLOUD_NINE, 310, 45, 40, 60, 40, 75, 50, 255, 50, 62, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.ALTARIA, 3, false, false, false, "Humming Pokémon", Type.DRAGON, Type.FLYING, 1.1, 20.6, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, GrowthRate.ERRATIC, 50, false, true, - new PokemonForm("Normal", "", Type.DRAGON, Type.FLYING, 1.1, 20.6, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DRAGON, Type.FAIRY, 1.5, 20.6, Abilities.PIXILATE, Abilities.NONE, Abilities.PIXILATE, 590, 75, 110, 110, 110, 105, 80, 45, 50, 172), - ), - new PokemonSpecies(Species.ZANGOOSE, 3, false, false, false, "Cat Ferret Pokémon", Type.NORMAL, null, 1.3, 40.3, Abilities.IMMUNITY, Abilities.NONE, Abilities.TOXIC_BOOST, 458, 73, 115, 60, 60, 60, 90, 90, 70, 160, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.SEVIPER, 3, false, false, false, "Fang Snake Pokémon", Type.POISON, null, 2.7, 52.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.INFILTRATOR, 458, 73, 100, 60, 100, 60, 65, 90, 70, 160, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.LUNATONE, 3, false, false, false, "Meteorite Pokémon", Type.ROCK, Type.PSYCHIC, 1, 168, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 460, 90, 55, 65, 95, 85, 70, 45, 50, 161, GrowthRate.FAST, null, false), - new PokemonSpecies(Species.SOLROCK, 3, false, false, false, "Meteorite Pokémon", Type.ROCK, Type.PSYCHIC, 1.2, 154, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 460, 90, 95, 85, 55, 65, 70, 45, 50, 161, GrowthRate.FAST, null, false), - new PokemonSpecies(Species.BARBOACH, 3, false, false, false, "Whiskers Pokémon", Type.WATER, Type.GROUND, 0.4, 1.9, Abilities.OBLIVIOUS, Abilities.ANTICIPATION, Abilities.HYDRATION, 288, 50, 48, 43, 46, 41, 60, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WHISCASH, 3, false, false, false, "Whiskers Pokémon", Type.WATER, Type.GROUND, 0.9, 23.6, Abilities.OBLIVIOUS, Abilities.ANTICIPATION, Abilities.HYDRATION, 468, 110, 78, 73, 76, 71, 60, 75, 50, 164, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CORPHISH, 3, false, false, false, "Ruffian Pokémon", Type.WATER, null, 0.6, 11.5, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.ADAPTABILITY, 308, 43, 80, 65, 50, 35, 35, 205, 50, 62, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.CRAWDAUNT, 3, false, false, false, "Rogue Pokémon", Type.WATER, Type.DARK, 1.1, 32.8, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.ADAPTABILITY, 468, 63, 120, 85, 90, 55, 55, 155, 50, 164, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.BALTOY, 3, false, false, false, "Clay Doll Pokémon", Type.GROUND, Type.PSYCHIC, 0.5, 21.5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 300, 40, 40, 55, 40, 70, 55, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.CLAYDOL, 3, false, false, false, "Clay Doll Pokémon", Type.GROUND, Type.PSYCHIC, 1.5, 108, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 500, 60, 70, 105, 70, 120, 75, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.LILEEP, 3, false, false, false, "Sea Lily Pokémon", Type.ROCK, Type.GRASS, 1, 23.8, Abilities.SUCTION_CUPS, Abilities.NONE, Abilities.STORM_DRAIN, 355, 66, 41, 77, 61, 87, 23, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.CRADILY, 3, false, false, false, "Barnacle Pokémon", Type.ROCK, Type.GRASS, 1.5, 60.4, Abilities.SUCTION_CUPS, Abilities.NONE, Abilities.STORM_DRAIN, 495, 86, 81, 97, 81, 107, 43, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.ANORITH, 3, false, false, false, "Old Shrimp Pokémon", Type.ROCK, Type.BUG, 0.7, 12.5, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.SWIFT_SWIM, 355, 45, 95, 50, 40, 50, 75, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.ARMALDO, 3, false, false, false, "Plate Pokémon", Type.ROCK, Type.BUG, 1.5, 68.2, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.SWIFT_SWIM, 495, 75, 125, 100, 70, 80, 45, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.FEEBAS, 3, false, false, false, "Fish Pokémon", Type.WATER, null, 0.6, 7.4, Abilities.SWIFT_SWIM, Abilities.OBLIVIOUS, Abilities.ADAPTABILITY, 200, 20, 15, 20, 10, 55, 80, 255, 50, 40, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.MILOTIC, 3, false, false, false, "Tender Pokémon", Type.WATER, null, 6.2, 162, Abilities.MARVEL_SCALE, Abilities.COMPETITIVE, Abilities.CUTE_CHARM, 540, 95, 60, 79, 100, 125, 81, 60, 50, 189, GrowthRate.ERRATIC, 50, true), - new PokemonSpecies(Species.CASTFORM, 3, false, false, false, "Weather Pokémon", Type.NORMAL, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal Form", "", Type.NORMAL, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, false, null, true), - new PokemonForm("Sunny Form", "sunny", Type.FIRE, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), - new PokemonForm("Rainy Form", "rainy", Type.WATER, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), - new PokemonForm("Snowy Form", "snowy", Type.ICE, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), - ), - new PokemonSpecies(Species.KECLEON, 3, false, false, false, "Color Swap Pokémon", Type.NORMAL, null, 1, 22, Abilities.COLOR_CHANGE, Abilities.NONE, Abilities.PROTEAN, 440, 60, 90, 70, 60, 120, 40, 200, 70, 154, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SHUPPET, 3, false, false, false, "Puppet Pokémon", Type.GHOST, null, 0.6, 2.3, Abilities.INSOMNIA, Abilities.FRISK, Abilities.CURSED_BODY, 295, 44, 75, 35, 63, 33, 45, 225, 35, 59, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.BANETTE, 3, false, false, false, "Marionette Pokémon", Type.GHOST, null, 1.1, 12.5, Abilities.INSOMNIA, Abilities.FRISK, Abilities.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, GrowthRate.FAST, 50, false, true, - new PokemonForm("Normal", "", Type.GHOST, null, 1.1, 12.5, Abilities.INSOMNIA, Abilities.FRISK, Abilities.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.GHOST, null, 1.2, 13, Abilities.PRANKSTER, Abilities.PRANKSTER, Abilities.PRANKSTER, 555, 64, 165, 75, 93, 83, 75, 45, 35, 159), - ), - new PokemonSpecies(Species.DUSKULL, 3, false, false, false, "Requiem Pokémon", Type.GHOST, null, 0.8, 15, Abilities.LEVITATE, Abilities.NONE, Abilities.FRISK, 295, 20, 40, 90, 30, 90, 25, 190, 35, 59, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.DUSCLOPS, 3, false, false, false, "Beckon Pokémon", Type.GHOST, null, 1.6, 30.6, Abilities.PRESSURE, Abilities.NONE, Abilities.FRISK, 455, 40, 70, 130, 60, 130, 25, 90, 35, 159, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.TROPIUS, 3, false, false, false, "Fruit Pokémon", Type.GRASS, Type.FLYING, 2, 100, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.HARVEST, 460, 99, 68, 83, 72, 87, 51, 200, 70, 161, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CHIMECHO, 3, false, false, false, "Wind Chime Pokémon", Type.PSYCHIC, null, 0.6, 1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 455, 75, 50, 80, 95, 90, 65, 45, 70, 159, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.ABSOL, 3, false, false, false, "Disaster Pokémon", Type.DARK, null, 1.2, 47, Abilities.PRESSURE, Abilities.SUPER_LUCK, Abilities.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.DARK, null, 1.2, 47, Abilities.PRESSURE, Abilities.SUPER_LUCK, Abilities.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DARK, null, 1.2, 49, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 565, 65, 150, 60, 115, 60, 115, 30, 35, 163), - ), - new PokemonSpecies(Species.WYNAUT, 3, false, false, false, "Bright Pokémon", Type.PSYCHIC, null, 0.6, 14, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.TELEPATHY, 260, 95, 23, 48, 23, 48, 23, 125, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SNORUNT, 3, false, false, false, "Snow Hat Pokémon", Type.ICE, null, 0.7, 16.8, Abilities.INNER_FOCUS, Abilities.ICE_BODY, Abilities.MOODY, 300, 50, 50, 50, 50, 50, 50, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GLALIE, 3, false, false, false, "Face Pokémon", Type.ICE, null, 1.5, 256.5, Abilities.INNER_FOCUS, Abilities.ICE_BODY, Abilities.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.ICE, null, 1.5, 256.5, Abilities.INNER_FOCUS, Abilities.ICE_BODY, Abilities.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ICE, null, 2.1, 350.2, Abilities.REFRIGERATE, Abilities.REFRIGERATE, Abilities.REFRIGERATE, 580, 80, 120, 80, 120, 80, 100, 75, 50, 168), - ), - new PokemonSpecies(Species.SPHEAL, 3, false, false, false, "Clap Pokémon", Type.ICE, Type.WATER, 0.8, 39.5, Abilities.THICK_FAT, Abilities.ICE_BODY, Abilities.OBLIVIOUS, 290, 70, 40, 50, 55, 50, 25, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SEALEO, 3, false, false, false, "Ball Roll Pokémon", Type.ICE, Type.WATER, 1.1, 87.6, Abilities.THICK_FAT, Abilities.ICE_BODY, Abilities.OBLIVIOUS, 410, 90, 60, 70, 75, 70, 45, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WALREIN, 3, false, false, false, "Ice Break Pokémon", Type.ICE, Type.WATER, 1.4, 150.6, Abilities.THICK_FAT, Abilities.ICE_BODY, Abilities.OBLIVIOUS, 530, 110, 80, 90, 95, 90, 65, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CLAMPERL, 3, false, false, false, "Bivalve Pokémon", Type.WATER, null, 0.4, 52.5, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.RATTLED, 345, 35, 64, 85, 74, 55, 32, 255, 70, 69, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.HUNTAIL, 3, false, false, false, "Deep Sea Pokémon", Type.WATER, null, 1.7, 27, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.WATER_VEIL, 485, 55, 104, 105, 94, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.GOREBYSS, 3, false, false, false, "South Sea Pokémon", Type.WATER, null, 1.8, 22.6, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.HYDRATION, 485, 55, 84, 105, 114, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.RELICANTH, 3, false, false, false, "Longevity Pokémon", Type.WATER, Type.ROCK, 1, 23.4, Abilities.SWIFT_SWIM, Abilities.ROCK_HEAD, Abilities.STURDY, 485, 100, 90, 130, 45, 65, 55, 25, 50, 170, GrowthRate.SLOW, 87.5, true), - new PokemonSpecies(Species.LUVDISC, 3, false, false, false, "Rendezvous Pokémon", Type.WATER, null, 0.6, 8.7, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.HYDRATION, 330, 43, 30, 55, 40, 65, 97, 225, 70, 116, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.BAGON, 3, false, false, false, "Rock Head Pokémon", Type.DRAGON, null, 0.6, 42.1, Abilities.ROCK_HEAD, Abilities.NONE, Abilities.SHEER_FORCE, 300, 45, 75, 60, 40, 30, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SHELGON, 3, false, false, false, "Endurance Pokémon", Type.DRAGON, null, 1.1, 110.5, Abilities.ROCK_HEAD, Abilities.NONE, Abilities.OVERCOAT, 420, 65, 95, 100, 60, 50, 50, 45, 35, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SALAMENCE, 3, false, false, false, "Dragon Pokémon", Type.DRAGON, Type.FLYING, 1.5, 102.6, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.DRAGON, Type.FLYING, 1.5, 102.6, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DRAGON, Type.FLYING, 1.8, 112.6, Abilities.AERILATE, Abilities.NONE, Abilities.AERILATE, 700, 95, 145, 130, 120, 90, 120, 45, 35, 300), - ), - new PokemonSpecies(Species.BELDUM, 3, false, false, false, "Iron Ball Pokémon", Type.STEEL, Type.PSYCHIC, 0.6, 95.2, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 300, 40, 55, 80, 35, 60, 30, 45, 35, 60, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Frigibax - new PokemonSpecies(Species.METANG, 3, false, false, false, "Iron Claw Pokémon", Type.STEEL, Type.PSYCHIC, 1.2, 202.5, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 420, 60, 75, 100, 55, 80, 50, 25, 35, 147, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Arctibax - new PokemonSpecies(Species.METAGROSS, 3, false, false, false, "Iron Leg Pokémon", Type.STEEL, Type.PSYCHIC, 1.6, 550, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 10, 35, 300, GrowthRate.SLOW, null, false, true, //Custom Catchrate, matching Baxcalibur - new PokemonForm("Normal", "", Type.STEEL, Type.PSYCHIC, 1.6, 550, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 3, 35, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.STEEL, Type.PSYCHIC, 2.5, 942.9, Abilities.TOUGH_CLAWS, Abilities.NONE, Abilities.TOUGH_CLAWS, 700, 80, 145, 150, 105, 110, 110, 3, 35, 300), - ), - new PokemonSpecies(Species.REGIROCK, 3, true, false, false, "Rock Peak Pokémon", Type.ROCK, null, 1.7, 230, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.STURDY, 580, 80, 100, 200, 50, 100, 50, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.REGICE, 3, true, false, false, "Iceberg Pokémon", Type.ICE, null, 1.8, 175, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.ICE_BODY, 580, 80, 50, 100, 100, 200, 50, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.REGISTEEL, 3, true, false, false, "Iron Pokémon", Type.STEEL, null, 1.9, 205, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 580, 80, 75, 150, 75, 150, 50, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.LATIAS, 3, true, false, false, "Eon Pokémon", Type.DRAGON, Type.PSYCHIC, 1.4, 40, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, GrowthRate.SLOW, 0, false, true, - new PokemonForm("Normal", "", Type.DRAGON, Type.PSYCHIC, 1.4, 40, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DRAGON, Type.PSYCHIC, 1.8, 52, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 700, 80, 100, 120, 140, 150, 110, 3, 90, 300), - ), - new PokemonSpecies(Species.LATIOS, 3, true, false, false, "Eon Pokémon", Type.DRAGON, Type.PSYCHIC, 2, 60, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Normal", "", Type.DRAGON, Type.PSYCHIC, 2, 60, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DRAGON, Type.PSYCHIC, 2.3, 70, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 700, 80, 130, 100, 160, 120, 110, 3, 90, 300), - ), - new PokemonSpecies(Species.KYOGRE, 3, false, true, false, "Sea Basin Pokémon", Type.WATER, null, 4.5, 352, Abilities.DRIZZLE, Abilities.NONE, Abilities.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.WATER, null, 4.5, 352, Abilities.DRIZZLE, Abilities.NONE, Abilities.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, false, null, true), - new PokemonForm("Primal", "primal", Type.WATER, null, 9.8, 430, Abilities.PRIMORDIAL_SEA, Abilities.NONE, Abilities.NONE, 770, 100, 150, 90, 180, 160, 90, 3, 0, 335), - ), - new PokemonSpecies(Species.GROUDON, 3, false, true, false, "Continent Pokémon", Type.GROUND, null, 3.5, 950, Abilities.DROUGHT, Abilities.NONE, Abilities.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.GROUND, null, 3.5, 950, Abilities.DROUGHT, Abilities.NONE, Abilities.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, false, null, true), - new PokemonForm("Primal", "primal", Type.GROUND, Type.FIRE, 5, 999.7, Abilities.DESOLATE_LAND, Abilities.NONE, Abilities.NONE, 770, 100, 180, 160, 150, 90, 90, 3, 0, 335), - ), - new PokemonSpecies(Species.RAYQUAZA, 3, false, true, false, "Sky High Pokémon", Type.DRAGON, Type.FLYING, 7, 206.5, Abilities.AIR_LOCK, Abilities.NONE, Abilities.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.DRAGON, Type.FLYING, 7, 206.5, Abilities.AIR_LOCK, Abilities.NONE, Abilities.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DRAGON, Type.FLYING, 10.8, 392, Abilities.DELTA_STREAM, Abilities.NONE, Abilities.NONE, 780, 105, 180, 100, 180, 100, 115, 45, 0, 340), - ), - new PokemonSpecies(Species.JIRACHI, 3, false, false, true, "Wish Pokémon", Type.STEEL, Type.PSYCHIC, 0.3, 1.1, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DEOXYS, 3, false, false, true, "DNA Pokémon", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal Forme", "normal", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, false, "", true), - new PokemonForm("Attack Forme", "attack", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 180, 20, 180, 20, 150, 3, 0, 300), - new PokemonForm("Defense Forme", "defense", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 70, 160, 70, 160, 90, 3, 0, 300), - new PokemonForm("Speed Forme", "speed", Type.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 95, 90, 95, 90, 180, 3, 0, 300), - ), - new PokemonSpecies(Species.TURTWIG, 4, false, false, false, "Tiny Leaf Pokémon", Type.GRASS, null, 0.4, 10.2, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 318, 55, 68, 64, 45, 55, 31, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.GROTLE, 4, false, false, false, "Grove Pokémon", Type.GRASS, null, 1.1, 97, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 405, 75, 89, 85, 55, 65, 36, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TORTERRA, 4, false, false, false, "Continent Pokémon", Type.GRASS, Type.GROUND, 2.2, 310, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 525, 95, 109, 105, 75, 85, 56, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CHIMCHAR, 4, false, false, false, "Chimp Pokémon", Type.FIRE, null, 0.5, 6.2, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 309, 44, 58, 44, 58, 44, 61, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MONFERNO, 4, false, false, false, "Playful Pokémon", Type.FIRE, Type.FIGHTING, 0.9, 22, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 405, 64, 78, 52, 78, 52, 81, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.INFERNAPE, 4, false, false, false, "Flame Pokémon", Type.FIRE, Type.FIGHTING, 1.2, 55, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 534, 76, 104, 71, 104, 71, 108, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PIPLUP, 4, false, false, false, "Penguin Pokémon", Type.WATER, null, 0.4, 5.2, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 314, 53, 51, 53, 61, 56, 40, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PRINPLUP, 4, false, false, false, "Penguin Pokémon", Type.WATER, null, 0.8, 23, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 405, 64, 66, 68, 81, 76, 50, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.EMPOLEON, 4, false, false, false, "Emperor Pokémon", Type.WATER, Type.STEEL, 1.7, 84.5, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 530, 84, 86, 88, 111, 101, 60, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.STARLY, 4, false, false, false, "Starling Pokémon", Type.NORMAL, Type.FLYING, 0.3, 2, Abilities.KEEN_EYE, Abilities.NONE, Abilities.RECKLESS, 245, 40, 55, 30, 30, 30, 60, 255, 70, 49, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.STARAVIA, 4, false, false, false, "Starling Pokémon", Type.NORMAL, Type.FLYING, 0.6, 15.5, Abilities.INTIMIDATE, Abilities.NONE, Abilities.RECKLESS, 340, 55, 75, 50, 40, 40, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.STARAPTOR, 4, false, false, false, "Predator Pokémon", Type.NORMAL, Type.FLYING, 1.2, 24.9, Abilities.INTIMIDATE, Abilities.NONE, Abilities.RECKLESS, 485, 85, 120, 70, 50, 60, 100, 45, 70, 243, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.BIDOOF, 4, false, false, false, "Plump Mouse Pokémon", Type.NORMAL, null, 0.5, 20, Abilities.SIMPLE, Abilities.UNAWARE, Abilities.MOODY, 250, 59, 45, 40, 35, 40, 31, 255, 70, 50, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.BIBAREL, 4, false, false, false, "Beaver Pokémon", Type.NORMAL, Type.WATER, 1, 31.5, Abilities.SIMPLE, Abilities.UNAWARE, Abilities.MOODY, 410, 79, 85, 60, 55, 60, 71, 127, 70, 144, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.KRICKETOT, 4, false, false, false, "Cricket Pokémon", Type.BUG, null, 0.3, 2.2, Abilities.SHED_SKIN, Abilities.NONE, Abilities.RUN_AWAY, 194, 37, 25, 41, 25, 41, 25, 255, 70, 39, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.KRICKETUNE, 4, false, false, false, "Cricket Pokémon", Type.BUG, null, 1, 25.5, Abilities.SWARM, Abilities.NONE, Abilities.TECHNICIAN, 384, 77, 85, 51, 55, 51, 65, 45, 70, 134, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.SHINX, 4, false, false, false, "Flash Pokémon", Type.ELECTRIC, null, 0.5, 9.5, Abilities.RIVALRY, Abilities.INTIMIDATE, Abilities.GUTS, 263, 45, 65, 34, 40, 34, 45, 235, 50, 53, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.LUXIO, 4, false, false, false, "Spark Pokémon", Type.ELECTRIC, null, 0.9, 30.5, Abilities.RIVALRY, Abilities.INTIMIDATE, Abilities.GUTS, 363, 60, 85, 49, 60, 49, 60, 120, 100, 127, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.LUXRAY, 4, false, false, false, "Gleam Eyes Pokémon", Type.ELECTRIC, null, 1.4, 42, Abilities.RIVALRY, Abilities.INTIMIDATE, Abilities.GUTS, 523, 80, 120, 79, 95, 79, 70, 45, 50, 262, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.BUDEW, 4, false, false, false, "Bud Pokémon", Type.GRASS, Type.POISON, 0.2, 1.2, Abilities.NATURAL_CURE, Abilities.POISON_POINT, Abilities.LEAF_GUARD, 280, 40, 30, 35, 50, 70, 55, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ROSERADE, 4, false, false, false, "Bouquet Pokémon", Type.GRASS, Type.POISON, 0.9, 14.5, Abilities.NATURAL_CURE, Abilities.POISON_POINT, Abilities.TECHNICIAN, 515, 60, 70, 65, 125, 105, 90, 75, 50, 258, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.CRANIDOS, 4, false, false, false, "Head Butt Pokémon", Type.ROCK, null, 0.9, 31.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.SHEER_FORCE, 350, 67, 125, 40, 30, 30, 58, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.RAMPARDOS, 4, false, false, false, "Head Butt Pokémon", Type.ROCK, null, 1.6, 102.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.SHEER_FORCE, 495, 97, 165, 60, 65, 50, 58, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.SHIELDON, 4, false, false, false, "Shield Pokémon", Type.ROCK, Type.STEEL, 0.5, 57, Abilities.STURDY, Abilities.NONE, Abilities.SOUNDPROOF, 350, 30, 42, 118, 42, 88, 30, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.BASTIODON, 4, false, false, false, "Shield Pokémon", Type.ROCK, Type.STEEL, 1.3, 149.5, Abilities.STURDY, Abilities.NONE, Abilities.SOUNDPROOF, 495, 60, 52, 168, 47, 138, 30, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), - new PokemonSpecies(Species.BURMY, 4, false, false, false, "Bagworm Pokémon", Type.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Plant Cloak", "plant", Type.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), - new PokemonForm("Sandy Cloak", "sandy", Type.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), - new PokemonForm("Trash Cloak", "trash", Type.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), - ), - new PokemonSpecies(Species.WORMADAM, 4, false, false, false, "Bagworm Pokémon", Type.BUG, Type.GRASS, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Plant Cloak", "plant", Type.BUG, Type.GRASS, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, false, null, true), - new PokemonForm("Sandy Cloak", "sandy", Type.BUG, Type.GROUND, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 79, 105, 59, 85, 36, 45, 70, 148, false, null, true), - new PokemonForm("Trash Cloak", "trash", Type.BUG, Type.STEEL, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 69, 95, 69, 95, 36, 45, 70, 148, false, null, true), - ), - new PokemonSpecies(Species.MOTHIM, 4, false, false, false, "Moth Pokémon", Type.BUG, Type.FLYING, 0.9, 23.3, Abilities.SWARM, Abilities.NONE, Abilities.TINTED_LENS, 424, 70, 94, 50, 94, 50, 66, 45, 70, 148, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.COMBEE, 4, false, false, false, "Tiny Bee Pokémon", Type.BUG, Type.FLYING, 0.3, 5.5, Abilities.HONEY_GATHER, Abilities.NONE, Abilities.HUSTLE, 244, 30, 30, 42, 30, 42, 70, 120, 50, 49, GrowthRate.MEDIUM_SLOW, 87.5, true), - new PokemonSpecies(Species.VESPIQUEN, 4, false, false, false, "Beehive Pokémon", Type.BUG, Type.FLYING, 1.2, 38.5, Abilities.PRESSURE, Abilities.NONE, Abilities.UNNERVE, 474, 70, 80, 102, 80, 102, 40, 45, 50, 166, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.PACHIRISU, 4, false, false, false, "EleSquirrel Pokémon", Type.ELECTRIC, null, 0.4, 3.9, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.VOLT_ABSORB, 405, 60, 45, 70, 45, 90, 95, 200, 100, 142, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.BUIZEL, 4, false, false, false, "Sea Weasel Pokémon", Type.WATER, null, 0.7, 29.5, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.WATER_VEIL, 330, 55, 65, 35, 60, 30, 85, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.FLOATZEL, 4, false, false, false, "Sea Weasel Pokémon", Type.WATER, null, 1.1, 33.5, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.WATER_VEIL, 495, 85, 105, 55, 85, 50, 115, 75, 70, 173, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.CHERUBI, 4, false, false, false, "Cherry Pokémon", Type.GRASS, null, 0.4, 3.3, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.NONE, 275, 45, 35, 45, 62, 53, 35, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CHERRIM, 4, false, false, false, "Blossom Pokémon", Type.GRASS, null, 0.5, 9.3, Abilities.FLOWER_GIFT, Abilities.NONE, Abilities.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Overcast Form", "overcast", Type.GRASS, null, 0.5, 9.3, Abilities.FLOWER_GIFT, Abilities.NONE, Abilities.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, false, null, true), - new PokemonForm("Sunshine Form", "sunshine", Type.GRASS, null, 0.5, 9.3, Abilities.FLOWER_GIFT, Abilities.NONE, Abilities.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158), - ), - new PokemonSpecies(Species.SHELLOS, 4, false, false, false, "Sea Slug Pokémon", Type.WATER, null, 0.3, 6.3, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("East Sea", "east", Type.WATER, null, 0.3, 6.3, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), - new PokemonForm("West Sea", "west", Type.WATER, null, 0.3, 6.3, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), - ), - new PokemonSpecies(Species.GASTRODON, 4, false, false, false, "Sea Slug Pokémon", Type.WATER, Type.GROUND, 0.9, 29.9, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("East Sea", "east", Type.WATER, Type.GROUND, 0.9, 29.9, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), - new PokemonForm("West Sea", "west", Type.WATER, Type.GROUND, 0.9, 29.9, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), - ), - new PokemonSpecies(Species.AMBIPOM, 4, false, false, false, "Long Tail Pokémon", Type.NORMAL, null, 1.2, 20.3, Abilities.TECHNICIAN, Abilities.PICKUP, Abilities.SKILL_LINK, 482, 75, 100, 66, 60, 66, 115, 45, 100, 169, GrowthRate.FAST, 50, true), - new PokemonSpecies(Species.DRIFLOON, 4, false, false, false, "Balloon Pokémon", Type.GHOST, Type.FLYING, 0.4, 1.2, Abilities.AFTERMATH, Abilities.UNBURDEN, Abilities.FLARE_BOOST, 348, 90, 50, 34, 60, 44, 70, 125, 50, 70, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.DRIFBLIM, 4, false, false, false, "Blimp Pokémon", Type.GHOST, Type.FLYING, 1.2, 15, Abilities.AFTERMATH, Abilities.UNBURDEN, Abilities.FLARE_BOOST, 498, 150, 80, 44, 90, 54, 80, 60, 50, 174, GrowthRate.FLUCTUATING, 50, false), - new PokemonSpecies(Species.BUNEARY, 4, false, false, false, "Rabbit Pokémon", Type.NORMAL, null, 0.4, 5.5, Abilities.RUN_AWAY, Abilities.KLUTZ, Abilities.LIMBER, 350, 55, 66, 44, 44, 56, 85, 190, 0, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LOPUNNY, 4, false, false, false, "Rabbit Pokémon", Type.NORMAL, null, 1.2, 33.3, Abilities.CUTE_CHARM, Abilities.KLUTZ, Abilities.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.NORMAL, null, 1.2, 33.3, Abilities.CUTE_CHARM, Abilities.KLUTZ, Abilities.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.NORMAL, Type.FIGHTING, 1.3, 28.3, Abilities.SCRAPPY, Abilities.SCRAPPY, Abilities.SCRAPPY, 580, 65, 136, 94, 54, 96, 135, 60, 140, 168), - ), - new PokemonSpecies(Species.MISMAGIUS, 4, false, false, false, "Magical Pokémon", Type.GHOST, null, 0.9, 4.4, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 495, 60, 60, 60, 105, 105, 105, 45, 35, 173, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.HONCHKROW, 4, false, false, false, "Big Boss Pokémon", Type.DARK, Type.FLYING, 0.9, 27.3, Abilities.INSOMNIA, Abilities.SUPER_LUCK, Abilities.MOXIE, 505, 100, 125, 52, 105, 52, 71, 30, 35, 177, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GLAMEOW, 4, false, false, false, "Catty Pokémon", Type.NORMAL, null, 0.5, 3.9, Abilities.LIMBER, Abilities.OWN_TEMPO, Abilities.KEEN_EYE, 310, 49, 55, 42, 42, 37, 85, 190, 70, 62, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.PURUGLY, 4, false, false, false, "Tiger Cat Pokémon", Type.NORMAL, null, 1, 43.8, Abilities.THICK_FAT, Abilities.OWN_TEMPO, Abilities.DEFIANT, 452, 71, 82, 64, 64, 59, 112, 75, 70, 158, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.CHINGLING, 4, false, false, false, "Bell Pokémon", Type.PSYCHIC, null, 0.2, 0.6, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 285, 45, 30, 50, 65, 50, 45, 120, 70, 57, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.STUNKY, 4, false, false, false, "Skunk Pokémon", Type.POISON, Type.DARK, 0.4, 19.2, Abilities.STENCH, Abilities.AFTERMATH, Abilities.KEEN_EYE, 329, 63, 63, 47, 41, 41, 74, 225, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SKUNTANK, 4, false, false, false, "Skunk Pokémon", Type.POISON, Type.DARK, 1, 38, Abilities.STENCH, Abilities.AFTERMATH, Abilities.KEEN_EYE, 479, 103, 93, 67, 71, 61, 84, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BRONZOR, 4, false, false, false, "Bronze Pokémon", Type.STEEL, Type.PSYCHIC, 0.5, 60.5, Abilities.LEVITATE, Abilities.HEATPROOF, Abilities.HEAVY_METAL, 300, 57, 24, 86, 24, 86, 23, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.BRONZONG, 4, false, false, false, "Bronze Bell Pokémon", Type.STEEL, Type.PSYCHIC, 1.3, 187, Abilities.LEVITATE, Abilities.HEATPROOF, Abilities.HEAVY_METAL, 500, 67, 89, 116, 79, 116, 33, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.BONSLY, 4, false, false, false, "Bonsai Pokémon", Type.ROCK, null, 0.5, 15, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.RATTLED, 290, 50, 80, 95, 10, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MIME_JR, 4, false, false, false, "Mime Pokémon", Type.PSYCHIC, Type.FAIRY, 0.6, 13, Abilities.SOUNDPROOF, Abilities.FILTER, Abilities.TECHNICIAN, 310, 20, 25, 45, 70, 90, 60, 145, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HAPPINY, 4, false, false, false, "Playhouse Pokémon", Type.NORMAL, null, 0.6, 24.4, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.FRIEND_GUARD, 220, 100, 5, 5, 15, 65, 30, 130, 140, 110, GrowthRate.FAST, 0, false), - new PokemonSpecies(Species.CHATOT, 4, false, false, false, "Music Note Pokémon", Type.NORMAL, Type.FLYING, 0.5, 1.9, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 411, 76, 65, 45, 92, 42, 91, 30, 35, 144, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SPIRITOMB, 4, false, false, false, "Forbidden Pokémon", Type.GHOST, Type.DARK, 1, 108, Abilities.PRESSURE, Abilities.NONE, Abilities.INFILTRATOR, 485, 50, 92, 108, 92, 108, 35, 100, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GIBLE, 4, false, false, false, "Land Shark Pokémon", Type.DRAGON, Type.GROUND, 0.7, 20.5, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 300, 58, 70, 45, 40, 45, 42, 45, 50, 60, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.GABITE, 4, false, false, false, "Cave Pokémon", Type.DRAGON, Type.GROUND, 1.4, 56, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 410, 68, 90, 65, 50, 55, 82, 45, 50, 144, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.GARCHOMP, 4, false, false, false, "Mach Pokémon", Type.DRAGON, Type.GROUND, 1.9, 95, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", Type.DRAGON, Type.GROUND, 1.9, 95, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.DRAGON, Type.GROUND, 1.9, 95, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SAND_FORCE, 700, 108, 170, 115, 120, 95, 92, 45, 50, 300, true), - ), - new PokemonSpecies(Species.MUNCHLAX, 4, false, false, false, "Big Eater Pokémon", Type.NORMAL, null, 0.6, 105, Abilities.PICKUP, Abilities.THICK_FAT, Abilities.GLUTTONY, 390, 135, 85, 40, 40, 85, 5, 50, 50, 78, GrowthRate.SLOW, 87.5, false), - new PokemonSpecies(Species.RIOLU, 4, false, false, false, "Emanation Pokémon", Type.FIGHTING, null, 0.7, 20.2, Abilities.STEADFAST, Abilities.INNER_FOCUS, Abilities.PRANKSTER, 285, 40, 70, 40, 35, 40, 60, 75, 50, 57, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.LUCARIO, 4, false, false, false, "Aura Pokémon", Type.FIGHTING, Type.STEEL, 1.2, 54, Abilities.STEADFAST, Abilities.INNER_FOCUS, Abilities.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.FIGHTING, Type.STEEL, 1.2, 54, Abilities.STEADFAST, Abilities.INNER_FOCUS, Abilities.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.FIGHTING, Type.STEEL, 1.3, 57.5, Abilities.ADAPTABILITY, Abilities.ADAPTABILITY, Abilities.ADAPTABILITY, 625, 70, 145, 88, 140, 70, 112, 45, 50, 184), - ), - new PokemonSpecies(Species.HIPPOPOTAS, 4, false, false, false, "Hippo Pokémon", Type.GROUND, null, 0.8, 49.5, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_FORCE, 330, 68, 72, 78, 38, 42, 32, 140, 50, 66, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.HIPPOWDON, 4, false, false, false, "Heavyweight Pokémon", Type.GROUND, null, 2, 300, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_FORCE, 525, 108, 112, 118, 68, 72, 47, 60, 50, 184, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.SKORUPI, 4, false, false, false, "Scorpion Pokémon", Type.POISON, Type.BUG, 0.8, 12, Abilities.BATTLE_ARMOR, Abilities.SNIPER, Abilities.KEEN_EYE, 330, 40, 50, 90, 30, 55, 65, 120, 50, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAPION, 4, false, false, false, "Ogre Scorpion Pokémon", Type.POISON, Type.DARK, 1.3, 61.5, Abilities.BATTLE_ARMOR, Abilities.SNIPER, Abilities.KEEN_EYE, 500, 70, 90, 110, 60, 75, 95, 45, 50, 175, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CROAGUNK, 4, false, false, false, "Toxic Mouth Pokémon", Type.POISON, Type.FIGHTING, 0.7, 23, Abilities.ANTICIPATION, Abilities.DRY_SKIN, Abilities.POISON_TOUCH, 300, 48, 61, 40, 61, 40, 50, 140, 100, 60, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.TOXICROAK, 4, false, false, false, "Toxic Mouth Pokémon", Type.POISON, Type.FIGHTING, 1.3, 44.4, Abilities.ANTICIPATION, Abilities.DRY_SKIN, Abilities.POISON_TOUCH, 490, 83, 106, 65, 86, 65, 85, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.CARNIVINE, 4, false, false, false, "Bug Catcher Pokémon", Type.GRASS, null, 1.4, 27, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 454, 74, 100, 72, 90, 72, 46, 200, 70, 159, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.FINNEON, 4, false, false, false, "Wing Fish Pokémon", Type.WATER, null, 0.4, 7, Abilities.SWIFT_SWIM, Abilities.STORM_DRAIN, Abilities.WATER_VEIL, 330, 49, 49, 56, 49, 61, 66, 190, 70, 66, GrowthRate.ERRATIC, 50, true), - new PokemonSpecies(Species.LUMINEON, 4, false, false, false, "Neon Pokémon", Type.WATER, null, 1.2, 24, Abilities.SWIFT_SWIM, Abilities.STORM_DRAIN, Abilities.WATER_VEIL, 460, 69, 69, 76, 69, 86, 91, 75, 70, 161, GrowthRate.ERRATIC, 50, true), - new PokemonSpecies(Species.MANTYKE, 4, false, false, false, "Kite Pokémon", Type.WATER, Type.FLYING, 1, 65, Abilities.SWIFT_SWIM, Abilities.WATER_ABSORB, Abilities.WATER_VEIL, 345, 45, 20, 50, 60, 120, 50, 25, 50, 69, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SNOVER, 4, false, false, false, "Frost Tree Pokémon", Type.GRASS, Type.ICE, 1, 50.5, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SOUNDPROOF, 334, 60, 62, 50, 62, 60, 40, 120, 50, 67, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.ABOMASNOW, 4, false, false, false, "Frost Tree Pokémon", Type.GRASS, Type.ICE, 2.2, 135.5, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, GrowthRate.SLOW, 50, true, true, - new PokemonForm("Normal", "", Type.GRASS, Type.ICE, 2.2, 135.5, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, true, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.GRASS, Type.ICE, 2.7, 185, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SNOW_WARNING, 594, 90, 132, 105, 132, 105, 30, 60, 50, 173, true), - ), - new PokemonSpecies(Species.WEAVILE, 4, false, false, false, "Sharp Claw Pokémon", Type.DARK, Type.ICE, 1.1, 34, Abilities.PRESSURE, Abilities.NONE, Abilities.PICKPOCKET, 510, 70, 120, 65, 45, 85, 125, 45, 35, 179, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.MAGNEZONE, 4, false, false, false, "Magnet Area Pokémon", Type.ELECTRIC, Type.STEEL, 1.2, 180, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.ANALYTIC, 535, 70, 70, 115, 130, 90, 60, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.LICKILICKY, 4, false, false, false, "Licking Pokémon", Type.NORMAL, null, 1.7, 140, Abilities.OWN_TEMPO, Abilities.OBLIVIOUS, Abilities.CLOUD_NINE, 515, 110, 85, 95, 80, 95, 50, 30, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RHYPERIOR, 4, false, false, false, "Drill Pokémon", Type.GROUND, Type.ROCK, 2.4, 282.8, Abilities.LIGHTNING_ROD, Abilities.SOLID_ROCK, Abilities.RECKLESS, 535, 115, 140, 130, 55, 55, 40, 30, 50, 268, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.TANGROWTH, 4, false, false, false, "Vine Pokémon", Type.GRASS, null, 2, 128.6, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.REGENERATOR, 535, 100, 100, 125, 110, 50, 50, 30, 50, 187, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.ELECTIVIRE, 4, false, false, false, "Thunderbolt Pokémon", Type.ELECTRIC, null, 1.8, 138.6, Abilities.MOTOR_DRIVE, Abilities.NONE, Abilities.VITAL_SPIRIT, 540, 75, 123, 67, 95, 85, 95, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.MAGMORTAR, 4, false, false, false, "Blast Pokémon", Type.FIRE, null, 1.6, 68, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 540, 75, 95, 67, 125, 95, 83, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), - new PokemonSpecies(Species.TOGEKISS, 4, false, false, false, "Jubilee Pokémon", Type.FAIRY, Type.FLYING, 1.5, 38, Abilities.HUSTLE, Abilities.SERENE_GRACE, Abilities.SUPER_LUCK, 545, 85, 50, 95, 120, 115, 80, 30, 50, 273, GrowthRate.FAST, 87.5, false), - new PokemonSpecies(Species.YANMEGA, 4, false, false, false, "Ogre Darner Pokémon", Type.BUG, Type.FLYING, 1.9, 51.5, Abilities.SPEED_BOOST, Abilities.TINTED_LENS, Abilities.FRISK, 515, 86, 76, 86, 116, 56, 95, 30, 70, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LEAFEON, 4, false, false, false, "Verdant Pokémon", Type.GRASS, null, 1, 25.5, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 65, 110, 130, 60, 65, 95, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.GLACEON, 4, false, false, false, "Fresh Snow Pokémon", Type.ICE, null, 0.8, 25.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.ICE_BODY, 525, 65, 60, 110, 130, 95, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.GLISCOR, 4, false, false, false, "Fang Scorpion Pokémon", Type.GROUND, Type.FLYING, 2, 42.5, Abilities.HYPER_CUTTER, Abilities.SAND_VEIL, Abilities.POISON_HEAL, 510, 75, 95, 125, 45, 75, 95, 30, 70, 179, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MAMOSWINE, 4, false, false, false, "Twin Tusk Pokémon", Type.ICE, Type.GROUND, 2.5, 291, Abilities.OBLIVIOUS, Abilities.SNOW_CLOAK, Abilities.THICK_FAT, 530, 110, 130, 80, 70, 60, 80, 50, 50, 265, GrowthRate.SLOW, 50, true), - new PokemonSpecies(Species.PORYGON_Z, 4, false, false, false, "Virtual Pokémon", Type.NORMAL, null, 0.9, 34, Abilities.ADAPTABILITY, Abilities.DOWNLOAD, Abilities.ANALYTIC, 535, 85, 80, 70, 135, 75, 90, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.GALLADE, 4, false, false, false, "Blade Pokémon", Type.PSYCHIC, Type.FIGHTING, 1.6, 52, Abilities.STEADFAST, Abilities.SHARPNESS, Abilities.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Normal", "", Type.PSYCHIC, Type.FIGHTING, 1.6, 52, Abilities.STEADFAST, Abilities.SHARPNESS, Abilities.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.PSYCHIC, Type.FIGHTING, 1.6, 56.4, Abilities.SHARPNESS, Abilities.SHARPNESS, Abilities.SHARPNESS, 618, 68, 165, 95, 65, 115, 110, 45, 35, 259), - ), - new PokemonSpecies(Species.PROBOPASS, 4, false, false, false, "Compass Pokémon", Type.ROCK, Type.STEEL, 1.4, 340, Abilities.STURDY, Abilities.MAGNET_PULL, Abilities.SAND_FORCE, 525, 60, 55, 145, 75, 150, 40, 60, 70, 184, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUSKNOIR, 4, false, false, false, "Gripper Pokémon", Type.GHOST, null, 2.2, 106.6, Abilities.PRESSURE, Abilities.NONE, Abilities.FRISK, 525, 45, 100, 135, 65, 135, 45, 45, 35, 263, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.FROSLASS, 4, false, false, false, "Snow Land Pokémon", Type.ICE, Type.GHOST, 1.3, 26.6, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.CURSED_BODY, 480, 70, 80, 70, 80, 70, 110, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.ROTOM, 4, false, false, false, "Plasma Pokémon", Type.ELECTRIC, Type.GHOST, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("Normal", "", Type.ELECTRIC, Type.GHOST, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, false, null, true), - new PokemonForm("Heat", "heat", Type.ELECTRIC, Type.FIRE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Wash", "wash", Type.ELECTRIC, Type.WATER, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Frost", "frost", Type.ELECTRIC, Type.ICE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Fan", "fan", Type.ELECTRIC, Type.FLYING, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - new PokemonForm("Mow", "mow", Type.ELECTRIC, Type.GRASS, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), - ), - new PokemonSpecies(Species.UXIE, 4, true, false, false, "Knowledge Pokémon", Type.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 75, 75, 130, 75, 130, 95, 3, 140, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MESPRIT, 4, true, false, false, "Emotion Pokémon", Type.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 80, 105, 105, 105, 105, 80, 3, 140, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.AZELF, 4, true, false, false, "Willpower Pokémon", Type.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 75, 125, 70, 125, 70, 115, 3, 140, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DIALGA, 4, false, true, false, "Temporal Pokémon", Type.STEEL, Type.DRAGON, 5.4, 683, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", Type.STEEL, Type.DRAGON, 5.4, 683, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, false, null, true), - new PokemonForm("Origin Forme", "origin", Type.STEEL, Type.DRAGON, 7, 848.7, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 100, 100, 120, 150, 120, 90, 3, 0, 340), - ), - new PokemonSpecies(Species.PALKIA, 4, false, true, false, "Spatial Pokémon", Type.WATER, Type.DRAGON, 4.2, 336, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", Type.WATER, Type.DRAGON, 4.2, 336, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, false, null, true), - new PokemonForm("Origin Forme", "origin", Type.WATER, Type.DRAGON, 6.3, 659, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 90, 100, 100, 150, 120, 120, 3, 0, 340), - ), - new PokemonSpecies(Species.HEATRAN, 4, true, false, false, "Lava Dome Pokémon", Type.FIRE, Type.STEEL, 1.7, 430, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.FLAME_BODY, 600, 91, 90, 106, 130, 106, 77, 3, 100, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.REGIGIGAS, 4, true, false, false, "Colossal Pokémon", Type.NORMAL, null, 3.7, 420, Abilities.SLOW_START, Abilities.NONE, Abilities.NORMALIZE, 670, 110, 160, 110, 80, 110, 100, 3, 0, 335, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GIRATINA, 4, false, true, false, "Renegade Pokémon", Type.GHOST, Type.DRAGON, 4.5, 750, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Altered Forme", "altered", Type.GHOST, Type.DRAGON, 4.5, 750, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, false, null, true), - new PokemonForm("Origin Forme", "origin", Type.GHOST, Type.DRAGON, 6.9, 650, Abilities.LEVITATE, Abilities.NONE, Abilities.LEVITATE, 680, 150, 120, 100, 120, 100, 90, 3, 0, 340), - ), - new PokemonSpecies(Species.CRESSELIA, 4, true, false, false, "Lunar Pokémon", Type.PSYCHIC, null, 1.5, 85.6, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 120, 70, 110, 75, 120, 85, 3, 100, 300, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.PHIONE, 4, false, false, true, "Sea Drifter Pokémon", Type.WATER, null, 0.4, 3.1, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 480, 80, 80, 80, 80, 80, 80, 30, 70, 240, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MANAPHY, 4, false, false, true, "Seafaring Pokémon", Type.WATER, null, 0.3, 1.4, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 70, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DARKRAI, 4, false, false, true, "Pitch-Black Pokémon", Type.DARK, null, 1.5, 50.5, Abilities.BAD_DREAMS, Abilities.NONE, Abilities.NONE, 600, 70, 90, 90, 135, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SHAYMIN, 4, false, false, true, "Gratitude Pokémon", Type.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false, true, - new PokemonForm("Land Forme", "land", Type.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, false, null, true), - new PokemonForm("Sky Forme", "sky", Type.GRASS, Type.FLYING, 0.4, 5.2, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 103, 75, 120, 75, 127, 45, 100, 300), - ), - new PokemonSpecies(Species.ARCEUS, 4, false, false, true, "Alpha Pokémon", Type.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "normal", Type.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, true), - new PokemonForm("Fighting", "fighting", Type.FIGHTING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Flying", "flying", Type.FLYING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Poison", "poison", Type.POISON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Ground", "ground", Type.GROUND, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Rock", "rock", Type.ROCK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Bug", "bug", Type.BUG, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Ghost", "ghost", Type.GHOST, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Steel", "steel", Type.STEEL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Fire", "fire", Type.FIRE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Water", "water", Type.WATER, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Grass", "grass", Type.GRASS, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Electric", "electric", Type.ELECTRIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Psychic", "psychic", Type.PSYCHIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Ice", "ice", Type.ICE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Dragon", "dragon", Type.DRAGON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Dark", "dark", Type.DARK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("Fairy", "fairy", Type.FAIRY, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), - new PokemonForm("???", "unknown", Type.UNKNOWN, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, false, true), - ), - new PokemonSpecies(Species.VICTINI, 5, false, false, true, "Victory Pokémon", Type.PSYCHIC, Type.FIRE, 0.4, 4, Abilities.VICTORY_STAR, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SNIVY, 5, false, false, false, "Grass Snake Pokémon", Type.GRASS, null, 0.6, 8.1, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 308, 45, 45, 55, 45, 55, 63, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SERVINE, 5, false, false, false, "Grass Snake Pokémon", Type.GRASS, null, 0.8, 16, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 413, 60, 60, 75, 60, 75, 83, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SERPERIOR, 5, false, false, false, "Regal Pokémon", Type.GRASS, null, 3.3, 63, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 528, 75, 75, 95, 75, 95, 113, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TEPIG, 5, false, false, false, "Fire Pig Pokémon", Type.FIRE, null, 0.5, 9.9, Abilities.BLAZE, Abilities.NONE, Abilities.THICK_FAT, 308, 65, 63, 45, 45, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PIGNITE, 5, false, false, false, "Fire Pig Pokémon", Type.FIRE, Type.FIGHTING, 1, 55.5, Abilities.BLAZE, Abilities.NONE, Abilities.THICK_FAT, 418, 90, 93, 55, 70, 55, 55, 45, 70, 146, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.EMBOAR, 5, false, false, false, "Mega Fire Pig Pokémon", Type.FIRE, Type.FIGHTING, 1.6, 150, Abilities.BLAZE, Abilities.NONE, Abilities.RECKLESS, 528, 110, 123, 65, 100, 65, 65, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.OSHAWOTT, 5, false, false, false, "Sea Otter Pokémon", Type.WATER, null, 0.5, 5.9, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 308, 55, 55, 45, 63, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DEWOTT, 5, false, false, false, "Discipline Pokémon", Type.WATER, null, 0.8, 24.5, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 413, 75, 75, 60, 83, 60, 60, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SAMUROTT, 5, false, false, false, "Formidable Pokémon", Type.WATER, null, 1.5, 94.6, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 528, 95, 100, 85, 108, 70, 70, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PATRAT, 5, false, false, false, "Scout Pokémon", Type.NORMAL, null, 0.5, 11.6, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.ANALYTIC, 255, 45, 55, 39, 35, 39, 42, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WATCHOG, 5, false, false, false, "Lookout Pokémon", Type.NORMAL, null, 1.1, 27, Abilities.ILLUMINATE, Abilities.KEEN_EYE, Abilities.ANALYTIC, 420, 60, 85, 69, 60, 69, 77, 255, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LILLIPUP, 5, false, false, false, "Puppy Pokémon", Type.NORMAL, null, 0.4, 4.1, Abilities.VITAL_SPIRIT, Abilities.PICKUP, Abilities.RUN_AWAY, 275, 45, 60, 45, 25, 45, 55, 255, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.HERDIER, 5, false, false, false, "Loyal Dog Pokémon", Type.NORMAL, null, 0.9, 14.7, Abilities.INTIMIDATE, Abilities.SAND_RUSH, Abilities.SCRAPPY, 370, 65, 80, 65, 35, 65, 60, 120, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.STOUTLAND, 5, false, false, false, "Big-Hearted Pokémon", Type.NORMAL, null, 1.2, 61, Abilities.INTIMIDATE, Abilities.SAND_RUSH, Abilities.SCRAPPY, 500, 85, 110, 90, 45, 90, 80, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PURRLOIN, 5, false, false, false, "Devious Pokémon", Type.DARK, null, 0.4, 10.1, Abilities.LIMBER, Abilities.UNBURDEN, Abilities.PRANKSTER, 281, 41, 50, 37, 50, 37, 66, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LIEPARD, 5, false, false, false, "Cruel Pokémon", Type.DARK, null, 1.1, 37.5, Abilities.LIMBER, Abilities.UNBURDEN, Abilities.PRANKSTER, 446, 64, 88, 50, 88, 50, 106, 90, 50, 156, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PANSAGE, 5, false, false, false, "Grass Monkey Pokémon", Type.GRASS, null, 0.6, 10.5, Abilities.GLUTTONY, Abilities.NONE, Abilities.OVERGROW, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SIMISAGE, 5, false, false, false, "Thorn Monkey Pokémon", Type.GRASS, null, 1.1, 30.5, Abilities.GLUTTONY, Abilities.NONE, Abilities.OVERGROW, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.PANSEAR, 5, false, false, false, "High Temp Pokémon", Type.FIRE, null, 0.6, 11, Abilities.GLUTTONY, Abilities.NONE, Abilities.BLAZE, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SIMISEAR, 5, false, false, false, "Ember Pokémon", Type.FIRE, null, 1, 28, Abilities.GLUTTONY, Abilities.NONE, Abilities.BLAZE, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.PANPOUR, 5, false, false, false, "Spray Pokémon", Type.WATER, null, 0.6, 13.5, Abilities.GLUTTONY, Abilities.NONE, Abilities.TORRENT, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SIMIPOUR, 5, false, false, false, "Geyser Pokémon", Type.WATER, null, 1, 29, Abilities.GLUTTONY, Abilities.NONE, Abilities.TORRENT, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.MUNNA, 5, false, false, false, "Dream Eater Pokémon", Type.PSYCHIC, null, 0.6, 23.3, Abilities.FOREWARN, Abilities.SYNCHRONIZE, Abilities.TELEPATHY, 292, 76, 25, 45, 67, 55, 24, 190, 50, 58, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.MUSHARNA, 5, false, false, false, "Drowsing Pokémon", Type.PSYCHIC, null, 1.1, 60.5, Abilities.FOREWARN, Abilities.SYNCHRONIZE, Abilities.TELEPATHY, 487, 116, 55, 85, 107, 95, 29, 75, 50, 170, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.PIDOVE, 5, false, false, false, "Tiny Pigeon Pokémon", Type.NORMAL, Type.FLYING, 0.3, 2.1, Abilities.BIG_PECKS, Abilities.SUPER_LUCK, Abilities.RIVALRY, 264, 50, 55, 50, 36, 30, 43, 255, 50, 53, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TRANQUILL, 5, false, false, false, "Wild Pigeon Pokémon", Type.NORMAL, Type.FLYING, 0.6, 15, Abilities.BIG_PECKS, Abilities.SUPER_LUCK, Abilities.RIVALRY, 358, 62, 77, 62, 50, 42, 65, 120, 50, 125, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.UNFEZANT, 5, false, false, false, "Proud Pokémon", Type.NORMAL, Type.FLYING, 1.2, 29, Abilities.BIG_PECKS, Abilities.SUPER_LUCK, Abilities.RIVALRY, 488, 80, 115, 80, 65, 55, 93, 45, 50, 244, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.BLITZLE, 5, false, false, false, "Electrified Pokémon", Type.ELECTRIC, null, 0.8, 29.8, Abilities.LIGHTNING_ROD, Abilities.MOTOR_DRIVE, Abilities.SAP_SIPPER, 295, 45, 60, 32, 50, 32, 76, 190, 70, 59, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ZEBSTRIKA, 5, false, false, false, "Thunderbolt Pokémon", Type.ELECTRIC, null, 1.6, 79.5, Abilities.LIGHTNING_ROD, Abilities.MOTOR_DRIVE, Abilities.SAP_SIPPER, 497, 75, 100, 63, 80, 63, 116, 75, 70, 174, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ROGGENROLA, 5, false, false, false, "Mantle Pokémon", Type.ROCK, null, 0.4, 18, Abilities.STURDY, Abilities.WEAK_ARMOR, Abilities.SAND_FORCE, 280, 55, 75, 85, 25, 25, 15, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.BOLDORE, 5, false, false, false, "Ore Pokémon", Type.ROCK, null, 0.9, 102, Abilities.STURDY, Abilities.WEAK_ARMOR, Abilities.SAND_FORCE, 390, 70, 105, 105, 50, 40, 20, 120, 50, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GIGALITH, 5, false, false, false, "Compressed Pokémon", Type.ROCK, null, 1.7, 260, Abilities.STURDY, Abilities.SAND_STREAM, Abilities.SAND_FORCE, 515, 85, 135, 130, 60, 80, 25, 45, 50, 258, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WOOBAT, 5, false, false, false, "Bat Pokémon", Type.PSYCHIC, Type.FLYING, 0.4, 2.1, Abilities.UNAWARE, Abilities.KLUTZ, Abilities.SIMPLE, 323, 65, 45, 43, 55, 43, 72, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SWOOBAT, 5, false, false, false, "Courting Pokémon", Type.PSYCHIC, Type.FLYING, 0.9, 10.5, Abilities.UNAWARE, Abilities.KLUTZ, Abilities.SIMPLE, 425, 67, 57, 55, 77, 55, 114, 45, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DRILBUR, 5, false, false, false, "Mole Pokémon", Type.GROUND, null, 0.3, 8.5, Abilities.SAND_RUSH, Abilities.SAND_FORCE, Abilities.MOLD_BREAKER, 328, 60, 85, 40, 30, 45, 68, 120, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.EXCADRILL, 5, false, false, false, "Subterrene Pokémon", Type.GROUND, Type.STEEL, 0.7, 40.4, Abilities.SAND_RUSH, Abilities.SAND_FORCE, Abilities.MOLD_BREAKER, 508, 110, 135, 60, 50, 65, 88, 60, 50, 178, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AUDINO, 5, false, false, false, "Hearing Pokémon", Type.NORMAL, null, 1.1, 31, Abilities.HEALER, Abilities.REGENERATOR, Abilities.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, GrowthRate.FAST, 50, false, true, - new PokemonForm("Normal", "", Type.NORMAL, null, 1.1, 31, Abilities.HEALER, Abilities.REGENERATOR, Abilities.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.NORMAL, Type.FAIRY, 1.5, 32, Abilities.REGENERATOR, Abilities.REGENERATOR, Abilities.REGENERATOR, 545, 103, 60, 126, 80, 126, 50, 255, 50, 390), //Custom Ability, base form Hidden Ability - ), - new PokemonSpecies(Species.TIMBURR, 5, false, false, false, "Muscular Pokémon", Type.FIGHTING, null, 0.6, 12.5, Abilities.GUTS, Abilities.SHEER_FORCE, Abilities.IRON_FIST, 305, 75, 80, 55, 25, 35, 35, 180, 70, 61, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.GURDURR, 5, false, false, false, "Muscular Pokémon", Type.FIGHTING, null, 1.2, 40, Abilities.GUTS, Abilities.SHEER_FORCE, Abilities.IRON_FIST, 405, 85, 105, 85, 40, 50, 40, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.CONKELDURR, 5, false, false, false, "Muscular Pokémon", Type.FIGHTING, null, 1.4, 87, Abilities.GUTS, Abilities.SHEER_FORCE, Abilities.IRON_FIST, 505, 105, 140, 95, 55, 65, 45, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false), - new PokemonSpecies(Species.TYMPOLE, 5, false, false, false, "Tadpole Pokémon", Type.WATER, null, 0.5, 4.5, Abilities.SWIFT_SWIM, Abilities.HYDRATION, Abilities.WATER_ABSORB, 294, 50, 50, 40, 50, 40, 64, 255, 50, 59, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.PALPITOAD, 5, false, false, false, "Vibration Pokémon", Type.WATER, Type.GROUND, 0.8, 17, Abilities.SWIFT_SWIM, Abilities.HYDRATION, Abilities.WATER_ABSORB, 384, 75, 65, 55, 65, 55, 69, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SEISMITOAD, 5, false, false, false, "Vibration Pokémon", Type.WATER, Type.GROUND, 1.5, 62, Abilities.SWIFT_SWIM, Abilities.POISON_TOUCH, Abilities.WATER_ABSORB, 509, 105, 95, 75, 85, 75, 74, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.THROH, 5, false, false, false, "Judo Pokémon", Type.FIGHTING, null, 1.3, 55.5, Abilities.GUTS, Abilities.INNER_FOCUS, Abilities.MOLD_BREAKER, 465, 120, 100, 85, 30, 85, 45, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.SAWK, 5, false, false, false, "Karate Pokémon", Type.FIGHTING, null, 1.4, 51, Abilities.STURDY, Abilities.INNER_FOCUS, Abilities.MOLD_BREAKER, 465, 75, 125, 75, 30, 75, 85, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.SEWADDLE, 5, false, false, false, "Sewing Pokémon", Type.BUG, Type.GRASS, 0.3, 2.5, Abilities.SWARM, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 310, 45, 53, 70, 40, 60, 42, 255, 70, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SWADLOON, 5, false, false, false, "Leaf-Wrapped Pokémon", Type.BUG, Type.GRASS, 0.5, 7.3, Abilities.LEAF_GUARD, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 380, 55, 63, 90, 50, 80, 42, 120, 70, 133, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LEAVANNY, 5, false, false, false, "Nurturing Pokémon", Type.BUG, Type.GRASS, 1.2, 20.5, Abilities.SWARM, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 500, 75, 103, 80, 70, 80, 92, 45, 70, 250, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.VENIPEDE, 5, false, false, false, "Centipede Pokémon", Type.BUG, Type.POISON, 0.4, 5.3, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 260, 30, 45, 59, 30, 39, 57, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.WHIRLIPEDE, 5, false, false, false, "Curlipede Pokémon", Type.BUG, Type.POISON, 1.2, 58.5, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 360, 40, 55, 99, 40, 79, 47, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SCOLIPEDE, 5, false, false, false, "Megapede Pokémon", Type.BUG, Type.POISON, 2.5, 200.5, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 485, 60, 100, 89, 55, 69, 112, 45, 50, 243, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.COTTONEE, 5, false, false, false, "Cotton Puff Pokémon", Type.GRASS, Type.FAIRY, 0.3, 0.6, Abilities.PRANKSTER, Abilities.INFILTRATOR, Abilities.CHLOROPHYLL, 280, 40, 27, 60, 37, 50, 66, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WHIMSICOTT, 5, false, false, false, "Windveiled Pokémon", Type.GRASS, Type.FAIRY, 0.7, 6.6, Abilities.PRANKSTER, Abilities.INFILTRATOR, Abilities.CHLOROPHYLL, 480, 60, 67, 85, 77, 75, 116, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PETILIL, 5, false, false, false, "Bulb Pokémon", Type.GRASS, null, 0.5, 6.6, Abilities.CHLOROPHYLL, Abilities.OWN_TEMPO, Abilities.LEAF_GUARD, 280, 45, 35, 50, 70, 50, 30, 190, 50, 56, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.LILLIGANT, 5, false, false, false, "Flowering Pokémon", Type.GRASS, null, 1.1, 16.3, Abilities.CHLOROPHYLL, Abilities.OWN_TEMPO, Abilities.LEAF_GUARD, 480, 70, 60, 75, 110, 75, 90, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.BASCULIN, 5, false, false, false, "Hostile Pokémon", Type.WATER, null, 1, 18, Abilities.RECKLESS, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Red-Striped Form", "red-striped", Type.WATER, null, 1, 18, Abilities.RECKLESS, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), - new PokemonForm("Blue-Striped Form", "blue-striped", Type.WATER, null, 1, 18, Abilities.ROCK_HEAD, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), - new PokemonForm("White-Striped Form", "white-striped", Type.WATER, null, 1, 18, Abilities.RATTLED, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), - ), - new PokemonSpecies(Species.SANDILE, 5, false, false, false, "Desert Croc Pokémon", Type.GROUND, Type.DARK, 0.7, 15.2, Abilities.INTIMIDATE, Abilities.MOXIE, Abilities.ANGER_POINT, 292, 50, 72, 35, 35, 35, 65, 180, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.KROKOROK, 5, false, false, false, "Desert Croc Pokémon", Type.GROUND, Type.DARK, 1, 33.4, Abilities.INTIMIDATE, Abilities.MOXIE, Abilities.ANGER_POINT, 351, 60, 82, 45, 45, 45, 74, 90, 50, 123, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.KROOKODILE, 5, false, false, false, "Intimidation Pokémon", Type.GROUND, Type.DARK, 1.5, 96.3, Abilities.INTIMIDATE, Abilities.MOXIE, Abilities.ANGER_POINT, 519, 95, 117, 80, 65, 70, 92, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DARUMAKA, 5, false, false, false, "Zen Charm Pokémon", Type.FIRE, null, 0.6, 37.5, Abilities.HUSTLE, Abilities.NONE, Abilities.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DARMANITAN, 5, false, false, false, "Blazing Pokémon", Type.FIRE, null, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Standard Mode", "", Type.FIRE, null, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), - new PokemonForm("Zen Mode", "zen", Type.FIRE, Type.PSYCHIC, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 540, 105, 30, 105, 140, 105, 55, 60, 50, 189), - ), - new PokemonSpecies(Species.MARACTUS, 5, false, false, false, "Cactus Pokémon", Type.GRASS, null, 1, 28, Abilities.WATER_ABSORB, Abilities.CHLOROPHYLL, Abilities.STORM_DRAIN, 461, 75, 86, 67, 106, 67, 60, 255, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DWEBBLE, 5, false, false, false, "Rock Inn Pokémon", Type.BUG, Type.ROCK, 0.3, 14.5, Abilities.STURDY, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 325, 50, 65, 85, 35, 35, 55, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CRUSTLE, 5, false, false, false, "Stone Home Pokémon", Type.BUG, Type.ROCK, 1.4, 200, Abilities.STURDY, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 485, 70, 105, 125, 65, 75, 45, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCRAGGY, 5, false, false, false, "Shedding Pokémon", Type.DARK, Type.FIGHTING, 0.6, 11.8, Abilities.SHED_SKIN, Abilities.MOXIE, Abilities.INTIMIDATE, 348, 50, 75, 70, 35, 70, 48, 180, 35, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCRAFTY, 5, false, false, false, "Hoodlum Pokémon", Type.DARK, Type.FIGHTING, 1.1, 30, Abilities.SHED_SKIN, Abilities.MOXIE, Abilities.INTIMIDATE, 488, 65, 90, 115, 45, 115, 58, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SIGILYPH, 5, false, false, false, "Avianoid Pokémon", Type.PSYCHIC, Type.FLYING, 1.4, 14, Abilities.WONDER_SKIN, Abilities.MAGIC_GUARD, Abilities.TINTED_LENS, 490, 72, 58, 80, 103, 80, 97, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.YAMASK, 5, false, false, false, "Spirit Pokémon", Type.GHOST, null, 0.5, 1.5, Abilities.MUMMY, Abilities.NONE, Abilities.NONE, 303, 38, 30, 85, 55, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.COFAGRIGUS, 5, false, false, false, "Coffin Pokémon", Type.GHOST, null, 1.7, 76.5, Abilities.MUMMY, Abilities.NONE, Abilities.NONE, 483, 58, 50, 145, 95, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TIRTOUGA, 5, false, false, false, "Prototurtle Pokémon", Type.WATER, Type.ROCK, 0.7, 16.5, Abilities.SOLID_ROCK, Abilities.STURDY, Abilities.SWIFT_SWIM, 355, 54, 78, 103, 53, 45, 22, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.CARRACOSTA, 5, false, false, false, "Prototurtle Pokémon", Type.WATER, Type.ROCK, 1.2, 81, Abilities.SOLID_ROCK, Abilities.STURDY, Abilities.SWIFT_SWIM, 495, 74, 108, 133, 83, 65, 32, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.ARCHEN, 5, false, false, false, "First Bird Pokémon", Type.ROCK, Type.FLYING, 0.5, 9.5, Abilities.DEFEATIST, Abilities.NONE, Abilities.WIMP_OUT, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden - new PokemonSpecies(Species.ARCHEOPS, 5, false, false, false, "First Bird Pokémon", Type.ROCK, Type.FLYING, 1.4, 32, Abilities.DEFEATIST, Abilities.NONE, Abilities.EMERGENCY_EXIT, 567, 75, 140, 65, 112, 65, 110, 45, 50, 177, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden - new PokemonSpecies(Species.TRUBBISH, 5, false, false, false, "Trash Bag Pokémon", Type.POISON, null, 0.6, 31, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.AFTERMATH, 329, 50, 50, 62, 40, 62, 65, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GARBODOR, 5, false, false, false, "Trash Heap Pokémon", Type.POISON, null, 1.9, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.POISON, null, 1.9, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.POISON, Type.STEEL, 21, 999.9, Abilities.TOXIC_DEBRIS, Abilities.TOXIC_DEBRIS, Abilities.TOXIC_DEBRIS, 574, 135, 125, 102, 57, 102, 53, 60, 50, 166), - ), - new PokemonSpecies(Species.ZORUA, 5, false, false, false, "Tricky Fox Pokémon", Type.DARK, null, 0.7, 12.5, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 330, 40, 65, 40, 80, 40, 65, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.ZOROARK, 5, false, false, false, "Illusion Fox Pokémon", Type.DARK, null, 1.6, 81.1, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 510, 60, 105, 60, 120, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MINCCINO, 5, false, false, false, "Chinchilla Pokémon", Type.NORMAL, null, 0.4, 5.8, Abilities.CUTE_CHARM, Abilities.TECHNICIAN, Abilities.SKILL_LINK, 300, 55, 50, 40, 40, 40, 75, 255, 50, 60, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.CINCCINO, 5, false, false, false, "Scarf Pokémon", Type.NORMAL, null, 0.5, 7.5, Abilities.CUTE_CHARM, Abilities.TECHNICIAN, Abilities.SKILL_LINK, 470, 75, 95, 60, 65, 60, 115, 60, 50, 165, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.GOTHITA, 5, false, false, false, "Fixation Pokémon", Type.PSYCHIC, null, 0.4, 5.8, Abilities.FRISK, Abilities.COMPETITIVE, Abilities.SHADOW_TAG, 290, 45, 30, 50, 55, 65, 45, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 25, false), - new PokemonSpecies(Species.GOTHORITA, 5, false, false, false, "Manipulate Pokémon", Type.PSYCHIC, null, 0.7, 18, Abilities.FRISK, Abilities.COMPETITIVE, Abilities.SHADOW_TAG, 390, 60, 45, 70, 75, 85, 55, 100, 50, 137, GrowthRate.MEDIUM_SLOW, 25, false), - new PokemonSpecies(Species.GOTHITELLE, 5, false, false, false, "Astral Body Pokémon", Type.PSYCHIC, null, 1.5, 44, Abilities.FRISK, Abilities.COMPETITIVE, Abilities.SHADOW_TAG, 490, 70, 55, 95, 95, 110, 65, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 25, false), - new PokemonSpecies(Species.SOLOSIS, 5, false, false, false, "Cell Pokémon", Type.PSYCHIC, null, 0.3, 1, Abilities.OVERCOAT, Abilities.MAGIC_GUARD, Abilities.REGENERATOR, 290, 45, 30, 40, 105, 50, 20, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DUOSION, 5, false, false, false, "Mitosis Pokémon", Type.PSYCHIC, null, 0.6, 8, Abilities.OVERCOAT, Abilities.MAGIC_GUARD, Abilities.REGENERATOR, 370, 65, 40, 50, 125, 60, 30, 100, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.REUNICLUS, 5, false, false, false, "Multiplying Pokémon", Type.PSYCHIC, null, 1, 20.1, Abilities.OVERCOAT, Abilities.MAGIC_GUARD, Abilities.REGENERATOR, 490, 110, 65, 75, 125, 85, 30, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DUCKLETT, 5, false, false, false, "Water Bird Pokémon", Type.WATER, Type.FLYING, 0.5, 5.5, Abilities.KEEN_EYE, Abilities.BIG_PECKS, Abilities.HYDRATION, 305, 62, 44, 50, 44, 50, 55, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SWANNA, 5, false, false, false, "White Bird Pokémon", Type.WATER, Type.FLYING, 1.3, 24.2, Abilities.KEEN_EYE, Abilities.BIG_PECKS, Abilities.HYDRATION, 473, 75, 87, 63, 87, 63, 98, 45, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VANILLITE, 5, false, false, false, "Fresh Snow Pokémon", Type.ICE, null, 0.4, 5.7, Abilities.ICE_BODY, Abilities.SNOW_CLOAK, Abilities.WEAK_ARMOR, 305, 36, 50, 50, 65, 60, 44, 255, 50, 61, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.VANILLISH, 5, false, false, false, "Icy Snow Pokémon", Type.ICE, null, 1.1, 41, Abilities.ICE_BODY, Abilities.SNOW_CLOAK, Abilities.WEAK_ARMOR, 395, 51, 65, 65, 80, 75, 59, 120, 50, 138, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.VANILLUXE, 5, false, false, false, "Snowstorm Pokémon", Type.ICE, null, 1.3, 57.5, Abilities.ICE_BODY, Abilities.SNOW_WARNING, Abilities.WEAK_ARMOR, 535, 71, 95, 85, 110, 95, 79, 45, 50, 268, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DEERLING, 5, false, false, false, "Season Pokémon", Type.NORMAL, Type.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Spring Form", "spring", Type.NORMAL, Type.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - new PokemonForm("Summer Form", "summer", Type.NORMAL, Type.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - new PokemonForm("Autumn Form", "autumn", Type.NORMAL, Type.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - new PokemonForm("Winter Form", "winter", Type.NORMAL, Type.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), - ), - new PokemonSpecies(Species.SAWSBUCK, 5, false, false, false, "Season Pokémon", Type.NORMAL, Type.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Spring Form", "spring", Type.NORMAL, Type.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - new PokemonForm("Summer Form", "summer", Type.NORMAL, Type.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - new PokemonForm("Autumn Form", "autumn", Type.NORMAL, Type.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - new PokemonForm("Winter Form", "winter", Type.NORMAL, Type.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), - ), - new PokemonSpecies(Species.EMOLGA, 5, false, false, false, "Sky Squirrel Pokémon", Type.ELECTRIC, Type.FLYING, 0.4, 5, Abilities.STATIC, Abilities.NONE, Abilities.MOTOR_DRIVE, 428, 55, 75, 60, 75, 60, 103, 200, 50, 150, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KARRABLAST, 5, false, false, false, "Clamping Pokémon", Type.BUG, null, 0.5, 5.9, Abilities.SWARM, Abilities.SHED_SKIN, Abilities.NO_GUARD, 315, 50, 75, 45, 40, 45, 60, 200, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ESCAVALIER, 5, false, false, false, "Cavalry Pokémon", Type.BUG, Type.STEEL, 1, 33, Abilities.SWARM, Abilities.SHELL_ARMOR, Abilities.OVERCOAT, 495, 70, 135, 105, 60, 105, 20, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FOONGUS, 5, false, false, false, "Mushroom Pokémon", Type.GRASS, Type.POISON, 0.2, 1, Abilities.EFFECT_SPORE, Abilities.NONE, Abilities.REGENERATOR, 294, 69, 55, 45, 55, 55, 15, 190, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AMOONGUSS, 5, false, false, false, "Mushroom Pokémon", Type.GRASS, Type.POISON, 0.6, 10.5, Abilities.EFFECT_SPORE, Abilities.NONE, Abilities.REGENERATOR, 464, 114, 85, 70, 85, 80, 30, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FRILLISH, 5, false, false, false, "Floating Pokémon", Type.WATER, Type.GHOST, 1.2, 33, Abilities.WATER_ABSORB, Abilities.CURSED_BODY, Abilities.DAMP, 335, 55, 40, 50, 65, 85, 40, 190, 50, 67, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.JELLICENT, 5, false, false, false, "Floating Pokémon", Type.WATER, Type.GHOST, 2.2, 135, Abilities.WATER_ABSORB, Abilities.CURSED_BODY, Abilities.DAMP, 480, 100, 60, 70, 85, 105, 60, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), - new PokemonSpecies(Species.ALOMOMOLA, 5, false, false, false, "Caring Pokémon", Type.WATER, null, 1.2, 31.6, Abilities.HEALER, Abilities.HYDRATION, Abilities.REGENERATOR, 470, 165, 75, 80, 40, 45, 65, 75, 70, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.JOLTIK, 5, false, false, false, "Attaching Pokémon", Type.BUG, Type.ELECTRIC, 0.1, 0.6, Abilities.COMPOUND_EYES, Abilities.UNNERVE, Abilities.SWARM, 319, 50, 47, 50, 57, 50, 65, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALVANTULA, 5, false, false, false, "EleSpider Pokémon", Type.BUG, Type.ELECTRIC, 0.8, 14.3, Abilities.COMPOUND_EYES, Abilities.UNNERVE, Abilities.SWARM, 472, 70, 77, 60, 97, 60, 108, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FERROSEED, 5, false, false, false, "Thorn Seed Pokémon", Type.GRASS, Type.STEEL, 0.6, 18.8, Abilities.IRON_BARBS, Abilities.NONE, Abilities.ANTICIPATION, 305, 44, 50, 91, 24, 86, 10, 255, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FERROTHORN, 5, false, false, false, "Thorn Pod Pokémon", Type.GRASS, Type.STEEL, 1, 110, Abilities.IRON_BARBS, Abilities.NONE, Abilities.ANTICIPATION, 489, 74, 94, 131, 54, 116, 20, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.KLINK, 5, false, false, false, "Gear Pokémon", Type.STEEL, null, 0.3, 21, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 300, 40, 55, 70, 45, 60, 30, 130, 50, 60, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.KLANG, 5, false, false, false, "Gear Pokémon", Type.STEEL, null, 0.6, 51, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 440, 60, 80, 95, 70, 85, 50, 60, 50, 154, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.KLINKLANG, 5, false, false, false, "Gear Pokémon", Type.STEEL, null, 0.6, 81, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 520, 60, 100, 115, 70, 85, 90, 30, 50, 260, GrowthRate.MEDIUM_SLOW, null, false), - new PokemonSpecies(Species.TYNAMO, 5, false, false, false, "EleFish Pokémon", Type.ELECTRIC, null, 0.2, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 275, 35, 55, 40, 45, 40, 60, 190, 70, 55, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.EELEKTRIK, 5, false, false, false, "EleFish Pokémon", Type.ELECTRIC, null, 1.2, 22, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 405, 65, 85, 70, 75, 70, 40, 60, 70, 142, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.EELEKTROSS, 5, false, false, false, "EleFish Pokémon", Type.ELECTRIC, null, 2.1, 80.5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 515, 85, 115, 80, 105, 80, 50, 30, 70, 258, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ELGYEM, 5, false, false, false, "Cerebral Pokémon", Type.PSYCHIC, null, 0.5, 9, Abilities.TELEPATHY, Abilities.SYNCHRONIZE, Abilities.ANALYTIC, 335, 55, 55, 55, 85, 55, 30, 255, 50, 67, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEHEEYEM, 5, false, false, false, "Cerebral Pokémon", Type.PSYCHIC, null, 1, 34.5, Abilities.TELEPATHY, Abilities.SYNCHRONIZE, Abilities.ANALYTIC, 485, 75, 75, 75, 125, 95, 40, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LITWICK, 5, false, false, false, "Candle Pokémon", Type.GHOST, Type.FIRE, 0.3, 3.1, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 275, 50, 30, 55, 65, 55, 20, 190, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.LAMPENT, 5, false, false, false, "Lamp Pokémon", Type.GHOST, Type.FIRE, 0.6, 13, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 370, 60, 40, 60, 95, 60, 55, 90, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CHANDELURE, 5, false, false, false, "Luring Pokémon", Type.GHOST, Type.FIRE, 1, 34.3, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 520, 60, 55, 90, 145, 90, 80, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.AXEW, 5, false, false, false, "Tusk Pokémon", Type.DRAGON, null, 0.6, 18, Abilities.RIVALRY, Abilities.MOLD_BREAKER, Abilities.UNNERVE, 320, 46, 87, 60, 30, 40, 57, 75, 35, 64, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.FRAXURE, 5, false, false, false, "Axe Jaw Pokémon", Type.DRAGON, null, 1, 36, Abilities.RIVALRY, Abilities.MOLD_BREAKER, Abilities.UNNERVE, 410, 66, 117, 70, 40, 50, 67, 60, 35, 144, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HAXORUS, 5, false, false, false, "Axe Jaw Pokémon", Type.DRAGON, null, 1.8, 105.5, Abilities.RIVALRY, Abilities.MOLD_BREAKER, Abilities.UNNERVE, 540, 76, 147, 90, 60, 70, 97, 45, 35, 270, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CUBCHOO, 5, false, false, false, "Chill Pokémon", Type.ICE, null, 0.5, 8.5, Abilities.SNOW_CLOAK, Abilities.SLUSH_RUSH, Abilities.RATTLED, 305, 55, 70, 40, 60, 40, 40, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEARTIC, 5, false, false, false, "Freezing Pokémon", Type.ICE, null, 2.6, 260, Abilities.SNOW_CLOAK, Abilities.SLUSH_RUSH, Abilities.SWIFT_SWIM, 505, 95, 130, 80, 70, 80, 50, 60, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CRYOGONAL, 5, false, false, false, "Crystallizing Pokémon", Type.ICE, null, 1.1, 148, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 515, 80, 50, 50, 95, 135, 105, 25, 50, 180, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.SHELMET, 5, false, false, false, "Snail Pokémon", Type.BUG, null, 0.4, 7.7, Abilities.HYDRATION, Abilities.SHELL_ARMOR, Abilities.OVERCOAT, 305, 50, 40, 85, 40, 65, 25, 200, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ACCELGOR, 5, false, false, false, "Shell Out Pokémon", Type.BUG, null, 0.8, 25.3, Abilities.HYDRATION, Abilities.STICKY_HOLD, Abilities.UNBURDEN, 495, 80, 70, 40, 100, 60, 145, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.STUNFISK, 5, false, false, false, "Trap Pokémon", Type.GROUND, Type.ELECTRIC, 0.7, 11, Abilities.STATIC, Abilities.LIMBER, Abilities.SAND_VEIL, 471, 109, 66, 84, 81, 99, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MIENFOO, 5, false, false, false, "Martial Arts Pokémon", Type.FIGHTING, null, 0.9, 20, Abilities.INNER_FOCUS, Abilities.REGENERATOR, Abilities.RECKLESS, 350, 45, 85, 50, 55, 50, 65, 180, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MIENSHAO, 5, false, false, false, "Martial Arts Pokémon", Type.FIGHTING, null, 1.4, 35.5, Abilities.INNER_FOCUS, Abilities.REGENERATOR, Abilities.RECKLESS, 510, 65, 125, 60, 95, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DRUDDIGON, 5, false, false, false, "Cave Pokémon", Type.DRAGON, null, 1.6, 139, Abilities.ROUGH_SKIN, Abilities.SHEER_FORCE, Abilities.MOLD_BREAKER, 485, 77, 120, 90, 60, 90, 48, 45, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GOLETT, 5, false, false, false, "Automaton Pokémon", Type.GROUND, Type.GHOST, 1, 92, Abilities.IRON_FIST, Abilities.KLUTZ, Abilities.NO_GUARD, 303, 59, 74, 50, 35, 50, 35, 190, 50, 61, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.GOLURK, 5, false, false, false, "Automaton Pokémon", Type.GROUND, Type.GHOST, 2.8, 330, Abilities.IRON_FIST, Abilities.KLUTZ, Abilities.NO_GUARD, 483, 89, 124, 80, 55, 80, 55, 90, 50, 169, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.PAWNIARD, 5, false, false, false, "Sharp Blade Pokémon", Type.DARK, Type.STEEL, 0.5, 10.2, Abilities.DEFIANT, Abilities.INNER_FOCUS, Abilities.PRESSURE, 340, 45, 85, 70, 40, 40, 60, 120, 35, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BISHARP, 5, false, false, false, "Sword Blade Pokémon", Type.DARK, Type.STEEL, 1.6, 70, Abilities.DEFIANT, Abilities.INNER_FOCUS, Abilities.PRESSURE, 490, 65, 125, 100, 60, 70, 70, 45, 35, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BOUFFALANT, 5, false, false, false, "Bash Buffalo Pokémon", Type.NORMAL, null, 1.6, 94.6, Abilities.RECKLESS, Abilities.SAP_SIPPER, Abilities.SOUNDPROOF, 490, 95, 110, 95, 40, 95, 55, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RUFFLET, 5, false, false, false, "Eaglet Pokémon", Type.NORMAL, Type.FLYING, 0.5, 10.5, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.HUSTLE, 350, 70, 83, 50, 37, 50, 60, 190, 50, 70, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.BRAVIARY, 5, false, false, false, "Valiant Pokémon", Type.NORMAL, Type.FLYING, 1.5, 41, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.DEFIANT, 510, 100, 123, 75, 57, 75, 80, 60, 50, 179, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.VULLABY, 5, false, false, false, "Diapered Pokémon", Type.DARK, Type.FLYING, 0.5, 9, Abilities.BIG_PECKS, Abilities.OVERCOAT, Abilities.WEAK_ARMOR, 370, 70, 55, 75, 45, 65, 60, 190, 35, 74, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.MANDIBUZZ, 5, false, false, false, "Bone Vulture Pokémon", Type.DARK, Type.FLYING, 1.2, 39.5, Abilities.BIG_PECKS, Abilities.OVERCOAT, Abilities.WEAK_ARMOR, 510, 110, 65, 105, 55, 95, 80, 60, 35, 179, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.HEATMOR, 5, false, false, false, "Anteater Pokémon", Type.FIRE, null, 1.4, 58, Abilities.GLUTTONY, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, 484, 85, 97, 66, 105, 66, 65, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DURANT, 5, false, false, false, "Iron Ant Pokémon", Type.BUG, Type.STEEL, 0.3, 33, Abilities.SWARM, Abilities.HUSTLE, Abilities.TRUANT, 484, 58, 109, 112, 48, 48, 109, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DEINO, 5, false, false, false, "Irate Pokémon", Type.DARK, Type.DRAGON, 0.8, 17.3, Abilities.HUSTLE, Abilities.NONE, Abilities.NONE, 300, 52, 65, 50, 45, 50, 38, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ZWEILOUS, 5, false, false, false, "Hostile Pokémon", Type.DARK, Type.DRAGON, 1.4, 50, Abilities.HUSTLE, Abilities.NONE, Abilities.NONE, 420, 72, 85, 70, 65, 70, 58, 45, 35, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HYDREIGON, 5, false, false, false, "Brutal Pokémon", Type.DARK, Type.DRAGON, 1.8, 160, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 92, 105, 90, 125, 90, 98, 45, 35, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.LARVESTA, 5, false, false, false, "Torch Pokémon", Type.BUG, Type.FIRE, 1.1, 28.8, Abilities.FLAME_BODY, Abilities.NONE, Abilities.SWARM, 360, 55, 85, 55, 50, 55, 60, 45, 50, 72, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.VOLCARONA, 5, false, false, false, "Sun Pokémon", Type.BUG, Type.FIRE, 1.6, 46, Abilities.FLAME_BODY, Abilities.NONE, Abilities.SWARM, 550, 85, 60, 65, 135, 105, 100, 15, 50, 275, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.COBALION, 5, true, false, false, "Iron Will Pokémon", Type.STEEL, Type.FIGHTING, 2.1, 250, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 90, 129, 90, 72, 108, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TERRAKION, 5, true, false, false, "Cavern Pokémon", Type.ROCK, Type.FIGHTING, 1.9, 260, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 129, 90, 72, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.VIRIZION, 5, true, false, false, "Grassland Pokémon", Type.GRASS, Type.FIGHTING, 2, 200, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 90, 72, 90, 129, 108, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TORNADUS, 5, true, false, false, "Cyclone Pokémon", Type.FLYING, null, 1.5, 63, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Incarnate Forme", "incarnate", Type.FLYING, null, 1.5, 63, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), - new PokemonForm("Therian Forme", "therian", Type.FLYING, null, 1.4, 63, Abilities.REGENERATOR, Abilities.NONE, Abilities.REGENERATOR, 580, 79, 100, 80, 110, 90, 121, 3, 90, 290), - ), - new PokemonSpecies(Species.THUNDURUS, 5, true, false, false, "Bolt Strike Pokémon", Type.ELECTRIC, Type.FLYING, 1.5, 61, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Incarnate Forme", "incarnate", Type.ELECTRIC, Type.FLYING, 1.5, 61, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), - new PokemonForm("Therian Forme", "therian", Type.ELECTRIC, Type.FLYING, 3, 61, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.VOLT_ABSORB, 580, 79, 105, 70, 145, 80, 101, 3, 90, 290), - ), - new PokemonSpecies(Species.RESHIRAM, 5, false, true, false, "Vast White Pokémon", Type.DRAGON, Type.FIRE, 3.2, 330, Abilities.TURBOBLAZE, Abilities.NONE, Abilities.NONE, 680, 100, 120, 100, 150, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ZEKROM, 5, false, true, false, "Deep Black Pokémon", Type.DRAGON, Type.ELECTRIC, 2.9, 345, Abilities.TERAVOLT, Abilities.NONE, Abilities.NONE, 680, 100, 150, 120, 120, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.LANDORUS, 5, true, false, false, "Abundance Pokémon", Type.GROUND, Type.FLYING, 1.5, 68, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, GrowthRate.SLOW, 100, false, true, - new PokemonForm("Incarnate Forme", "incarnate", Type.GROUND, Type.FLYING, 1.5, 68, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, false, null, true), - new PokemonForm("Therian Forme", "therian", Type.GROUND, Type.FLYING, 1.3, 68, Abilities.INTIMIDATE, Abilities.NONE, Abilities.INTIMIDATE, 600, 89, 145, 90, 105, 80, 91, 3, 90, 300), - ), - new PokemonSpecies(Species.KYUREM, 5, false, true, false, "Boundary Pokémon", Type.DRAGON, Type.ICE, 3, 325, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.DRAGON, Type.ICE, 3, 325, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, false, null, true), - new PokemonForm("Black", "black", Type.DRAGON, Type.ICE, 3.3, 325, Abilities.TERAVOLT, Abilities.NONE, Abilities.NONE, 700, 125, 170, 100, 120, 90, 95, 3, 0, 350), - new PokemonForm("White", "white", Type.DRAGON, Type.ICE, 3.6, 325, Abilities.TURBOBLAZE, Abilities.NONE, Abilities.NONE, 700, 125, 120, 90, 170, 100, 95, 3, 0, 350), - ), - new PokemonSpecies(Species.KELDEO, 5, false, false, true, "Colt Pokémon", Type.WATER, Type.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false, true, - new PokemonForm("Ordinary Form", "ordinary", Type.WATER, Type.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, false, null, true), - new PokemonForm("Resolute", "resolute", Type.WATER, Type.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290), - ), - new PokemonSpecies(Species.MELOETTA, 5, false, false, true, "Melody Pokémon", Type.NORMAL, Type.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Aria Forme", "aria", Type.NORMAL, Type.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, false, null, true), - new PokemonForm("Pirouette Forme", "pirouette", Type.NORMAL, Type.FIGHTING, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 128, 90, 77, 77, 128, 3, 100, 300, false, null, true), - ), - new PokemonSpecies(Species.GENESECT, 5, false, false, true, "Paleozoic Pokémon", Type.BUG, Type.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.BUG, Type.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, false, null, true), - new PokemonForm("Shock Drive", "shock", Type.BUG, Type.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - new PokemonForm("Burn Drive", "burn", Type.BUG, Type.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - new PokemonForm("Chill Drive", "chill", Type.BUG, Type.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - new PokemonForm("Douse Drive", "douse", Type.BUG, Type.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), - ), - new PokemonSpecies(Species.CHESPIN, 6, false, false, false, "Spiny Nut Pokémon", Type.GRASS, null, 0.4, 9, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 313, 56, 61, 65, 48, 45, 38, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUILLADIN, 6, false, false, false, "Spiny Armor Pokémon", Type.GRASS, null, 0.7, 29, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 405, 61, 78, 95, 56, 58, 57, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CHESNAUGHT, 6, false, false, false, "Spiny Armor Pokémon", Type.GRASS, Type.FIGHTING, 1.6, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 530, 88, 107, 122, 74, 75, 64, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FENNEKIN, 6, false, false, false, "Fox Pokémon", Type.FIRE, null, 0.4, 9.4, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 307, 40, 45, 40, 62, 60, 60, 45, 70, 61, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.BRAIXEN, 6, false, false, false, "Fox Pokémon", Type.FIRE, null, 1, 14.5, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 409, 59, 59, 58, 90, 70, 73, 45, 70, 143, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DELPHOX, 6, false, false, false, "Fox Pokémon", Type.FIRE, Type.PSYCHIC, 1.5, 39, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false, false, - new PokemonForm("Normal", "", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, null, true), - new PokemonForm("Battle Bond", "battle-bond", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, "", true), - ), - new PokemonSpecies(Species.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false, false, - new PokemonForm("Normal", "", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, null, true), - new PokemonForm("Battle Bond", "battle-bond", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, "", true), - ), - new PokemonSpecies(Species.GRENINJA, 6, false, false, false, "Ninja Pokémon", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, false, - new PokemonForm("Normal", "", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, null, true), - new PokemonForm("Battle Bond", "battle-bond", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, "", true), - new PokemonForm("Ash", "ash", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 640, 72, 145, 67, 153, 71, 132, 45, 70, 265), - ), - new PokemonSpecies(Species.BUNNELBY, 6, false, false, false, "Digging Pokémon", Type.NORMAL, null, 0.4, 5, Abilities.PICKUP, Abilities.CHEEK_POUCH, Abilities.HUGE_POWER, 237, 38, 36, 38, 32, 36, 57, 255, 50, 47, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DIGGERSBY, 6, false, false, false, "Digging Pokémon", Type.NORMAL, Type.GROUND, 1, 42.4, Abilities.PICKUP, Abilities.CHEEK_POUCH, Abilities.HUGE_POWER, 423, 85, 56, 77, 50, 77, 78, 127, 50, 148, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FLETCHLING, 6, false, false, false, "Tiny Robin Pokémon", Type.NORMAL, Type.FLYING, 0.3, 1.7, Abilities.BIG_PECKS, Abilities.NONE, Abilities.GALE_WINGS, 278, 45, 50, 43, 40, 38, 62, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.FLETCHINDER, 6, false, false, false, "Ember Pokémon", Type.FIRE, Type.FLYING, 0.7, 16, Abilities.FLAME_BODY, Abilities.NONE, Abilities.GALE_WINGS, 382, 62, 73, 55, 56, 52, 84, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TALONFLAME, 6, false, false, false, "Scorching Pokémon", Type.FIRE, Type.FLYING, 1.2, 24.5, Abilities.FLAME_BODY, Abilities.NONE, Abilities.GALE_WINGS, 499, 78, 81, 71, 74, 69, 126, 45, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SCATTERBUG, 6, false, false, false, "Scatterdust Pokémon", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Meadow Pattern", "meadow", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Icy Snow Pattern", "icy-snow", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Polar Pattern", "polar", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Tundra Pattern", "tundra", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Continental Pattern", "continental", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Garden Pattern", "garden", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Elegant Pattern", "elegant", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Modern Pattern", "modern", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Marine Pattern", "marine", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Archipelago Pattern", "archipelago", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("High Plains Pattern", "high-plains", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Sandstorm Pattern", "sandstorm", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("River Pattern", "river", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Monsoon Pattern", "monsoon", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Savanna Pattern", "savanna", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Sun Pattern", "sun", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Ocean Pattern", "ocean", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Jungle Pattern", "jungle", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Fancy Pattern", "fancy", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - new PokemonForm("Poké Ball Pattern", "poke-ball", Type.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), - ), - new PokemonSpecies(Species.SPEWPA, 6, false, false, false, "Scatterdust Pokémon", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.SHED_SKIN, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Meadow Pattern", "meadow", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Icy Snow Pattern", "icy-snow", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Polar Pattern", "polar", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Tundra Pattern", "tundra", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Continental Pattern", "continental", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Garden Pattern", "garden", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Elegant Pattern", "elegant", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Modern Pattern", "modern", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Marine Pattern", "marine", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Archipelago Pattern", "archipelago", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("High Plains Pattern", "high-plains", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Sandstorm Pattern", "sandstorm", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("River Pattern", "river", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Monsoon Pattern", "monsoon", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Savanna Pattern", "savanna", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Sun Pattern", "sun", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Ocean Pattern", "ocean", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Jungle Pattern", "jungle", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Fancy Pattern", "fancy", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - new PokemonForm("Poké Ball Pattern", "poke-ball", Type.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), - ), - new PokemonSpecies(Species.VIVILLON, 6, false, false, false, "Scale Pokémon", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Meadow Pattern", "meadow", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Icy Snow Pattern", "icy-snow", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Polar Pattern", "polar", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Tundra Pattern", "tundra", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Continental Pattern", "continental", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Garden Pattern", "garden", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Elegant Pattern", "elegant", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Modern Pattern", "modern", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Marine Pattern", "marine", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Archipelago Pattern", "archipelago", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("High Plains Pattern", "high-plains", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Sandstorm Pattern", "sandstorm", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("River Pattern", "river", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Monsoon Pattern", "monsoon", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Savanna Pattern", "savanna", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Sun Pattern", "sun", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Ocean Pattern", "ocean", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Jungle Pattern", "jungle", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Fancy Pattern", "fancy", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - new PokemonForm("Poké Ball Pattern", "poke-ball", Type.BUG, Type.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), - ), - new PokemonSpecies(Species.LITLEO, 6, false, false, false, "Lion Cub Pokémon", Type.FIRE, Type.NORMAL, 0.6, 13.5, Abilities.RIVALRY, Abilities.UNNERVE, Abilities.MOXIE, 369, 62, 50, 58, 73, 54, 72, 220, 70, 74, GrowthRate.MEDIUM_SLOW, 12.5, false), - new PokemonSpecies(Species.PYROAR, 6, false, false, false, "Royal Pokémon", Type.FIRE, Type.NORMAL, 1.5, 81.5, Abilities.RIVALRY, Abilities.UNNERVE, Abilities.MOXIE, 507, 86, 68, 72, 109, 66, 106, 65, 70, 177, GrowthRate.MEDIUM_SLOW, 12.5, true), - new PokemonSpecies(Species.FLABEBE, 6, false, false, false, "Single Bloom Pokémon", Type.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Red Flower", "red", Type.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("Yellow Flower", "yellow", Type.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("Orange Flower", "orange", Type.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("Blue Flower", "blue", Type.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - new PokemonForm("White Flower", "white", Type.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), - ), - new PokemonSpecies(Species.FLOETTE, 6, false, false, false, "Single Bloom Pokémon", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Red Flower", "red", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("Yellow Flower", "yellow", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("Orange Flower", "orange", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("Blue Flower", "blue", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - new PokemonForm("White Flower", "white", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), - ), - new PokemonSpecies(Species.FLORGES, 6, false, false, false, "Garden Pokémon", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, GrowthRate.MEDIUM_FAST, 0, false, false, - new PokemonForm("Red Flower", "red", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("Yellow Flower", "yellow", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("Orange Flower", "orange", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("Blue Flower", "blue", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - new PokemonForm("White Flower", "white", Type.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), - ), - new PokemonSpecies(Species.SKIDDO, 6, false, false, false, "Mount Pokémon", Type.GRASS, null, 0.9, 31, Abilities.SAP_SIPPER, Abilities.NONE, Abilities.GRASS_PELT, 350, 66, 65, 48, 62, 57, 52, 200, 70, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GOGOAT, 6, false, false, false, "Mount Pokémon", Type.GRASS, null, 1.7, 91, Abilities.SAP_SIPPER, Abilities.NONE, Abilities.GRASS_PELT, 531, 123, 100, 62, 97, 81, 68, 45, 70, 186, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PANCHAM, 6, false, false, false, "Playful Pokémon", Type.FIGHTING, null, 0.6, 8, Abilities.IRON_FIST, Abilities.MOLD_BREAKER, Abilities.SCRAPPY, 348, 67, 82, 62, 46, 48, 43, 220, 50, 70, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PANGORO, 6, false, false, false, "Daunting Pokémon", Type.FIGHTING, Type.DARK, 2.1, 136, Abilities.IRON_FIST, Abilities.MOLD_BREAKER, Abilities.SCRAPPY, 495, 95, 124, 78, 69, 71, 58, 65, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FURFROU, 6, false, false, false, "Poodle Pokémon", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Natural Form", "", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Heart Trim", "heart", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Star Trim", "star", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Diamond Trim", "diamond", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Debutante Trim", "debutante", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Matron Trim", "matron", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Dandy Trim", "dandy", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("La Reine Trim", "la-reine", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Kabuki Trim", "kabuki", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - new PokemonForm("Pharaoh Trim", "pharaoh", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), - ), - new PokemonSpecies(Species.ESPURR, 6, false, false, false, "Restraint Pokémon", Type.PSYCHIC, null, 0.3, 3.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.OWN_TEMPO, 355, 62, 48, 54, 63, 60, 68, 190, 50, 71, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MEOWSTIC, 6, false, false, false, "Constraint Pokémon", Type.PSYCHIC, null, 0.6, 8.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", Type.PSYCHIC, null, 0.6, 8.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, "", true), - new PokemonForm("Female", "female", Type.PSYCHIC, null, 0.6, 8.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.COMPETITIVE, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, null, true), - ), - new PokemonSpecies(Species.HONEDGE, 6, false, false, false, "Sword Pokémon", Type.STEEL, Type.GHOST, 0.8, 2, Abilities.NO_GUARD, Abilities.NONE, Abilities.NONE, 325, 45, 80, 100, 35, 37, 28, 180, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DOUBLADE, 6, false, false, false, "Sword Pokémon", Type.STEEL, Type.GHOST, 0.8, 4.5, Abilities.NO_GUARD, Abilities.NONE, Abilities.NONE, 448, 59, 110, 150, 45, 49, 35, 90, 50, 157, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AEGISLASH, 6, false, false, false, "Royal Sword Pokémon", Type.STEEL, Type.GHOST, 1.7, 53, Abilities.STANCE_CHANGE, Abilities.NONE, Abilities.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Shield Forme", "shield", Type.STEEL, Type.GHOST, 1.7, 53, Abilities.STANCE_CHANGE, Abilities.NONE, Abilities.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, false, "", true), - new PokemonForm("Blade Forme", "blade", Type.STEEL, Type.GHOST, 1.7, 53, Abilities.STANCE_CHANGE, Abilities.NONE, Abilities.NONE, 500, 60, 140, 50, 140, 50, 60, 45, 50, 250), - ), - new PokemonSpecies(Species.SPRITZEE, 6, false, false, false, "Perfume Pokémon", Type.FAIRY, null, 0.2, 0.5, Abilities.HEALER, Abilities.NONE, Abilities.AROMA_VEIL, 341, 78, 52, 60, 63, 65, 23, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AROMATISSE, 6, false, false, false, "Fragrance Pokémon", Type.FAIRY, null, 0.8, 15.5, Abilities.HEALER, Abilities.NONE, Abilities.AROMA_VEIL, 462, 101, 72, 72, 99, 89, 29, 140, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SWIRLIX, 6, false, false, false, "Cotton Candy Pokémon", Type.FAIRY, null, 0.4, 3.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.UNBURDEN, 341, 62, 48, 66, 59, 57, 49, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SLURPUFF, 6, false, false, false, "Meringue Pokémon", Type.FAIRY, null, 0.8, 5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.UNBURDEN, 480, 82, 80, 86, 85, 75, 72, 140, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.INKAY, 6, false, false, false, "Revolving Pokémon", Type.DARK, Type.PSYCHIC, 0.4, 3.5, Abilities.CONTRARY, Abilities.SUCTION_CUPS, Abilities.INFILTRATOR, 288, 53, 54, 53, 37, 46, 45, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MALAMAR, 6, false, false, false, "Overturning Pokémon", Type.DARK, Type.PSYCHIC, 1.5, 47, Abilities.CONTRARY, Abilities.SUCTION_CUPS, Abilities.INFILTRATOR, 482, 86, 92, 88, 68, 75, 73, 80, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BINACLE, 6, false, false, false, "Two-Handed Pokémon", Type.ROCK, Type.WATER, 0.5, 31, Abilities.TOUGH_CLAWS, Abilities.SNIPER, Abilities.PICKPOCKET, 306, 42, 52, 67, 39, 56, 50, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BARBARACLE, 6, false, false, false, "Collective Pokémon", Type.ROCK, Type.WATER, 1.3, 96, Abilities.TOUGH_CLAWS, Abilities.SNIPER, Abilities.PICKPOCKET, 500, 72, 105, 115, 54, 86, 68, 45, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SKRELP, 6, false, false, false, "Mock Kelp Pokémon", Type.POISON, Type.WATER, 0.5, 7.3, Abilities.POISON_POINT, Abilities.POISON_TOUCH, Abilities.ADAPTABILITY, 320, 50, 60, 60, 60, 60, 30, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DRAGALGE, 6, false, false, false, "Mock Kelp Pokémon", Type.POISON, Type.DRAGON, 1.8, 81.5, Abilities.POISON_POINT, Abilities.POISON_TOUCH, Abilities.ADAPTABILITY, 494, 65, 75, 90, 97, 123, 44, 55, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CLAUNCHER, 6, false, false, false, "Water Gun Pokémon", Type.WATER, null, 0.5, 8.3, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.NONE, 330, 50, 53, 62, 58, 63, 44, 225, 50, 66, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CLAWITZER, 6, false, false, false, "Howitzer Pokémon", Type.WATER, null, 1.3, 35.3, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.NONE, 500, 71, 73, 88, 120, 89, 59, 55, 50, 100, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HELIOPTILE, 6, false, false, false, "Generator Pokémon", Type.ELECTRIC, Type.NORMAL, 0.5, 6, Abilities.DRY_SKIN, Abilities.SAND_VEIL, Abilities.SOLAR_POWER, 289, 44, 38, 33, 61, 43, 70, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HELIOLISK, 6, false, false, false, "Generator Pokémon", Type.ELECTRIC, Type.NORMAL, 1, 21, Abilities.DRY_SKIN, Abilities.SAND_VEIL, Abilities.SOLAR_POWER, 481, 62, 55, 52, 109, 94, 109, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TYRUNT, 6, false, false, false, "Royal Heir Pokémon", Type.ROCK, Type.DRAGON, 0.8, 26, Abilities.STRONG_JAW, Abilities.NONE, Abilities.STURDY, 362, 58, 89, 77, 45, 45, 48, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.TYRANTRUM, 6, false, false, false, "Despot Pokémon", Type.ROCK, Type.DRAGON, 2.5, 270, Abilities.STRONG_JAW, Abilities.NONE, Abilities.ROCK_HEAD, 521, 82, 121, 119, 69, 59, 71, 45, 50, 182, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.AMAURA, 6, false, false, false, "Tundra Pokémon", Type.ROCK, Type.ICE, 1.3, 25.2, Abilities.REFRIGERATE, Abilities.NONE, Abilities.SNOW_WARNING, 362, 77, 59, 50, 67, 63, 46, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.AURORUS, 6, false, false, false, "Tundra Pokémon", Type.ROCK, Type.ICE, 2.7, 225, Abilities.REFRIGERATE, Abilities.NONE, Abilities.SNOW_WARNING, 521, 123, 77, 72, 99, 92, 58, 45, 50, 104, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SYLVEON, 6, false, false, false, "Intertwining Pokémon", Type.FAIRY, null, 1, 23.5, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.PIXILATE, 525, 95, 65, 65, 110, 130, 60, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.HAWLUCHA, 6, false, false, false, "Wrestling Pokémon", Type.FIGHTING, Type.FLYING, 0.8, 21.5, Abilities.LIMBER, Abilities.UNBURDEN, Abilities.MOLD_BREAKER, 500, 78, 92, 75, 74, 63, 118, 100, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DEDENNE, 6, false, false, false, "Antenna Pokémon", Type.ELECTRIC, Type.FAIRY, 0.2, 2.2, Abilities.CHEEK_POUCH, Abilities.PICKUP, Abilities.PLUS, 431, 67, 58, 57, 81, 67, 101, 180, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CARBINK, 6, false, false, false, "Jewel Pokémon", Type.ROCK, Type.FAIRY, 0.3, 5.7, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.STURDY, 500, 50, 50, 150, 50, 150, 50, 60, 50, 100, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GOOMY, 6, false, false, false, "Soft Tissue Pokémon", Type.DRAGON, null, 0.3, 2.8, Abilities.SAP_SIPPER, Abilities.HYDRATION, Abilities.GOOEY, 300, 45, 50, 35, 55, 75, 40, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SLIGGOO, 6, false, false, false, "Soft Tissue Pokémon", Type.DRAGON, null, 0.8, 17.5, Abilities.SAP_SIPPER, Abilities.HYDRATION, Abilities.GOOEY, 452, 68, 75, 53, 83, 113, 60, 45, 35, 158, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GOODRA, 6, false, false, false, "Dragon Pokémon", Type.DRAGON, null, 2, 150.5, Abilities.SAP_SIPPER, Abilities.HYDRATION, Abilities.GOOEY, 600, 90, 100, 70, 110, 150, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.KLEFKI, 6, false, false, false, "Key Ring Pokémon", Type.STEEL, Type.FAIRY, 0.2, 3, Abilities.PRANKSTER, Abilities.NONE, Abilities.MAGICIAN, 470, 57, 80, 91, 80, 87, 75, 75, 50, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.PHANTUMP, 6, false, false, false, "Stump Pokémon", Type.GHOST, Type.GRASS, 0.4, 7, Abilities.NATURAL_CURE, Abilities.FRISK, Abilities.HARVEST, 309, 43, 70, 48, 50, 60, 38, 120, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TREVENANT, 6, false, false, false, "Elder Tree Pokémon", Type.GHOST, Type.GRASS, 1.5, 71, Abilities.NATURAL_CURE, Abilities.FRISK, Abilities.HARVEST, 474, 85, 110, 76, 65, 82, 56, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PUMPKABOO, 6, false, false, false, "Pumpkin Pokémon", Type.GHOST, Type.GRASS, 0.4, 5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Average Size", "", Type.GHOST, Type.GRASS, 0.4, 5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, false, null, true), - new PokemonForm("Small Size", "small", Type.GHOST, Type.GRASS, 0.3, 3.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 44, 66, 70, 44, 55, 56, 120, 50, 67, false, "", true), - new PokemonForm("Large Size", "large", Type.GHOST, Type.GRASS, 0.5, 7.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 54, 66, 70, 44, 55, 46, 120, 50, 67, false, "", true), - new PokemonForm("Super Size", "super", Type.GHOST, Type.GRASS, 0.8, 15, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 59, 66, 70, 44, 55, 41, 120, 50, 67, false, "", true), - ), - new PokemonSpecies(Species.GOURGEIST, 6, false, false, false, "Pumpkin Pokémon", Type.GHOST, Type.GRASS, 0.9, 12.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Average Size", "", Type.GHOST, Type.GRASS, 0.9, 12.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, false, null, true), - new PokemonForm("Small Size", "small", Type.GHOST, Type.GRASS, 0.7, 9.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 55, 85, 122, 58, 75, 99, 60, 50, 173, false, "", true), - new PokemonForm("Large Size", "large", Type.GHOST, Type.GRASS, 1.1, 14, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 75, 95, 122, 58, 75, 69, 60, 50, 173, false, "", true), - new PokemonForm("Super Size", "super", Type.GHOST, Type.GRASS, 1.7, 39, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 85, 100, 122, 58, 75, 54, 60, 50, 173, false, "", true), - ), - new PokemonSpecies(Species.BERGMITE, 6, false, false, false, "Ice Chunk Pokémon", Type.ICE, null, 1, 99.5, Abilities.OWN_TEMPO, Abilities.ICE_BODY, Abilities.STURDY, 304, 55, 69, 85, 32, 35, 28, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.AVALUGG, 6, false, false, false, "Iceberg Pokémon", Type.ICE, null, 2, 505, Abilities.OWN_TEMPO, Abilities.ICE_BODY, Abilities.STURDY, 514, 95, 117, 184, 44, 46, 28, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.NOIBAT, 6, false, false, false, "Sound Wave Pokémon", Type.FLYING, Type.DRAGON, 0.5, 8, Abilities.FRISK, Abilities.INFILTRATOR, Abilities.TELEPATHY, 245, 40, 30, 35, 45, 40, 55, 190, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.NOIVERN, 6, false, false, false, "Sound Wave Pokémon", Type.FLYING, Type.DRAGON, 1.5, 85, Abilities.FRISK, Abilities.INFILTRATOR, Abilities.TELEPATHY, 535, 85, 70, 80, 97, 80, 123, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.XERNEAS, 6, false, true, false, "Life Pokémon", Type.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false, true, - new PokemonForm("Neutral Mode", "neutral", Type.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, false, null, true), - new PokemonForm("Active Mode", "active", Type.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340) - ), - new PokemonSpecies(Species.YVELTAL, 6, false, true, false, "Destruction Pokémon", Type.DARK, Type.FLYING, 5.8, 203, Abilities.DARK_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ZYGARDE, 6, false, true, false, "Order Pokémon", Type.DRAGON, Type.GROUND, 5, 305, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("50% Forme", "50", Type.DRAGON, Type.GROUND, 5, 305, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), - new PokemonForm("10% Forme", "10", Type.DRAGON, Type.GROUND, 1.2, 33.5, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, null, true), - new PokemonForm("50% Forme Power Construct", "50-pc", Type.DRAGON, Type.GROUND, 5, 305, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), - new PokemonForm("10% Forme Power Construct", "10-pc", Type.DRAGON, Type.GROUND, 1.2, 33.5, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, "10", true), - new PokemonForm("Complete Forme (50% PC)", "complete", Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354), - new PokemonForm("Complete Forme (10% PC)", "10-complete", Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354, false, "complete"), - ), - new PokemonSpecies(Species.DIANCIE, 6, false, false, true, "Jewel Pokémon", Type.ROCK, Type.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.ROCK, Type.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, false, null, true), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ROCK, Type.FAIRY, 1.1, 27.8, Abilities.MAGIC_BOUNCE, Abilities.NONE, Abilities.NONE, 700, 50, 160, 110, 160, 110, 110, 3, 50, 300), - ), - new PokemonSpecies(Species.HOOPA, 6, false, false, true, "Mischief Pokémon", Type.PSYCHIC, Type.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Hoopa Confined", "", Type.PSYCHIC, Type.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, false, null, true), - new PokemonForm("Hoopa Unbound", "unbound", Type.PSYCHIC, Type.DARK, 6.5, 490, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 680, 80, 160, 60, 170, 130, 80, 3, 100, 340), - ), - new PokemonSpecies(Species.VOLCANION, 6, false, false, true, "Steam Pokémon", Type.FIRE, Type.WATER, 1.7, 195, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.NONE, 600, 80, 110, 120, 130, 90, 70, 3, 100, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ROWLET, 7, false, false, false, "Grass Quill Pokémon", Type.GRASS, Type.FLYING, 0.3, 1.5, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 320, 68, 55, 55, 50, 50, 42, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DARTRIX, 7, false, false, false, "Blade Quill Pokémon", Type.GRASS, Type.FLYING, 0.7, 16, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 420, 78, 75, 75, 70, 70, 52, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DECIDUEYE, 7, false, false, false, "Arrow Quill Pokémon", Type.GRASS, Type.GHOST, 1.6, 36.6, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 530, 78, 107, 75, 100, 100, 70, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.LITTEN, 7, false, false, false, "Fire Cat Pokémon", Type.FIRE, null, 0.4, 4.3, Abilities.BLAZE, Abilities.NONE, Abilities.INTIMIDATE, 320, 45, 65, 40, 60, 40, 70, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.TORRACAT, 7, false, false, false, "Fire Cat Pokémon", Type.FIRE, null, 0.7, 25, Abilities.BLAZE, Abilities.NONE, Abilities.INTIMIDATE, 420, 65, 85, 50, 80, 50, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.INCINEROAR, 7, false, false, false, "Heel Pokémon", Type.FIRE, Type.DARK, 1.8, 83, Abilities.BLAZE, Abilities.NONE, Abilities.INTIMIDATE, 530, 95, 115, 90, 80, 90, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.POPPLIO, 7, false, false, false, "Sea Lion Pokémon", Type.WATER, null, 0.4, 7.5, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 320, 50, 54, 54, 66, 56, 40, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.BRIONNE, 7, false, false, false, "Pop Star Pokémon", Type.WATER, null, 0.6, 17.5, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 420, 60, 69, 69, 91, 81, 50, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PRIMARINA, 7, false, false, false, "Soloist Pokémon", Type.WATER, Type.FAIRY, 1.8, 44, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 530, 80, 74, 74, 126, 116, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PIKIPEK, 7, false, false, false, "Woodpecker Pokémon", Type.NORMAL, Type.FLYING, 0.3, 1.2, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.PICKUP, 265, 35, 75, 30, 30, 30, 65, 255, 70, 53, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TRUMBEAK, 7, false, false, false, "Bugle Beak Pokémon", Type.NORMAL, Type.FLYING, 0.6, 14.8, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.PICKUP, 355, 55, 85, 50, 40, 50, 75, 120, 70, 124, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TOUCANNON, 7, false, false, false, "Cannon Pokémon", Type.NORMAL, Type.FLYING, 1.1, 26, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.SHEER_FORCE, 485, 80, 120, 75, 75, 75, 60, 45, 70, 243, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.YUNGOOS, 7, false, false, false, "Loitering Pokémon", Type.NORMAL, null, 0.4, 6, Abilities.STAKEOUT, Abilities.STRONG_JAW, Abilities.ADAPTABILITY, 253, 48, 70, 30, 30, 30, 45, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GUMSHOOS, 7, false, false, false, "Stakeout Pokémon", Type.NORMAL, null, 0.7, 14.2, Abilities.STAKEOUT, Abilities.STRONG_JAW, Abilities.ADAPTABILITY, 418, 88, 110, 60, 55, 60, 45, 127, 70, 146, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GRUBBIN, 7, false, false, false, "Larva Pokémon", Type.BUG, null, 0.4, 4.4, Abilities.SWARM, Abilities.NONE, Abilities.NONE, 300, 47, 62, 45, 55, 45, 46, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CHARJABUG, 7, false, false, false, "Battery Pokémon", Type.BUG, Type.ELECTRIC, 0.5, 10.5, Abilities.BATTERY, Abilities.NONE, Abilities.NONE, 400, 57, 82, 95, 55, 75, 36, 120, 50, 140, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.VIKAVOLT, 7, false, false, false, "Stag Beetle Pokémon", Type.BUG, Type.ELECTRIC, 1.5, 45, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 500, 77, 70, 90, 145, 75, 43, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CRABRAWLER, 7, false, false, false, "Boxing Pokémon", Type.FIGHTING, null, 0.6, 7, Abilities.HYPER_CUTTER, Abilities.IRON_FIST, Abilities.ANGER_POINT, 338, 47, 82, 57, 42, 47, 63, 225, 70, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CRABOMINABLE, 7, false, false, false, "Woolly Crab Pokémon", Type.FIGHTING, Type.ICE, 1.7, 180, Abilities.HYPER_CUTTER, Abilities.IRON_FIST, Abilities.ANGER_POINT, 478, 97, 132, 77, 62, 67, 43, 60, 70, 167, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ORICORIO, 7, false, false, false, "Dancing Pokémon", Type.FIRE, Type.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, GrowthRate.MEDIUM_FAST, 25, false, false, - new PokemonForm("Baile Style", "baile", Type.FIRE, Type.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, "", true), - new PokemonForm("Pom-Pom Style", "pompom", Type.ELECTRIC, Type.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), - new PokemonForm("Pau Style", "pau", Type.PSYCHIC, Type.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), - new PokemonForm("Sensu Style", "sensu", Type.GHOST, Type.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), - ), - new PokemonSpecies(Species.CUTIEFLY, 7, false, false, false, "Bee Fly Pokémon", Type.BUG, Type.FAIRY, 0.1, 0.2, Abilities.HONEY_GATHER, Abilities.SHIELD_DUST, Abilities.SWEET_VEIL, 304, 40, 45, 40, 55, 40, 84, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RIBOMBEE, 7, false, false, false, "Bee Fly Pokémon", Type.BUG, Type.FAIRY, 0.2, 0.5, Abilities.HONEY_GATHER, Abilities.SHIELD_DUST, Abilities.SWEET_VEIL, 464, 60, 55, 60, 95, 70, 124, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ROCKRUFF, 7, false, false, false, "Puppy Pokémon", Type.ROCK, null, 0.5, 9.2, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", Type.ROCK, null, 0.5, 9.2, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, null, true), - new PokemonForm("Own Tempo", "own-tempo", Type.ROCK, null, 0.5, 9.2, Abilities.OWN_TEMPO, Abilities.NONE, Abilities.OWN_TEMPO, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, "", true), - ), - new PokemonSpecies(Species.LYCANROC, 7, false, false, false, "Wolf Pokémon", Type.ROCK, null, 0.8, 25, Abilities.KEEN_EYE, Abilities.SAND_RUSH, Abilities.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Midday Form", "midday", Type.ROCK, null, 0.8, 25, Abilities.KEEN_EYE, Abilities.SAND_RUSH, Abilities.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, false, "", true), - new PokemonForm("Midnight Form", "midnight", Type.ROCK, null, 1.1, 25, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.NO_GUARD, 487, 85, 115, 75, 55, 75, 82, 90, 50, 170, false, null, true), - new PokemonForm("Dusk Form", "dusk", Type.ROCK, null, 0.8, 25, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 487, 75, 117, 65, 55, 65, 110, 90, 50, 170, false, null, true), - ), - new PokemonSpecies(Species.WISHIWASHI, 7, false, false, false, "Small Fry Pokémon", Type.WATER, null, 0.2, 0.3, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, GrowthRate.FAST, 50, false, false, - new PokemonForm("Solo Form", "", Type.WATER, null, 0.2, 0.3, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, false, null, true), - new PokemonForm("School", "school", Type.WATER, null, 8.2, 78.6, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 620, 45, 140, 130, 140, 135, 30, 60, 50, 217), - ), - new PokemonSpecies(Species.MAREANIE, 7, false, false, false, "Brutal Star Pokémon", Type.POISON, Type.WATER, 0.4, 8, Abilities.MERCILESS, Abilities.LIMBER, Abilities.REGENERATOR, 305, 50, 53, 62, 43, 52, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TOXAPEX, 7, false, false, false, "Brutal Star Pokémon", Type.POISON, Type.WATER, 0.7, 14.5, Abilities.MERCILESS, Abilities.LIMBER, Abilities.REGENERATOR, 495, 50, 63, 152, 53, 142, 35, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MUDBRAY, 7, false, false, false, "Donkey Pokémon", Type.GROUND, null, 1, 110, Abilities.OWN_TEMPO, Abilities.STAMINA, Abilities.INNER_FOCUS, 385, 70, 100, 70, 45, 55, 45, 190, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MUDSDALE, 7, false, false, false, "Draft Horse Pokémon", Type.GROUND, null, 2.5, 920, Abilities.OWN_TEMPO, Abilities.STAMINA, Abilities.INNER_FOCUS, 500, 100, 125, 100, 55, 85, 35, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DEWPIDER, 7, false, false, false, "Water Bubble Pokémon", Type.WATER, Type.BUG, 0.3, 4, Abilities.WATER_BUBBLE, Abilities.NONE, Abilities.WATER_ABSORB, 269, 38, 40, 52, 40, 72, 27, 200, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ARAQUANID, 7, false, false, false, "Water Bubble Pokémon", Type.WATER, Type.BUG, 1.8, 82, Abilities.WATER_BUBBLE, Abilities.NONE, Abilities.WATER_ABSORB, 454, 68, 70, 92, 50, 132, 42, 100, 50, 159, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FOMANTIS, 7, false, false, false, "Sickle Grass Pokémon", Type.GRASS, null, 0.3, 1.5, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.CONTRARY, 250, 40, 55, 35, 50, 35, 35, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LURANTIS, 7, false, false, false, "Bloom Sickle Pokémon", Type.GRASS, null, 0.9, 18.5, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.CONTRARY, 480, 70, 105, 90, 80, 90, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MORELULL, 7, false, false, false, "Illuminating Pokémon", Type.GRASS, Type.FAIRY, 0.2, 1.5, Abilities.ILLUMINATE, Abilities.EFFECT_SPORE, Abilities.RAIN_DISH, 285, 40, 35, 55, 65, 75, 15, 190, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SHIINOTIC, 7, false, false, false, "Illuminating Pokémon", Type.GRASS, Type.FAIRY, 1, 11.5, Abilities.ILLUMINATE, Abilities.EFFECT_SPORE, Abilities.RAIN_DISH, 405, 60, 45, 80, 90, 100, 30, 75, 50, 142, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SALANDIT, 7, false, false, false, "Toxic Lizard Pokémon", Type.POISON, Type.FIRE, 0.6, 4.8, Abilities.CORROSION, Abilities.NONE, Abilities.OBLIVIOUS, 320, 48, 44, 40, 71, 40, 77, 120, 50, 64, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.SALAZZLE, 7, false, false, false, "Toxic Lizard Pokémon", Type.POISON, Type.FIRE, 1.2, 22.2, Abilities.CORROSION, Abilities.NONE, Abilities.OBLIVIOUS, 480, 68, 64, 60, 111, 60, 117, 45, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.STUFFUL, 7, false, false, false, "Flailing Pokémon", Type.NORMAL, Type.FIGHTING, 0.5, 6.8, Abilities.FLUFFY, Abilities.KLUTZ, Abilities.CUTE_CHARM, 340, 70, 75, 50, 45, 50, 50, 140, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BEWEAR, 7, false, false, false, "Strong Arm Pokémon", Type.NORMAL, Type.FIGHTING, 2.1, 135, Abilities.FLUFFY, Abilities.KLUTZ, Abilities.UNNERVE, 500, 120, 125, 80, 55, 60, 60, 70, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BOUNSWEET, 7, false, false, false, "Fruit Pokémon", Type.GRASS, null, 0.3, 3.2, Abilities.LEAF_GUARD, Abilities.OBLIVIOUS, Abilities.SWEET_VEIL, 210, 42, 30, 38, 30, 38, 32, 235, 50, 42, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.STEENEE, 7, false, false, false, "Fruit Pokémon", Type.GRASS, null, 0.7, 8.2, Abilities.LEAF_GUARD, Abilities.OBLIVIOUS, Abilities.SWEET_VEIL, 290, 52, 40, 48, 40, 48, 62, 120, 50, 102, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.TSAREENA, 7, false, false, false, "Fruit Pokémon", Type.GRASS, null, 1.2, 21.4, Abilities.LEAF_GUARD, Abilities.QUEENLY_MAJESTY, Abilities.SWEET_VEIL, 510, 72, 120, 98, 50, 98, 72, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.COMFEY, 7, false, false, false, "Posy Picker Pokémon", Type.FAIRY, null, 0.1, 0.3, Abilities.FLOWER_VEIL, Abilities.TRIAGE, Abilities.NATURAL_CURE, 485, 51, 52, 90, 82, 110, 100, 60, 50, 170, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.ORANGURU, 7, false, false, false, "Sage Pokémon", Type.NORMAL, Type.PSYCHIC, 1.5, 76, Abilities.INNER_FOCUS, Abilities.TELEPATHY, Abilities.SYMBIOSIS, 490, 90, 60, 80, 90, 110, 60, 45, 50, 172, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PASSIMIAN, 7, false, false, false, "Teamwork Pokémon", Type.FIGHTING, null, 2, 82.8, Abilities.RECEIVER, Abilities.NONE, Abilities.DEFIANT, 490, 100, 120, 90, 40, 60, 80, 45, 50, 172, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.WIMPOD, 7, false, false, false, "Turn Tail Pokémon", Type.BUG, Type.WATER, 0.5, 12, Abilities.WIMP_OUT, Abilities.NONE, Abilities.RUN_AWAY, 230, 25, 35, 40, 20, 30, 80, 90, 50, 46, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden - new PokemonSpecies(Species.GOLISOPOD, 7, false, false, false, "Hard Scale Pokémon", Type.BUG, Type.WATER, 2, 108, Abilities.EMERGENCY_EXIT, Abilities.NONE, Abilities.ANTICIPATION, 530, 75, 125, 140, 60, 90, 40, 45, 50, 186, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden - new PokemonSpecies(Species.SANDYGAST, 7, false, false, false, "Sand Heap Pokémon", Type.GHOST, Type.GROUND, 0.5, 70, Abilities.WATER_COMPACTION, Abilities.NONE, Abilities.SAND_VEIL, 320, 55, 55, 80, 70, 45, 15, 140, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PALOSSAND, 7, false, false, false, "Sand Castle Pokémon", Type.GHOST, Type.GROUND, 1.3, 250, Abilities.WATER_COMPACTION, Abilities.NONE, Abilities.SAND_VEIL, 480, 85, 75, 110, 100, 75, 35, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PYUKUMUKU, 7, false, false, false, "Sea Cucumber Pokémon", Type.WATER, null, 0.3, 1.2, Abilities.INNARDS_OUT, Abilities.NONE, Abilities.UNAWARE, 410, 55, 60, 130, 30, 130, 5, 60, 50, 144, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.TYPE_NULL, 7, true, false, false, "Synthetic Pokémon", Type.NORMAL, null, 1.9, 120.5, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.NONE, 534, 95, 95, 95, 95, 95, 59, 3, 0, 107, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SILVALLY, 7, true, false, false, "Synthetic Pokémon", Type.NORMAL, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, GrowthRate.SLOW, null, false, false, - new PokemonForm("Type: Normal", "normal", Type.NORMAL, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, false, "", true), - new PokemonForm("Type: Fighting", "fighting", Type.FIGHTING, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Flying", "flying", Type.FLYING, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Poison", "poison", Type.POISON, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Ground", "ground", Type.GROUND, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Rock", "rock", Type.ROCK, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Bug", "bug", Type.BUG, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Ghost", "ghost", Type.GHOST, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Steel", "steel", Type.STEEL, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Fire", "fire", Type.FIRE, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Water", "water", Type.WATER, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Grass", "grass", Type.GRASS, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Electric", "electric", Type.ELECTRIC, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Psychic", "psychic", Type.PSYCHIC, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Ice", "ice", Type.ICE, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Dragon", "dragon", Type.DRAGON, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Dark", "dark", Type.DARK, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - new PokemonForm("Type: Fairy", "fairy", Type.FAIRY, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), - ), - new PokemonSpecies(Species.MINIOR, 7, false, false, false, "Meteor Pokémon", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, GrowthRate.MEDIUM_SLOW, null, false, false, - new PokemonForm("Red Meteor Form", "red-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Orange Meteor Form", "orange-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Yellow Meteor Form", "yellow-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Green Meteor Form", "green-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Blue Meteor Form", "blue-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Indigo Meteor Form", "indigo-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Violet Meteor Form", "violet-meteor", Type.ROCK, Type.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), - new PokemonForm("Red Core Form", "red", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Orange Core Form", "orange", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Yellow Core Form", "yellow", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Green Core Form", "green", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Blue Core Form", "blue", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Indigo Core Form", "indigo", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - new PokemonForm("Violet Core Form", "violet", Type.ROCK, Type.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), - ), - new PokemonSpecies(Species.KOMALA, 7, false, false, false, "Drowsing Pokémon", Type.NORMAL, null, 0.4, 19.9, Abilities.COMATOSE, Abilities.NONE, Abilities.NONE, 480, 65, 115, 65, 75, 95, 65, 45, 70, 168, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TURTONATOR, 7, false, false, false, "Blast Turtle Pokémon", Type.FIRE, Type.DRAGON, 2, 212, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.NONE, 485, 60, 78, 135, 91, 85, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TOGEDEMARU, 7, false, false, false, "Roly-Poly Pokémon", Type.ELECTRIC, Type.STEEL, 0.3, 3.3, Abilities.IRON_BARBS, Abilities.LIGHTNING_ROD, Abilities.STURDY, 435, 65, 98, 63, 40, 73, 96, 180, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MIMIKYU, 7, false, false, false, "Disguise Pokémon", Type.GHOST, Type.FAIRY, 0.2, 0.7, Abilities.DISGUISE, Abilities.NONE, Abilities.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Disguised Form", "disguised", Type.GHOST, Type.FAIRY, 0.2, 0.7, Abilities.DISGUISE, Abilities.NONE, Abilities.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, false, null, true), - new PokemonForm("Busted Form", "busted", Type.GHOST, Type.FAIRY, 0.2, 0.7, Abilities.DISGUISE, Abilities.NONE, Abilities.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167), - ), - new PokemonSpecies(Species.BRUXISH, 7, false, false, false, "Gnash Teeth Pokémon", Type.WATER, Type.PSYCHIC, 0.9, 19, Abilities.DAZZLING, Abilities.STRONG_JAW, Abilities.WONDER_SKIN, 475, 68, 105, 70, 70, 70, 92, 80, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DRAMPA, 7, false, false, false, "Placid Pokémon", Type.NORMAL, Type.DRAGON, 3, 185, Abilities.BERSERK, Abilities.SAP_SIPPER, Abilities.CLOUD_NINE, 485, 78, 60, 85, 135, 91, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DHELMISE, 7, false, false, false, "Sea Creeper Pokémon", Type.GHOST, Type.GRASS, 3.9, 210, Abilities.STEELWORKER, Abilities.NONE, Abilities.NONE, 517, 70, 131, 100, 86, 90, 40, 25, 50, 181, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.JANGMO_O, 7, false, false, false, "Scaly Pokémon", Type.DRAGON, null, 0.6, 29.7, Abilities.BULLETPROOF, Abilities.SOUNDPROOF, Abilities.OVERCOAT, 300, 45, 55, 65, 45, 45, 45, 45, 50, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HAKAMO_O, 7, false, false, false, "Scaly Pokémon", Type.DRAGON, Type.FIGHTING, 1.2, 47, Abilities.BULLETPROOF, Abilities.SOUNDPROOF, Abilities.OVERCOAT, 420, 55, 75, 90, 65, 70, 65, 45, 50, 147, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.KOMMO_O, 7, false, false, false, "Scaly Pokémon", Type.DRAGON, Type.FIGHTING, 1.6, 78.2, Abilities.BULLETPROOF, Abilities.SOUNDPROOF, Abilities.OVERCOAT, 600, 75, 110, 125, 100, 105, 85, 45, 50, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TAPU_KOKO, 7, true, false, false, "Land Spirit Pokémon", Type.ELECTRIC, Type.FAIRY, 1.8, 20.5, Abilities.ELECTRIC_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 115, 85, 95, 75, 130, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TAPU_LELE, 7, true, false, false, "Land Spirit Pokémon", Type.PSYCHIC, Type.FAIRY, 1.2, 18.6, Abilities.PSYCHIC_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 85, 75, 130, 115, 95, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TAPU_BULU, 7, true, false, false, "Land Spirit Pokémon", Type.GRASS, Type.FAIRY, 1.9, 45.5, Abilities.GRASSY_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 130, 115, 85, 95, 75, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TAPU_FINI, 7, true, false, false, "Land Spirit Pokémon", Type.WATER, Type.FAIRY, 1.3, 21.2, Abilities.MISTY_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 75, 115, 95, 130, 85, 3, 50, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.COSMOG, 7, true, false, false, "Nebula Pokémon", Type.PSYCHIC, null, 0.2, 0.1, Abilities.UNAWARE, Abilities.NONE, Abilities.NONE, 200, 43, 29, 31, 29, 31, 37, 45, 0, 40, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.COSMOEM, 7, true, false, false, "Protostar Pokémon", Type.PSYCHIC, null, 0.1, 999.9, Abilities.STURDY, Abilities.NONE, Abilities.NONE, 400, 43, 29, 131, 29, 131, 37, 45, 0, 140, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SOLGALEO, 7, false, true, false, "Sunne Pokémon", Type.PSYCHIC, Type.STEEL, 3.4, 230, Abilities.FULL_METAL_BODY, Abilities.NONE, Abilities.NONE, 680, 137, 137, 107, 113, 89, 97, 45, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.LUNALA, 7, false, true, false, "Moone Pokémon", Type.PSYCHIC, Type.GHOST, 4, 120, Abilities.SHADOW_SHIELD, Abilities.NONE, Abilities.NONE, 680, 137, 113, 89, 137, 107, 97, 45, 0, 340, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.NIHILEGO, 7, true, false, false, "Parasite Pokémon", Type.ROCK, Type.POISON, 1.2, 55.5, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 109, 53, 47, 127, 131, 103, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.BUZZWOLE, 7, true, false, false, "Swollen Pokémon", Type.BUG, Type.FIGHTING, 2.4, 333.6, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 107, 139, 139, 53, 53, 79, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.PHEROMOSA, 7, true, false, false, "Lissome Pokémon", Type.BUG, Type.FIGHTING, 1.8, 25, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 71, 137, 37, 137, 37, 151, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.XURKITREE, 7, true, false, false, "Glowing Pokémon", Type.ELECTRIC, null, 3.8, 100, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 83, 89, 71, 173, 71, 83, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CELESTEELA, 7, true, false, false, "Launch Pokémon", Type.STEEL, Type.FLYING, 9.2, 999.9, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 97, 101, 103, 107, 101, 61, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.KARTANA, 7, true, false, false, "Drawn Sword Pokémon", Type.GRASS, Type.STEEL, 0.3, 0.1, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 59, 181, 131, 59, 31, 109, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GUZZLORD, 7, true, false, false, "Junkivore Pokémon", Type.DARK, Type.DRAGON, 5.5, 888, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 223, 101, 53, 97, 53, 43, 45, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.NECROZMA, 7, false, true, false, "Prism Pokémon", Type.PSYCHIC, null, 2.4, 230, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", Type.PSYCHIC, null, 2.4, 230, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, false, null, true), - new PokemonForm("Dusk Mane", "dusk-mane", Type.PSYCHIC, Type.STEEL, 3.8, 460, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 157, 127, 113, 109, 77, 255, 0, 340), - new PokemonForm("Dawn Wings", "dawn-wings", Type.PSYCHIC, Type.GHOST, 4.2, 350, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 113, 109, 157, 127, 77, 255, 0, 340), - new PokemonForm("Ultra", "ultra", Type.PSYCHIC, Type.DRAGON, 7.5, 230, Abilities.NEUROFORCE, Abilities.NONE, Abilities.NONE, 754, 97, 167, 97, 167, 97, 129, 255, 0, 377), - ), - new PokemonSpecies(Species.MAGEARNA, 7, false, false, true, "Artificial Pokémon", Type.STEEL, Type.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", Type.STEEL, Type.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), - new PokemonForm("Original", "original", Type.STEEL, Type.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), - ), - new PokemonSpecies(Species.MARSHADOW, 7, false, false, true, "Gloomdweller Pokémon", Type.FIGHTING, Type.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.FIGHTING, Type.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, true), - new PokemonForm("Zenith", "zenith", Type.FIGHTING, Type.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, false, true) - ), - new PokemonSpecies(Species.POIPOLE, 7, true, false, false, "Poison Pin Pokémon", Type.POISON, null, 0.6, 1.8, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 420, 67, 73, 67, 73, 67, 73, 45, 0, 210, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.NAGANADEL, 7, true, false, false, "Poison Pin Pokémon", Type.POISON, Type.DRAGON, 3.6, 150, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 540, 73, 73, 73, 127, 73, 121, 45, 0, 270, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.STAKATAKA, 7, true, false, false, "Rampart Pokémon", Type.ROCK, Type.STEEL, 5.5, 820, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 61, 131, 211, 53, 101, 13, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.BLACEPHALON, 7, true, false, false, "Fireworks Pokémon", Type.FIRE, Type.GHOST, 1.8, 13, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 53, 127, 53, 151, 79, 107, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ZERAORA, 7, false, false, true, "Thunderclap Pokémon", Type.ELECTRIC, null, 1.5, 44.5, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.NONE, 600, 88, 112, 75, 102, 80, 143, 3, 0, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MELTAN, 7, false, false, true, "Hex Nut Pokémon", Type.STEEL, null, 0.2, 8, Abilities.MAGNET_PULL, Abilities.NONE, Abilities.NONE, 300, 46, 65, 65, 55, 35, 34, 3, 0, 150, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.MELMETAL, 7, false, false, true, "Hex Nut Pokémon", Type.STEEL, null, 2.5, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.STEEL, null, 2.5, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, null, 25, 999.9, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 700, 175, 165, 155, 85, 75, 45, 3, 0, 300), - ), - new PokemonSpecies(Species.GROOKEY, 8, false, false, false, "Chimp Pokémon", Type.GRASS, null, 0.3, 5, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 310, 50, 65, 50, 40, 40, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.THWACKEY, 8, false, false, false, "Beat Pokémon", Type.GRASS, null, 0.7, 14, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 420, 70, 85, 70, 55, 60, 80, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.RILLABOOM, 8, false, false, false, "Drummer Pokémon", Type.GRASS, null, 2.1, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.GRASS, null, 2.1, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, null, 28, 999.9, Abilities.GRASSY_SURGE, Abilities.NONE, Abilities.GRASSY_SURGE, 630, 125, 150, 105, 85, 85, 80, 45, 50, 265), - ), - new PokemonSpecies(Species.SCORBUNNY, 8, false, false, false, "Rabbit Pokémon", Type.FIRE, null, 0.3, 4.5, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 310, 50, 71, 40, 40, 40, 69, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.RABOOT, 8, false, false, false, "Rabbit Pokémon", Type.FIRE, null, 0.6, 9, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 420, 65, 86, 60, 55, 60, 94, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CINDERACE, 8, false, false, false, "Striker Pokémon", Type.FIRE, null, 1.4, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.FIRE, null, 1.4, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, null, 27, 999.9, Abilities.LIBERO, Abilities.NONE, Abilities.LIBERO, 630, 100, 146, 80, 90, 80, 134, 45, 50, 265), - ), - new PokemonSpecies(Species.SOBBLE, 8, false, false, false, "Water Lizard Pokémon", Type.WATER, null, 0.3, 4, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 310, 50, 40, 40, 70, 40, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.DRIZZILE, 8, false, false, false, "Water Lizard Pokémon", Type.WATER, null, 0.7, 11.5, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 420, 65, 60, 55, 95, 55, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.INTELEON, 8, false, false, false, "Secret Agent Pokémon", Type.WATER, null, 1.9, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, - new PokemonForm("Normal", "", Type.WATER, null, 1.9, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 40, 999.9, Abilities.SNIPER, Abilities.NONE, Abilities.SNIPER, 630, 95, 97, 77, 147, 77, 137, 45, 50, 265), - ), - new PokemonSpecies(Species.SKWOVET, 8, false, false, false, "Cheeky Pokémon", Type.NORMAL, null, 0.3, 2.5, Abilities.CHEEK_POUCH, Abilities.NONE, Abilities.GLUTTONY, 275, 70, 55, 55, 35, 35, 25, 255, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GREEDENT, 8, false, false, false, "Greedy Pokémon", Type.NORMAL, null, 0.6, 6, Abilities.CHEEK_POUCH, Abilities.NONE, Abilities.GLUTTONY, 460, 120, 95, 95, 55, 75, 20, 90, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ROOKIDEE, 8, false, false, false, "Tiny Bird Pokémon", Type.FLYING, null, 0.2, 1.8, Abilities.KEEN_EYE, Abilities.UNNERVE, Abilities.BIG_PECKS, 245, 38, 47, 35, 33, 35, 57, 255, 50, 49, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CORVISQUIRE, 8, false, false, false, "Raven Pokémon", Type.FLYING, null, 0.8, 16, Abilities.KEEN_EYE, Abilities.UNNERVE, Abilities.BIG_PECKS, 365, 68, 67, 55, 43, 55, 77, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CORVIKNIGHT, 8, false, false, false, "Raven Pokémon", Type.FLYING, Type.STEEL, 2.2, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.FLYING, Type.STEEL, 2.2, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FLYING, Type.STEEL, 14, 999.9, Abilities.MIRROR_ARMOR, Abilities.MIRROR_ARMOR, Abilities.MIRROR_ARMOR, 595, 128, 102, 140, 53, 95, 77, 45, 50, 248), - ), - new PokemonSpecies(Species.BLIPBUG, 8, false, false, false, "Larva Pokémon", Type.BUG, null, 0.4, 8, Abilities.SWARM, Abilities.COMPOUND_EYES, Abilities.TELEPATHY, 180, 25, 20, 20, 25, 45, 45, 255, 50, 36, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DOTTLER, 8, false, false, false, "Radome Pokémon", Type.BUG, Type.PSYCHIC, 0.4, 19.5, Abilities.SWARM, Abilities.COMPOUND_EYES, Abilities.TELEPATHY, 335, 50, 35, 80, 50, 90, 30, 120, 50, 117, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ORBEETLE, 8, false, false, false, "Seven Spot Pokémon", Type.BUG, Type.PSYCHIC, 0.4, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.BUG, Type.PSYCHIC, 0.4, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.PSYCHIC, 14, 999.9, Abilities.TRACE, Abilities.TRACE, Abilities.TRACE, 605, 90, 45, 130, 110, 140, 90, 45, 50, 253), - ), - new PokemonSpecies(Species.NICKIT, 8, false, false, false, "Fox Pokémon", Type.DARK, null, 0.6, 8.9, Abilities.RUN_AWAY, Abilities.UNBURDEN, Abilities.STAKEOUT, 245, 40, 28, 28, 47, 52, 50, 255, 50, 49, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.THIEVUL, 8, false, false, false, "Fox Pokémon", Type.DARK, null, 1.2, 19.9, Abilities.RUN_AWAY, Abilities.UNBURDEN, Abilities.STAKEOUT, 455, 70, 58, 58, 87, 92, 90, 127, 50, 159, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.GOSSIFLEUR, 8, false, false, false, "Flowering Pokémon", Type.GRASS, null, 0.4, 2.2, Abilities.COTTON_DOWN, Abilities.REGENERATOR, Abilities.EFFECT_SPORE, 250, 40, 40, 60, 40, 60, 10, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ELDEGOSS, 8, false, false, false, "Cotton Bloom Pokémon", Type.GRASS, null, 0.5, 2.5, Abilities.COTTON_DOWN, Abilities.REGENERATOR, Abilities.EFFECT_SPORE, 460, 60, 50, 90, 80, 120, 60, 75, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WOOLOO, 8, false, false, false, "Sheep Pokémon", Type.NORMAL, null, 0.6, 6, Abilities.FLUFFY, Abilities.RUN_AWAY, Abilities.BULLETPROOF, 270, 42, 40, 55, 40, 45, 48, 255, 50, 122, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUBWOOL, 8, false, false, false, "Sheep Pokémon", Type.NORMAL, null, 1.3, 43, Abilities.FLUFFY, Abilities.STEADFAST, Abilities.BULLETPROOF, 490, 72, 80, 100, 60, 90, 88, 127, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CHEWTLE, 8, false, false, false, "Snapping Pokémon", Type.WATER, null, 0.3, 8.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 284, 50, 64, 50, 38, 38, 44, 255, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DREDNAW, 8, false, false, false, "Bite Pokémon", Type.WATER, Type.ROCK, 1, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.WATER, Type.ROCK, 1, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ROCK, 24, 999.9, Abilities.STRONG_JAW, Abilities.STRONG_JAW, Abilities.STRONG_JAW, 585, 115, 145, 115, 43, 83, 84, 75, 50, 170), - ), - new PokemonSpecies(Species.YAMPER, 8, false, false, false, "Puppy Pokémon", Type.ELECTRIC, null, 0.3, 13.5, Abilities.BALL_FETCH, Abilities.NONE, Abilities.RATTLED, 270, 59, 45, 50, 40, 50, 26, 255, 50, 54, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.BOLTUND, 8, false, false, false, "Dog Pokémon", Type.ELECTRIC, null, 1, 34, Abilities.STRONG_JAW, Abilities.NONE, Abilities.COMPETITIVE, 490, 69, 90, 60, 90, 60, 121, 45, 50, 172, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.ROLYCOLY, 8, false, false, false, "Coal Pokémon", Type.ROCK, null, 0.3, 12, Abilities.STEAM_ENGINE, Abilities.HEATPROOF, Abilities.FLASH_FIRE, 240, 30, 40, 50, 40, 50, 30, 255, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CARKOL, 8, false, false, false, "Coal Pokémon", Type.ROCK, Type.FIRE, 1.1, 78, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 410, 80, 60, 90, 60, 70, 50, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.COALOSSAL, 8, false, false, false, "Coal Pokémon", Type.ROCK, Type.FIRE, 2.8, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Normal", "", Type.ROCK, Type.FIRE, 2.8, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ROCK, Type.FIRE, 42, 999.9, Abilities.STEAM_ENGINE, Abilities.STEAM_ENGINE, Abilities.STEAM_ENGINE, 610, 140, 95, 130, 95, 110, 40, 45, 50, 255), - ), - new PokemonSpecies(Species.APPLIN, 8, false, false, false, "Apple Core Pokémon", Type.GRASS, Type.DRAGON, 0.2, 0.5, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.BULLETPROOF, 260, 40, 40, 80, 40, 40, 20, 255, 50, 52, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.FLAPPLE, 8, false, false, false, "Apple Wing Pokémon", Type.GRASS, Type.DRAGON, 0.3, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, - new PokemonForm("Normal", "", Type.GRASS, Type.DRAGON, 0.3, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 999.9, Abilities.HUSTLE, Abilities.HUSTLE, Abilities.HUSTLE, 585, 90, 130, 100, 85, 80, 100, 45, 50, 170), - ), - new PokemonSpecies(Species.APPLETUN, 8, false, false, false, "Apple Nectar Pokémon", Type.GRASS, Type.DRAGON, 0.4, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, - new PokemonForm("Normal", "", Type.GRASS, Type.DRAGON, 0.4, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 999.9, Abilities.THICK_FAT, Abilities.THICK_FAT, Abilities.THICK_FAT, 585, 130, 75, 115, 125, 115, 25, 45, 50, 170), - ), - new PokemonSpecies(Species.SILICOBRA, 8, false, false, false, "Sand Snake Pokémon", Type.GROUND, null, 2.2, 7.6, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 315, 52, 57, 75, 35, 50, 46, 255, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SANDACONDA, 8, false, false, false, "Sand Snake Pokémon", Type.GROUND, null, 3.8, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.GROUND, null, 3.8, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GROUND, null, 22, 999.9, Abilities.SAND_SPIT, Abilities.SAND_SPIT, Abilities.SAND_SPIT, 610, 117, 137, 140, 55, 80, 81, 120, 50, 179), - ), - new PokemonSpecies(Species.CRAMORANT, 8, false, false, false, "Gulp Pokémon", Type.FLYING, Type.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", Type.FLYING, Type.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, false, null, true), - new PokemonForm("Gulping Form", "gulping", Type.FLYING, Type.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), - new PokemonForm("Gorging Form", "gorging", Type.FLYING, Type.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), - ), - new PokemonSpecies(Species.ARROKUDA, 8, false, false, false, "Rush Pokémon", Type.WATER, null, 0.5, 1, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.PROPELLER_TAIL, 280, 41, 63, 40, 40, 30, 66, 255, 50, 56, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.BARRASKEWDA, 8, false, false, false, "Skewer Pokémon", Type.WATER, null, 1.3, 30, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.PROPELLER_TAIL, 490, 61, 123, 60, 60, 50, 136, 60, 50, 172, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TOXEL, 8, false, false, false, "Baby Pokémon", Type.ELECTRIC, Type.POISON, 0.4, 11, Abilities.RATTLED, Abilities.STATIC, Abilities.KLUTZ, 242, 40, 38, 35, 54, 35, 40, 75, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TOXTRICITY, 8, false, false, false, "Punk Pokémon", Type.ELECTRIC, Type.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.PLUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Amped Form", "amped", Type.ELECTRIC, Type.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.PLUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "", true), - new PokemonForm("Low-Key Form", "lowkey", Type.ELECTRIC, Type.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.MINUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "lowkey", true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, Type.POISON, 24, 999.9, Abilities.PUNK_ROCK, Abilities.PUNK_ROCK, Abilities.PUNK_ROCK, 602, 114, 98, 82, 144, 82, 82, 45, 50, 176), - ), - new PokemonSpecies(Species.SIZZLIPEDE, 8, false, false, false, "Radiator Pokémon", Type.FIRE, Type.BUG, 0.7, 1, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 305, 50, 65, 45, 50, 50, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CENTISKORCH, 8, false, false, false, "Radiator Pokémon", Type.FIRE, Type.BUG, 3, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.FIRE, Type.BUG, 3, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, Type.BUG, 75, 999.9, Abilities.FLASH_FIRE, Abilities.FLASH_FIRE, Abilities.FLASH_FIRE, 625, 140, 145, 75, 90, 100, 75, 75, 50, 184), - ), - new PokemonSpecies(Species.CLOBBOPUS, 8, false, false, false, "Tantrum Pokémon", Type.FIGHTING, null, 0.6, 4, Abilities.LIMBER, Abilities.NONE, Abilities.TECHNICIAN, 310, 50, 68, 60, 50, 50, 32, 180, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GRAPPLOCT, 8, false, false, false, "Jujitsu Pokémon", Type.FIGHTING, null, 1.6, 39, Abilities.LIMBER, Abilities.NONE, Abilities.TECHNICIAN, 480, 80, 118, 90, 70, 80, 42, 45, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SINISTEA, 8, false, false, false, "Black Tea Pokémon", Type.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("Phony Form", "phony", Type.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true), - new PokemonForm("Antique Form", "antique", Type.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true, true), - ), - new PokemonSpecies(Species.POLTEAGEIST, 8, false, false, false, "Black Tea Pokémon", Type.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, GrowthRate.MEDIUM_FAST, null, false, false, - new PokemonForm("Phony Form", "phony", Type.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true), - new PokemonForm("Antique Form", "antique", Type.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true, true), - ), - new PokemonSpecies(Species.HATENNA, 8, false, false, false, "Calm Pokémon", Type.PSYCHIC, null, 0.4, 3.4, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 265, 42, 30, 45, 56, 53, 39, 235, 50, 53, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.HATTREM, 8, false, false, false, "Serene Pokémon", Type.PSYCHIC, null, 0.6, 4.8, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 370, 57, 40, 65, 86, 73, 49, 120, 50, 130, GrowthRate.SLOW, 0, false), - new PokemonSpecies(Species.HATTERENE, 8, false, false, false, "Silent Pokémon", Type.PSYCHIC, Type.FAIRY, 2.1, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, GrowthRate.SLOW, 0, false, true, - new PokemonForm("Normal", "", Type.PSYCHIC, Type.FAIRY, 2.1, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.PSYCHIC, Type.FAIRY, 26, 999.9, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 610, 97, 90, 105, 146, 122, 50, 45, 50, 255), - ), - new PokemonSpecies(Species.IMPIDIMP, 8, false, false, false, "Wily Pokémon", Type.DARK, Type.FAIRY, 0.4, 5.5, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 265, 45, 45, 30, 55, 40, 50, 255, 50, 53, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.MORGREM, 8, false, false, false, "Devious Pokémon", Type.DARK, Type.FAIRY, 0.8, 12.5, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 370, 65, 60, 45, 75, 55, 70, 120, 50, 130, GrowthRate.MEDIUM_FAST, 100, false), - new PokemonSpecies(Species.GRIMMSNARL, 8, false, false, false, "Bulk Up Pokémon", Type.DARK, Type.FAIRY, 1.5, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, GrowthRate.MEDIUM_FAST, 100, false, true, - new PokemonForm("Normal", "", Type.DARK, Type.FAIRY, 1.5, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.DARK, Type.FAIRY, 32, 999.9, Abilities.PRANKSTER, Abilities.PRANKSTER, Abilities.PRANKSTER, 610, 135, 138, 77, 110, 85, 65, 45, 50, 255), - ), - new PokemonSpecies(Species.OBSTAGOON, 8, false, false, false, "Blocking Pokémon", Type.DARK, Type.NORMAL, 1.6, 46, Abilities.RECKLESS, Abilities.GUTS, Abilities.DEFIANT, 520, 93, 90, 101, 60, 81, 95, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PERRSERKER, 8, false, false, false, "Viking Pokémon", Type.STEEL, null, 0.8, 28, Abilities.BATTLE_ARMOR, Abilities.TOUGH_CLAWS, Abilities.STEELY_SPIRIT, 440, 70, 110, 100, 50, 60, 50, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CURSOLA, 8, false, false, false, "Coral Pokémon", Type.GHOST, null, 1, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.PERISH_BODY, 510, 60, 95, 50, 145, 130, 30, 30, 50, 179, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.SIRFETCHD, 8, false, false, false, "Wild Duck Pokémon", Type.FIGHTING, null, 0.8, 117, Abilities.STEADFAST, Abilities.NONE, Abilities.SCRAPPY, 507, 62, 135, 95, 68, 82, 65, 45, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MR_RIME, 8, false, false, false, "Comedian Pokémon", Type.ICE, Type.PSYCHIC, 1.5, 58.2, Abilities.TANGLED_FEET, Abilities.SCREEN_CLEANER, Abilities.ICE_BODY, 520, 80, 85, 75, 110, 100, 70, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RUNERIGUS, 8, false, false, false, "Grudge Pokémon", Type.GROUND, Type.GHOST, 1.6, 66.6, Abilities.WANDERING_SPIRIT, Abilities.NONE, Abilities.NONE, 483, 58, 95, 145, 50, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.MILCERY, 8, false, false, false, "Cream Pokémon", Type.FAIRY, null, 0.2, 0.3, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 270, 45, 40, 40, 50, 61, 34, 200, 50, 54, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.ALCREMIE, 8, false, false, false, "Cream Pokémon", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, GrowthRate.MEDIUM_FAST, 0, false, true, - new PokemonForm("Vanilla Cream", "vanilla-cream", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, "", true), - new PokemonForm("Ruby Cream", "ruby-cream", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Matcha Cream", "matcha-cream", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Mint Cream", "mint-cream", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Lemon Cream", "lemon-cream", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Salted Cream", "salted-cream", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Ruby Swirl", "ruby-swirl", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Caramel Swirl", "caramel-swirl", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("Rainbow Swirl", "rainbow-swirl", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FAIRY, null, 30, 999.9, Abilities.MISTY_SURGE, Abilities.NONE, Abilities.MISTY_SURGE, 595, 135, 60, 75, 130, 131, 64, 100, 50, 173), - ), - new PokemonSpecies(Species.FALINKS, 8, false, false, false, "Formation Pokémon", Type.FIGHTING, null, 3, 62, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.DEFIANT, 470, 65, 100, 100, 70, 60, 75, 45, 50, 165, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.PINCURCHIN, 8, false, false, false, "Sea Urchin Pokémon", Type.ELECTRIC, null, 0.3, 1, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.ELECTRIC_SURGE, 435, 48, 101, 95, 91, 85, 15, 75, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SNOM, 8, false, false, false, "Worm Pokémon", Type.ICE, Type.BUG, 0.3, 3.8, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.ICE_SCALES, 185, 30, 25, 35, 45, 30, 20, 190, 50, 37, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FROSMOTH, 8, false, false, false, "Frost Moth Pokémon", Type.ICE, Type.BUG, 1.3, 42, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.ICE_SCALES, 475, 70, 65, 60, 125, 90, 65, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.STONJOURNER, 8, false, false, false, "Big Rock Pokémon", Type.ROCK, null, 2.5, 520, Abilities.POWER_SPOT, Abilities.NONE, Abilities.NONE, 470, 100, 125, 135, 20, 20, 70, 60, 50, 165, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.EISCUE, 8, false, false, false, "Penguin Pokémon", Type.ICE, null, 1.4, 89, Abilities.ICE_FACE, Abilities.NONE, Abilities.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, GrowthRate.SLOW, 50, false, false, - new PokemonForm("Ice Face", "", Type.ICE, null, 1.4, 89, Abilities.ICE_FACE, Abilities.NONE, Abilities.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, false, null, true), - new PokemonForm("No Ice", "no-ice", Type.ICE, null, 1.4, 89, Abilities.ICE_FACE, Abilities.NONE, Abilities.NONE, 470, 75, 80, 70, 65, 50, 130, 60, 50, 165), - ), - new PokemonSpecies(Species.INDEEDEE, 8, false, false, false, "Emotion Pokémon", Type.PSYCHIC, Type.NORMAL, 0.9, 28, Abilities.INNER_FOCUS, Abilities.SYNCHRONIZE, Abilities.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, GrowthRate.FAST, 50, false, false, - new PokemonForm("Male", "male", Type.PSYCHIC, Type.NORMAL, 0.9, 28, Abilities.INNER_FOCUS, Abilities.SYNCHRONIZE, Abilities.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, false, "", true), - new PokemonForm("Female", "female", Type.PSYCHIC, Type.NORMAL, 0.9, 28, Abilities.OWN_TEMPO, Abilities.SYNCHRONIZE, Abilities.PSYCHIC_SURGE, 475, 70, 55, 65, 95, 105, 85, 30, 140, 166, false, null, true), - ), - new PokemonSpecies(Species.MORPEKO, 8, false, false, false, "Two-Sided Pokémon", Type.ELECTRIC, Type.DARK, 0.3, 3, Abilities.HUNGER_SWITCH, Abilities.NONE, Abilities.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Full Belly Mode", "full-belly", Type.ELECTRIC, Type.DARK, 0.3, 3, Abilities.HUNGER_SWITCH, Abilities.NONE, Abilities.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, false, "", true), - new PokemonForm("Hangry Mode", "hangry", Type.ELECTRIC, Type.DARK, 0.3, 3, Abilities.HUNGER_SWITCH, Abilities.NONE, Abilities.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153), - ), - new PokemonSpecies(Species.CUFANT, 8, false, false, false, "Copperderm Pokémon", Type.STEEL, null, 1.2, 100, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 330, 72, 80, 49, 40, 49, 40, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.COPPERAJAH, 8, false, false, false, "Copperderm Pokémon", Type.STEEL, null, 3, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.STEEL, null, 3, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, Type.GROUND, 23, 999.9, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.MOLD_BREAKER, 600, 167, 155, 89, 80, 89, 20, 90, 50, 175), - ), - new PokemonSpecies(Species.DRACOZOLT, 8, false, false, false, "Fossil Pokémon", Type.ELECTRIC, Type.DRAGON, 1.8, 190, Abilities.VOLT_ABSORB, Abilities.HUSTLE, Abilities.SAND_RUSH, 505, 90, 100, 90, 80, 70, 75, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ARCTOZOLT, 8, false, false, false, "Fossil Pokémon", Type.ELECTRIC, Type.ICE, 2.3, 150, Abilities.VOLT_ABSORB, Abilities.STATIC, Abilities.SLUSH_RUSH, 505, 90, 100, 90, 90, 80, 55, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DRACOVISH, 8, false, false, false, "Fossil Pokémon", Type.WATER, Type.DRAGON, 2.3, 215, Abilities.WATER_ABSORB, Abilities.STRONG_JAW, Abilities.SAND_RUSH, 505, 90, 90, 100, 70, 80, 75, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ARCTOVISH, 8, false, false, false, "Fossil Pokémon", Type.WATER, Type.ICE, 2, 175, Abilities.WATER_ABSORB, Abilities.ICE_BODY, Abilities.SLUSH_RUSH, 505, 90, 90, 100, 80, 90, 55, 45, 50, 177, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.DURALUDON, 8, false, false, false, "Alloy Pokémon", Type.STEEL, Type.DRAGON, 1.8, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false, true, - new PokemonForm("Normal", "", Type.STEEL, Type.DRAGON, 1.8, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, false, null, true), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, Type.DRAGON, 43, 999.9, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, 635, 100, 110, 120, 175, 60, 70, 45, 50, 187), - ), - new PokemonSpecies(Species.DREEPY, 8, false, false, false, "Lingering Pokémon", Type.DRAGON, Type.GHOST, 0.5, 2, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 270, 28, 60, 30, 40, 30, 82, 45, 50, 54, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAKLOAK, 8, false, false, false, "Caretaker Pokémon", Type.DRAGON, Type.GHOST, 1.4, 11, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 410, 68, 80, 50, 60, 50, 102, 45, 50, 144, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.DRAGAPULT, 8, false, false, false, "Stealth Pokémon", Type.DRAGON, Type.GHOST, 3, 50, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 600, 88, 120, 75, 100, 75, 142, 45, 50, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ZACIAN, 8, false, true, false, "Warrior Pokémon", Type.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Hero of Many Battles", "hero-of-many-battles", Type.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), - new PokemonForm("Crowned", "crowned", Type.FAIRY, Type.STEEL, 2.8, 355, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 700, 92, 150, 115, 80, 115, 148, 10, 0, 360), - ), - new PokemonSpecies(Species.ZAMAZENTA, 8, false, true, false, "Warrior Pokémon", Type.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Hero of Many Battles", "hero-of-many-battles", Type.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), - new PokemonForm("Crowned", "crowned", Type.FIGHTING, Type.STEEL, 2.9, 785, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 700, 92, 120, 140, 80, 140, 128, 10, 0, 360), - ), - new PokemonSpecies(Species.ETERNATUS, 8, false, true, false, "Gigantic Pokémon", Type.POISON, Type.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.POISON, Type.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, false, null, true), - new PokemonForm("E-Max", "eternamax", Type.POISON, Type.DRAGON, 100, 999.9, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 1125, 255, 115, 250, 125, 250, 130, 255, 0, 345), - ), - new PokemonSpecies(Species.KUBFU, 8, true, false, false, "Wushu Pokémon", Type.FIGHTING, null, 0.6, 12, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.NONE, 385, 60, 90, 60, 53, 50, 72, 3, 50, 77, GrowthRate.SLOW, 87.5, false), - new PokemonSpecies(Species.URSHIFU, 8, true, false, false, "Wushu Pokémon", Type.FIGHTING, Type.DARK, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, GrowthRate.SLOW, 87.5, false, true, - new PokemonForm("Single Strike Style", "single-strike", Type.FIGHTING, Type.DARK, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, "", true), - new PokemonForm("Rapid Strike Style", "rapid-strike", Type.FIGHTING, Type.WATER, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, null, true), - new PokemonForm("G-Max Single Strike Style", SpeciesFormKey.GIGANTAMAX_SINGLE, Type.FIGHTING, Type.DARK, 29, 999.9, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 150, 115, 73, 70, 117, 3, 50, 275), - new PokemonForm("G-Max Rapid Strike Style", SpeciesFormKey.GIGANTAMAX_RAPID, Type.FIGHTING, Type.WATER, 26, 999.9, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 150, 115, 73, 70, 117, 3, 50, 275), - ), - new PokemonSpecies(Species.ZARUDE, 8, false, false, true, "Rogue Monkey Pokémon", Type.DARK, Type.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, GrowthRate.SLOW, null, false, false, - new PokemonForm("Normal", "", Type.DARK, Type.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), - new PokemonForm("Dada", "dada", Type.DARK, Type.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), - ), - new PokemonSpecies(Species.REGIELEKI, 8, true, false, false, "Electron Pokémon", Type.ELECTRIC, null, 1.2, 145, Abilities.TRANSISTOR, Abilities.NONE, Abilities.NONE, 580, 80, 100, 50, 100, 50, 200, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.REGIDRAGO, 8, true, false, false, "Dragon Orb Pokémon", Type.DRAGON, null, 2.1, 200, Abilities.DRAGONS_MAW, Abilities.NONE, Abilities.NONE, 580, 200, 100, 50, 100, 50, 80, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GLASTRIER, 8, true, false, false, "Wild Horse Pokémon", Type.ICE, null, 2.2, 800, Abilities.CHILLING_NEIGH, Abilities.NONE, Abilities.NONE, 580, 100, 145, 130, 65, 110, 30, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SPECTRIER, 8, true, false, false, "Swift Horse Pokémon", Type.GHOST, null, 2, 44.5, Abilities.GRIM_NEIGH, Abilities.NONE, Abilities.NONE, 580, 100, 65, 60, 145, 80, 130, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CALYREX, 8, false, true, false, "King Pokémon", Type.PSYCHIC, Type.GRASS, 1.1, 7.7, Abilities.UNNERVE, Abilities.NONE, Abilities.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, GrowthRate.SLOW, null, false, true, - new PokemonForm("Normal", "", Type.PSYCHIC, Type.GRASS, 1.1, 7.7, Abilities.UNNERVE, Abilities.NONE, Abilities.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, false, null, true), - new PokemonForm("Ice", "ice", Type.PSYCHIC, Type.ICE, 2.4, 809.1, Abilities.AS_ONE_GLASTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 165, 150, 85, 130, 50, 3, 100, 340), - new PokemonForm("Shadow", "shadow", Type.PSYCHIC, Type.GHOST, 2.4, 53.6, Abilities.AS_ONE_SPECTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 85, 80, 165, 100, 150, 3, 100, 340), - ), - new PokemonSpecies(Species.WYRDEER, 8, false, false, false, "Big Horn Pokémon", Type.NORMAL, Type.PSYCHIC, 1.8, 95.1, Abilities.INTIMIDATE, Abilities.FRISK, Abilities.SAP_SIPPER, 525, 103, 105, 72, 105, 75, 65, 135, 50, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.KLEAVOR, 8, false, false, false, "Axe Pokémon", Type.BUG, Type.ROCK, 1.8, 89, Abilities.SWARM, Abilities.SHEER_FORCE, Abilities.SHARPNESS, 500, 70, 135, 95, 45, 70, 85, 115, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.URSALUNA, 8, false, false, false, "Peat Pokémon", Type.GROUND, Type.NORMAL, 2.4, 290, Abilities.GUTS, Abilities.BULLETPROOF, Abilities.UNNERVE, 550, 130, 140, 105, 45, 80, 50, 75, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BASCULEGION, 8, false, false, false, "Big Fish Pokémon", Type.WATER, Type.GHOST, 3, 110, Abilities.SWIFT_SWIM, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", Type.WATER, Type.GHOST, 3, 110, Abilities.SWIFT_SWIM, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, false, "", true), - new PokemonForm("Female", "female", Type.WATER, Type.GHOST, 3, 110, Abilities.SWIFT_SWIM, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 530, 120, 92, 65, 100, 75, 78, 135, 50, 265, false, null, true), - ), - new PokemonSpecies(Species.SNEASLER, 8, false, false, false, "Free Climb Pokémon", Type.FIGHTING, Type.POISON, 1.3, 43, Abilities.PRESSURE, Abilities.UNBURDEN, Abilities.POISON_TOUCH, 510, 80, 130, 60, 40, 80, 120, 135, 50, 102, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.OVERQWIL, 8, false, false, false, "Pin Cluster Pokémon", Type.DARK, Type.POISON, 2.5, 60.5, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 510, 85, 115, 95, 65, 65, 85, 135, 50, 179, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ENAMORUS, 8, true, false, false, "Love-Hate Pokémon", Type.FAIRY, Type.FLYING, 1.6, 48, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, GrowthRate.SLOW, 0, false, true, - new PokemonForm("Incarnate Forme", "incarnate", Type.FAIRY, Type.FLYING, 1.6, 48, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, false, null, true), - new PokemonForm("Therian Forme", "therian", Type.FAIRY, Type.FLYING, 1.6, 48, Abilities.OVERCOAT, Abilities.NONE, Abilities.OVERCOAT, 580, 74, 115, 110, 135, 100, 46, 3, 50, 116), - ), - new PokemonSpecies(Species.SPRIGATITO, 9, false, false, false, "Grass Cat Pokémon", Type.GRASS, null, 0.4, 4.1, Abilities.OVERGROW, Abilities.NONE, Abilities.PROTEAN, 310, 40, 61, 54, 45, 45, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FLORAGATO, 9, false, false, false, "Grass Cat Pokémon", Type.GRASS, null, 0.9, 12.2, Abilities.OVERGROW, Abilities.NONE, Abilities.PROTEAN, 410, 61, 80, 63, 60, 63, 83, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.MEOWSCARADA, 9, false, false, false, "Magician Pokémon", Type.GRASS, Type.DARK, 1.5, 31.2, Abilities.OVERGROW, Abilities.NONE, Abilities.PROTEAN, 530, 76, 110, 70, 81, 70, 123, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FUECOCO, 9, false, false, false, "Fire Croc Pokémon", Type.FIRE, null, 0.4, 9.8, Abilities.BLAZE, Abilities.NONE, Abilities.UNAWARE, 310, 67, 45, 59, 63, 40, 36, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.CROCALOR, 9, false, false, false, "Fire Croc Pokémon", Type.FIRE, null, 1, 30.7, Abilities.BLAZE, Abilities.NONE, Abilities.UNAWARE, 411, 81, 55, 78, 90, 58, 49, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.SKELEDIRGE, 9, false, false, false, "Singer Pokémon", Type.FIRE, Type.GHOST, 1.6, 326.5, Abilities.BLAZE, Abilities.NONE, Abilities.UNAWARE, 530, 104, 75, 100, 110, 75, 66, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUAXLY, 9, false, false, false, "Duckling Pokémon", Type.WATER, null, 0.5, 6.1, Abilities.TORRENT, Abilities.NONE, Abilities.MOXIE, 310, 55, 65, 45, 50, 45, 50, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUAXWELL, 9, false, false, false, "Practicing Pokémon", Type.WATER, null, 1.2, 21.5, Abilities.TORRENT, Abilities.NONE, Abilities.MOXIE, 410, 70, 85, 65, 65, 60, 65, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.QUAQUAVAL, 9, false, false, false, "Dancer Pokémon", Type.WATER, Type.FIGHTING, 1.8, 61.9, Abilities.TORRENT, Abilities.NONE, Abilities.MOXIE, 530, 85, 120, 80, 85, 75, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.LECHONK, 9, false, false, false, "Hog Pokémon", Type.NORMAL, null, 0.5, 10.2, Abilities.AROMA_VEIL, Abilities.GLUTTONY, Abilities.THICK_FAT, 254, 54, 45, 40, 35, 45, 35, 255, 50, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.OINKOLOGNE, 9, false, false, false, "Hog Pokémon", Type.NORMAL, null, 1, 120, Abilities.LINGERING_AROMA, Abilities.GLUTTONY, Abilities.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Male", "male", Type.NORMAL, null, 1, 120, Abilities.LINGERING_AROMA, Abilities.GLUTTONY, Abilities.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, false, "", true), - new PokemonForm("Female", "female", Type.NORMAL, null, 1, 120, Abilities.AROMA_VEIL, Abilities.GLUTTONY, Abilities.THICK_FAT, 489, 115, 90, 70, 59, 90, 65, 100, 50, 171, false, null, true), - ), - new PokemonSpecies(Species.TAROUNTULA, 9, false, false, false, "String Ball Pokémon", Type.BUG, null, 0.3, 4, Abilities.INSOMNIA, Abilities.NONE, Abilities.STAKEOUT, 210, 35, 41, 45, 29, 40, 20, 255, 50, 42, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.SPIDOPS, 9, false, false, false, "Trap Pokémon", Type.BUG, null, 1, 16.5, Abilities.INSOMNIA, Abilities.NONE, Abilities.STAKEOUT, 404, 60, 79, 92, 52, 86, 35, 120, 50, 141, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.NYMBLE, 9, false, false, false, "Grasshopper Pokémon", Type.BUG, null, 0.2, 1, Abilities.SWARM, Abilities.NONE, Abilities.TINTED_LENS, 210, 33, 46, 40, 21, 25, 45, 190, 20, 42, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.LOKIX, 9, false, false, false, "Grasshopper Pokémon", Type.BUG, Type.DARK, 1, 17.5, Abilities.SWARM, Abilities.NONE, Abilities.TINTED_LENS, 450, 71, 102, 78, 52, 55, 92, 30, 0, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PAWMI, 9, false, false, false, "Mouse Pokémon", Type.ELECTRIC, null, 0.3, 2.5, Abilities.STATIC, Abilities.NATURAL_CURE, Abilities.IRON_FIST, 240, 45, 50, 20, 40, 25, 60, 190, 50, 48, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PAWMO, 9, false, false, false, "Mouse Pokémon", Type.ELECTRIC, Type.FIGHTING, 0.4, 6.5, Abilities.VOLT_ABSORB, Abilities.NATURAL_CURE, Abilities.IRON_FIST, 350, 60, 75, 40, 50, 40, 85, 80, 50, 123, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.PAWMOT, 9, false, false, false, "Hands-On Pokémon", Type.ELECTRIC, Type.FIGHTING, 0.9, 41, Abilities.VOLT_ABSORB, Abilities.NATURAL_CURE, Abilities.IRON_FIST, 490, 70, 115, 70, 70, 60, 105, 45, 50, 245, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TANDEMAUS, 9, false, false, false, "Couple Pokémon", Type.NORMAL, null, 0.3, 1.8, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.OWN_TEMPO, 305, 50, 50, 45, 40, 45, 75, 150, 50, 61, GrowthRate.FAST, null, false), - new PokemonSpecies(Species.MAUSHOLD, 9, false, false, false, "Family Pokémon", Type.NORMAL, null, 0.3, 2.3, Abilities.FRIEND_GUARD, Abilities.CHEEK_POUCH, Abilities.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165, GrowthRate.FAST, null, false, false, - new PokemonForm("Family of Four", "four", Type.NORMAL, null, 0.3, 2.8, Abilities.FRIEND_GUARD, Abilities.CHEEK_POUCH, Abilities.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), - new PokemonForm("Family of Three", "three", Type.NORMAL, null, 0.3, 2.3, Abilities.FRIEND_GUARD, Abilities.CHEEK_POUCH, Abilities.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), - ), - new PokemonSpecies(Species.FIDOUGH, 9, false, false, false, "Puppy Pokémon", Type.FAIRY, null, 0.3, 10.9, Abilities.OWN_TEMPO, Abilities.NONE, Abilities.KLUTZ, 312, 37, 55, 70, 30, 55, 65, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DACHSBUN, 9, false, false, false, "Dog Pokémon", Type.FAIRY, null, 0.5, 14.9, Abilities.WELL_BAKED_BODY, Abilities.NONE, Abilities.AROMA_VEIL, 477, 57, 80, 115, 50, 80, 95, 90, 50, 167, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SMOLIV, 9, false, false, false, "Olive Pokémon", Type.GRASS, Type.NORMAL, 0.3, 6.5, Abilities.EARLY_BIRD, Abilities.NONE, Abilities.HARVEST, 260, 41, 35, 45, 58, 51, 30, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.DOLLIV, 9, false, false, false, "Olive Pokémon", Type.GRASS, Type.NORMAL, 0.6, 11.9, Abilities.EARLY_BIRD, Abilities.NONE, Abilities.HARVEST, 354, 52, 53, 60, 78, 78, 33, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ARBOLIVA, 9, false, false, false, "Olive Pokémon", Type.GRASS, Type.NORMAL, 1.4, 48.2, Abilities.SEED_SOWER, Abilities.NONE, Abilities.HARVEST, 510, 78, 69, 90, 125, 109, 39, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SQUAWKABILLY, 9, false, false, false, "Parrot Pokémon", Type.NORMAL, Type.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, GrowthRate.ERRATIC, 50, false, false, - new PokemonForm("Green Plumage", "green-plumage", Type.NORMAL, Type.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - new PokemonForm("Blue Plumage", "blue-plumage", Type.NORMAL, Type.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - new PokemonForm("Yellow Plumage", "yellow-plumage", Type.NORMAL, Type.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - new PokemonForm("White Plumage", "white-plumage", Type.NORMAL, Type.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), - ), - new PokemonSpecies(Species.NACLI, 9, false, false, false, "Rock Salt Pokémon", Type.ROCK, null, 0.4, 16, Abilities.PURIFYING_SALT, Abilities.STURDY, Abilities.CLEAR_BODY, 280, 55, 55, 75, 35, 35, 25, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.NACLSTACK, 9, false, false, false, "Rock Salt Pokémon", Type.ROCK, null, 0.6, 105, Abilities.PURIFYING_SALT, Abilities.STURDY, Abilities.CLEAR_BODY, 355, 60, 60, 100, 35, 65, 35, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GARGANACL, 9, false, false, false, "Rock Salt Pokémon", Type.ROCK, null, 2.3, 240, Abilities.PURIFYING_SALT, Abilities.STURDY, Abilities.CLEAR_BODY, 500, 100, 100, 130, 45, 90, 35, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CHARCADET, 9, false, false, false, "Fire Child Pokémon", Type.FIRE, null, 0.6, 10.5, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.FLAME_BODY, 255, 40, 50, 40, 50, 40, 35, 90, 50, 51, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ARMAROUGE, 9, false, false, false, "Fire Warrior Pokémon", Type.FIRE, Type.PSYCHIC, 1.5, 85, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.WEAK_ARMOR, 525, 85, 60, 100, 125, 80, 75, 25, 20, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.CERULEDGE, 9, false, false, false, "Fire Blades Pokémon", Type.FIRE, Type.GHOST, 1.6, 62, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.WEAK_ARMOR, 525, 75, 125, 80, 60, 100, 85, 25, 20, 263, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TADBULB, 9, false, false, false, "EleTadpole Pokémon", Type.ELECTRIC, null, 0.3, 0.4, Abilities.OWN_TEMPO, Abilities.STATIC, Abilities.DAMP, 272, 61, 31, 41, 59, 35, 45, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BELLIBOLT, 9, false, false, false, "EleFrog Pokémon", Type.ELECTRIC, null, 1.2, 113, Abilities.ELECTROMORPHOSIS, Abilities.STATIC, Abilities.DAMP, 495, 109, 64, 91, 103, 83, 45, 50, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WATTREL, 9, false, false, false, "Storm Petrel Pokémon", Type.ELECTRIC, Type.FLYING, 0.4, 3.6, Abilities.WIND_POWER, Abilities.VOLT_ABSORB, Abilities.COMPETITIVE, 280, 40, 40, 35, 55, 40, 70, 180, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.KILOWATTREL, 9, false, false, false, "Frigatebird Pokémon", Type.ELECTRIC, Type.FLYING, 1.4, 38.6, Abilities.WIND_POWER, Abilities.VOLT_ABSORB, Abilities.COMPETITIVE, 490, 70, 70, 60, 105, 60, 125, 90, 50, 172, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MASCHIFF, 9, false, false, false, "Rascal Pokémon", Type.DARK, null, 0.5, 16, Abilities.INTIMIDATE, Abilities.RUN_AWAY, Abilities.STAKEOUT, 340, 60, 78, 60, 40, 51, 51, 150, 50, 68, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.MABOSSTIFF, 9, false, false, false, "Boss Pokémon", Type.DARK, null, 1.1, 61, Abilities.INTIMIDATE, Abilities.GUARD_DOG, Abilities.STAKEOUT, 505, 80, 120, 90, 60, 70, 85, 75, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.SHROODLE, 9, false, false, false, "Toxic Mouse Pokémon", Type.POISON, Type.NORMAL, 0.2, 0.7, Abilities.UNBURDEN, Abilities.PICKPOCKET, Abilities.PRANKSTER, 290, 40, 65, 35, 40, 35, 75, 190, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GRAFAIAI, 9, false, false, false, "Toxic Monkey Pokémon", Type.POISON, Type.NORMAL, 0.7, 27.2, Abilities.UNBURDEN, Abilities.POISON_TOUCH, Abilities.PRANKSTER, 485, 63, 95, 65, 80, 72, 110, 90, 50, 170, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.BRAMBLIN, 9, false, false, false, "Tumbleweed Pokémon", Type.GRASS, Type.GHOST, 0.6, 0.6, Abilities.WIND_RIDER, Abilities.NONE, Abilities.INFILTRATOR, 275, 40, 65, 30, 45, 35, 60, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BRAMBLEGHAST, 9, false, false, false, "Tumbleweed Pokémon", Type.GRASS, Type.GHOST, 1.2, 6, Abilities.WIND_RIDER, Abilities.NONE, Abilities.INFILTRATOR, 480, 55, 115, 70, 80, 70, 90, 45, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.TOEDSCOOL, 9, false, false, false, "Woodear Pokémon", Type.GROUND, Type.GRASS, 0.9, 33, Abilities.MYCELIUM_MIGHT, Abilities.NONE, Abilities.NONE, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TOEDSCRUEL, 9, false, false, false, "Woodear Pokémon", Type.GROUND, Type.GRASS, 1.9, 58, Abilities.MYCELIUM_MIGHT, Abilities.NONE, Abilities.NONE, 515, 80, 70, 65, 80, 120, 100, 90, 50, 180, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.KLAWF, 9, false, false, false, "Ambush Pokémon", Type.ROCK, null, 1.3, 79, Abilities.ANGER_SHELL, Abilities.SHELL_ARMOR, Abilities.REGENERATOR, 450, 70, 100, 115, 35, 55, 75, 120, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CAPSAKID, 9, false, false, false, "Spicy Pepper Pokémon", Type.GRASS, null, 0.3, 3, Abilities.CHLOROPHYLL, Abilities.INSOMNIA, Abilities.KLUTZ, 304, 50, 62, 40, 62, 40, 50, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.SCOVILLAIN, 9, false, false, false, "Spicy Pepper Pokémon", Type.GRASS, Type.FIRE, 0.9, 15, Abilities.CHLOROPHYLL, Abilities.INSOMNIA, Abilities.MOODY, 486, 65, 108, 65, 108, 65, 75, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.RELLOR, 9, false, false, false, "Rolling Pokémon", Type.BUG, null, 0.2, 1, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.SHED_SKIN, 270, 41, 50, 60, 31, 58, 30, 190, 50, 54, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.RABSCA, 9, false, false, false, "Rolling Pokémon", Type.BUG, Type.PSYCHIC, 0.3, 3.5, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.TELEPATHY, 470, 75, 50, 85, 115, 100, 45, 45, 50, 165, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.FLITTLE, 9, false, false, false, "Frill Pokémon", Type.PSYCHIC, null, 0.2, 1.5, Abilities.ANTICIPATION, Abilities.FRISK, Abilities.SPEED_BOOST, 255, 30, 35, 30, 55, 30, 75, 120, 50, 51, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ESPATHRA, 9, false, false, false, "Ostrich Pokémon", Type.PSYCHIC, null, 1.9, 90, Abilities.OPPORTUNIST, Abilities.FRISK, Abilities.SPEED_BOOST, 481, 95, 60, 60, 101, 60, 105, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.TINKATINK, 9, false, false, false, "Metalsmith Pokémon", Type.FAIRY, Type.STEEL, 0.4, 8.9, Abilities.MOLD_BREAKER, Abilities.OWN_TEMPO, Abilities.PICKPOCKET, 297, 50, 45, 45, 35, 64, 58, 190, 50, 59, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.TINKATUFF, 9, false, false, false, "Hammer Pokémon", Type.FAIRY, Type.STEEL, 0.7, 59.1, Abilities.MOLD_BREAKER, Abilities.OWN_TEMPO, Abilities.PICKPOCKET, 380, 65, 55, 55, 45, 82, 78, 90, 50, 133, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.TINKATON, 9, false, false, false, "Hammer Pokémon", Type.FAIRY, Type.STEEL, 0.7, 112.8, Abilities.MOLD_BREAKER, Abilities.OWN_TEMPO, Abilities.PICKPOCKET, 506, 85, 75, 77, 70, 105, 94, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), - new PokemonSpecies(Species.WIGLETT, 9, false, false, false, "Garden Eel Pokémon", Type.WATER, null, 1.2, 1.8, Abilities.GOOEY, Abilities.RATTLED, Abilities.SAND_VEIL, 245, 10, 55, 25, 35, 25, 95, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.WUGTRIO, 9, false, false, false, "Garden Eel Pokémon", Type.WATER, null, 1.2, 5.4, Abilities.GOOEY, Abilities.RATTLED, Abilities.SAND_VEIL, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BOMBIRDIER, 9, false, false, false, "Item Drop Pokémon", Type.FLYING, Type.DARK, 1.5, 42.9, Abilities.BIG_PECKS, Abilities.KEEN_EYE, Abilities.ROCKY_PAYLOAD, 485, 70, 103, 85, 60, 85, 82, 25, 50, 243, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.FINIZEN, 9, false, false, false, "Dolphin Pokémon", Type.WATER, null, 1.3, 60.2, Abilities.WATER_VEIL, Abilities.NONE, Abilities.NONE, 315, 70, 45, 40, 45, 40, 75, 200, 50, 63, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PALAFIN, 9, false, false, false, "Dolphin Pokémon", Type.WATER, null, 1.3, 60.2, Abilities.ZERO_TO_HERO, Abilities.NONE, Abilities.NONE, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, GrowthRate.SLOW, 50, false, true, - new PokemonForm("Zero Form", "zero", Type.WATER, null, 1.3, 60.2, Abilities.ZERO_TO_HERO, Abilities.NONE, Abilities.ZERO_TO_HERO, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, false, null, true), - new PokemonForm("Hero Form", "hero", Type.WATER, null, 1.8, 97.4, Abilities.ZERO_TO_HERO, Abilities.NONE, Abilities.ZERO_TO_HERO, 650, 100, 160, 97, 106, 87, 100, 45, 50, 160), - ), - new PokemonSpecies(Species.VAROOM, 9, false, false, false, "Single-Cyl Pokémon", Type.STEEL, Type.POISON, 1, 35, Abilities.OVERCOAT, Abilities.NONE, Abilities.SLOW_START, 300, 45, 70, 63, 30, 45, 47, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.REVAVROOM, 9, false, false, false, "Multi-Cyl Pokémon", Type.STEEL, Type.POISON, 1.8, 120, Abilities.OVERCOAT, Abilities.NONE, Abilities.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Normal", "", Type.STEEL, Type.POISON, 1.8, 120, Abilities.OVERCOAT, Abilities.NONE, Abilities.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, false, null, true), - new PokemonForm("Segin Starmobile", "segin-starmobile", Type.STEEL, Type.DARK, 1.8, 240, Abilities.INTIMIDATE, Abilities.NONE, Abilities.INTIMIDATE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), - new PokemonForm("Schedar Starmobile", "schedar-starmobile", Type.STEEL, Type.FIRE, 1.8, 240, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.SPEED_BOOST, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), - new PokemonForm("Navi Starmobile", "navi-starmobile", Type.STEEL, Type.POISON, 1.8, 240, Abilities.TOXIC_DEBRIS, Abilities.NONE, Abilities.TOXIC_DEBRIS, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), - new PokemonForm("Ruchbah Starmobile", "ruchbah-starmobile", Type.STEEL, Type.FAIRY, 1.8, 240, Abilities.MISTY_SURGE, Abilities.NONE, Abilities.MISTY_SURGE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), - new PokemonForm("Caph Starmobile", "caph-starmobile", Type.STEEL, Type.FIGHTING, 1.8, 240, Abilities.STAMINA, Abilities.NONE, Abilities.STAMINA, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), - ), - new PokemonSpecies(Species.CYCLIZAR, 9, false, false, false, "Mount Pokémon", Type.DRAGON, Type.NORMAL, 1.6, 63, Abilities.SHED_SKIN, Abilities.NONE, Abilities.REGENERATOR, 501, 70, 95, 65, 85, 65, 121, 190, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ORTHWORM, 9, false, false, false, "Earthworm Pokémon", Type.STEEL, null, 2.5, 310, Abilities.EARTH_EATER, Abilities.NONE, Abilities.SAND_VEIL, 480, 70, 85, 145, 60, 55, 65, 25, 50, 240, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GLIMMET, 9, false, false, false, "Ore Pokémon", Type.ROCK, Type.POISON, 0.7, 8, Abilities.TOXIC_DEBRIS, Abilities.NONE, Abilities.CORROSION, 350, 48, 35, 42, 105, 60, 60, 70, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GLIMMORA, 9, false, false, false, "Ore Pokémon", Type.ROCK, Type.POISON, 1.5, 45, Abilities.TOXIC_DEBRIS, Abilities.NONE, Abilities.CORROSION, 525, 83, 55, 90, 130, 81, 86, 25, 50, 184, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GREAVARD, 9, false, false, false, "Ghost Dog Pokémon", Type.GHOST, null, 0.6, 35, Abilities.PICKUP, Abilities.NONE, Abilities.FLUFFY, 290, 50, 61, 60, 30, 55, 34, 120, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.HOUNDSTONE, 9, false, false, false, "Ghost Dog Pokémon", Type.GHOST, null, 2, 15, Abilities.SAND_RUSH, Abilities.NONE, Abilities.FLUFFY, 488, 72, 101, 100, 50, 97, 68, 60, 50, 171, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.FLAMIGO, 9, false, false, false, "Synchronize Pokémon", Type.FLYING, Type.FIGHTING, 1.6, 37, Abilities.SCRAPPY, Abilities.TANGLED_FEET, Abilities.COSTAR, 500, 82, 115, 74, 75, 64, 90, 100, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CETODDLE, 9, false, false, false, "Terra Whale Pokémon", Type.ICE, null, 1.2, 45, Abilities.THICK_FAT, Abilities.SNOW_CLOAK, Abilities.SHEER_FORCE, 334, 108, 68, 45, 30, 40, 43, 150, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.CETITAN, 9, false, false, false, "Terra Whale Pokémon", Type.ICE, null, 4.5, 700, Abilities.THICK_FAT, Abilities.SLUSH_RUSH, Abilities.SHEER_FORCE, 521, 170, 113, 65, 45, 55, 73, 50, 50, 182, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.VELUZA, 9, false, false, false, "Jettison Pokémon", Type.WATER, Type.PSYCHIC, 2.5, 90, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.SHARPNESS, 478, 90, 102, 73, 78, 65, 70, 100, 50, 167, GrowthRate.FAST, 50, false), - new PokemonSpecies(Species.DONDOZO, 9, false, false, false, "Big Catfish Pokémon", Type.WATER, null, 12, 220, Abilities.UNAWARE, Abilities.OBLIVIOUS, Abilities.WATER_VEIL, 530, 150, 100, 115, 65, 65, 35, 25, 50, 265, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.TATSUGIRI, 9, false, false, false, "Mimicry Pokémon", Type.DRAGON, Type.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, GrowthRate.MEDIUM_SLOW, 50, false, false, - new PokemonForm("Curly Form", "curly", Type.DRAGON, Type.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), - new PokemonForm("Droopy Form", "droopy", Type.DRAGON, Type.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), - new PokemonForm("Stretchy Form", "stretchy", Type.DRAGON, Type.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), - ), - new PokemonSpecies(Species.ANNIHILAPE, 9, false, false, false, "Rage Monkey Pokémon", Type.FIGHTING, Type.GHOST, 1.2, 56, Abilities.VITAL_SPIRIT, Abilities.INNER_FOCUS, Abilities.DEFIANT, 535, 110, 115, 80, 50, 90, 90, 45, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.CLODSIRE, 9, false, false, false, "Spiny Fish Pokémon", Type.POISON, Type.GROUND, 1.8, 223, Abilities.POISON_POINT, Abilities.WATER_ABSORB, Abilities.UNAWARE, 430, 130, 75, 60, 45, 100, 20, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.FARIGIRAF, 9, false, false, false, "Long Neck Pokémon", Type.NORMAL, Type.PSYCHIC, 3.2, 160, Abilities.CUD_CHEW, Abilities.ARMOR_TAIL, Abilities.SAP_SIPPER, 520, 120, 90, 70, 110, 70, 60, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.DUDUNSPARCE, 9, false, false, false, "Land Snake Pokémon", Type.NORMAL, null, 3.6, 39.2, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false, false, - new PokemonForm("Two-Segment Form", "two-segment", Type.NORMAL, null, 3.6, 39.2, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, false, ""), - new PokemonForm("Three-Segment Form", "three-segment", Type.NORMAL, null, 4.5, 47.4, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182), - ), - new PokemonSpecies(Species.KINGAMBIT, 9, false, false, false, "Big Blade Pokémon", Type.DARK, Type.STEEL, 2, 120, Abilities.DEFIANT, Abilities.SUPREME_OVERLORD, Abilities.PRESSURE, 550, 100, 135, 120, 60, 85, 50, 25, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GREAT_TUSK, 9, false, false, false, "Paradox Pokémon", Type.GROUND, Type.FIGHTING, 2.2, 320, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 115, 131, 131, 53, 53, 87, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SCREAM_TAIL, 9, false, false, false, "Paradox Pokémon", Type.FAIRY, Type.PSYCHIC, 1.2, 8, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 115, 65, 99, 65, 115, 111, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.BRUTE_BONNET, 9, false, false, false, "Paradox Pokémon", Type.GRASS, Type.DARK, 1.2, 21, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 111, 127, 99, 79, 99, 55, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.FLUTTER_MANE, 9, false, false, false, "Paradox Pokémon", Type.GHOST, Type.FAIRY, 1.4, 4, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 55, 55, 55, 135, 135, 135, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SLITHER_WING, 9, false, false, false, "Paradox Pokémon", Type.BUG, Type.FIGHTING, 3.2, 92, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 85, 135, 79, 85, 105, 81, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.SANDY_SHOCKS, 9, false, false, false, "Paradox Pokémon", Type.ELECTRIC, Type.GROUND, 2.3, 60, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 85, 81, 97, 121, 85, 101, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_TREADS, 9, false, false, false, "Paradox Pokémon", Type.GROUND, Type.STEEL, 0.9, 240, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 90, 112, 120, 72, 70, 106, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_BUNDLE, 9, false, false, false, "Paradox Pokémon", Type.ICE, Type.WATER, 0.6, 11, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 56, 80, 114, 124, 60, 136, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_HANDS, 9, false, false, false, "Paradox Pokémon", Type.FIGHTING, Type.ELECTRIC, 1.8, 380.7, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 154, 140, 108, 50, 68, 50, 50, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_JUGULIS, 9, false, false, false, "Paradox Pokémon", Type.DARK, Type.FLYING, 1.3, 111, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 94, 80, 86, 122, 80, 108, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_MOTH, 9, false, false, false, "Paradox Pokémon", Type.FIRE, Type.POISON, 1.2, 36, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 80, 70, 60, 140, 110, 110, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_THORNS, 9, false, false, false, "Paradox Pokémon", Type.ROCK, Type.ELECTRIC, 1.6, 303, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 100, 134, 110, 70, 84, 72, 30, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.FRIGIBAX, 9, false, false, false, "Ice Fin Pokémon", Type.DRAGON, Type.ICE, 0.5, 17, Abilities.THERMAL_EXCHANGE, Abilities.NONE, Abilities.ICE_BODY, 320, 65, 75, 45, 35, 45, 55, 45, 50, 64, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ARCTIBAX, 9, false, false, false, "Ice Fin Pokémon", Type.DRAGON, Type.ICE, 0.8, 30, Abilities.THERMAL_EXCHANGE, Abilities.NONE, Abilities.ICE_BODY, 423, 90, 95, 66, 45, 65, 62, 25, 50, 148, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.BAXCALIBUR, 9, false, false, false, "Ice Dragon Pokémon", Type.DRAGON, Type.ICE, 2.1, 210, Abilities.THERMAL_EXCHANGE, Abilities.NONE, Abilities.ICE_BODY, 600, 115, 145, 92, 75, 86, 87, 10, 50, 300, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.GIMMIGHOUL, 9, false, false, false, "Coin Chest Pokémon", Type.GHOST, null, 0.3, 5, Abilities.RATTLED, Abilities.NONE, Abilities.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, GrowthRate.SLOW, null, false, false, - new PokemonForm("Chest Form", "chest", Type.GHOST, null, 0.3, 5, Abilities.RATTLED, Abilities.NONE, Abilities.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, false, "", true), - new PokemonForm("Roaming Form", "roaming", Type.GHOST, null, 0.1, 1, Abilities.RUN_AWAY, Abilities.NONE, Abilities.NONE, 300, 45, 30, 25, 75, 45, 80, 45, 50, 60, false, null, true), - ), - new PokemonSpecies(Species.GHOLDENGO, 9, false, false, false, "Coin Entity Pokémon", Type.STEEL, Type.GHOST, 1.2, 30, Abilities.GOOD_AS_GOLD, Abilities.NONE, Abilities.NONE, 550, 87, 60, 95, 133, 91, 84, 45, 50, 275, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.WO_CHIEN, 9, true, false, false, "Ruinous Pokémon", Type.DARK, Type.GRASS, 1.5, 74.2, Abilities.TABLETS_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 85, 85, 100, 95, 135, 70, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CHIEN_PAO, 9, true, false, false, "Ruinous Pokémon", Type.DARK, Type.ICE, 1.9, 152.2, Abilities.SWORD_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 80, 120, 80, 90, 65, 135, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TING_LU, 9, true, false, false, "Ruinous Pokémon", Type.DARK, Type.GROUND, 2.7, 699.7, Abilities.VESSEL_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 155, 110, 125, 55, 80, 45, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.CHI_YU, 9, true, false, false, "Ruinous Pokémon", Type.DARK, Type.FIRE, 0.4, 4.9, Abilities.BEADS_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 55, 80, 80, 135, 120, 100, 6, 0, 285, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ROARING_MOON, 9, false, false, false, "Paradox Pokémon", Type.DRAGON, Type.DARK, 2, 380, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 105, 139, 71, 55, 101, 119, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_VALIANT, 9, false, false, false, "Paradox Pokémon", Type.FAIRY, Type.FIGHTING, 1.4, 35, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 74, 130, 90, 120, 60, 116, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.KORAIDON, 9, false, true, false, "Paradox Pokémon", Type.FIGHTING, Type.DRAGON, 2.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Apex Build", "apex-build", Type.FIGHTING, Type.DRAGON, 2.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, false, null, true), - ), - new PokemonSpecies(Species.MIRAIDON, 9, false, true, false, "Paradox Pokémon", Type.ELECTRIC, Type.DRAGON, 3.5, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, - new PokemonForm("Ultimate Mode", "ultimate-mode", Type.ELECTRIC, Type.DRAGON, 3.5, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, false, null, true), - ), - new PokemonSpecies(Species.WALKING_WAKE, 9, false, false, false, "Paradox Pokémon", Type.WATER, Type.DRAGON, 3.5, 280, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 99, 83, 91, 125, 83, 109, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Gouging Fire and Raging Bolt - new PokemonSpecies(Species.IRON_LEAVES, 9, false, false, false, "Paradox Pokémon", Type.GRASS, Type.PSYCHIC, 1.5, 125, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 130, 88, 70, 108, 104, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Iron Boulder and Iron Crown - new PokemonSpecies(Species.DIPPLIN, 9, false, false, false, "Candy Apple Pokémon", Type.GRASS, Type.DRAGON, 0.4, 9.7, Abilities.SUPERSWEET_SYRUP, Abilities.GLUTTONY, Abilities.STICKY_HOLD, 485, 80, 80, 110, 95, 80, 40, 45, 50, 170, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.POLTCHAGEIST, 9, false, false, false, "Matcha Pokémon", Type.GRASS, Type.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.SLOW, null, false, false, - new PokemonForm("Counterfeit Form", "counterfeit", Type.GRASS, Type.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, true), - new PokemonForm("Artisan Form", "artisan", Type.GRASS, Type.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, true), - ), - new PokemonSpecies(Species.SINISTCHA, 9, false, false, false, "Matcha Pokémon", Type.GRASS, Type.GHOST, 0.2, 2.2, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, GrowthRate.SLOW, null, false, false, - new PokemonForm("Unremarkable Form", "unremarkable", Type.GRASS, Type.GHOST, 0.2, 2.2, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178), - new PokemonForm("Masterpiece Form", "masterpiece", Type.GRASS, Type.GHOST, 0.2, 2.2, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178), - ), - new PokemonSpecies(Species.OKIDOGI, 9, true, false, false, "Retainer Pokémon", Type.POISON, Type.FIGHTING, 1.8, 92.2, Abilities.TOXIC_CHAIN, Abilities.NONE, Abilities.GUARD_DOG, 555, 88, 128, 115, 58, 86, 80, 3, 0, 276, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.MUNKIDORI, 9, true, false, false, "Retainer Pokémon", Type.POISON, Type.PSYCHIC, 1, 12.2, Abilities.TOXIC_CHAIN, Abilities.NONE, Abilities.FRISK, 555, 88, 75, 66, 130, 90, 106, 3, 0, 276, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.FEZANDIPITI, 9, true, false, false, "Retainer Pokémon", Type.POISON, Type.FAIRY, 1.4, 30.1, Abilities.TOXIC_CHAIN, Abilities.NONE, Abilities.TECHNICIAN, 555, 88, 91, 82, 70, 125, 99, 3, 0, 276, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.OGERPON, 9, true, false, false, "Mask Pokémon", Type.GRASS, null, 1.2, 39.8, Abilities.DEFIANT, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, GrowthRate.SLOW, 0, false, false, - new PokemonForm("Teal Mask", "teal-mask", Type.GRASS, null, 1.2, 39.8, Abilities.DEFIANT, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, false, null, true), - new PokemonForm("Wellspring Mask", "wellspring-mask", Type.GRASS, Type.WATER, 1.2, 39.8, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Hearthflame Mask", "hearthflame-mask", Type.GRASS, Type.FIRE, 1.2, 39.8, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Cornerstone Mask", "cornerstone-mask", Type.GRASS, Type.ROCK, 1.2, 39.8, Abilities.STURDY, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Teal Mask Terastallized", "teal-mask-tera", Type.GRASS, null, 1.2, 39.8, Abilities.EMBODY_ASPECT_TEAL, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Wellspring Mask Terastallized", "wellspring-mask-tera", Type.GRASS, Type.WATER, 1.2, 39.8, Abilities.EMBODY_ASPECT_WELLSPRING, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Hearthflame Mask Terastallized", "hearthflame-mask-tera", Type.GRASS, Type.FIRE, 1.2, 39.8, Abilities.EMBODY_ASPECT_HEARTHFLAME, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - new PokemonForm("Cornerstone Mask Terastallized", "cornerstone-mask-tera", Type.GRASS, Type.ROCK, 1.2, 39.8, Abilities.EMBODY_ASPECT_CORNERSTONE, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), - ), - new PokemonSpecies(Species.ARCHALUDON, 9, false, false, false, "Alloy Pokémon", Type.STEEL, Type.DRAGON, 2, 60, Abilities.STAMINA, Abilities.STURDY, Abilities.STALWART, 600, 90, 105, 130, 125, 65, 85, 10, 50, 300, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HYDRAPPLE, 9, false, false, false, "Apple Hydra Pokémon", Type.GRASS, Type.DRAGON, 1.8, 93, Abilities.SUPERSWEET_SYRUP, Abilities.REGENERATOR, Abilities.STICKY_HOLD, 540, 106, 80, 110, 120, 80, 44, 10, 50, 270, GrowthRate.ERRATIC, 50, false), - new PokemonSpecies(Species.GOUGING_FIRE, 9, false, false, false, "Paradox Pokémon", Type.FIRE, Type.DRAGON, 3.5, 590, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 105, 115, 121, 65, 93, 91, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.RAGING_BOLT, 9, false, false, false, "Paradox Pokémon", Type.ELECTRIC, Type.DRAGON, 5.2, 480, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 125, 73, 91, 137, 89, 75, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_BOULDER, 9, false, false, false, "Paradox Pokémon", Type.ROCK, Type.PSYCHIC, 1.5, 162.5, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 120, 80, 68, 108, 124, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.IRON_CROWN, 9, false, false, false, "Paradox Pokémon", Type.STEEL, Type.PSYCHIC, 1.6, 156, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 72, 100, 122, 108, 98, 10, 0, 295, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.TERAPAGOS, 9, false, true, false, "Tera Pokémon", Type.NORMAL, null, 0.2, 6.5, Abilities.TERA_SHIFT, Abilities.NONE, Abilities.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, GrowthRate.SLOW, 50, false, false, - new PokemonForm("Normal Form", "", Type.NORMAL, null, 0.2, 6.5, Abilities.TERA_SHIFT, Abilities.NONE, Abilities.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, false, null, true), - new PokemonForm("Terastal Form", "terastal", Type.NORMAL, null, 0.3, 16, Abilities.TERA_SHELL, Abilities.NONE, Abilities.NONE, 600, 95, 95, 110, 105, 110, 85, 5, 50, 120), - new PokemonForm("Stellar Form", "stellar", Type.NORMAL, null, 1.7, 77, Abilities.TERAFORM_ZERO, Abilities.NONE, Abilities.NONE, 700, 160, 105, 110, 130, 110, 85, 5, 50, 140), - ), - new PokemonSpecies(Species.PECHARUNT, 9, false, false, true, "Subjugation Pokémon", Type.POISON, Type.GHOST, 0.3, 0.3, Abilities.POISON_PUPPETEER, Abilities.NONE, Abilities.NONE, 600, 88, 88, 160, 88, 88, 88, 3, 0, 300, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.ALOLA_RATTATA, 7, false, false, false, "Mouse Pokémon", Type.DARK, Type.NORMAL, 0.3, 3.8, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_RATICATE, 7, false, false, false, "Mouse Pokémon", Type.DARK, Type.NORMAL, 0.7, 25.5, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 413, 75, 71, 70, 40, 80, 77, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_RAICHU, 7, false, false, false, "Mouse Pokémon", Type.ELECTRIC, Type.PSYCHIC, 0.7, 21, Abilities.SURGE_SURFER, Abilities.NONE, Abilities.NONE, 485, 60, 85, 50, 95, 85, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_SANDSHREW, 7, false, false, false, "Mouse Pokémon", Type.ICE, Type.STEEL, 0.7, 40, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SLUSH_RUSH, 300, 50, 75, 90, 10, 35, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_SANDSLASH, 7, false, false, false, "Mouse Pokémon", Type.ICE, Type.STEEL, 1.2, 55, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SLUSH_RUSH, 450, 75, 100, 120, 25, 65, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_VULPIX, 7, false, false, false, "Fox Pokémon", Type.ICE, null, 0.6, 9.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SNOW_WARNING, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(Species.ALOLA_NINETALES, 7, false, false, false, "Fox Pokémon", Type.ICE, Type.FAIRY, 1.1, 19.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SNOW_WARNING, 505, 73, 67, 75, 81, 100, 109, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), - new PokemonSpecies(Species.ALOLA_DIGLETT, 7, false, false, false, "Mole Pokémon", Type.GROUND, Type.STEEL, 0.2, 1, Abilities.SAND_VEIL, Abilities.TANGLING_HAIR, Abilities.SAND_FORCE, 265, 10, 55, 30, 35, 45, 90, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_DUGTRIO, 7, false, false, false, "Mole Pokémon", Type.GROUND, Type.STEEL, 0.7, 66.6, Abilities.SAND_VEIL, Abilities.TANGLING_HAIR, Abilities.SAND_FORCE, 425, 35, 100, 60, 50, 70, 110, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_MEOWTH, 7, false, false, false, "Scratch Cat Pokémon", Type.DARK, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.RATTLED, 290, 40, 35, 35, 50, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_PERSIAN, 7, false, false, false, "Classy Cat Pokémon", Type.DARK, null, 1.1, 33, Abilities.FUR_COAT, Abilities.TECHNICIAN, Abilities.RATTLED, 440, 65, 60, 60, 75, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_GEODUDE, 7, false, false, false, "Rock Pokémon", Type.ROCK, Type.ELECTRIC, 0.4, 20.3, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.GALVANIZE, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ALOLA_GRAVELER, 7, false, false, false, "Rock Pokémon", Type.ROCK, Type.ELECTRIC, 1, 110, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.GALVANIZE, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ALOLA_GOLEM, 7, false, false, false, "Megaton Pokémon", Type.ROCK, Type.ELECTRIC, 1.7, 316, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.GALVANIZE, 495, 80, 120, 130, 55, 65, 45, 45, 70, 223, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.ALOLA_GRIMER, 7, false, false, false, "Sludge Pokémon", Type.POISON, Type.DARK, 0.7, 42, Abilities.POISON_TOUCH, Abilities.GLUTTONY, Abilities.POWER_OF_ALCHEMY, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_MUK, 7, false, false, false, "Sludge Pokémon", Type.POISON, Type.DARK, 1, 52, Abilities.POISON_TOUCH, Abilities.GLUTTONY, Abilities.POWER_OF_ALCHEMY, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ALOLA_EXEGGUTOR, 7, false, false, false, "Coconut Pokémon", Type.GRASS, Type.DRAGON, 10.9, 415.6, Abilities.FRISK, Abilities.NONE, Abilities.HARVEST, 530, 95, 105, 85, 125, 75, 45, 45, 50, 186, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.ALOLA_MAROWAK, 7, false, false, false, "Bone Keeper Pokémon", Type.FIRE, Type.GHOST, 1, 34, Abilities.CURSED_BODY, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.ETERNAL_FLOETTE, 6, true, false, false, "Single Bloom Pokémon", Type.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 551, 74, 65, 67, 125, 128, 92, 120, 70, 243, GrowthRate.MEDIUM_FAST, 0, false), //Marked as Sub-Legend, for casing purposes - new PokemonSpecies(Species.GALAR_MEOWTH, 8, false, false, false, "Scratch Cat Pokémon", Type.STEEL, null, 0.4, 7.5, Abilities.PICKUP, Abilities.TOUGH_CLAWS, Abilities.UNNERVE, 290, 50, 65, 55, 40, 40, 40, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_PONYTA, 8, false, false, false, "Fire Horse Pokémon", Type.PSYCHIC, null, 0.8, 24, Abilities.RUN_AWAY, Abilities.PASTEL_VEIL, Abilities.ANTICIPATION, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_RAPIDASH, 8, false, false, false, "Fire Horse Pokémon", Type.PSYCHIC, Type.FAIRY, 1.7, 80, Abilities.RUN_AWAY, Abilities.PASTEL_VEIL, Abilities.ANTICIPATION, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_SLOWPOKE, 8, false, false, false, "Dopey Pokémon", Type.PSYCHIC, null, 1.2, 36, Abilities.GLUTTONY, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_SLOWBRO, 8, false, false, false, "Hermit Crab Pokémon", Type.POISON, Type.PSYCHIC, 1.6, 70.5, Abilities.QUICK_DRAW, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 100, 95, 100, 70, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_FARFETCHD, 8, false, false, false, "Wild Duck Pokémon", Type.FIGHTING, null, 0.8, 42, Abilities.STEADFAST, Abilities.NONE, Abilities.SCRAPPY, 377, 52, 95, 55, 58, 62, 55, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_WEEZING, 8, false, false, false, "Poison Gas Pokémon", Type.POISON, Type.FAIRY, 3, 16, Abilities.LEVITATE, Abilities.NEUTRALIZING_GAS, Abilities.MISTY_SURGE, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_MR_MIME, 8, false, false, false, "Barrier Pokémon", Type.ICE, Type.PSYCHIC, 1.4, 56.8, Abilities.VITAL_SPIRIT, Abilities.SCREEN_CLEANER, Abilities.ICE_BODY, 460, 50, 65, 65, 90, 90, 100, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_ARTICUNO, 8, true, false, false, "Freeze Pokémon", Type.PSYCHIC, Type.FLYING, 1.7, 50.9, Abilities.COMPETITIVE, Abilities.NONE, Abilities.NONE, 580, 90, 85, 85, 125, 100, 95, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GALAR_ZAPDOS, 8, true, false, false, "Electric Pokémon", Type.FIGHTING, Type.FLYING, 1.6, 58.2, Abilities.DEFIANT, Abilities.NONE, Abilities.NONE, 580, 90, 125, 90, 85, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GALAR_MOLTRES, 8, true, false, false, "Flame Pokémon", Type.DARK, Type.FLYING, 2, 66, Abilities.BERSERK, Abilities.NONE, Abilities.NONE, 580, 90, 85, 90, 100, 125, 90, 3, 35, 290, GrowthRate.SLOW, null, false), - new PokemonSpecies(Species.GALAR_SLOWKING, 8, false, false, false, "Royal Pokémon", Type.POISON, Type.PSYCHIC, 1.8, 79.5, Abilities.CURIOUS_MEDICINE, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 65, 80, 110, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_CORSOLA, 8, false, false, false, "Coral Pokémon", Type.GHOST, null, 0.6, 0.5, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 410, 60, 55, 100, 65, 100, 30, 60, 50, 144, GrowthRate.FAST, 25, false), - new PokemonSpecies(Species.GALAR_ZIGZAGOON, 8, false, false, false, "Tiny Raccoon Pokémon", Type.DARK, Type.NORMAL, 0.4, 17.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_LINOONE, 8, false, false, false, "Rushing Pokémon", Type.DARK, Type.NORMAL, 0.5, 32.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_DARUMAKA, 8, false, false, false, "Zen Charm Pokémon", Type.ICE, null, 0.7, 40, Abilities.HUSTLE, Abilities.NONE, Abilities.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), - new PokemonSpecies(Species.GALAR_DARMANITAN, 8, false, false, false, "Blazing Pokémon", Type.ICE, null, 1.7, 120, Abilities.GORILLA_TACTICS, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, - new PokemonForm("Standard Mode", "", Type.ICE, null, 1.7, 120, Abilities.GORILLA_TACTICS, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), - new PokemonForm("Zen Mode", "zen", Type.ICE, Type.FIRE, 1.7, 120, Abilities.GORILLA_TACTICS, Abilities.NONE, Abilities.ZEN_MODE, 540, 105, 160, 55, 30, 55, 135, 60, 50, 189), - ), - new PokemonSpecies(Species.GALAR_YAMASK, 8, false, false, false, "Spirit Pokémon", Type.GROUND, Type.GHOST, 0.5, 1.5, Abilities.WANDERING_SPIRIT, Abilities.NONE, Abilities.NONE, 303, 38, 55, 85, 30, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GALAR_STUNFISK, 8, false, false, false, "Trap Pokémon", Type.GROUND, Type.STEEL, 0.7, 20.5, Abilities.MIMICRY, Abilities.NONE, Abilities.NONE, 471, 109, 81, 99, 66, 84, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HISUI_GROWLITHE, 8, false, false, false, "Puppy Pokémon", Type.FIRE, Type.ROCK, 0.8, 22.7, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.ROCK_HEAD, 350, 60, 75, 45, 65, 50, 55, 190, 50, 70, GrowthRate.SLOW, 75, false), - new PokemonSpecies(Species.HISUI_ARCANINE, 8, false, false, false, "Legendary Pokémon", Type.FIRE, Type.ROCK, 2, 168, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.ROCK_HEAD, 555, 95, 115, 80, 95, 80, 90, 85, 50, 194, GrowthRate.SLOW, 75, false), - new PokemonSpecies(Species.HISUI_VOLTORB, 8, false, false, false, "Ball Pokémon", Type.ELECTRIC, Type.GRASS, 0.5, 13, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 80, 66, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.HISUI_ELECTRODE, 8, false, false, false, "Ball Pokémon", Type.ELECTRIC, Type.GRASS, 1.2, 81, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), - new PokemonSpecies(Species.HISUI_TYPHLOSION, 8, false, false, false, "Volcano Pokémon", Type.FIRE, Type.GHOST, 1.6, 69.8, Abilities.BLAZE, Abilities.NONE, Abilities.FRISK, 534, 73, 84, 78, 119, 85, 95, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.HISUI_QWILFISH, 8, false, false, false, "Balloon Pokémon", Type.DARK, Type.POISON, 0.5, 3.9, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HISUI_SNEASEL, 8, false, false, false, "Sharp Claw Pokémon", Type.FIGHTING, Type.POISON, 0.9, 27, Abilities.INNER_FOCUS, Abilities.KEEN_EYE, Abilities.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), - new PokemonSpecies(Species.HISUI_SAMUROTT, 8, false, false, false, "Formidable Pokémon", Type.WATER, Type.DARK, 1.5, 58.2, Abilities.TORRENT, Abilities.NONE, Abilities.SHARPNESS, 528, 90, 108, 80, 100, 65, 85, 45, 80, 238, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.HISUI_LILLIGANT, 8, false, false, false, "Flowering Pokémon", Type.GRASS, Type.FIGHTING, 1.2, 19.2, Abilities.CHLOROPHYLL, Abilities.HUSTLE, Abilities.LEAF_GUARD, 480, 70, 105, 75, 50, 75, 105, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), - new PokemonSpecies(Species.HISUI_ZORUA, 8, false, false, false, "Tricky Fox Pokémon", Type.NORMAL, Type.GHOST, 0.7, 12.5, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 330, 35, 60, 40, 85, 40, 70, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.HISUI_ZOROARK, 8, false, false, false, "Illusion Fox Pokémon", Type.NORMAL, Type.GHOST, 1.6, 83, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 510, 55, 100, 60, 125, 60, 110, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.HISUI_BRAVIARY, 8, false, false, false, "Valiant Pokémon", Type.PSYCHIC, Type.FLYING, 1.7, 43.4, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.TINTED_LENS, 510, 110, 83, 70, 112, 70, 65, 60, 50, 179, GrowthRate.SLOW, 100, false), - new PokemonSpecies(Species.HISUI_SLIGGOO, 8, false, false, false, "Soft Tissue Pokémon", Type.STEEL, Type.DRAGON, 0.7, 68.5, Abilities.SAP_SIPPER, Abilities.SHELL_ARMOR, Abilities.GOOEY, 452, 58, 75, 83, 83, 113, 40, 45, 35, 158, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HISUI_GOODRA, 8, false, false, false, "Dragon Pokémon", Type.STEEL, Type.DRAGON, 1.7, 334.1, Abilities.SAP_SIPPER, Abilities.SHELL_ARMOR, Abilities.GOOEY, 600, 80, 100, 100, 110, 150, 60, 45, 35, 270, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.HISUI_AVALUGG, 8, false, false, false, "Iceberg Pokémon", Type.ICE, Type.ROCK, 1.4, 262.4, Abilities.STRONG_JAW, Abilities.ICE_BODY, Abilities.STURDY, 514, 95, 127, 184, 34, 36, 38, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.HISUI_DECIDUEYE, 8, false, false, false, "Arrow Quill Pokémon", Type.GRASS, Type.FIGHTING, 1.6, 37, Abilities.OVERGROW, Abilities.NONE, Abilities.SCRAPPY, 530, 88, 112, 80, 95, 95, 60, 45, 50, 239, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.PALDEA_TAUROS, 9, false, false, false, "Wild Bull Pokémon", Type.FIGHTING, null, 1.4, 115, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, GrowthRate.SLOW, 100, false, false, - new PokemonForm("Combat Breed", "combat", Type.FIGHTING, null, 1.4, 115, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, "", true), - new PokemonForm("Blaze Breed", "blaze", Type.FIGHTING, Type.FIRE, 1.4, 85, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), - new PokemonForm("Aqua Breed", "aqua", Type.FIGHTING, Type.WATER, 1.4, 110, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), - ), - new PokemonSpecies(Species.PALDEA_WOOPER, 9, false, false, false, "Water Fish Pokémon", Type.POISON, Type.GROUND, 0.4, 11, Abilities.POISON_POINT, Abilities.WATER_ABSORB, Abilities.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.BLOODMOON_URSALUNA, 9, true, false, false, "Peat Pokémon", Type.GROUND, Type.NORMAL, 2.7, 333, Abilities.MINDS_EYE, Abilities.NONE, Abilities.NONE, 555, 113, 70, 120, 135, 65, 52, 75, 50, 278, GrowthRate.MEDIUM_FAST, 50, false), //Marked as Sub-Legend, for casing purposes + new PokemonSpecies(Species.BULBASAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 6.9, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 318, 45, 49, 49, 65, 65, 45, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.IVYSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 13, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 405, 60, 62, 63, 80, 80, 60, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.VENUSAUR, 1, false, false, false, "Seed Pokémon", PokemonType.GRASS, PokemonType.POISON, 2, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, GrowthRate.MEDIUM_SLOW, 87.5, true, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.POISON, 2, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 80, 82, 83, 100, 100, 80, 45, 50, 263, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.POISON, 2.4, 155.5, Abilities.THICK_FAT, Abilities.THICK_FAT, Abilities.THICK_FAT, 625, 80, 100, 123, 122, 120, 80, 45, 50, 263, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.POISON, 24, 999.9, Abilities.EFFECT_SPORE, Abilities.NONE, Abilities.EFFECT_SPORE, 625, 120, 82, 98, 130, 115, 80, 45, 50, 263, true), + ), + new PokemonSpecies(Species.CHARMANDER, 1, false, false, false, "Lizard Pokémon", PokemonType.FIRE, null, 0.6, 8.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 309, 39, 52, 43, 60, 50, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.CHARMELEON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 1.1, 19, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 405, 58, 64, 58, 80, 65, 80, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.CHARIZARD, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FLYING, 1.7, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 534, 78, 84, 78, 109, 85, 100, 45, 50, 267, false, null, true), + new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.FIRE, PokemonType.DRAGON, 1.7, 110.5, Abilities.TOUGH_CLAWS, Abilities.NONE, Abilities.TOUGH_CLAWS, 634, 78, 130, 111, 130, 85, 100, 45, 50, 267), + new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.FIRE, PokemonType.FLYING, 1.7, 100.5, Abilities.DROUGHT, Abilities.NONE, Abilities.DROUGHT, 634, 78, 104, 78, 159, 115, 100, 45, 50, 267), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.FLYING, 28, 999.9, Abilities.BERSERK, Abilities.NONE, Abilities.BERSERK, 634, 118, 84, 93, 139, 100, 100, 45, 50, 267), + ), + new PokemonSpecies(Species.SQUIRTLE, 1, false, false, false, "Tiny Turtle Pokémon", PokemonType.WATER, null, 0.5, 9, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 314, 44, 48, 65, 50, 64, 43, 45, 50, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.WARTORTLE, 1, false, false, false, "Turtle Pokémon", PokemonType.WATER, null, 1, 22.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 405, 59, 63, 80, 65, 80, 58, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.BLASTOISE, 1, false, false, false, "Shellfish Pokémon", PokemonType.WATER, null, 1.6, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 1.6, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 530, 79, 83, 100, 85, 105, 78, 45, 50, 265, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, null, 1.6, 101.1, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.MEGA_LAUNCHER, 630, 79, 103, 120, 135, 115, 78, 45, 50, 265), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.STEEL, 25, 999.9, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.SHELL_ARMOR, 630, 119, 83, 135, 115, 110, 68, 45, 50, 265), + ), + new PokemonSpecies(Species.CATERPIE, 1, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 2.9, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 45, 30, 35, 20, 20, 45, 255, 50, 39, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.METAPOD, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 9.9, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 20, 55, 25, 25, 30, 120, 50, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BUTTERFREE, 1, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FLYING, 1.1, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 395, 60, 45, 50, 90, 80, 70, 45, 50, 198, true, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.FLYING, 17, 999.9, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.COMPOUND_EYES, 495, 85, 35, 80, 120, 90, 85, 45, 50, 198, true), + ), + new PokemonSpecies(Species.WEEDLE, 1, false, false, false, "Hairy Bug Pokémon", PokemonType.BUG, PokemonType.POISON, 0.3, 3.2, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 40, 35, 30, 20, 20, 50, 255, 70, 39, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.KAKUNA, 1, false, false, false, "Cocoon Pokémon", PokemonType.BUG, PokemonType.POISON, 0.6, 10, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 45, 25, 50, 25, 25, 35, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BEEDRILL, 1, false, false, false, "Poison Bee Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.POISON, 1, 29.5, Abilities.SWARM, Abilities.NONE, Abilities.SNIPER, 395, 65, 90, 40, 45, 80, 75, 45, 70, 198, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.POISON, 1.4, 40.5, Abilities.ADAPTABILITY, Abilities.NONE, Abilities.ADAPTABILITY, 495, 65, 150, 40, 15, 80, 145, 45, 70, 198), + ), + new PokemonSpecies(Species.PIDGEY, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.8, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 251, 40, 45, 40, 35, 35, 56, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.PIDGEOTTO, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 30, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 349, 63, 60, 55, 50, 50, 71, 120, 70, 122, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.PIDGEOT, 1, false, false, false, "Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 39.5, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 479, 83, 80, 75, 70, 70, 101, 45, 70, 240, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FLYING, 2.2, 50.5, Abilities.NO_GUARD, Abilities.NO_GUARD, Abilities.NO_GUARD, 579, 83, 80, 80, 135, 80, 121, 45, 70, 240), + ), + new PokemonSpecies(Species.RATTATA, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.3, 3.5, Abilities.RUN_AWAY, Abilities.GUTS, Abilities.HUSTLE, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.RATICATE, 1, false, false, false, "Mouse Pokémon", PokemonType.NORMAL, null, 0.7, 18.5, Abilities.RUN_AWAY, Abilities.GUTS, Abilities.HUSTLE, 413, 55, 81, 60, 50, 70, 97, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.SPEAROW, 1, false, false, false, "Tiny Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, Abilities.KEEN_EYE, Abilities.NONE, Abilities.SNIPER, 262, 40, 60, 30, 31, 31, 70, 255, 70, 52, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FEAROW, 1, false, false, false, "Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 38, Abilities.KEEN_EYE, Abilities.NONE, Abilities.SNIPER, 442, 65, 90, 65, 61, 61, 100, 90, 70, 155, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.EKANS, 1, false, false, false, "Snake Pokémon", PokemonType.POISON, null, 2, 6.9, Abilities.INTIMIDATE, Abilities.SHED_SKIN, Abilities.UNNERVE, 288, 35, 60, 44, 40, 54, 55, 255, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ARBOK, 1, false, false, false, "Cobra Pokémon", PokemonType.POISON, null, 3.5, 65, Abilities.INTIMIDATE, Abilities.SHED_SKIN, Abilities.UNNERVE, 448, 60, 95, 69, 65, 79, 80, 90, 70, 157, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PIKACHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 320, 35, 55, 40, 50, 50, 90, 190, 50, 112, true, null, true), + new PokemonForm("Partner", "partner", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), + new PokemonForm("Cosplay", "cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Cool Cosplay", "cool-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Beauty Cosplay", "beauty-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Cute Cosplay", "cute-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Smart Cosplay", "smart-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("Tough Cosplay", "tough-cosplay", PokemonType.ELECTRIC, null, 0.4, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 430, 45, 80, 50, 75, 60, 120, 190, 50, 112, true, null, true), //Custom + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, null, 21, 999.9, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.LIGHTNING_ROD, 530, 125, 95, 60, 90, 70, 90, 190, 50, 112), //+100 BST from Partner Form + ), + new PokemonSpecies(Species.RAICHU, 1, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.8, 30, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 485, 60, 90, 55, 90, 80, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.SANDSHREW, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 0.6, 12, Abilities.SAND_VEIL, Abilities.NONE, Abilities.SAND_RUSH, 300, 50, 75, 85, 20, 30, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SANDSLASH, 1, false, false, false, "Mouse Pokémon", PokemonType.GROUND, null, 1, 29.5, Abilities.SAND_VEIL, Abilities.NONE, Abilities.SAND_RUSH, 450, 75, 100, 110, 45, 55, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.NIDORAN_F, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.4, 7, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 275, 55, 47, 52, 40, 40, 41, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.NIDORINA, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.8, 20, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 365, 70, 62, 67, 55, 55, 56, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.NIDOQUEEN, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.3, 60, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.SHEER_FORCE, 505, 90, 92, 87, 75, 85, 76, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.NIDORAN_M, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.5, 9, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 273, 46, 57, 40, 40, 40, 50, 235, 50, 55, GrowthRate.MEDIUM_SLOW, 100, false), + new PokemonSpecies(Species.NIDORINO, 1, false, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.9, 19.5, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.HUSTLE, 365, 61, 72, 57, 55, 55, 65, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 100, false), + new PokemonSpecies(Species.NIDOKING, 1, false, false, false, "Drill Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.4, 62, Abilities.POISON_POINT, Abilities.RIVALRY, Abilities.SHEER_FORCE, 505, 81, 102, 77, 85, 75, 85, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 100, false), + new PokemonSpecies(Species.CLEFAIRY, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.5, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.FRIEND_GUARD, 323, 70, 45, 48, 60, 65, 35, 150, 140, 113, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.CLEFABLE, 1, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.3, 40, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.UNAWARE, 483, 95, 70, 73, 95, 90, 60, 25, 140, 242, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.VULPIX, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.6, 9.9, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.DROUGHT, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(Species.NINETALES, 1, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1.1, 19.9, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.DROUGHT, 505, 73, 76, 75, 81, 100, 100, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(Species.JIGGLYPUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.5, 5.5, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRIEND_GUARD, 270, 115, 45, 20, 45, 25, 20, 170, 50, 95, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.WIGGLYTUFF, 1, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 1, 12, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRISK, 435, 140, 70, 45, 85, 50, 45, 50, 50, 218, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.ZUBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 0.8, 7.5, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.INFILTRATOR, 245, 40, 45, 35, 30, 40, 55, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.GOLBAT, 1, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.6, 55, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.INFILTRATOR, 455, 75, 80, 70, 65, 75, 90, 90, 50, 159, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.ODDISH, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.5, 5.4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.RUN_AWAY, 320, 45, 50, 55, 75, 65, 30, 255, 50, 64, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GLOOM, 1, false, false, false, "Weed Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.8, 8.6, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.STENCH, 395, 60, 65, 70, 85, 75, 40, 120, 50, 138, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.VILEPLUME, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.2, 18.6, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.EFFECT_SPORE, 490, 75, 80, 85, 110, 90, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.PARAS, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 5.4, Abilities.EFFECT_SPORE, Abilities.DRY_SKIN, Abilities.DAMP, 285, 35, 70, 55, 45, 55, 25, 190, 70, 57, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PARASECT, 1, false, false, false, "Mushroom Pokémon", PokemonType.BUG, PokemonType.GRASS, 1, 29.5, Abilities.EFFECT_SPORE, Abilities.DRY_SKIN, Abilities.DAMP, 405, 60, 95, 80, 60, 80, 30, 75, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.VENONAT, 1, false, false, false, "Insect Pokémon", PokemonType.BUG, PokemonType.POISON, 1, 30, Abilities.COMPOUND_EYES, Abilities.TINTED_LENS, Abilities.RUN_AWAY, 305, 60, 55, 50, 40, 55, 45, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.VENOMOTH, 1, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.5, 12.5, Abilities.SHIELD_DUST, Abilities.TINTED_LENS, Abilities.WONDER_SKIN, 450, 70, 65, 60, 90, 75, 90, 75, 70, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DIGLETT, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.2, 0.8, Abilities.SAND_VEIL, Abilities.ARENA_TRAP, Abilities.SAND_FORCE, 265, 10, 55, 25, 35, 45, 95, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DUGTRIO, 1, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.7, 33.3, Abilities.SAND_VEIL, Abilities.ARENA_TRAP, Abilities.SAND_FORCE, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MEOWTH, 1, false, false, false, "Scratch Cat Pokémon", PokemonType.NORMAL, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 290, 40, 45, 35, 40, 40, 90, 255, 50, 58, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 33, 999.9, Abilities.TECHNICIAN, Abilities.TECHNICIAN, Abilities.TECHNICIAN, 540, 115, 110, 65, 65, 70, 115, 255, 50, 58), //+100 BST from Persian + ), + new PokemonSpecies(Species.PERSIAN, 1, false, false, false, "Classy Cat Pokémon", PokemonType.NORMAL, null, 1, 32, Abilities.LIMBER, Abilities.TECHNICIAN, Abilities.UNNERVE, 440, 65, 70, 60, 65, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PSYDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 0.8, 19.6, Abilities.DAMP, Abilities.CLOUD_NINE, Abilities.SWIFT_SWIM, 320, 50, 52, 48, 65, 50, 55, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GOLDUCK, 1, false, false, false, "Duck Pokémon", PokemonType.WATER, null, 1.7, 76.6, Abilities.DAMP, Abilities.CLOUD_NINE, Abilities.SWIFT_SWIM, 500, 80, 82, 78, 95, 80, 85, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MANKEY, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 0.5, 28, Abilities.VITAL_SPIRIT, Abilities.ANGER_POINT, Abilities.DEFIANT, 305, 40, 80, 35, 35, 45, 70, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PRIMEAPE, 1, false, false, false, "Pig Monkey Pokémon", PokemonType.FIGHTING, null, 1, 32, Abilities.VITAL_SPIRIT, Abilities.ANGER_POINT, Abilities.DEFIANT, 455, 65, 105, 60, 60, 70, 95, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GROWLITHE, 1, false, false, false, "Puppy Pokémon", PokemonType.FIRE, null, 0.7, 19, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.JUSTIFIED, 350, 55, 70, 45, 70, 50, 60, 190, 50, 70, GrowthRate.SLOW, 75, false), + new PokemonSpecies(Species.ARCANINE, 1, false, false, false, "Legendary Pokémon", PokemonType.FIRE, null, 1.9, 155, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.JUSTIFIED, 555, 90, 110, 80, 100, 80, 95, 75, 50, 194, GrowthRate.SLOW, 75, false), + new PokemonSpecies(Species.POLIWAG, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.6, 12.4, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.SWIFT_SWIM, 300, 40, 50, 40, 40, 40, 90, 255, 50, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.POLIWHIRL, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 1, 20, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.SWIFT_SWIM, 385, 65, 65, 65, 50, 50, 90, 120, 50, 135, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.POLIWRATH, 1, false, false, false, "Tadpole Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.3, 54, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.SWIFT_SWIM, 510, 90, 95, 95, 70, 90, 70, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.ABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 0.9, 19.5, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 310, 25, 20, 15, 105, 55, 90, 200, 50, 62, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(Species.KADABRA, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.3, 56.5, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 400, 40, 35, 30, 120, 70, 105, 100, 50, 140, GrowthRate.MEDIUM_SLOW, 75, true), + new PokemonSpecies(Species.ALAKAZAM, 1, false, false, false, "Psi Pokémon", PokemonType.PSYCHIC, null, 1.5, 48, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, GrowthRate.MEDIUM_SLOW, 75, true, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 1.5, 48, Abilities.SYNCHRONIZE, Abilities.INNER_FOCUS, Abilities.MAGIC_GUARD, 500, 55, 50, 45, 135, 95, 120, 50, 50, 250, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, null, 1.2, 48, Abilities.TRACE, Abilities.TRACE, Abilities.TRACE, 600, 55, 50, 65, 175, 105, 150, 50, 50, 250, true), + ), + new PokemonSpecies(Species.MACHOP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 0.8, 19.5, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 305, 70, 80, 50, 35, 35, 35, 180, 50, 61, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(Species.MACHOKE, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.5, 70.5, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 405, 80, 100, 70, 50, 60, 45, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(Species.MACHAMP, 1, false, false, false, "Superpower Pokémon", PokemonType.FIGHTING, null, 1.6, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, null, 1.6, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 505, 90, 130, 80, 65, 85, 55, 45, 50, 253, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIGHTING, null, 25, 999.9, Abilities.GUTS, Abilities.GUTS, Abilities.GUTS, 605, 115, 170, 95, 65, 95, 65, 45, 50, 253), + ), + new PokemonSpecies(Species.BELLSPROUT, 1, false, false, false, "Flower Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.7, 4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 300, 50, 75, 35, 70, 30, 40, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.WEEPINBELL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1, 6.4, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 390, 65, 90, 50, 85, 45, 55, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.VICTREEBEL, 1, false, false, false, "Flycatcher Pokémon", PokemonType.GRASS, PokemonType.POISON, 1.7, 15.5, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.GLUTTONY, 490, 80, 105, 65, 100, 70, 70, 45, 70, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.TENTACOOL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 0.9, 45.5, Abilities.CLEAR_BODY, Abilities.LIQUID_OOZE, Abilities.RAIN_DISH, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.TENTACRUEL, 1, false, false, false, "Jellyfish Pokémon", PokemonType.WATER, PokemonType.POISON, 1.6, 55, Abilities.CLEAR_BODY, Abilities.LIQUID_OOZE, Abilities.RAIN_DISH, 515, 80, 70, 65, 80, 120, 100, 60, 50, 180, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.GEODUDE, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.4, 20, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GRAVELER, 1, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1, 105, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GOLEM, 1, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.4, 300, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SAND_VEIL, 495, 80, 120, 130, 55, 65, 45, 45, 70, 248, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.PONYTA, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1, 30, Abilities.RUN_AWAY, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.RAPIDASH, 1, false, false, false, "Fire Horse Pokémon", PokemonType.FIRE, null, 1.7, 95, Abilities.RUN_AWAY, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SLOWPOKE, 1, false, false, false, "Dopey Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.2, 36, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SLOWBRO, 1, false, false, false, "Hermit Crab Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.PSYCHIC, 1.6, 78.5, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 75, 110, 100, 80, 30, 75, 50, 172, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.PSYCHIC, 2, 120, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, Abilities.SHELL_ARMOR, 590, 95, 75, 180, 130, 80, 30, 75, 50, 172), + ), + new PokemonSpecies(Species.MAGNEMITE, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 6, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.ANALYTIC, 325, 25, 35, 70, 95, 55, 45, 190, 50, 65, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.MAGNETON, 1, false, false, false, "Magnet Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1, 60, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.ANALYTIC, 465, 50, 60, 95, 120, 70, 70, 60, 50, 163, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.FARFETCHD, 1, false, false, false, "Wild Duck Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.8, 15, Abilities.KEEN_EYE, Abilities.INNER_FOCUS, Abilities.DEFIANT, 377, 52, 90, 55, 58, 62, 60, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DODUO, 1, false, false, false, "Twin Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.4, 39.2, Abilities.RUN_AWAY, Abilities.EARLY_BIRD, Abilities.TANGLED_FEET, 310, 35, 85, 45, 35, 35, 75, 190, 70, 62, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.DODRIO, 1, false, false, false, "Triple Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.8, 85.2, Abilities.RUN_AWAY, Abilities.EARLY_BIRD, Abilities.TANGLED_FEET, 470, 60, 110, 70, 60, 60, 110, 45, 70, 165, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.SEEL, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 1.1, 90, Abilities.THICK_FAT, Abilities.HYDRATION, Abilities.ICE_BODY, 325, 65, 45, 55, 45, 70, 45, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DEWGONG, 1, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, PokemonType.ICE, 1.7, 120, Abilities.THICK_FAT, Abilities.HYDRATION, Abilities.ICE_BODY, 475, 90, 70, 80, 70, 95, 70, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GRIMER, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 0.9, 30, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.POISON_TOUCH, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MUK, 1, false, false, false, "Sludge Pokémon", PokemonType.POISON, null, 1.2, 30, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.POISON_TOUCH, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SHELLDER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.3, 4, Abilities.SHELL_ARMOR, Abilities.SKILL_LINK, Abilities.OVERCOAT, 305, 30, 65, 100, 45, 25, 40, 190, 50, 61, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.CLOYSTER, 1, false, false, false, "Bivalve Pokémon", PokemonType.WATER, PokemonType.ICE, 1.5, 132.5, Abilities.SHELL_ARMOR, Abilities.SKILL_LINK, Abilities.OVERCOAT, 525, 50, 95, 180, 85, 45, 70, 60, 50, 184, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.GASTLY, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.3, 0.1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 310, 30, 35, 30, 100, 35, 80, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.HAUNTER, 1, false, false, false, "Gas Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.6, 0.1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 405, 45, 50, 45, 115, 55, 95, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GENGAR, 1, false, false, false, "Shadow Pokémon", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GHOST, PokemonType.POISON, 1.5, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 500, 60, 65, 60, 130, 75, 110, 45, 50, 250, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, PokemonType.POISON, 1.4, 40.5, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.NONE, 600, 60, 65, 80, 170, 95, 130, 45, 50, 250), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GHOST, PokemonType.POISON, 20, 999.9, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 600, 140, 65, 70, 140, 85, 100, 45, 50, 250), + ), + new PokemonSpecies(Species.ONIX, 1, false, false, false, "Rock Snake Pokémon", PokemonType.ROCK, PokemonType.GROUND, 8.8, 210, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.WEAK_ARMOR, 385, 35, 45, 160, 30, 45, 70, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DROWZEE, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1, 32.4, Abilities.INSOMNIA, Abilities.FOREWARN, Abilities.INNER_FOCUS, 328, 60, 48, 45, 43, 90, 42, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.HYPNO, 1, false, false, false, "Hypnosis Pokémon", PokemonType.PSYCHIC, null, 1.6, 75.6, Abilities.INSOMNIA, Abilities.FOREWARN, Abilities.INNER_FOCUS, 483, 85, 73, 70, 73, 115, 67, 75, 70, 169, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.KRABBY, 1, false, false, false, "River Crab Pokémon", PokemonType.WATER, null, 0.4, 6.5, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 325, 30, 105, 90, 25, 25, 50, 225, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.KINGLER, 1, false, false, false, "Pincer Pokémon", PokemonType.WATER, null, 1.3, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 1.3, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 475, 55, 130, 115, 50, 50, 75, 60, 50, 166, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 19, 999.9, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 575, 90, 155, 140, 50, 70, 70, 60, 50, 166), + ), + new PokemonSpecies(Species.VOLTORB, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 0.5, 10.4, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 70, 66, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.ELECTRODE, 1, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, null, 1.2, 66.6, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.EXEGGCUTE, 1, false, false, false, "Egg Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 0.4, 2.5, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HARVEST, 325, 60, 40, 80, 60, 45, 40, 90, 50, 65, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.EXEGGUTOR, 1, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 2, 120, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HARVEST, 530, 95, 95, 85, 125, 75, 55, 45, 50, 186, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.CUBONE, 1, false, false, false, "Lonely Pokémon", PokemonType.GROUND, null, 0.4, 6.5, Abilities.ROCK_HEAD, Abilities.LIGHTNING_ROD, Abilities.BATTLE_ARMOR, 320, 50, 50, 95, 40, 50, 35, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MAROWAK, 1, false, false, false, "Bone Keeper Pokémon", PokemonType.GROUND, null, 1, 45, Abilities.ROCK_HEAD, Abilities.LIGHTNING_ROD, Abilities.BATTLE_ARMOR, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.HITMONLEE, 1, false, false, false, "Kicking Pokémon", PokemonType.FIGHTING, null, 1.5, 49.8, Abilities.LIMBER, Abilities.RECKLESS, Abilities.UNBURDEN, 455, 50, 120, 53, 35, 110, 87, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(Species.HITMONCHAN, 1, false, false, false, "Punching Pokémon", PokemonType.FIGHTING, null, 1.4, 50.2, Abilities.KEEN_EYE, Abilities.IRON_FIST, Abilities.INNER_FOCUS, 455, 50, 105, 79, 35, 110, 76, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(Species.LICKITUNG, 1, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.2, 65.5, Abilities.OWN_TEMPO, Abilities.OBLIVIOUS, Abilities.CLOUD_NINE, 385, 90, 55, 75, 60, 75, 30, 45, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.KOFFING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 0.6, 1, Abilities.LEVITATE, Abilities.NEUTRALIZING_GAS, Abilities.STENCH, 340, 40, 65, 95, 60, 45, 35, 190, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.WEEZING, 1, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, null, 1.2, 9.5, Abilities.LEVITATE, Abilities.NEUTRALIZING_GAS, Abilities.STENCH, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.RHYHORN, 1, false, false, false, "Spikes Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1, 115, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, Abilities.RECKLESS, 345, 80, 85, 95, 30, 30, 25, 120, 50, 69, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.RHYDON, 1, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 1.9, 120, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, Abilities.RECKLESS, 485, 105, 130, 120, 45, 45, 40, 60, 50, 170, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.CHANSEY, 1, false, false, false, "Egg Pokémon", PokemonType.NORMAL, null, 1.1, 34.6, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.HEALER, 450, 250, 5, 5, 35, 105, 50, 30, 140, 395, GrowthRate.FAST, 0, false), + new PokemonSpecies(Species.TANGELA, 1, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 1, 35, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.REGENERATOR, 435, 65, 55, 115, 100, 40, 60, 45, 50, 87, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.KANGASKHAN, 1, false, false, false, "Parent Pokémon", PokemonType.NORMAL, null, 2.2, 80, Abilities.EARLY_BIRD, Abilities.SCRAPPY, Abilities.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, GrowthRate.MEDIUM_FAST, 0, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.2, 80, Abilities.EARLY_BIRD, Abilities.SCRAPPY, Abilities.INNER_FOCUS, 490, 105, 95, 80, 40, 80, 90, 45, 50, 172, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, null, 2.2, 100, Abilities.PARENTAL_BOND, Abilities.PARENTAL_BOND, Abilities.PARENTAL_BOND, 590, 105, 125, 100, 60, 100, 100, 45, 50, 172), + ), + new PokemonSpecies(Species.HORSEA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 0.4, 8, Abilities.SWIFT_SWIM, Abilities.SNIPER, Abilities.DAMP, 295, 30, 40, 70, 70, 25, 60, 225, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SEADRA, 1, false, false, false, "Dragon Pokémon", PokemonType.WATER, null, 1.2, 25, Abilities.POISON_POINT, Abilities.SNIPER, Abilities.DAMP, 440, 55, 65, 95, 95, 45, 85, 75, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GOLDEEN, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 0.6, 15, Abilities.SWIFT_SWIM, Abilities.WATER_VEIL, Abilities.LIGHTNING_ROD, 320, 45, 67, 60, 35, 50, 63, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.SEAKING, 1, false, false, false, "Goldfish Pokémon", PokemonType.WATER, null, 1.3, 39, Abilities.SWIFT_SWIM, Abilities.WATER_VEIL, Abilities.LIGHTNING_ROD, 450, 80, 92, 65, 65, 80, 68, 60, 50, 158, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.STARYU, 1, false, false, false, "Star Shape Pokémon", PokemonType.WATER, null, 0.8, 34.5, Abilities.ILLUMINATE, Abilities.NATURAL_CURE, Abilities.ANALYTIC, 340, 30, 45, 55, 70, 55, 85, 225, 50, 68, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.STARMIE, 1, false, false, false, "Mysterious Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 1.1, 80, Abilities.ILLUMINATE, Abilities.NATURAL_CURE, Abilities.ANALYTIC, 520, 60, 75, 85, 100, 85, 115, 60, 50, 182, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.MR_MIME, 1, false, false, false, "Barrier Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.3, 54.5, Abilities.SOUNDPROOF, Abilities.FILTER, Abilities.TECHNICIAN, 460, 40, 45, 65, 100, 120, 90, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SCYTHER, 1, false, false, false, "Mantis Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.5, 56, Abilities.SWARM, Abilities.TECHNICIAN, Abilities.STEADFAST, 500, 70, 110, 80, 55, 80, 105, 45, 50, 100, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.JYNX, 1, false, false, false, "Human Shape Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 40.6, Abilities.OBLIVIOUS, Abilities.FOREWARN, Abilities.DRY_SKIN, 455, 65, 50, 35, 115, 95, 95, 45, 50, 159, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(Species.ELECTABUZZ, 1, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 1.1, 30, Abilities.STATIC, Abilities.NONE, Abilities.VITAL_SPIRIT, 490, 65, 83, 57, 95, 85, 105, 45, 50, 172, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(Species.MAGMAR, 1, false, false, false, "Spitfire Pokémon", PokemonType.FIRE, null, 1.3, 44.5, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 495, 65, 95, 57, 100, 85, 93, 45, 50, 173, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(Species.PINSIR, 1, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, null, 1.5, 55, Abilities.HYPER_CUTTER, Abilities.MOLD_BREAKER, Abilities.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, null, 1.5, 55, Abilities.HYPER_CUTTER, Abilities.MOLD_BREAKER, Abilities.MOXIE, 500, 65, 125, 100, 55, 70, 85, 45, 50, 175, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FLYING, 1.7, 59, Abilities.AERILATE, Abilities.AERILATE, Abilities.AERILATE, 600, 65, 155, 120, 65, 90, 105, 45, 50, 175), + ), + new PokemonSpecies(Species.TAUROS, 1, false, false, false, "Wild Bull Pokémon", PokemonType.NORMAL, null, 1.4, 88.4, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.SHEER_FORCE, 490, 75, 100, 95, 40, 70, 110, 45, 50, 172, GrowthRate.SLOW, 100, false), + new PokemonSpecies(Species.MAGIKARP, 1, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.9, 10, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.RATTLED, 200, 20, 10, 55, 15, 20, 80, 255, 50, 40, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.GYARADOS, 1, false, false, false, "Atrocious Pokémon", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.FLYING, 6.5, 235, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 540, 95, 125, 79, 60, 100, 81, 45, 50, 189, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 6.5, 305, Abilities.MOLD_BREAKER, Abilities.MOLD_BREAKER, Abilities.MOLD_BREAKER, 640, 95, 155, 109, 70, 130, 81, 45, 50, 189, true), + ), + new PokemonSpecies(Species.LAPRAS, 1, false, false, false, "Transport Pokémon", PokemonType.WATER, PokemonType.ICE, 2.5, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ICE, 2.5, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 535, 130, 85, 80, 85, 95, 60, 45, 50, 187, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ICE, 24, 999.9, Abilities.SHIELD_DUST, Abilities.SHIELD_DUST, Abilities.SHIELD_DUST, 635, 170, 85, 85, 105, 130, 60, 45, 50, 187), + ), + new PokemonSpecies(Species.DITTO, 1, false, false, false, "Transform Pokémon", PokemonType.NORMAL, null, 0.3, 4, Abilities.LIMBER, Abilities.NONE, Abilities.IMPOSTER, 288, 48, 48, 48, 48, 48, 48, 35, 50, 101, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.EEVEE, 1, false, false, false, "Evolution Pokémon", PokemonType.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, GrowthRate.MEDIUM_FAST, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 325, 55, 55, 50, 45, 65, 55, 45, 50, 65, false, null, true), + new PokemonForm("Partner", "partner", PokemonType.NORMAL, null, 0.3, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 435, 65, 75, 70, 65, 85, 75, 45, 50, 65, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 18, 999.9, Abilities.PROTEAN, Abilities.PROTEAN, Abilities.PROTEAN, 535, 110, 90, 70, 95, 85, 85, 45, 50, 65), //+100 BST from Partner Form + ), + new PokemonSpecies(Species.VAPOREON, 1, false, false, false, "Bubble Jet Pokémon", PokemonType.WATER, null, 1, 29, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.HYDRATION, 525, 130, 65, 60, 110, 95, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.JOLTEON, 1, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.8, 24.5, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.QUICK_FEET, 525, 65, 65, 60, 110, 95, 130, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.FLAREON, 1, false, false, false, "Flame Pokémon", PokemonType.FIRE, null, 0.9, 25, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.GUTS, 525, 65, 130, 60, 95, 110, 65, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.PORYGON, 1, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.8, 36.5, Abilities.TRACE, Abilities.DOWNLOAD, Abilities.ANALYTIC, 395, 65, 60, 70, 85, 75, 40, 45, 50, 79, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.OMANYTE, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.4, 7.5, Abilities.SWIFT_SWIM, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 355, 35, 40, 100, 90, 55, 35, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.OMASTAR, 1, false, false, false, "Spiral Pokémon", PokemonType.ROCK, PokemonType.WATER, 1, 35, Abilities.SWIFT_SWIM, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 495, 70, 60, 125, 115, 70, 55, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.KABUTO, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 11.5, Abilities.SWIFT_SWIM, Abilities.BATTLE_ARMOR, Abilities.WEAK_ARMOR, 355, 30, 80, 90, 55, 45, 55, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.KABUTOPS, 1, false, false, false, "Shellfish Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 40.5, Abilities.SWIFT_SWIM, Abilities.BATTLE_ARMOR, Abilities.WEAK_ARMOR, 495, 60, 115, 105, 65, 70, 80, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.AERODACTYL, 1, false, false, false, "Fossil Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, Abilities.ROCK_HEAD, Abilities.PRESSURE, Abilities.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, GrowthRate.SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FLYING, 1.8, 59, Abilities.ROCK_HEAD, Abilities.PRESSURE, Abilities.UNNERVE, 515, 80, 105, 65, 60, 75, 130, 45, 50, 180, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FLYING, 2.1, 79, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 615, 80, 135, 85, 70, 95, 150, 45, 50, 180), + ), + new PokemonSpecies(Species.SNORLAX, 1, false, false, false, "Sleeping Pokémon", PokemonType.NORMAL, null, 2.1, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, GrowthRate.SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 2.1, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 540, 160, 110, 65, 65, 110, 30, 25, 50, 189, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.NORMAL, null, 35, 999.9, Abilities.HARVEST, Abilities.HARVEST, Abilities.HARVEST, 640, 200, 135, 80, 80, 125, 20, 25, 50, 189), + ), + new PokemonSpecies(Species.ARTICUNO, 1, true, false, false, "Freeze Pokémon", PokemonType.ICE, PokemonType.FLYING, 1.7, 55.4, Abilities.PRESSURE, Abilities.NONE, Abilities.SNOW_CLOAK, 580, 90, 85, 100, 95, 125, 85, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ZAPDOS, 1, true, false, false, "Electric Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.6, 52.6, Abilities.PRESSURE, Abilities.NONE, Abilities.STATIC, 580, 90, 90, 85, 125, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.MOLTRES, 1, true, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FLYING, 2, 60, Abilities.PRESSURE, Abilities.NONE, Abilities.FLAME_BODY, 580, 90, 100, 90, 125, 85, 90, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.DRATINI, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 1.8, 3.3, Abilities.SHED_SKIN, Abilities.NONE, Abilities.MARVEL_SCALE, 300, 41, 64, 45, 50, 50, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.DRAGONAIR, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 4, 16.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.MARVEL_SCALE, 420, 61, 84, 65, 70, 70, 70, 45, 35, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.DRAGONITE, 1, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 2.2, 210, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.MULTISCALE, 600, 91, 134, 95, 100, 100, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.MEWTWO, 1, false, true, false, "Genetic Pokémon", PokemonType.PSYCHIC, null, 2, 122, Abilities.PRESSURE, Abilities.NONE, Abilities.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2, 122, Abilities.PRESSURE, Abilities.NONE, Abilities.UNNERVE, 680, 106, 110, 90, 154, 90, 130, 3, 0, 340, false, null, true), + new PokemonForm("Mega X", SpeciesFormKey.MEGA_X, PokemonType.PSYCHIC, PokemonType.FIGHTING, 2.3, 127, Abilities.STEADFAST, Abilities.NONE, Abilities.STEADFAST, 780, 106, 190, 100, 154, 100, 130, 3, 0, 340), + new PokemonForm("Mega Y", SpeciesFormKey.MEGA_Y, PokemonType.PSYCHIC, null, 1.5, 33, Abilities.INSOMNIA, Abilities.NONE, Abilities.INSOMNIA, 780, 106, 150, 70, 194, 120, 140, 3, 0, 340), + ), + new PokemonSpecies(Species.MEW, 1, false, false, true, "New Species Pokémon", PokemonType.PSYCHIC, null, 0.4, 4, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(Species.CHIKORITA, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 0.9, 6.4, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 318, 45, 49, 65, 49, 65, 45, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.BAYLEEF, 2, false, false, false, "Leaf Pokémon", PokemonType.GRASS, null, 1.2, 15.8, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 405, 60, 62, 80, 63, 80, 60, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.MEGANIUM, 2, false, false, false, "Herb Pokémon", PokemonType.GRASS, null, 1.8, 100.5, Abilities.OVERGROW, Abilities.NONE, Abilities.LEAF_GUARD, 525, 80, 82, 100, 83, 100, 80, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(Species.CYNDAQUIL, 2, false, false, false, "Fire Mouse Pokémon", PokemonType.FIRE, null, 0.5, 7.9, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 309, 39, 52, 43, 60, 50, 65, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.QUILAVA, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 0.9, 19, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 405, 58, 64, 58, 80, 65, 80, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.TYPHLOSION, 2, false, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 1.7, 79.5, Abilities.BLAZE, Abilities.NONE, Abilities.FLASH_FIRE, 534, 78, 84, 78, 109, 85, 100, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.TOTODILE, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 0.6, 9.5, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 314, 50, 65, 64, 44, 48, 43, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.CROCONAW, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 1.1, 25, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 405, 65, 80, 80, 59, 63, 58, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.FERALIGATR, 2, false, false, false, "Big Jaw Pokémon", PokemonType.WATER, null, 2.3, 88.8, Abilities.TORRENT, Abilities.NONE, Abilities.SHEER_FORCE, 530, 85, 105, 100, 79, 83, 78, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.SENTRET, 2, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.8, 6, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.FRISK, 215, 35, 46, 34, 35, 45, 20, 255, 70, 43, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FURRET, 2, false, false, false, "Long Body Pokémon", PokemonType.NORMAL, null, 1.8, 32.5, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.FRISK, 415, 85, 76, 64, 45, 55, 90, 90, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.HOOTHOOT, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 21.2, Abilities.INSOMNIA, Abilities.KEEN_EYE, Abilities.TINTED_LENS, 262, 60, 30, 30, 36, 56, 50, 255, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.NOCTOWL, 2, false, false, false, "Owl Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.6, 40.8, Abilities.INSOMNIA, Abilities.KEEN_EYE, Abilities.TINTED_LENS, 452, 100, 50, 50, 86, 96, 70, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.LEDYBA, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 10.8, Abilities.SWARM, Abilities.EARLY_BIRD, Abilities.RATTLED, 265, 40, 20, 30, 40, 80, 55, 255, 70, 53, GrowthRate.FAST, 50, true), + new PokemonSpecies(Species.LEDIAN, 2, false, false, false, "Five Star Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.4, 35.6, Abilities.SWARM, Abilities.EARLY_BIRD, Abilities.IRON_FIST, 390, 55, 35, 50, 55, 110, 85, 90, 70, 137, GrowthRate.FAST, 50, true), + new PokemonSpecies(Species.SPINARAK, 2, false, false, false, "String Spit Pokémon", PokemonType.BUG, PokemonType.POISON, 0.5, 8.5, Abilities.SWARM, Abilities.INSOMNIA, Abilities.SNIPER, 250, 40, 60, 40, 40, 40, 30, 255, 70, 50, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.ARIADOS, 2, false, false, false, "Long Leg Pokémon", PokemonType.BUG, PokemonType.POISON, 1.1, 33.5, Abilities.SWARM, Abilities.INSOMNIA, Abilities.SNIPER, 400, 70, 90, 70, 60, 70, 40, 90, 70, 140, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.CROBAT, 2, false, false, false, "Bat Pokémon", PokemonType.POISON, PokemonType.FLYING, 1.8, 75, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.INFILTRATOR, 535, 85, 90, 80, 70, 80, 130, 90, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CHINCHOU, 2, false, false, false, "Angler Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 0.5, 12, Abilities.VOLT_ABSORB, Abilities.ILLUMINATE, Abilities.WATER_ABSORB, 330, 75, 38, 38, 56, 56, 67, 190, 50, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.LANTURN, 2, false, false, false, "Light Pokémon", PokemonType.WATER, PokemonType.ELECTRIC, 1.2, 22.5, Abilities.VOLT_ABSORB, Abilities.ILLUMINATE, Abilities.WATER_ABSORB, 460, 125, 58, 58, 76, 76, 67, 75, 50, 161, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.PICHU, 2, false, false, false, "Tiny Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), + new PokemonForm("Spiky-Eared", "spiky", PokemonType.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 205, 20, 40, 15, 35, 35, 60, 190, 70, 41, false, null, true), + ), + new PokemonSpecies(Species.CLEFFA, 2, false, false, false, "Star Shape Pokémon", PokemonType.FAIRY, null, 0.3, 3, Abilities.CUTE_CHARM, Abilities.MAGIC_GUARD, Abilities.FRIEND_GUARD, 218, 50, 25, 28, 45, 55, 15, 150, 140, 44, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.IGGLYBUFF, 2, false, false, false, "Balloon Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.3, 1, Abilities.CUTE_CHARM, Abilities.COMPETITIVE, Abilities.FRIEND_GUARD, 210, 90, 30, 15, 40, 20, 15, 170, 50, 42, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.TOGEPI, 2, false, false, false, "Spike Ball Pokémon", PokemonType.FAIRY, null, 0.3, 1.5, Abilities.HUSTLE, Abilities.SERENE_GRACE, Abilities.SUPER_LUCK, 245, 35, 20, 65, 40, 65, 20, 190, 50, 49, GrowthRate.FAST, 87.5, false), + new PokemonSpecies(Species.TOGETIC, 2, false, false, false, "Happiness Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 0.6, 3.2, Abilities.HUSTLE, Abilities.SERENE_GRACE, Abilities.SUPER_LUCK, 405, 55, 40, 85, 80, 105, 40, 75, 50, 142, GrowthRate.FAST, 87.5, false), + new PokemonSpecies(Species.NATU, 2, false, false, false, "Tiny Bird Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.2, 2, Abilities.SYNCHRONIZE, Abilities.EARLY_BIRD, Abilities.MAGIC_BOUNCE, 320, 40, 50, 45, 70, 45, 70, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.XATU, 2, false, false, false, "Mystic Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.5, 15, Abilities.SYNCHRONIZE, Abilities.EARLY_BIRD, Abilities.MAGIC_BOUNCE, 470, 65, 75, 70, 95, 70, 95, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.MAREEP, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.6, 7.8, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 280, 55, 40, 40, 65, 45, 35, 235, 70, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.FLAAFFY, 2, false, false, false, "Wool Pokémon", PokemonType.ELECTRIC, null, 0.8, 13.3, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 365, 70, 55, 55, 80, 60, 45, 120, 70, 128, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.AMPHAROS, 2, false, false, false, "Light Pokémon", PokemonType.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.4, 61.5, Abilities.STATIC, Abilities.NONE, Abilities.PLUS, 510, 90, 75, 85, 115, 90, 55, 45, 70, 255, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, PokemonType.DRAGON, 1.4, 61.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.MOLD_BREAKER, 610, 90, 95, 105, 165, 110, 45, 45, 70, 255), + ), + new PokemonSpecies(Species.BELLOSSOM, 2, false, false, false, "Flower Pokémon", PokemonType.GRASS, null, 0.4, 5.8, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.HEALER, 490, 75, 80, 95, 90, 100, 50, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.MARILL, 2, false, false, false, "Aqua Mouse Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.4, 8.5, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 250, 70, 20, 50, 20, 50, 40, 190, 50, 88, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.AZUMARILL, 2, false, false, false, "Aqua Rabbit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 0.8, 28.5, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 420, 100, 50, 80, 60, 80, 50, 75, 50, 210, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.SUDOWOODO, 2, false, false, false, "Imitation Pokémon", PokemonType.ROCK, null, 1.2, 38, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.RATTLED, 410, 70, 100, 115, 30, 65, 30, 65, 50, 144, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.POLITOED, 2, false, false, false, "Frog Pokémon", PokemonType.WATER, null, 1.1, 33.9, Abilities.WATER_ABSORB, Abilities.DAMP, Abilities.DRIZZLE, 500, 90, 75, 75, 90, 100, 70, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.HOPPIP, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.4, 0.5, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 250, 35, 35, 40, 35, 55, 50, 255, 70, 50, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SKIPLOOM, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.6, 1, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 340, 55, 45, 50, 45, 65, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.JUMPLUFF, 2, false, false, false, "Cottonweed Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.8, 3, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.INFILTRATOR, 460, 75, 55, 70, 55, 95, 110, 45, 70, 230, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.AIPOM, 2, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 0.8, 11.5, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.SKILL_LINK, 360, 55, 70, 55, 40, 55, 85, 45, 70, 72, GrowthRate.FAST, 50, true), + new PokemonSpecies(Species.SUNKERN, 2, false, false, false, "Seed Pokémon", PokemonType.GRASS, null, 0.3, 1.8, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.EARLY_BIRD, 180, 30, 30, 30, 30, 30, 30, 235, 70, 36, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SUNFLORA, 2, false, false, false, "Sun Pokémon", PokemonType.GRASS, null, 0.8, 8.5, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.EARLY_BIRD, 425, 75, 75, 55, 105, 85, 30, 120, 70, 149, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.YANMA, 2, false, false, false, "Clear Wing Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38, Abilities.SPEED_BOOST, Abilities.COMPOUND_EYES, Abilities.FRISK, 390, 65, 65, 45, 75, 45, 95, 75, 70, 78, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.WOOPER, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 8.5, Abilities.DAMP, Abilities.WATER_ABSORB, Abilities.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.QUAGSIRE, 2, false, false, false, "Water Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.4, 75, Abilities.DAMP, Abilities.WATER_ABSORB, Abilities.UNAWARE, 430, 95, 85, 85, 65, 65, 35, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.ESPEON, 2, false, false, false, "Sun Pokémon", PokemonType.PSYCHIC, null, 0.9, 26.5, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.MAGIC_BOUNCE, 525, 65, 65, 60, 130, 95, 110, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.UMBREON, 2, false, false, false, "Moonlight Pokémon", PokemonType.DARK, null, 1, 27, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.INNER_FOCUS, 525, 95, 65, 110, 60, 130, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.MURKROW, 2, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 2.1, Abilities.INSOMNIA, Abilities.SUPER_LUCK, Abilities.PRANKSTER, 405, 60, 85, 42, 85, 42, 91, 30, 35, 81, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.SLOWKING, 2, false, false, false, "Royal Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2, 79.5, Abilities.OBLIVIOUS, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 75, 80, 100, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MISDREAVUS, 2, false, false, false, "Screech Pokémon", PokemonType.GHOST, null, 0.7, 1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 435, 60, 60, 60, 85, 85, 85, 45, 35, 87, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.UNOWN, 2, false, false, false, "Symbol Pokémon", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("A", "a", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("B", "b", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("C", "c", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("D", "d", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("E", "e", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("F", "f", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("G", "g", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("H", "h", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("I", "i", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("J", "j", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("K", "k", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("L", "l", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("M", "m", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("N", "n", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("O", "o", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("P", "p", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("Q", "q", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("R", "r", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("S", "s", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("T", "t", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("U", "u", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("V", "v", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("W", "w", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("X", "x", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("Y", "y", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("Z", "z", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("!", "exclamation", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + new PokemonForm("?", "question", PokemonType.PSYCHIC, null, 0.5, 5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 336, 48, 72, 48, 72, 48, 48, 225, 70, 118, false, null, true), + ), + new PokemonSpecies(Species.WOBBUFFET, 2, false, false, false, "Patient Pokémon", PokemonType.PSYCHIC, null, 1.3, 28.5, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.TELEPATHY, 405, 190, 33, 58, 33, 58, 33, 45, 50, 142, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.GIRAFARIG, 2, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 41.5, Abilities.INNER_FOCUS, Abilities.EARLY_BIRD, Abilities.SAP_SIPPER, 455, 70, 80, 65, 90, 65, 85, 60, 70, 159, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.PINECO, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.6, 7.2, Abilities.STURDY, Abilities.NONE, Abilities.OVERCOAT, 290, 50, 65, 90, 35, 35, 15, 190, 70, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FORRETRESS, 2, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.2, 125.8, Abilities.STURDY, Abilities.NONE, Abilities.OVERCOAT, 465, 75, 90, 140, 60, 60, 40, 75, 70, 163, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DUNSPARCE, 2, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 1.5, 14, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 415, 100, 70, 70, 65, 65, 45, 190, 50, 145, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GLIGAR, 2, false, false, false, "Fly Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.1, 64.8, Abilities.HYPER_CUTTER, Abilities.SAND_VEIL, Abilities.IMMUNITY, 430, 65, 75, 105, 35, 65, 85, 60, 70, 86, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.STEELIX, 2, false, false, false, "Iron Snake Pokémon", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.GROUND, 9.2, 400, Abilities.ROCK_HEAD, Abilities.STURDY, Abilities.SHEER_FORCE, 510, 75, 85, 200, 55, 65, 30, 25, 50, 179, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.GROUND, 10.5, 740, Abilities.SAND_FORCE, Abilities.SAND_FORCE, Abilities.SAND_FORCE, 610, 75, 125, 230, 55, 95, 30, 25, 50, 179, true), + ), + new PokemonSpecies(Species.SNUBBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 0.6, 7.8, Abilities.INTIMIDATE, Abilities.RUN_AWAY, Abilities.RATTLED, 300, 60, 80, 50, 40, 40, 30, 190, 70, 60, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.GRANBULL, 2, false, false, false, "Fairy Pokémon", PokemonType.FAIRY, null, 1.4, 48.7, Abilities.INTIMIDATE, Abilities.QUICK_FEET, Abilities.RATTLED, 450, 90, 120, 75, 60, 60, 45, 75, 70, 158, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.QWILFISH, 2, false, false, false, "Balloon Pokémon", PokemonType.WATER, PokemonType.POISON, 0.5, 3.9, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SCIZOR, 2, false, false, false, "Pincer Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, Abilities.SWARM, Abilities.TECHNICIAN, Abilities.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.8, 118, Abilities.SWARM, Abilities.TECHNICIAN, Abilities.LIGHT_METAL, 500, 70, 130, 100, 55, 80, 65, 25, 50, 175, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.STEEL, 2, 125, Abilities.TECHNICIAN, Abilities.TECHNICIAN, Abilities.TECHNICIAN, 600, 70, 150, 140, 65, 100, 75, 25, 50, 175, true), + ), + new PokemonSpecies(Species.SHUCKLE, 2, false, false, false, "Mold Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.6, 20.5, Abilities.STURDY, Abilities.GLUTTONY, Abilities.CONTRARY, 505, 20, 10, 230, 10, 230, 5, 190, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.HERACROSS, 2, false, false, false, "Single Horn Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, Abilities.SWARM, Abilities.GUTS, Abilities.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.FIGHTING, 1.5, 54, Abilities.SWARM, Abilities.GUTS, Abilities.MOXIE, 500, 80, 125, 75, 40, 95, 85, 45, 50, 175, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.BUG, PokemonType.FIGHTING, 1.7, 62.5, Abilities.SKILL_LINK, Abilities.SKILL_LINK, Abilities.SKILL_LINK, 600, 80, 185, 115, 40, 105, 75, 45, 50, 175, true), + ), + new PokemonSpecies(Species.SNEASEL, 2, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 0.9, 28, Abilities.INNER_FOCUS, Abilities.KEEN_EYE, Abilities.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.TEDDIURSA, 2, false, false, false, "Little Bear Pokémon", PokemonType.NORMAL, null, 0.6, 8.8, Abilities.PICKUP, Abilities.QUICK_FEET, Abilities.HONEY_GATHER, 330, 60, 80, 50, 50, 50, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.URSARING, 2, false, false, false, "Hibernator Pokémon", PokemonType.NORMAL, null, 1.8, 125.8, Abilities.GUTS, Abilities.QUICK_FEET, Abilities.UNNERVE, 500, 90, 130, 75, 75, 75, 55, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.SLUGMA, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, null, 0.7, 35, Abilities.MAGMA_ARMOR, Abilities.FLAME_BODY, Abilities.WEAK_ARMOR, 250, 40, 40, 40, 70, 40, 20, 190, 70, 50, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MAGCARGO, 2, false, false, false, "Lava Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 55, Abilities.MAGMA_ARMOR, Abilities.FLAME_BODY, Abilities.WEAK_ARMOR, 430, 60, 50, 120, 90, 80, 30, 75, 70, 151, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SWINUB, 2, false, false, false, "Pig Pokémon", PokemonType.ICE, PokemonType.GROUND, 0.4, 6.5, Abilities.OBLIVIOUS, Abilities.SNOW_CLOAK, Abilities.THICK_FAT, 250, 50, 50, 40, 30, 30, 50, 225, 50, 50, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.PILOSWINE, 2, false, false, false, "Swine Pokémon", PokemonType.ICE, PokemonType.GROUND, 1.1, 55.8, Abilities.OBLIVIOUS, Abilities.SNOW_CLOAK, Abilities.THICK_FAT, 450, 100, 100, 80, 60, 60, 50, 75, 50, 158, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.CORSOLA, 2, false, false, false, "Coral Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.6, 5, Abilities.HUSTLE, Abilities.NATURAL_CURE, Abilities.REGENERATOR, 410, 65, 55, 95, 65, 95, 35, 60, 50, 144, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.REMORAID, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.6, 12, Abilities.HUSTLE, Abilities.SNIPER, Abilities.MOODY, 300, 35, 65, 35, 65, 35, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.OCTILLERY, 2, false, false, false, "Jet Pokémon", PokemonType.WATER, null, 0.9, 28.5, Abilities.SUCTION_CUPS, Abilities.SNIPER, Abilities.MOODY, 480, 75, 105, 75, 105, 75, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.DELIBIRD, 2, false, false, false, "Delivery Pokémon", PokemonType.ICE, PokemonType.FLYING, 0.9, 16, Abilities.VITAL_SPIRIT, Abilities.HUSTLE, Abilities.INSOMNIA, 330, 45, 55, 45, 65, 45, 75, 45, 50, 116, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.MANTINE, 2, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 2.1, 220, Abilities.SWIFT_SWIM, Abilities.WATER_ABSORB, Abilities.WATER_VEIL, 485, 85, 40, 70, 80, 140, 70, 25, 50, 170, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.SKARMORY, 2, false, false, false, "Armor Bird Pokémon", PokemonType.STEEL, PokemonType.FLYING, 1.7, 50.5, Abilities.KEEN_EYE, Abilities.STURDY, Abilities.WEAK_ARMOR, 465, 65, 80, 140, 40, 70, 70, 25, 50, 163, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.HOUNDOUR, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.6, 10.8, Abilities.EARLY_BIRD, Abilities.FLASH_FIRE, Abilities.UNNERVE, 330, 45, 60, 30, 80, 50, 65, 120, 35, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.HOUNDOOM, 2, false, false, false, "Dark Pokémon", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, Abilities.EARLY_BIRD, Abilities.FLASH_FIRE, Abilities.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FIRE, 1.4, 35, Abilities.EARLY_BIRD, Abilities.FLASH_FIRE, Abilities.UNNERVE, 500, 75, 90, 50, 110, 80, 95, 45, 35, 175, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.FIRE, 1.9, 49.5, Abilities.SOLAR_POWER, Abilities.SOLAR_POWER, Abilities.SOLAR_POWER, 600, 75, 90, 90, 140, 90, 115, 45, 35, 175, true), + ), + new PokemonSpecies(Species.KINGDRA, 2, false, false, false, "Dragon Pokémon", PokemonType.WATER, PokemonType.DRAGON, 1.8, 152, Abilities.SWIFT_SWIM, Abilities.SNIPER, Abilities.DAMP, 540, 75, 95, 95, 95, 95, 85, 45, 50, 270, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PHANPY, 2, false, false, false, "Long Nose Pokémon", PokemonType.GROUND, null, 0.5, 33.5, Abilities.PICKUP, Abilities.NONE, Abilities.SAND_VEIL, 330, 90, 60, 60, 40, 40, 40, 120, 70, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DONPHAN, 2, false, false, false, "Armor Pokémon", PokemonType.GROUND, null, 1.1, 120, Abilities.STURDY, Abilities.NONE, Abilities.SAND_VEIL, 500, 90, 120, 120, 60, 60, 50, 60, 70, 175, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.PORYGON2, 2, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.6, 32.5, Abilities.TRACE, Abilities.DOWNLOAD, Abilities.ANALYTIC, 515, 85, 80, 90, 105, 95, 60, 45, 50, 180, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.STANTLER, 2, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, null, 1.4, 71.2, Abilities.INTIMIDATE, Abilities.FRISK, Abilities.SAP_SIPPER, 465, 73, 95, 62, 85, 65, 85, 45, 70, 163, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.SMEARGLE, 2, false, false, false, "Painter Pokémon", PokemonType.NORMAL, null, 1.2, 58, Abilities.OWN_TEMPO, Abilities.TECHNICIAN, Abilities.MOODY, 250, 55, 20, 35, 20, 45, 75, 45, 70, 88, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.TYROGUE, 2, false, false, false, "Scuffle Pokémon", PokemonType.FIGHTING, null, 0.7, 21, Abilities.GUTS, Abilities.STEADFAST, Abilities.VITAL_SPIRIT, 210, 35, 35, 35, 35, 35, 35, 75, 50, 42, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(Species.HITMONTOP, 2, false, false, false, "Handstand Pokémon", PokemonType.FIGHTING, null, 1.4, 48, Abilities.INTIMIDATE, Abilities.TECHNICIAN, Abilities.STEADFAST, 455, 50, 95, 95, 35, 110, 70, 45, 50, 159, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(Species.SMOOCHUM, 2, false, false, false, "Kiss Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 0.4, 6, Abilities.OBLIVIOUS, Abilities.FOREWARN, Abilities.HYDRATION, 305, 45, 30, 15, 85, 65, 65, 45, 50, 61, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(Species.ELEKID, 2, false, false, false, "Electric Pokémon", PokemonType.ELECTRIC, null, 0.6, 23.5, Abilities.STATIC, Abilities.NONE, Abilities.VITAL_SPIRIT, 360, 45, 63, 37, 65, 55, 95, 45, 50, 72, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(Species.MAGBY, 2, false, false, false, "Live Coal Pokémon", PokemonType.FIRE, null, 0.7, 21.4, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 365, 45, 75, 37, 70, 55, 83, 45, 50, 73, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(Species.MILTANK, 2, false, false, false, "Milk Cow Pokémon", PokemonType.NORMAL, null, 1.2, 75.5, Abilities.THICK_FAT, Abilities.SCRAPPY, Abilities.SAP_SIPPER, 490, 95, 80, 105, 40, 70, 100, 45, 50, 172, GrowthRate.SLOW, 0, false), + new PokemonSpecies(Species.BLISSEY, 2, false, false, false, "Happiness Pokémon", PokemonType.NORMAL, null, 1.5, 46.8, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.HEALER, 540, 255, 10, 10, 75, 135, 55, 30, 140, 608, GrowthRate.FAST, 0, false), + new PokemonSpecies(Species.RAIKOU, 2, true, false, false, "Thunder Pokémon", PokemonType.ELECTRIC, null, 1.9, 178, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 90, 85, 75, 115, 100, 115, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ENTEI, 2, true, false, false, "Volcano Pokémon", PokemonType.FIRE, null, 2.1, 198, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 115, 115, 85, 90, 75, 100, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.SUICUNE, 2, true, false, false, "Aurora Pokémon", PokemonType.WATER, null, 2, 187, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 100, 75, 115, 90, 115, 85, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.LARVITAR, 2, false, false, false, "Rock Skin Pokémon", PokemonType.ROCK, PokemonType.GROUND, 0.6, 72, Abilities.GUTS, Abilities.NONE, Abilities.SAND_VEIL, 300, 50, 64, 50, 45, 50, 41, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.PUPITAR, 2, false, false, false, "Hard Shell Pokémon", PokemonType.ROCK, PokemonType.GROUND, 1.2, 152, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 410, 70, 84, 70, 65, 70, 51, 45, 35, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.TYRANITAR, 2, false, false, false, "Armor Pokémon", PokemonType.ROCK, PokemonType.DARK, 2, 202, Abilities.SAND_STREAM, Abilities.NONE, Abilities.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.DARK, 2, 202, Abilities.SAND_STREAM, Abilities.NONE, Abilities.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.DARK, 2.5, 255, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_STREAM, 700, 100, 164, 150, 95, 120, 71, 45, 35, 300), + ), + new PokemonSpecies(Species.LUGIA, 2, false, true, false, "Diving Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 5.2, 216, Abilities.PRESSURE, Abilities.NONE, Abilities.MULTISCALE, 680, 106, 90, 130, 90, 154, 110, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.HO_OH, 2, false, true, false, "Rainbow Pokémon", PokemonType.FIRE, PokemonType.FLYING, 3.8, 199, Abilities.PRESSURE, Abilities.NONE, Abilities.REGENERATOR, 680, 106, 130, 90, 110, 154, 90, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.CELEBI, 2, false, false, true, "Time Travel Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 0.6, 5, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(Species.TREECKO, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.5, 5, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 310, 40, 45, 35, 65, 55, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.GROVYLE, 3, false, false, false, "Wood Gecko Pokémon", PokemonType.GRASS, null, 0.9, 21.6, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 405, 50, 65, 45, 85, 65, 95, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.SCEPTILE, 3, false, false, false, "Forest Pokémon", PokemonType.GRASS, null, 1.7, 52.2, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, null, 1.7, 52.2, Abilities.OVERGROW, Abilities.NONE, Abilities.UNBURDEN, 530, 70, 85, 65, 105, 85, 120, 45, 50, 265, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.DRAGON, 1.9, 55.2, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.LIGHTNING_ROD, 630, 70, 110, 75, 145, 85, 145, 45, 50, 265), + ), + new PokemonSpecies(Species.TORCHIC, 3, false, false, false, "Chick Pokémon", PokemonType.FIRE, null, 0.4, 2.5, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 310, 45, 60, 40, 70, 50, 45, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(Species.COMBUSKEN, 3, false, false, false, "Young Fowl Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 19.5, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 405, 60, 85, 60, 85, 60, 55, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(Species.BLAZIKEN, 3, false, false, false, "Blaze Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, true, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, Abilities.BLAZE, Abilities.NONE, Abilities.SPEED_BOOST, 530, 80, 120, 70, 110, 70, 80, 45, 50, 265, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.FIGHTING, 1.9, 52, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.SPEED_BOOST, 630, 80, 160, 80, 130, 80, 100, 45, 50, 265, true), + ), + new PokemonSpecies(Species.MUDKIP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, null, 0.4, 7.6, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 310, 50, 70, 50, 50, 50, 40, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.MARSHTOMP, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.7, 28, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 405, 70, 85, 70, 60, 70, 50, 45, 50, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.SWAMPERT, 3, false, false, false, "Mud Fish Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.GROUND, 1.5, 81.9, Abilities.TORRENT, Abilities.NONE, Abilities.DAMP, 535, 100, 110, 90, 85, 90, 60, 45, 50, 268, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.GROUND, 1.9, 102, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.SWIFT_SWIM, 635, 100, 150, 110, 95, 110, 70, 45, 50, 268), + ), + new PokemonSpecies(Species.POOCHYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 0.5, 13.6, Abilities.RUN_AWAY, Abilities.QUICK_FEET, Abilities.RATTLED, 220, 35, 55, 35, 30, 30, 35, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MIGHTYENA, 3, false, false, false, "Bite Pokémon", PokemonType.DARK, null, 1, 37, Abilities.INTIMIDATE, Abilities.QUICK_FEET, Abilities.MOXIE, 420, 70, 90, 70, 60, 60, 70, 127, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ZIGZAGOON, 3, false, false, false, "Tiny Raccoon Pokémon", PokemonType.NORMAL, null, 0.4, 17.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.LINOONE, 3, false, false, false, "Rushing Pokémon", PokemonType.NORMAL, null, 0.5, 32.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.WURMPLE, 3, false, false, false, "Worm Pokémon", PokemonType.BUG, null, 0.3, 3.6, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.RUN_AWAY, 195, 45, 45, 35, 20, 30, 20, 255, 70, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SILCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.6, 10, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BEAUTIFLY, 3, false, false, false, "Butterfly Pokémon", PokemonType.BUG, PokemonType.FLYING, 1, 28.4, Abilities.SWARM, Abilities.NONE, Abilities.RIVALRY, 395, 60, 70, 50, 100, 50, 65, 45, 70, 198, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.CASCOON, 3, false, false, false, "Cocoon Pokémon", PokemonType.BUG, null, 0.7, 11.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 205, 50, 35, 55, 25, 25, 15, 120, 70, 72, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DUSTOX, 3, false, false, false, "Poison Moth Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 31.6, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.COMPOUND_EYES, 385, 60, 50, 70, 50, 90, 65, 45, 70, 193, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.LOTAD, 3, false, false, false, "Water Weed Pokémon", PokemonType.WATER, PokemonType.GRASS, 0.5, 2.6, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 220, 40, 30, 30, 40, 50, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.LOMBRE, 3, false, false, false, "Jolly Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.2, 32.5, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 340, 60, 50, 50, 60, 70, 50, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.LUDICOLO, 3, false, false, false, "Carefree Pokémon", PokemonType.WATER, PokemonType.GRASS, 1.5, 55, Abilities.SWIFT_SWIM, Abilities.RAIN_DISH, Abilities.OWN_TEMPO, 480, 80, 70, 70, 90, 100, 70, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.SEEDOT, 3, false, false, false, "Acorn Pokémon", PokemonType.GRASS, null, 0.5, 4, Abilities.CHLOROPHYLL, Abilities.EARLY_BIRD, Abilities.PICKPOCKET, 220, 40, 40, 50, 30, 30, 30, 255, 50, 44, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.NUZLEAF, 3, false, false, false, "Wily Pokémon", PokemonType.GRASS, PokemonType.DARK, 1, 28, Abilities.CHLOROPHYLL, Abilities.EARLY_BIRD, Abilities.PICKPOCKET, 340, 70, 70, 40, 60, 40, 60, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.SHIFTRY, 3, false, false, false, "Wicked Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 59.6, Abilities.CHLOROPHYLL, Abilities.WIND_RIDER, Abilities.PICKPOCKET, 480, 90, 100, 60, 90, 60, 80, 45, 50, 240, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.TAILLOW, 3, false, false, false, "Tiny Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.3, Abilities.GUTS, Abilities.NONE, Abilities.SCRAPPY, 270, 40, 55, 30, 30, 30, 85, 200, 70, 54, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SWELLOW, 3, false, false, false, "Swallow Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.7, 19.8, Abilities.GUTS, Abilities.NONE, Abilities.SCRAPPY, 455, 60, 85, 60, 75, 50, 125, 45, 70, 159, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.WINGULL, 3, false, false, false, "Seagull Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.6, 9.5, Abilities.KEEN_EYE, Abilities.HYDRATION, Abilities.RAIN_DISH, 270, 40, 30, 30, 55, 30, 85, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PELIPPER, 3, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.2, 28, Abilities.KEEN_EYE, Abilities.DRIZZLE, Abilities.RAIN_DISH, 440, 60, 50, 100, 95, 70, 65, 45, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.RALTS, 3, false, false, false, "Feeling Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.4, 6.6, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 198, 28, 25, 25, 45, 35, 40, 235, 35, 40, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.KIRLIA, 3, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.8, 20.2, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 278, 38, 35, 35, 65, 55, 50, 120, 35, 97, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.GARDEVOIR, 3, false, false, false, "Embrace Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, Abilities.SYNCHRONIZE, Abilities.TRACE, Abilities.TELEPATHY, 518, 68, 65, 65, 125, 115, 80, 45, 35, 259, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FAIRY, 1.6, 48.4, Abilities.PIXILATE, Abilities.PIXILATE, Abilities.PIXILATE, 618, 68, 85, 65, 165, 135, 100, 45, 35, 259), + ), + new PokemonSpecies(Species.SURSKIT, 3, false, false, false, "Pond Skater Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 1.7, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.RAIN_DISH, 269, 40, 30, 32, 50, 52, 65, 200, 70, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MASQUERAIN, 3, false, false, false, "Eyeball Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 3.6, Abilities.INTIMIDATE, Abilities.NONE, Abilities.UNNERVE, 454, 70, 60, 62, 100, 82, 80, 75, 70, 159, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SHROOMISH, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, null, 0.4, 4.5, Abilities.EFFECT_SPORE, Abilities.POISON_HEAL, Abilities.QUICK_FEET, 295, 60, 40, 60, 40, 60, 35, 255, 70, 59, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(Species.BRELOOM, 3, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 39.2, Abilities.EFFECT_SPORE, Abilities.POISON_HEAL, Abilities.TECHNICIAN, 460, 60, 130, 80, 60, 60, 70, 90, 70, 161, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(Species.SLAKOTH, 3, false, false, false, "Slacker Pokémon", PokemonType.NORMAL, null, 0.8, 24, Abilities.TRUANT, Abilities.NONE, Abilities.STALL, 280, 60, 60, 60, 35, 35, 30, 255, 70, 56, GrowthRate.SLOW, 50, false), //Custom Hidden + new PokemonSpecies(Species.VIGOROTH, 3, false, false, false, "Wild Monkey Pokémon", PokemonType.NORMAL, null, 1.4, 46.5, Abilities.VITAL_SPIRIT, Abilities.NONE, Abilities.INSOMNIA, 440, 80, 80, 80, 55, 55, 90, 120, 70, 154, GrowthRate.SLOW, 50, false), //Custom Hidden + new PokemonSpecies(Species.SLAKING, 3, false, false, false, "Lazy Pokémon", PokemonType.NORMAL, null, 2, 130.5, Abilities.TRUANT, Abilities.NONE, Abilities.STALL, 670, 150, 160, 100, 95, 65, 100, 45, 70, 285, GrowthRate.SLOW, 50, false), //Custom Hidden + new PokemonSpecies(Species.NINCADA, 3, false, false, false, "Trainee Pokémon", PokemonType.BUG, PokemonType.GROUND, 0.5, 5.5, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.RUN_AWAY, 266, 31, 45, 90, 30, 30, 40, 255, 50, 53, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.NINJASK, 3, false, false, false, "Ninja Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.8, 12, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.INFILTRATOR, 456, 61, 90, 45, 50, 50, 160, 120, 50, 160, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.SHEDINJA, 3, false, false, false, "Shed Pokémon", PokemonType.BUG, PokemonType.GHOST, 0.8, 1.2, Abilities.WONDER_GUARD, Abilities.NONE, Abilities.NONE, 236, 1, 90, 45, 30, 30, 40, 45, 50, 83, GrowthRate.ERRATIC, null, false), + new PokemonSpecies(Species.WHISMUR, 3, false, false, false, "Whisper Pokémon", PokemonType.NORMAL, null, 0.6, 16.3, Abilities.SOUNDPROOF, Abilities.NONE, Abilities.RATTLED, 240, 64, 51, 23, 51, 23, 28, 190, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.LOUDRED, 3, false, false, false, "Big Voice Pokémon", PokemonType.NORMAL, null, 1, 40.5, Abilities.SOUNDPROOF, Abilities.NONE, Abilities.SCRAPPY, 360, 84, 71, 43, 71, 43, 48, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.EXPLOUD, 3, false, false, false, "Loud Noise Pokémon", PokemonType.NORMAL, null, 1.5, 84, Abilities.SOUNDPROOF, Abilities.NONE, Abilities.SCRAPPY, 490, 104, 91, 63, 91, 73, 68, 45, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.MAKUHITA, 3, false, false, false, "Guts Pokémon", PokemonType.FIGHTING, null, 1, 86.4, Abilities.THICK_FAT, Abilities.GUTS, Abilities.SHEER_FORCE, 237, 72, 60, 30, 20, 30, 25, 180, 70, 47, GrowthRate.FLUCTUATING, 75, false), + new PokemonSpecies(Species.HARIYAMA, 3, false, false, false, "Arm Thrust Pokémon", PokemonType.FIGHTING, null, 2.3, 253.8, Abilities.THICK_FAT, Abilities.GUTS, Abilities.SHEER_FORCE, 474, 144, 120, 60, 40, 60, 50, 200, 70, 166, GrowthRate.FLUCTUATING, 75, false), + new PokemonSpecies(Species.AZURILL, 3, false, false, false, "Polka Dot Pokémon", PokemonType.NORMAL, PokemonType.FAIRY, 0.2, 2, Abilities.THICK_FAT, Abilities.HUGE_POWER, Abilities.SAP_SIPPER, 190, 50, 20, 40, 20, 40, 20, 150, 50, 38, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.NOSEPASS, 3, false, false, false, "Compass Pokémon", PokemonType.ROCK, null, 1, 97, Abilities.STURDY, Abilities.MAGNET_PULL, Abilities.SAND_FORCE, 375, 30, 45, 135, 45, 90, 30, 255, 70, 75, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SKITTY, 3, false, false, false, "Kitten Pokémon", PokemonType.NORMAL, null, 0.6, 11, Abilities.CUTE_CHARM, Abilities.NORMALIZE, Abilities.WONDER_SKIN, 260, 50, 45, 45, 35, 35, 50, 255, 70, 52, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.DELCATTY, 3, false, false, false, "Prim Pokémon", PokemonType.NORMAL, null, 1.1, 32.6, Abilities.CUTE_CHARM, Abilities.NORMALIZE, Abilities.WONDER_SKIN, 400, 70, 65, 65, 55, 55, 90, 60, 70, 140, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.SABLEYE, 3, false, false, false, "Darkness Pokémon", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, Abilities.KEEN_EYE, Abilities.STALL, Abilities.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GHOST, 0.5, 11, Abilities.KEEN_EYE, Abilities.STALL, Abilities.PRANKSTER, 380, 50, 75, 75, 65, 65, 50, 45, 35, 133, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, PokemonType.GHOST, 0.5, 161, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 480, 50, 85, 125, 85, 115, 20, 45, 35, 133), + ), + new PokemonSpecies(Species.MAWILE, 3, false, false, false, "Deceiver Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, Abilities.HYPER_CUTTER, Abilities.INTIMIDATE, Abilities.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, GrowthRate.FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 0.6, 11.5, Abilities.HYPER_CUTTER, Abilities.INTIMIDATE, Abilities.SHEER_FORCE, 380, 50, 85, 85, 55, 55, 50, 45, 50, 133, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.FAIRY, 1, 23.5, Abilities.HUGE_POWER, Abilities.HUGE_POWER, Abilities.HUGE_POWER, 480, 50, 105, 125, 55, 95, 50, 45, 50, 133), + ), + new PokemonSpecies(Species.ARON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.4, 60, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 330, 50, 70, 100, 40, 40, 30, 180, 35, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.LAIRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 0.9, 120, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 430, 60, 90, 140, 50, 50, 40, 90, 35, 151, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.AGGRON, 3, false, false, false, "Iron Armor Pokémon", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.ROCK, 2.1, 360, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.HEAVY_METAL, 530, 70, 110, 180, 60, 60, 50, 45, 35, 265, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, null, 2.2, 395, Abilities.FILTER, Abilities.FILTER, Abilities.FILTER, 630, 70, 140, 230, 60, 80, 50, 45, 35, 265), + ), + new PokemonSpecies(Species.MEDITITE, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 0.6, 11.2, Abilities.PURE_POWER, Abilities.NONE, Abilities.TELEPATHY, 280, 30, 40, 55, 40, 55, 60, 180, 70, 56, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.MEDICHAM, 3, false, false, false, "Meditate Pokémon", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, Abilities.PURE_POWER, Abilities.NONE, Abilities.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, Abilities.PURE_POWER, Abilities.NONE, Abilities.TELEPATHY, 410, 60, 60, 75, 60, 75, 80, 90, 70, 144, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.PSYCHIC, 1.3, 31.5, Abilities.PURE_POWER, Abilities.NONE, Abilities.PURE_POWER, 510, 60, 100, 85, 80, 85, 100, 90, 70, 144, true), + ), + new PokemonSpecies(Species.ELECTRIKE, 3, false, false, false, "Lightning Pokémon", PokemonType.ELECTRIC, null, 0.6, 15.2, Abilities.STATIC, Abilities.LIGHTNING_ROD, Abilities.MINUS, 295, 40, 45, 40, 65, 40, 65, 120, 50, 59, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.MANECTRIC, 3, false, false, false, "Discharge Pokémon", PokemonType.ELECTRIC, null, 1.5, 40.2, Abilities.STATIC, Abilities.LIGHTNING_ROD, Abilities.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, null, 1.5, 40.2, Abilities.STATIC, Abilities.LIGHTNING_ROD, Abilities.MINUS, 475, 70, 75, 60, 105, 60, 105, 45, 50, 166, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ELECTRIC, null, 1.8, 44, Abilities.INTIMIDATE, Abilities.INTIMIDATE, Abilities.INTIMIDATE, 575, 70, 75, 80, 135, 80, 135, 45, 50, 166), + ), + new PokemonSpecies(Species.PLUSLE, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, Abilities.PLUS, Abilities.NONE, Abilities.LIGHTNING_ROD, 405, 60, 50, 40, 85, 75, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MINUN, 3, false, false, false, "Cheering Pokémon", PokemonType.ELECTRIC, null, 0.4, 4.2, Abilities.MINUS, Abilities.NONE, Abilities.VOLT_ABSORB, 405, 60, 40, 50, 75, 85, 95, 200, 70, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.VOLBEAT, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.7, 17.7, Abilities.ILLUMINATE, Abilities.SWARM, Abilities.PRANKSTER, 430, 65, 73, 75, 47, 85, 85, 150, 70, 151, GrowthRate.ERRATIC, 100, false), + new PokemonSpecies(Species.ILLUMISE, 3, false, false, false, "Firefly Pokémon", PokemonType.BUG, null, 0.6, 17.7, Abilities.OBLIVIOUS, Abilities.TINTED_LENS, Abilities.PRANKSTER, 430, 65, 47, 75, 73, 85, 85, 150, 70, 151, GrowthRate.FLUCTUATING, 0, false), + new PokemonSpecies(Species.ROSELIA, 3, false, false, false, "Thorn Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.3, 2, Abilities.NATURAL_CURE, Abilities.POISON_POINT, Abilities.LEAF_GUARD, 400, 50, 60, 45, 100, 80, 65, 150, 50, 140, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.GULPIN, 3, false, false, false, "Stomach Pokémon", PokemonType.POISON, null, 0.4, 10.3, Abilities.LIQUID_OOZE, Abilities.STICKY_HOLD, Abilities.GLUTTONY, 302, 70, 43, 53, 43, 53, 40, 225, 70, 60, GrowthRate.FLUCTUATING, 50, true), + new PokemonSpecies(Species.SWALOT, 3, false, false, false, "Poison Bag Pokémon", PokemonType.POISON, null, 1.7, 80, Abilities.LIQUID_OOZE, Abilities.STICKY_HOLD, Abilities.GLUTTONY, 467, 100, 73, 83, 73, 83, 55, 75, 70, 163, GrowthRate.FLUCTUATING, 50, true), + new PokemonSpecies(Species.CARVANHA, 3, false, false, false, "Savage Pokémon", PokemonType.WATER, PokemonType.DARK, 0.8, 20.8, Abilities.ROUGH_SKIN, Abilities.NONE, Abilities.SPEED_BOOST, 305, 45, 90, 20, 65, 20, 65, 225, 35, 61, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.SHARPEDO, 3, false, false, false, "Brutal Pokémon", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, Abilities.ROUGH_SKIN, Abilities.NONE, Abilities.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.8, 88.8, Abilities.ROUGH_SKIN, Abilities.NONE, Abilities.SPEED_BOOST, 460, 70, 120, 40, 95, 40, 95, 60, 35, 161, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.WATER, PokemonType.DARK, 2.5, 130.3, Abilities.STRONG_JAW, Abilities.NONE, Abilities.STRONG_JAW, 560, 70, 140, 70, 110, 65, 105, 60, 35, 161), + ), + new PokemonSpecies(Species.WAILMER, 3, false, false, false, "Ball Whale Pokémon", PokemonType.WATER, null, 2, 130, Abilities.WATER_VEIL, Abilities.OBLIVIOUS, Abilities.PRESSURE, 400, 130, 70, 35, 70, 35, 60, 125, 50, 80, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(Species.WAILORD, 3, false, false, false, "Float Whale Pokémon", PokemonType.WATER, null, 14.5, 398, Abilities.WATER_VEIL, Abilities.OBLIVIOUS, Abilities.PRESSURE, 500, 170, 90, 45, 90, 45, 60, 60, 50, 175, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(Species.NUMEL, 3, false, false, false, "Numb Pokémon", PokemonType.FIRE, PokemonType.GROUND, 0.7, 24, Abilities.OBLIVIOUS, Abilities.SIMPLE, Abilities.OWN_TEMPO, 305, 60, 60, 40, 65, 45, 35, 255, 70, 61, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.CAMERUPT, 3, false, false, false, "Eruption Pokémon", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, Abilities.MAGMA_ARMOR, Abilities.SOLID_ROCK, Abilities.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, GrowthRate.MEDIUM_FAST, 50, true, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.GROUND, 1.9, 220, Abilities.MAGMA_ARMOR, Abilities.SOLID_ROCK, Abilities.ANGER_POINT, 460, 70, 100, 70, 105, 75, 40, 150, 70, 161, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIRE, PokemonType.GROUND, 2.5, 320.5, Abilities.SHEER_FORCE, Abilities.SHEER_FORCE, Abilities.SHEER_FORCE, 560, 70, 120, 100, 145, 105, 20, 150, 70, 161), + ), + new PokemonSpecies(Species.TORKOAL, 3, false, false, false, "Coal Pokémon", PokemonType.FIRE, null, 0.5, 80.4, Abilities.WHITE_SMOKE, Abilities.DROUGHT, Abilities.SHELL_ARMOR, 470, 70, 85, 140, 85, 70, 20, 90, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SPOINK, 3, false, false, false, "Bounce Pokémon", PokemonType.PSYCHIC, null, 0.7, 30.6, Abilities.THICK_FAT, Abilities.OWN_TEMPO, Abilities.GLUTTONY, 330, 60, 25, 35, 70, 80, 60, 255, 70, 66, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.GRUMPIG, 3, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.9, 71.5, Abilities.THICK_FAT, Abilities.OWN_TEMPO, Abilities.GLUTTONY, 470, 80, 45, 65, 90, 110, 80, 60, 70, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.SPINDA, 3, false, false, false, "Spot Panda Pokémon", PokemonType.NORMAL, null, 1.1, 5, Abilities.OWN_TEMPO, Abilities.TANGLED_FEET, Abilities.CONTRARY, 360, 60, 60, 60, 60, 60, 60, 255, 70, 126, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.TRAPINCH, 3, false, false, false, "Ant Pit Pokémon", PokemonType.GROUND, null, 0.7, 15, Abilities.HYPER_CUTTER, Abilities.ARENA_TRAP, Abilities.SHEER_FORCE, 290, 45, 100, 45, 45, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.VIBRAVA, 3, false, false, false, "Vibration Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 1.1, 15.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 340, 50, 70, 50, 50, 50, 70, 120, 50, 119, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.FLYGON, 3, false, false, false, "Mystic Pokémon", PokemonType.GROUND, PokemonType.DRAGON, 2, 82, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 80, 100, 80, 80, 80, 100, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CACNEA, 3, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 0.4, 51.3, Abilities.SAND_VEIL, Abilities.NONE, Abilities.WATER_ABSORB, 335, 50, 85, 40, 85, 40, 35, 190, 35, 67, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CACTURNE, 3, false, false, false, "Scarecrow Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.3, 77.4, Abilities.SAND_VEIL, Abilities.NONE, Abilities.WATER_ABSORB, 475, 70, 115, 60, 115, 60, 55, 60, 35, 166, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.SWABLU, 3, false, false, false, "Cotton Bird Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.4, 1.2, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.CLOUD_NINE, 310, 45, 40, 60, 40, 75, 50, 255, 50, 62, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.ALTARIA, 3, false, false, false, "Humming Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, GrowthRate.ERRATIC, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.1, 20.6, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.CLOUD_NINE, 490, 75, 70, 90, 70, 105, 80, 45, 50, 172, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FAIRY, 1.5, 20.6, Abilities.PIXILATE, Abilities.NONE, Abilities.PIXILATE, 590, 75, 110, 110, 110, 105, 80, 45, 50, 172), + ), + new PokemonSpecies(Species.ZANGOOSE, 3, false, false, false, "Cat Ferret Pokémon", PokemonType.NORMAL, null, 1.3, 40.3, Abilities.IMMUNITY, Abilities.NONE, Abilities.TOXIC_BOOST, 458, 73, 115, 60, 60, 60, 90, 90, 70, 160, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.SEVIPER, 3, false, false, false, "Fang Snake Pokémon", PokemonType.POISON, null, 2.7, 52.5, Abilities.SHED_SKIN, Abilities.NONE, Abilities.INFILTRATOR, 458, 73, 100, 60, 100, 60, 65, 90, 70, 160, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(Species.LUNATONE, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1, 168, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 460, 90, 55, 65, 95, 85, 70, 45, 50, 161, GrowthRate.FAST, null, false), + new PokemonSpecies(Species.SOLROCK, 3, false, false, false, "Meteorite Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.2, 154, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 460, 90, 95, 85, 55, 65, 70, 45, 50, 161, GrowthRate.FAST, null, false), + new PokemonSpecies(Species.BARBOACH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.4, 1.9, Abilities.OBLIVIOUS, Abilities.ANTICIPATION, Abilities.HYDRATION, 288, 50, 48, 43, 46, 41, 60, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.WHISCASH, 3, false, false, false, "Whiskers Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 23.6, Abilities.OBLIVIOUS, Abilities.ANTICIPATION, Abilities.HYDRATION, 468, 110, 78, 73, 76, 71, 60, 75, 50, 164, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CORPHISH, 3, false, false, false, "Ruffian Pokémon", PokemonType.WATER, null, 0.6, 11.5, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.ADAPTABILITY, 308, 43, 80, 65, 50, 35, 35, 205, 50, 62, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(Species.CRAWDAUNT, 3, false, false, false, "Rogue Pokémon", PokemonType.WATER, PokemonType.DARK, 1.1, 32.8, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.ADAPTABILITY, 468, 63, 120, 85, 90, 55, 55, 155, 50, 164, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(Species.BALTOY, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 0.5, 21.5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 300, 40, 40, 55, 40, 70, 55, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.CLAYDOL, 3, false, false, false, "Clay Doll Pokémon", PokemonType.GROUND, PokemonType.PSYCHIC, 1.5, 108, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 500, 60, 70, 105, 70, 120, 75, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.LILEEP, 3, false, false, false, "Sea Lily Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1, 23.8, Abilities.SUCTION_CUPS, Abilities.NONE, Abilities.STORM_DRAIN, 355, 66, 41, 77, 61, 87, 23, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(Species.CRADILY, 3, false, false, false, "Barnacle Pokémon", PokemonType.ROCK, PokemonType.GRASS, 1.5, 60.4, Abilities.SUCTION_CUPS, Abilities.NONE, Abilities.STORM_DRAIN, 495, 86, 81, 97, 81, 107, 43, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(Species.ANORITH, 3, false, false, false, "Old Shrimp Pokémon", PokemonType.ROCK, PokemonType.BUG, 0.7, 12.5, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.SWIFT_SWIM, 355, 45, 95, 50, 40, 50, 75, 45, 50, 71, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(Species.ARMALDO, 3, false, false, false, "Plate Pokémon", PokemonType.ROCK, PokemonType.BUG, 1.5, 68.2, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.SWIFT_SWIM, 495, 75, 125, 100, 70, 80, 45, 45, 50, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(Species.FEEBAS, 3, false, false, false, "Fish Pokémon", PokemonType.WATER, null, 0.6, 7.4, Abilities.SWIFT_SWIM, Abilities.OBLIVIOUS, Abilities.ADAPTABILITY, 200, 20, 15, 20, 10, 55, 80, 255, 50, 40, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.MILOTIC, 3, false, false, false, "Tender Pokémon", PokemonType.WATER, null, 6.2, 162, Abilities.MARVEL_SCALE, Abilities.COMPETITIVE, Abilities.CUTE_CHARM, 540, 95, 60, 79, 100, 125, 81, 60, 50, 189, GrowthRate.ERRATIC, 50, true), + new PokemonSpecies(Species.CASTFORM, 3, false, false, false, "Weather Pokémon", PokemonType.NORMAL, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147, false, null, true), + new PokemonForm("Sunny Form", "sunny", PokemonType.FIRE, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), + new PokemonForm("Rainy Form", "rainy", PokemonType.WATER, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), + new PokemonForm("Snowy Form", "snowy", PokemonType.ICE, null, 0.3, 0.8, Abilities.FORECAST, Abilities.NONE, Abilities.NONE, 420, 70, 70, 70, 70, 70, 70, 45, 70, 147), + ), + new PokemonSpecies(Species.KECLEON, 3, false, false, false, "Color Swap Pokémon", PokemonType.NORMAL, null, 1, 22, Abilities.COLOR_CHANGE, Abilities.NONE, Abilities.PROTEAN, 440, 60, 90, 70, 60, 120, 40, 200, 70, 154, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SHUPPET, 3, false, false, false, "Puppet Pokémon", PokemonType.GHOST, null, 0.6, 2.3, Abilities.INSOMNIA, Abilities.FRISK, Abilities.CURSED_BODY, 295, 44, 75, 35, 63, 33, 45, 225, 35, 59, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.BANETTE, 3, false, false, false, "Marionette Pokémon", PokemonType.GHOST, null, 1.1, 12.5, Abilities.INSOMNIA, Abilities.FRISK, Abilities.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, GrowthRate.FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GHOST, null, 1.1, 12.5, Abilities.INSOMNIA, Abilities.FRISK, Abilities.CURSED_BODY, 455, 64, 115, 65, 83, 63, 65, 45, 35, 159, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GHOST, null, 1.2, 13, Abilities.PRANKSTER, Abilities.PRANKSTER, Abilities.PRANKSTER, 555, 64, 165, 75, 93, 83, 75, 45, 35, 159), + ), + new PokemonSpecies(Species.DUSKULL, 3, false, false, false, "Requiem Pokémon", PokemonType.GHOST, null, 0.8, 15, Abilities.LEVITATE, Abilities.NONE, Abilities.FRISK, 295, 20, 40, 90, 30, 90, 25, 190, 35, 59, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.DUSCLOPS, 3, false, false, false, "Beckon Pokémon", PokemonType.GHOST, null, 1.6, 30.6, Abilities.PRESSURE, Abilities.NONE, Abilities.FRISK, 455, 40, 70, 130, 60, 130, 25, 90, 35, 159, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.TROPIUS, 3, false, false, false, "Fruit Pokémon", PokemonType.GRASS, PokemonType.FLYING, 2, 100, Abilities.CHLOROPHYLL, Abilities.SOLAR_POWER, Abilities.HARVEST, 460, 99, 68, 83, 72, 87, 51, 200, 70, 161, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.CHIMECHO, 3, false, false, false, "Wind Chime Pokémon", PokemonType.PSYCHIC, null, 0.6, 1, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 455, 75, 50, 80, 95, 90, 65, 45, 70, 159, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.ABSOL, 3, false, false, false, "Disaster Pokémon", PokemonType.DARK, null, 1.2, 47, Abilities.PRESSURE, Abilities.SUPER_LUCK, Abilities.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DARK, null, 1.2, 47, Abilities.PRESSURE, Abilities.SUPER_LUCK, Abilities.JUSTIFIED, 465, 65, 130, 60, 75, 60, 75, 30, 35, 163, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DARK, null, 1.2, 49, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 565, 65, 150, 60, 115, 60, 115, 30, 35, 163), + ), + new PokemonSpecies(Species.WYNAUT, 3, false, false, false, "Bright Pokémon", PokemonType.PSYCHIC, null, 0.6, 14, Abilities.SHADOW_TAG, Abilities.NONE, Abilities.TELEPATHY, 260, 95, 23, 48, 23, 48, 23, 125, 50, 52, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SNORUNT, 3, false, false, false, "Snow Hat Pokémon", PokemonType.ICE, null, 0.7, 16.8, Abilities.INNER_FOCUS, Abilities.ICE_BODY, Abilities.MOODY, 300, 50, 50, 50, 50, 50, 50, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GLALIE, 3, false, false, false, "Face Pokémon", PokemonType.ICE, null, 1.5, 256.5, Abilities.INNER_FOCUS, Abilities.ICE_BODY, Abilities.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ICE, null, 1.5, 256.5, Abilities.INNER_FOCUS, Abilities.ICE_BODY, Abilities.MOODY, 480, 80, 80, 80, 80, 80, 80, 75, 50, 168, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ICE, null, 2.1, 350.2, Abilities.REFRIGERATE, Abilities.REFRIGERATE, Abilities.REFRIGERATE, 580, 80, 120, 80, 120, 80, 100, 75, 50, 168), + ), + new PokemonSpecies(Species.SPHEAL, 3, false, false, false, "Clap Pokémon", PokemonType.ICE, PokemonType.WATER, 0.8, 39.5, Abilities.THICK_FAT, Abilities.ICE_BODY, Abilities.OBLIVIOUS, 290, 70, 40, 50, 55, 50, 25, 255, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SEALEO, 3, false, false, false, "Ball Roll Pokémon", PokemonType.ICE, PokemonType.WATER, 1.1, 87.6, Abilities.THICK_FAT, Abilities.ICE_BODY, Abilities.OBLIVIOUS, 410, 90, 60, 70, 75, 70, 45, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.WALREIN, 3, false, false, false, "Ice Break Pokémon", PokemonType.ICE, PokemonType.WATER, 1.4, 150.6, Abilities.THICK_FAT, Abilities.ICE_BODY, Abilities.OBLIVIOUS, 530, 110, 80, 90, 95, 90, 65, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CLAMPERL, 3, false, false, false, "Bivalve Pokémon", PokemonType.WATER, null, 0.4, 52.5, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.RATTLED, 345, 35, 64, 85, 74, 55, 32, 255, 70, 69, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.HUNTAIL, 3, false, false, false, "Deep Sea Pokémon", PokemonType.WATER, null, 1.7, 27, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.WATER_VEIL, 485, 55, 104, 105, 94, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.GOREBYSS, 3, false, false, false, "South Sea Pokémon", PokemonType.WATER, null, 1.8, 22.6, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.HYDRATION, 485, 55, 84, 105, 114, 75, 52, 60, 70, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.RELICANTH, 3, false, false, false, "Longevity Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 23.4, Abilities.SWIFT_SWIM, Abilities.ROCK_HEAD, Abilities.STURDY, 485, 100, 90, 130, 45, 65, 55, 25, 50, 170, GrowthRate.SLOW, 87.5, true), + new PokemonSpecies(Species.LUVDISC, 3, false, false, false, "Rendezvous Pokémon", PokemonType.WATER, null, 0.6, 8.7, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.HYDRATION, 330, 43, 30, 55, 40, 65, 97, 225, 70, 116, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.BAGON, 3, false, false, false, "Rock Head Pokémon", PokemonType.DRAGON, null, 0.6, 42.1, Abilities.ROCK_HEAD, Abilities.NONE, Abilities.SHEER_FORCE, 300, 45, 75, 60, 40, 30, 50, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.SHELGON, 3, false, false, false, "Endurance Pokémon", PokemonType.DRAGON, null, 1.1, 110.5, Abilities.ROCK_HEAD, Abilities.NONE, Abilities.OVERCOAT, 420, 65, 95, 100, 60, 50, 50, 45, 35, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.SALAMENCE, 3, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 1.5, 102.6, Abilities.INTIMIDATE, Abilities.NONE, Abilities.MOXIE, 600, 95, 135, 80, 110, 80, 100, 45, 35, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 1.8, 112.6, Abilities.AERILATE, Abilities.NONE, Abilities.AERILATE, 700, 95, 145, 130, 120, 90, 120, 45, 35, 300), + ), + new PokemonSpecies(Species.BELDUM, 3, false, false, false, "Iron Ball Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.6, 95.2, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 300, 40, 55, 80, 35, 60, 30, 45, 35, 60, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Frigibax + new PokemonSpecies(Species.METANG, 3, false, false, false, "Iron Claw Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.2, 202.5, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 420, 60, 75, 100, 55, 80, 50, 25, 35, 147, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Arctibax + new PokemonSpecies(Species.METAGROSS, 3, false, false, false, "Iron Leg Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 10, 35, 300, GrowthRate.SLOW, null, false, true, //Custom Catchrate, matching Baxcalibur + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 550, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 600, 80, 135, 130, 95, 90, 70, 3, 35, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.STEEL, PokemonType.PSYCHIC, 2.5, 942.9, Abilities.TOUGH_CLAWS, Abilities.NONE, Abilities.TOUGH_CLAWS, 700, 80, 145, 150, 105, 110, 110, 3, 35, 300), + ), + new PokemonSpecies(Species.REGIROCK, 3, true, false, false, "Rock Peak Pokémon", PokemonType.ROCK, null, 1.7, 230, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.STURDY, 580, 80, 100, 200, 50, 100, 50, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.REGICE, 3, true, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 1.8, 175, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.ICE_BODY, 580, 80, 50, 100, 100, 200, 50, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.REGISTEEL, 3, true, false, false, "Iron Pokémon", PokemonType.STEEL, null, 1.9, 205, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.LIGHT_METAL, 580, 80, 75, 150, 75, 150, 50, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.LATIAS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, GrowthRate.SLOW, 0, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 1.4, 40, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 80, 90, 110, 130, 110, 3, 90, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 1.8, 52, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 700, 80, 100, 120, 140, 150, 110, 3, 90, 300), + ), + new PokemonSpecies(Species.LATIOS, 3, true, false, false, "Eon Pokémon", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.PSYCHIC, 2, 60, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 80, 90, 80, 130, 110, 110, 3, 90, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.PSYCHIC, 2.3, 70, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 700, 80, 130, 100, 160, 120, 110, 3, 90, 300), + ), + new PokemonSpecies(Species.KYOGRE, 3, false, true, false, "Sea Basin Pokémon", PokemonType.WATER, null, 4.5, 352, Abilities.DRIZZLE, Abilities.NONE, Abilities.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 4.5, 352, Abilities.DRIZZLE, Abilities.NONE, Abilities.NONE, 670, 100, 100, 90, 150, 140, 90, 3, 0, 335, false, null, true), + new PokemonForm("Primal", "primal", PokemonType.WATER, null, 9.8, 430, Abilities.PRIMORDIAL_SEA, Abilities.NONE, Abilities.NONE, 770, 100, 150, 90, 180, 160, 90, 3, 0, 335), + ), + new PokemonSpecies(Species.GROUDON, 3, false, true, false, "Continent Pokémon", PokemonType.GROUND, null, 3.5, 950, Abilities.DROUGHT, Abilities.NONE, Abilities.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.5, 950, Abilities.DROUGHT, Abilities.NONE, Abilities.NONE, 670, 100, 150, 140, 100, 90, 90, 3, 0, 335, false, null, true), + new PokemonForm("Primal", "primal", PokemonType.GROUND, PokemonType.FIRE, 5, 999.7, Abilities.DESOLATE_LAND, Abilities.NONE, Abilities.NONE, 770, 100, 180, 160, 150, 90, 90, 3, 0, 335), + ), + new PokemonSpecies(Species.RAYQUAZA, 3, false, true, false, "Sky High Pokémon", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, Abilities.AIR_LOCK, Abilities.NONE, Abilities.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.FLYING, 7, 206.5, Abilities.AIR_LOCK, Abilities.NONE, Abilities.NONE, 680, 105, 150, 90, 150, 90, 95, 45, 0, 340, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.FLYING, 10.8, 392, Abilities.DELTA_STREAM, Abilities.NONE, Abilities.NONE, 780, 105, 180, 100, 180, 100, 115, 45, 0, 340), + ), + new PokemonSpecies(Species.JIRACHI, 3, false, false, true, "Wish Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.3, 1.1, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.DEOXYS, 3, false, false, true, "DNA Pokémon", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal Forme", "normal", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 150, 50, 150, 50, 150, 3, 0, 300, false, "", true), + new PokemonForm("Attack Forme", "attack", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 180, 20, 180, 20, 150, 3, 0, 300), + new PokemonForm("Defense Forme", "defense", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 70, 160, 70, 160, 90, 3, 0, 300), + new PokemonForm("Speed Forme", "speed", PokemonType.PSYCHIC, null, 1.7, 60.8, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 600, 50, 95, 90, 95, 90, 180, 3, 0, 300), + ), + new PokemonSpecies(Species.TURTWIG, 4, false, false, false, "Tiny Leaf Pokémon", PokemonType.GRASS, null, 0.4, 10.2, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 318, 55, 68, 64, 45, 55, 31, 45, 70, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.GROTLE, 4, false, false, false, "Grove Pokémon", PokemonType.GRASS, null, 1.1, 97, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 405, 75, 89, 85, 55, 65, 36, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.TORTERRA, 4, false, false, false, "Continent Pokémon", PokemonType.GRASS, PokemonType.GROUND, 2.2, 310, Abilities.OVERGROW, Abilities.NONE, Abilities.SHELL_ARMOR, 525, 95, 109, 105, 75, 85, 56, 45, 70, 263, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.CHIMCHAR, 4, false, false, false, "Chimp Pokémon", PokemonType.FIRE, null, 0.5, 6.2, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 309, 44, 58, 44, 58, 44, 61, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.MONFERNO, 4, false, false, false, "Playful Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 0.9, 22, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 405, 64, 78, 52, 78, 52, 81, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.INFERNAPE, 4, false, false, false, "Flame Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.2, 55, Abilities.BLAZE, Abilities.NONE, Abilities.IRON_FIST, 534, 76, 104, 71, 104, 71, 108, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.PIPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.4, 5.2, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 314, 53, 51, 53, 61, 56, 40, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.PRINPLUP, 4, false, false, false, "Penguin Pokémon", PokemonType.WATER, null, 0.8, 23, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 405, 64, 66, 68, 81, 76, 50, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.EMPOLEON, 4, false, false, false, "Emperor Pokémon", PokemonType.WATER, PokemonType.STEEL, 1.7, 84.5, Abilities.TORRENT, Abilities.NONE, Abilities.COMPETITIVE, 530, 84, 86, 88, 111, 101, 60, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.STARLY, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2, Abilities.KEEN_EYE, Abilities.NONE, Abilities.RECKLESS, 245, 40, 55, 30, 30, 30, 60, 255, 70, 49, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.STARAVIA, 4, false, false, false, "Starling Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15.5, Abilities.INTIMIDATE, Abilities.NONE, Abilities.RECKLESS, 340, 55, 75, 50, 40, 40, 80, 120, 70, 119, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.STARAPTOR, 4, false, false, false, "Predator Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 24.9, Abilities.INTIMIDATE, Abilities.NONE, Abilities.RECKLESS, 485, 85, 120, 70, 50, 60, 100, 45, 70, 243, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.BIDOOF, 4, false, false, false, "Plump Mouse Pokémon", PokemonType.NORMAL, null, 0.5, 20, Abilities.SIMPLE, Abilities.UNAWARE, Abilities.MOODY, 250, 59, 45, 40, 35, 40, 31, 255, 70, 50, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.BIBAREL, 4, false, false, false, "Beaver Pokémon", PokemonType.NORMAL, PokemonType.WATER, 1, 31.5, Abilities.SIMPLE, Abilities.UNAWARE, Abilities.MOODY, 410, 79, 85, 60, 55, 60, 71, 127, 70, 144, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.KRICKETOT, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 0.3, 2.2, Abilities.SHED_SKIN, Abilities.NONE, Abilities.RUN_AWAY, 194, 37, 25, 41, 25, 41, 25, 255, 70, 39, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.KRICKETUNE, 4, false, false, false, "Cricket Pokémon", PokemonType.BUG, null, 1, 25.5, Abilities.SWARM, Abilities.NONE, Abilities.TECHNICIAN, 384, 77, 85, 51, 55, 51, 65, 45, 70, 134, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.SHINX, 4, false, false, false, "Flash Pokémon", PokemonType.ELECTRIC, null, 0.5, 9.5, Abilities.RIVALRY, Abilities.INTIMIDATE, Abilities.GUTS, 263, 45, 65, 34, 40, 34, 45, 235, 50, 53, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.LUXIO, 4, false, false, false, "Spark Pokémon", PokemonType.ELECTRIC, null, 0.9, 30.5, Abilities.RIVALRY, Abilities.INTIMIDATE, Abilities.GUTS, 363, 60, 85, 49, 60, 49, 60, 120, 100, 127, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.LUXRAY, 4, false, false, false, "Gleam Eyes Pokémon", PokemonType.ELECTRIC, null, 1.4, 42, Abilities.RIVALRY, Abilities.INTIMIDATE, Abilities.GUTS, 523, 80, 120, 79, 95, 79, 70, 45, 50, 262, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.BUDEW, 4, false, false, false, "Bud Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1.2, Abilities.NATURAL_CURE, Abilities.POISON_POINT, Abilities.LEAF_GUARD, 280, 40, 30, 35, 50, 70, 55, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.ROSERADE, 4, false, false, false, "Bouquet Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.9, 14.5, Abilities.NATURAL_CURE, Abilities.POISON_POINT, Abilities.TECHNICIAN, 515, 60, 70, 65, 125, 105, 90, 75, 50, 258, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.CRANIDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 0.9, 31.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.SHEER_FORCE, 350, 67, 125, 40, 30, 30, 58, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(Species.RAMPARDOS, 4, false, false, false, "Head Butt Pokémon", PokemonType.ROCK, null, 1.6, 102.5, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.SHEER_FORCE, 495, 97, 165, 60, 65, 50, 58, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(Species.SHIELDON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 0.5, 57, Abilities.STURDY, Abilities.NONE, Abilities.SOUNDPROOF, 350, 30, 42, 118, 42, 88, 30, 45, 70, 70, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(Species.BASTIODON, 4, false, false, false, "Shield Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.3, 149.5, Abilities.STURDY, Abilities.NONE, Abilities.SOUNDPROOF, 495, 60, 52, 168, 47, 138, 30, 45, 70, 173, GrowthRate.ERRATIC, 87.5, false), + new PokemonSpecies(Species.BURMY, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), + new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), + new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, null, 0.2, 3.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.OVERCOAT, 224, 40, 29, 45, 29, 45, 36, 120, 70, 45, false, null, true), + ), + new PokemonSpecies(Species.WORMADAM, 4, false, false, false, "Bagworm Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Plant Cloak", "plant", PokemonType.BUG, PokemonType.GRASS, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 59, 85, 79, 105, 36, 45, 70, 148, false, null, true), + new PokemonForm("Sandy Cloak", "sandy", PokemonType.BUG, PokemonType.GROUND, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 79, 105, 59, 85, 36, 45, 70, 148, false, null, true), + new PokemonForm("Trash Cloak", "trash", PokemonType.BUG, PokemonType.STEEL, 0.5, 6.5, Abilities.ANTICIPATION, Abilities.NONE, Abilities.OVERCOAT, 424, 60, 69, 95, 69, 95, 36, 45, 70, 148, false, null, true), + ), + new PokemonSpecies(Species.MOTHIM, 4, false, false, false, "Moth Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.9, 23.3, Abilities.SWARM, Abilities.NONE, Abilities.TINTED_LENS, 424, 70, 94, 50, 94, 50, 66, 45, 70, 148, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(Species.COMBEE, 4, false, false, false, "Tiny Bee Pokémon", PokemonType.BUG, PokemonType.FLYING, 0.3, 5.5, Abilities.HONEY_GATHER, Abilities.NONE, Abilities.HUSTLE, 244, 30, 30, 42, 30, 42, 70, 120, 50, 49, GrowthRate.MEDIUM_SLOW, 87.5, true), + new PokemonSpecies(Species.VESPIQUEN, 4, false, false, false, "Beehive Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 38.5, Abilities.PRESSURE, Abilities.NONE, Abilities.UNNERVE, 474, 70, 80, 102, 80, 102, 40, 45, 50, 166, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.PACHIRISU, 4, false, false, false, "EleSquirrel Pokémon", PokemonType.ELECTRIC, null, 0.4, 3.9, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.VOLT_ABSORB, 405, 60, 45, 70, 45, 90, 95, 200, 100, 142, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.BUIZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 0.7, 29.5, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.WATER_VEIL, 330, 55, 65, 35, 60, 30, 85, 190, 70, 66, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.FLOATZEL, 4, false, false, false, "Sea Weasel Pokémon", PokemonType.WATER, null, 1.1, 33.5, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.WATER_VEIL, 495, 85, 105, 55, 85, 50, 115, 75, 70, 173, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.CHERUBI, 4, false, false, false, "Cherry Pokémon", PokemonType.GRASS, null, 0.4, 3.3, Abilities.CHLOROPHYLL, Abilities.NONE, Abilities.NONE, 275, 45, 35, 45, 62, 53, 35, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CHERRIM, 4, false, false, false, "Blossom Pokémon", PokemonType.GRASS, null, 0.5, 9.3, Abilities.FLOWER_GIFT, Abilities.NONE, Abilities.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Overcast Form", "overcast", PokemonType.GRASS, null, 0.5, 9.3, Abilities.FLOWER_GIFT, Abilities.NONE, Abilities.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158, false, null, true), + new PokemonForm("Sunshine Form", "sunshine", PokemonType.GRASS, null, 0.5, 9.3, Abilities.FLOWER_GIFT, Abilities.NONE, Abilities.NONE, 450, 70, 60, 70, 87, 78, 85, 75, 50, 158), + ), + new PokemonSpecies(Species.SHELLOS, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, null, 0.3, 6.3, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("East Sea", "east", PokemonType.WATER, null, 0.3, 6.3, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), + new PokemonForm("West Sea", "west", PokemonType.WATER, null, 0.3, 6.3, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 325, 76, 48, 48, 57, 62, 34, 190, 50, 65, false, null, true), + ), + new PokemonSpecies(Species.GASTRODON, 4, false, false, false, "Sea Slug Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("East Sea", "east", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), + new PokemonForm("West Sea", "west", PokemonType.WATER, PokemonType.GROUND, 0.9, 29.9, Abilities.STICKY_HOLD, Abilities.STORM_DRAIN, Abilities.SAND_FORCE, 475, 111, 83, 68, 92, 82, 39, 75, 50, 166, false, null, true), + ), + new PokemonSpecies(Species.AMBIPOM, 4, false, false, false, "Long Tail Pokémon", PokemonType.NORMAL, null, 1.2, 20.3, Abilities.TECHNICIAN, Abilities.PICKUP, Abilities.SKILL_LINK, 482, 75, 100, 66, 60, 66, 115, 45, 100, 169, GrowthRate.FAST, 50, true), + new PokemonSpecies(Species.DRIFLOON, 4, false, false, false, "Balloon Pokémon", PokemonType.GHOST, PokemonType.FLYING, 0.4, 1.2, Abilities.AFTERMATH, Abilities.UNBURDEN, Abilities.FLARE_BOOST, 348, 90, 50, 34, 60, 44, 70, 125, 50, 70, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(Species.DRIFBLIM, 4, false, false, false, "Blimp Pokémon", PokemonType.GHOST, PokemonType.FLYING, 1.2, 15, Abilities.AFTERMATH, Abilities.UNBURDEN, Abilities.FLARE_BOOST, 498, 150, 80, 44, 90, 54, 80, 60, 50, 174, GrowthRate.FLUCTUATING, 50, false), + new PokemonSpecies(Species.BUNEARY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 0.4, 5.5, Abilities.RUN_AWAY, Abilities.KLUTZ, Abilities.LIMBER, 350, 55, 66, 44, 44, 56, 85, 190, 0, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.LOPUNNY, 4, false, false, false, "Rabbit Pokémon", PokemonType.NORMAL, null, 1.2, 33.3, Abilities.CUTE_CHARM, Abilities.KLUTZ, Abilities.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.2, 33.3, Abilities.CUTE_CHARM, Abilities.KLUTZ, Abilities.LIMBER, 480, 65, 76, 84, 54, 96, 105, 60, 140, 168, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FIGHTING, 1.3, 28.3, Abilities.SCRAPPY, Abilities.SCRAPPY, Abilities.SCRAPPY, 580, 65, 136, 94, 54, 96, 135, 60, 140, 168), + ), + new PokemonSpecies(Species.MISMAGIUS, 4, false, false, false, "Magical Pokémon", PokemonType.GHOST, null, 0.9, 4.4, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 495, 60, 60, 60, 105, 105, 105, 45, 35, 173, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.HONCHKROW, 4, false, false, false, "Big Boss Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.9, 27.3, Abilities.INSOMNIA, Abilities.SUPER_LUCK, Abilities.MOXIE, 505, 100, 125, 52, 105, 52, 71, 30, 35, 177, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GLAMEOW, 4, false, false, false, "Catty Pokémon", PokemonType.NORMAL, null, 0.5, 3.9, Abilities.LIMBER, Abilities.OWN_TEMPO, Abilities.KEEN_EYE, 310, 49, 55, 42, 42, 37, 85, 190, 70, 62, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.PURUGLY, 4, false, false, false, "Tiger Cat Pokémon", PokemonType.NORMAL, null, 1, 43.8, Abilities.THICK_FAT, Abilities.OWN_TEMPO, Abilities.DEFIANT, 452, 71, 82, 64, 64, 59, 112, 75, 70, 158, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.CHINGLING, 4, false, false, false, "Bell Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.6, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 285, 45, 30, 50, 65, 50, 45, 120, 70, 57, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.STUNKY, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 0.4, 19.2, Abilities.STENCH, Abilities.AFTERMATH, Abilities.KEEN_EYE, 329, 63, 63, 47, 41, 41, 74, 225, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SKUNTANK, 4, false, false, false, "Skunk Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 38, Abilities.STENCH, Abilities.AFTERMATH, Abilities.KEEN_EYE, 479, 103, 93, 67, 71, 61, 84, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BRONZOR, 4, false, false, false, "Bronze Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 0.5, 60.5, Abilities.LEVITATE, Abilities.HEATPROOF, Abilities.HEAVY_METAL, 300, 57, 24, 86, 24, 86, 23, 255, 50, 60, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.BRONZONG, 4, false, false, false, "Bronze Bell Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.3, 187, Abilities.LEVITATE, Abilities.HEATPROOF, Abilities.HEAVY_METAL, 500, 67, 89, 116, 79, 116, 33, 90, 50, 175, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.BONSLY, 4, false, false, false, "Bonsai Pokémon", PokemonType.ROCK, null, 0.5, 15, Abilities.STURDY, Abilities.ROCK_HEAD, Abilities.RATTLED, 290, 50, 80, 95, 10, 45, 10, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MIME_JR, 4, false, false, false, "Mime Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 0.6, 13, Abilities.SOUNDPROOF, Abilities.FILTER, Abilities.TECHNICIAN, 310, 20, 25, 45, 70, 90, 60, 145, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.HAPPINY, 4, false, false, false, "Playhouse Pokémon", PokemonType.NORMAL, null, 0.6, 24.4, Abilities.NATURAL_CURE, Abilities.SERENE_GRACE, Abilities.FRIEND_GUARD, 220, 100, 5, 5, 15, 65, 30, 130, 140, 110, GrowthRate.FAST, 0, false), + new PokemonSpecies(Species.CHATOT, 4, false, false, false, "Music Note Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 1.9, Abilities.KEEN_EYE, Abilities.TANGLED_FEET, Abilities.BIG_PECKS, 411, 76, 65, 45, 92, 42, 91, 30, 35, 144, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SPIRITOMB, 4, false, false, false, "Forbidden Pokémon", PokemonType.GHOST, PokemonType.DARK, 1, 108, Abilities.PRESSURE, Abilities.NONE, Abilities.INFILTRATOR, 485, 50, 92, 108, 92, 108, 35, 100, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GIBLE, 4, false, false, false, "Land Shark Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 0.7, 20.5, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 300, 58, 70, 45, 40, 45, 42, 45, 50, 60, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.GABITE, 4, false, false, false, "Cave Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.4, 56, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 410, 68, 90, 65, 50, 55, 82, 45, 50, 144, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.GARCHOMP, 4, false, false, false, "Mach Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, Abilities.SAND_VEIL, Abilities.NONE, Abilities.ROUGH_SKIN, 600, 108, 130, 95, 80, 85, 102, 45, 50, 300, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.DRAGON, PokemonType.GROUND, 1.9, 95, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SAND_FORCE, 700, 108, 170, 115, 120, 95, 92, 45, 50, 300, true), + ), + new PokemonSpecies(Species.MUNCHLAX, 4, false, false, false, "Big Eater Pokémon", PokemonType.NORMAL, null, 0.6, 105, Abilities.PICKUP, Abilities.THICK_FAT, Abilities.GLUTTONY, 390, 135, 85, 40, 40, 85, 5, 50, 50, 78, GrowthRate.SLOW, 87.5, false), + new PokemonSpecies(Species.RIOLU, 4, false, false, false, "Emanation Pokémon", PokemonType.FIGHTING, null, 0.7, 20.2, Abilities.STEADFAST, Abilities.INNER_FOCUS, Abilities.PRANKSTER, 285, 40, 70, 40, 35, 40, 60, 75, 50, 57, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.LUCARIO, 4, false, false, false, "Aura Pokémon", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, Abilities.STEADFAST, Abilities.INNER_FOCUS, Abilities.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.STEEL, 1.2, 54, Abilities.STEADFAST, Abilities.INNER_FOCUS, Abilities.JUSTIFIED, 525, 70, 110, 70, 115, 70, 90, 45, 50, 184, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.FIGHTING, PokemonType.STEEL, 1.3, 57.5, Abilities.ADAPTABILITY, Abilities.ADAPTABILITY, Abilities.ADAPTABILITY, 625, 70, 145, 88, 140, 70, 112, 45, 50, 184), + ), + new PokemonSpecies(Species.HIPPOPOTAS, 4, false, false, false, "Hippo Pokémon", PokemonType.GROUND, null, 0.8, 49.5, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_FORCE, 330, 68, 72, 78, 38, 42, 32, 140, 50, 66, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.HIPPOWDON, 4, false, false, false, "Heavyweight Pokémon", PokemonType.GROUND, null, 2, 300, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_FORCE, 525, 108, 112, 118, 68, 72, 47, 60, 50, 184, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.SKORUPI, 4, false, false, false, "Scorpion Pokémon", PokemonType.POISON, PokemonType.BUG, 0.8, 12, Abilities.BATTLE_ARMOR, Abilities.SNIPER, Abilities.KEEN_EYE, 330, 40, 50, 90, 30, 55, 65, 120, 50, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.DRAPION, 4, false, false, false, "Ogre Scorpion Pokémon", PokemonType.POISON, PokemonType.DARK, 1.3, 61.5, Abilities.BATTLE_ARMOR, Abilities.SNIPER, Abilities.KEEN_EYE, 500, 70, 90, 110, 60, 75, 95, 45, 50, 175, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.CROAGUNK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 0.7, 23, Abilities.ANTICIPATION, Abilities.DRY_SKIN, Abilities.POISON_TOUCH, 300, 48, 61, 40, 61, 40, 50, 140, 100, 60, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.TOXICROAK, 4, false, false, false, "Toxic Mouth Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.3, 44.4, Abilities.ANTICIPATION, Abilities.DRY_SKIN, Abilities.POISON_TOUCH, 490, 83, 106, 65, 86, 65, 85, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.CARNIVINE, 4, false, false, false, "Bug Catcher Pokémon", PokemonType.GRASS, null, 1.4, 27, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 454, 74, 100, 72, 90, 72, 46, 200, 70, 159, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.FINNEON, 4, false, false, false, "Wing Fish Pokémon", PokemonType.WATER, null, 0.4, 7, Abilities.SWIFT_SWIM, Abilities.STORM_DRAIN, Abilities.WATER_VEIL, 330, 49, 49, 56, 49, 61, 66, 190, 70, 66, GrowthRate.ERRATIC, 50, true), + new PokemonSpecies(Species.LUMINEON, 4, false, false, false, "Neon Pokémon", PokemonType.WATER, null, 1.2, 24, Abilities.SWIFT_SWIM, Abilities.STORM_DRAIN, Abilities.WATER_VEIL, 460, 69, 69, 76, 69, 86, 91, 75, 70, 161, GrowthRate.ERRATIC, 50, true), + new PokemonSpecies(Species.MANTYKE, 4, false, false, false, "Kite Pokémon", PokemonType.WATER, PokemonType.FLYING, 1, 65, Abilities.SWIFT_SWIM, Abilities.WATER_ABSORB, Abilities.WATER_VEIL, 345, 45, 20, 50, 60, 120, 50, 25, 50, 69, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.SNOVER, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 1, 50.5, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SOUNDPROOF, 334, 60, 62, 50, 62, 60, 40, 120, 50, 67, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.ABOMASNOW, 4, false, false, false, "Frost Tree Pokémon", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, GrowthRate.SLOW, 50, true, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.ICE, 2.2, 135.5, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SOUNDPROOF, 494, 90, 92, 75, 92, 85, 60, 60, 50, 173, true, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.GRASS, PokemonType.ICE, 2.7, 185, Abilities.SNOW_WARNING, Abilities.NONE, Abilities.SNOW_WARNING, 594, 90, 132, 105, 132, 105, 30, 60, 50, 173, true), + ), + new PokemonSpecies(Species.WEAVILE, 4, false, false, false, "Sharp Claw Pokémon", PokemonType.DARK, PokemonType.ICE, 1.1, 34, Abilities.PRESSURE, Abilities.NONE, Abilities.PICKPOCKET, 510, 70, 120, 65, 45, 85, 125, 45, 35, 179, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.MAGNEZONE, 4, false, false, false, "Magnet Area Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 1.2, 180, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.ANALYTIC, 535, 70, 70, 115, 130, 90, 60, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.LICKILICKY, 4, false, false, false, "Licking Pokémon", PokemonType.NORMAL, null, 1.7, 140, Abilities.OWN_TEMPO, Abilities.OBLIVIOUS, Abilities.CLOUD_NINE, 515, 110, 85, 95, 80, 95, 50, 30, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.RHYPERIOR, 4, false, false, false, "Drill Pokémon", PokemonType.GROUND, PokemonType.ROCK, 2.4, 282.8, Abilities.LIGHTNING_ROD, Abilities.SOLID_ROCK, Abilities.RECKLESS, 535, 115, 140, 130, 55, 55, 40, 30, 50, 268, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.TANGROWTH, 4, false, false, false, "Vine Pokémon", PokemonType.GRASS, null, 2, 128.6, Abilities.CHLOROPHYLL, Abilities.LEAF_GUARD, Abilities.REGENERATOR, 535, 100, 100, 125, 110, 50, 50, 30, 50, 187, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.ELECTIVIRE, 4, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.8, 138.6, Abilities.MOTOR_DRIVE, Abilities.NONE, Abilities.VITAL_SPIRIT, 540, 75, 123, 67, 95, 85, 95, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(Species.MAGMORTAR, 4, false, false, false, "Blast Pokémon", PokemonType.FIRE, null, 1.6, 68, Abilities.FLAME_BODY, Abilities.NONE, Abilities.VITAL_SPIRIT, 540, 75, 95, 67, 125, 95, 83, 30, 50, 270, GrowthRate.MEDIUM_FAST, 75, false), + new PokemonSpecies(Species.TOGEKISS, 4, false, false, false, "Jubilee Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.5, 38, Abilities.HUSTLE, Abilities.SERENE_GRACE, Abilities.SUPER_LUCK, 545, 85, 50, 95, 120, 115, 80, 30, 50, 273, GrowthRate.FAST, 87.5, false), + new PokemonSpecies(Species.YANMEGA, 4, false, false, false, "Ogre Darner Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.9, 51.5, Abilities.SPEED_BOOST, Abilities.TINTED_LENS, Abilities.FRISK, 515, 86, 76, 86, 116, 56, 95, 30, 70, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.LEAFEON, 4, false, false, false, "Verdant Pokémon", PokemonType.GRASS, null, 1, 25.5, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.CHLOROPHYLL, 525, 65, 110, 130, 60, 65, 95, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.GLACEON, 4, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.8, 25.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.ICE_BODY, 525, 65, 60, 110, 130, 95, 65, 45, 35, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.GLISCOR, 4, false, false, false, "Fang Scorpion Pokémon", PokemonType.GROUND, PokemonType.FLYING, 2, 42.5, Abilities.HYPER_CUTTER, Abilities.SAND_VEIL, Abilities.POISON_HEAL, 510, 75, 95, 125, 45, 75, 95, 30, 70, 179, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.MAMOSWINE, 4, false, false, false, "Twin Tusk Pokémon", PokemonType.ICE, PokemonType.GROUND, 2.5, 291, Abilities.OBLIVIOUS, Abilities.SNOW_CLOAK, Abilities.THICK_FAT, 530, 110, 130, 80, 70, 60, 80, 50, 50, 265, GrowthRate.SLOW, 50, true), + new PokemonSpecies(Species.PORYGON_Z, 4, false, false, false, "Virtual Pokémon", PokemonType.NORMAL, null, 0.9, 34, Abilities.ADAPTABILITY, Abilities.DOWNLOAD, Abilities.ANALYTIC, 535, 85, 80, 70, 135, 75, 90, 30, 50, 268, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.GALLADE, 4, false, false, false, "Blade Pokémon", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, Abilities.STEADFAST, Abilities.SHARPNESS, Abilities.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 52, Abilities.STEADFAST, Abilities.SHARPNESS, Abilities.JUSTIFIED, 518, 68, 125, 65, 65, 115, 80, 45, 35, 259, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.PSYCHIC, PokemonType.FIGHTING, 1.6, 56.4, Abilities.SHARPNESS, Abilities.SHARPNESS, Abilities.SHARPNESS, 618, 68, 165, 95, 65, 115, 110, 45, 35, 259), + ), + new PokemonSpecies(Species.PROBOPASS, 4, false, false, false, "Compass Pokémon", PokemonType.ROCK, PokemonType.STEEL, 1.4, 340, Abilities.STURDY, Abilities.MAGNET_PULL, Abilities.SAND_FORCE, 525, 60, 55, 145, 75, 150, 40, 60, 70, 184, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DUSKNOIR, 4, false, false, false, "Gripper Pokémon", PokemonType.GHOST, null, 2.2, 106.6, Abilities.PRESSURE, Abilities.NONE, Abilities.FRISK, 525, 45, 100, 135, 65, 135, 45, 45, 35, 263, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.FROSLASS, 4, false, false, false, "Snow Land Pokémon", PokemonType.ICE, PokemonType.GHOST, 1.3, 26.6, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.CURSED_BODY, 480, 70, 80, 70, 80, 70, 110, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(Species.ROTOM, 4, false, false, false, "Plasma Pokémon", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("Normal", "", PokemonType.ELECTRIC, PokemonType.GHOST, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 440, 50, 50, 77, 95, 77, 91, 45, 50, 154, false, null, true), + new PokemonForm("Heat", "heat", PokemonType.ELECTRIC, PokemonType.FIRE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Wash", "wash", PokemonType.ELECTRIC, PokemonType.WATER, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Frost", "frost", PokemonType.ELECTRIC, PokemonType.ICE, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Fan", "fan", PokemonType.ELECTRIC, PokemonType.FLYING, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + new PokemonForm("Mow", "mow", PokemonType.ELECTRIC, PokemonType.GRASS, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 520, 50, 65, 107, 105, 107, 86, 45, 50, 182, false, null, true), + ), + new PokemonSpecies(Species.UXIE, 4, true, false, false, "Knowledge Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 75, 75, 130, 75, 130, 95, 3, 140, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.MESPRIT, 4, true, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 80, 105, 105, 105, 105, 80, 3, 140, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.AZELF, 4, true, false, false, "Willpower Pokémon", PokemonType.PSYCHIC, null, 0.3, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 75, 125, 70, 125, 70, 115, 3, 140, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.DIALGA, 4, false, true, false, "Temporal Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 5.4, 683, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 100, 120, 120, 150, 100, 90, 3, 0, 340, false, null, true), + new PokemonForm("Origin Forme", "origin", PokemonType.STEEL, PokemonType.DRAGON, 7, 848.7, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 100, 100, 120, 150, 120, 90, 3, 0, 340), + ), + new PokemonSpecies(Species.PALKIA, 4, false, true, false, "Spatial Pokémon", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DRAGON, 4.2, 336, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 90, 120, 100, 150, 120, 100, 3, 0, 340, false, null, true), + new PokemonForm("Origin Forme", "origin", PokemonType.WATER, PokemonType.DRAGON, 6.3, 659, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 90, 100, 100, 150, 120, 120, 3, 0, 340), + ), + new PokemonSpecies(Species.HEATRAN, 4, true, false, false, "Lava Dome Pokémon", PokemonType.FIRE, PokemonType.STEEL, 1.7, 430, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.FLAME_BODY, 600, 91, 90, 106, 130, 106, 77, 3, 100, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.REGIGIGAS, 4, true, false, false, "Colossal Pokémon", PokemonType.NORMAL, null, 3.7, 420, Abilities.SLOW_START, Abilities.NONE, Abilities.NORMALIZE, 670, 110, 160, 110, 80, 110, 100, 3, 0, 335, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.GIRATINA, 4, false, true, false, "Renegade Pokémon", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Altered Forme", "altered", PokemonType.GHOST, PokemonType.DRAGON, 4.5, 750, Abilities.PRESSURE, Abilities.NONE, Abilities.TELEPATHY, 680, 150, 100, 120, 100, 120, 90, 3, 0, 340, false, null, true), + new PokemonForm("Origin Forme", "origin", PokemonType.GHOST, PokemonType.DRAGON, 6.9, 650, Abilities.LEVITATE, Abilities.NONE, Abilities.LEVITATE, 680, 150, 120, 100, 120, 100, 90, 3, 0, 340), + ), + new PokemonSpecies(Species.CRESSELIA, 4, true, false, false, "Lunar Pokémon", PokemonType.PSYCHIC, null, 1.5, 85.6, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 580, 120, 70, 110, 75, 120, 85, 3, 100, 300, GrowthRate.SLOW, 0, false), + new PokemonSpecies(Species.PHIONE, 4, false, false, true, "Sea Drifter Pokémon", PokemonType.WATER, null, 0.4, 3.1, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 480, 80, 80, 80, 80, 80, 80, 30, 70, 240, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.MANAPHY, 4, false, false, true, "Seafaring Pokémon", PokemonType.WATER, null, 0.3, 1.4, Abilities.HYDRATION, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 70, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.DARKRAI, 4, false, false, true, "Pitch-Black Pokémon", PokemonType.DARK, null, 1.5, 50.5, Abilities.BAD_DREAMS, Abilities.NONE, Abilities.NONE, 600, 70, 90, 90, 135, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.SHAYMIN, 4, false, false, true, "Gratitude Pokémon", PokemonType.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, GrowthRate.MEDIUM_SLOW, null, false, true, + new PokemonForm("Land Forme", "land", PokemonType.GRASS, null, 0.2, 2.1, Abilities.NATURAL_CURE, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 45, 100, 300, false, null, true), + new PokemonForm("Sky Forme", "sky", PokemonType.GRASS, PokemonType.FLYING, 0.4, 5.2, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 103, 75, 120, 75, 127, 45, 100, 300), + ), + new PokemonSpecies(Species.ARCEUS, 4, false, false, true, "Alpha Pokémon", PokemonType.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "normal", PokemonType.NORMAL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, true), + new PokemonForm("Fighting", "fighting", PokemonType.FIGHTING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Flying", "flying", PokemonType.FLYING, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Poison", "poison", PokemonType.POISON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Ground", "ground", PokemonType.GROUND, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Rock", "rock", PokemonType.ROCK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Bug", "bug", PokemonType.BUG, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Ghost", "ghost", PokemonType.GHOST, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Steel", "steel", PokemonType.STEEL, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Fire", "fire", PokemonType.FIRE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Water", "water", PokemonType.WATER, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Grass", "grass", PokemonType.GRASS, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Electric", "electric", PokemonType.ELECTRIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Psychic", "psychic", PokemonType.PSYCHIC, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Ice", "ice", PokemonType.ICE, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Dragon", "dragon", PokemonType.DRAGON, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Dark", "dark", PokemonType.DARK, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("Fairy", "fairy", PokemonType.FAIRY, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360), + new PokemonForm("???", "unknown", PokemonType.UNKNOWN, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 360, false, null, false, true), + ), + new PokemonSpecies(Species.VICTINI, 5, false, false, true, "Victory Pokémon", PokemonType.PSYCHIC, PokemonType.FIRE, 0.4, 4, Abilities.VICTORY_STAR, Abilities.NONE, Abilities.NONE, 600, 100, 100, 100, 100, 100, 100, 3, 100, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.SNIVY, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.6, 8.1, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 308, 45, 45, 55, 45, 55, 63, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.SERVINE, 5, false, false, false, "Grass Snake Pokémon", PokemonType.GRASS, null, 0.8, 16, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 413, 60, 60, 75, 60, 75, 83, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.SERPERIOR, 5, false, false, false, "Regal Pokémon", PokemonType.GRASS, null, 3.3, 63, Abilities.OVERGROW, Abilities.NONE, Abilities.CONTRARY, 528, 75, 75, 95, 75, 95, 113, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.TEPIG, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, null, 0.5, 9.9, Abilities.BLAZE, Abilities.NONE, Abilities.THICK_FAT, 308, 65, 63, 45, 45, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.PIGNITE, 5, false, false, false, "Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1, 55.5, Abilities.BLAZE, Abilities.NONE, Abilities.THICK_FAT, 418, 90, 93, 55, 70, 55, 55, 45, 70, 146, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.EMBOAR, 5, false, false, false, "Mega Fire Pig Pokémon", PokemonType.FIRE, PokemonType.FIGHTING, 1.6, 150, Abilities.BLAZE, Abilities.NONE, Abilities.RECKLESS, 528, 110, 123, 65, 100, 65, 65, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.OSHAWOTT, 5, false, false, false, "Sea Otter Pokémon", PokemonType.WATER, null, 0.5, 5.9, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 308, 55, 55, 45, 63, 45, 45, 45, 70, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.DEWOTT, 5, false, false, false, "Discipline Pokémon", PokemonType.WATER, null, 0.8, 24.5, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 413, 75, 75, 60, 83, 60, 60, 45, 70, 145, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.SAMUROTT, 5, false, false, false, "Formidable Pokémon", PokemonType.WATER, null, 1.5, 94.6, Abilities.TORRENT, Abilities.NONE, Abilities.SHELL_ARMOR, 528, 95, 100, 85, 108, 70, 70, 45, 70, 264, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.PATRAT, 5, false, false, false, "Scout Pokémon", PokemonType.NORMAL, null, 0.5, 11.6, Abilities.RUN_AWAY, Abilities.KEEN_EYE, Abilities.ANALYTIC, 255, 45, 55, 39, 35, 39, 42, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.WATCHOG, 5, false, false, false, "Lookout Pokémon", PokemonType.NORMAL, null, 1.1, 27, Abilities.ILLUMINATE, Abilities.KEEN_EYE, Abilities.ANALYTIC, 420, 60, 85, 69, 60, 69, 77, 255, 70, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.LILLIPUP, 5, false, false, false, "Puppy Pokémon", PokemonType.NORMAL, null, 0.4, 4.1, Abilities.VITAL_SPIRIT, Abilities.PICKUP, Abilities.RUN_AWAY, 275, 45, 60, 45, 25, 45, 55, 255, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.HERDIER, 5, false, false, false, "Loyal Dog Pokémon", PokemonType.NORMAL, null, 0.9, 14.7, Abilities.INTIMIDATE, Abilities.SAND_RUSH, Abilities.SCRAPPY, 370, 65, 80, 65, 35, 65, 60, 120, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.STOUTLAND, 5, false, false, false, "Big-Hearted Pokémon", PokemonType.NORMAL, null, 1.2, 61, Abilities.INTIMIDATE, Abilities.SAND_RUSH, Abilities.SCRAPPY, 500, 85, 110, 90, 45, 90, 80, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.PURRLOIN, 5, false, false, false, "Devious Pokémon", PokemonType.DARK, null, 0.4, 10.1, Abilities.LIMBER, Abilities.UNBURDEN, Abilities.PRANKSTER, 281, 41, 50, 37, 50, 37, 66, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.LIEPARD, 5, false, false, false, "Cruel Pokémon", PokemonType.DARK, null, 1.1, 37.5, Abilities.LIMBER, Abilities.UNBURDEN, Abilities.PRANKSTER, 446, 64, 88, 50, 88, 50, 106, 90, 50, 156, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PANSAGE, 5, false, false, false, "Grass Monkey Pokémon", PokemonType.GRASS, null, 0.6, 10.5, Abilities.GLUTTONY, Abilities.NONE, Abilities.OVERGROW, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.SIMISAGE, 5, false, false, false, "Thorn Monkey Pokémon", PokemonType.GRASS, null, 1.1, 30.5, Abilities.GLUTTONY, Abilities.NONE, Abilities.OVERGROW, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.PANSEAR, 5, false, false, false, "High Temp Pokémon", PokemonType.FIRE, null, 0.6, 11, Abilities.GLUTTONY, Abilities.NONE, Abilities.BLAZE, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.SIMISEAR, 5, false, false, false, "Ember Pokémon", PokemonType.FIRE, null, 1, 28, Abilities.GLUTTONY, Abilities.NONE, Abilities.BLAZE, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.PANPOUR, 5, false, false, false, "Spray Pokémon", PokemonType.WATER, null, 0.6, 13.5, Abilities.GLUTTONY, Abilities.NONE, Abilities.TORRENT, 316, 50, 53, 48, 53, 48, 64, 190, 70, 63, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.SIMIPOUR, 5, false, false, false, "Geyser Pokémon", PokemonType.WATER, null, 1, 29, Abilities.GLUTTONY, Abilities.NONE, Abilities.TORRENT, 498, 75, 98, 63, 98, 63, 101, 75, 70, 174, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.MUNNA, 5, false, false, false, "Dream Eater Pokémon", PokemonType.PSYCHIC, null, 0.6, 23.3, Abilities.FOREWARN, Abilities.SYNCHRONIZE, Abilities.TELEPATHY, 292, 76, 25, 45, 67, 55, 24, 190, 50, 58, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.MUSHARNA, 5, false, false, false, "Drowsing Pokémon", PokemonType.PSYCHIC, null, 1.1, 60.5, Abilities.FOREWARN, Abilities.SYNCHRONIZE, Abilities.TELEPATHY, 487, 116, 55, 85, 107, 95, 29, 75, 50, 170, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.PIDOVE, 5, false, false, false, "Tiny Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 2.1, Abilities.BIG_PECKS, Abilities.SUPER_LUCK, Abilities.RIVALRY, 264, 50, 55, 50, 36, 30, 43, 255, 50, 53, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.TRANQUILL, 5, false, false, false, "Wild Pigeon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 15, Abilities.BIG_PECKS, Abilities.SUPER_LUCK, Abilities.RIVALRY, 358, 62, 77, 62, 50, 42, 65, 120, 50, 125, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.UNFEZANT, 5, false, false, false, "Proud Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.2, 29, Abilities.BIG_PECKS, Abilities.SUPER_LUCK, Abilities.RIVALRY, 488, 80, 115, 80, 65, 55, 93, 45, 50, 244, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.BLITZLE, 5, false, false, false, "Electrified Pokémon", PokemonType.ELECTRIC, null, 0.8, 29.8, Abilities.LIGHTNING_ROD, Abilities.MOTOR_DRIVE, Abilities.SAP_SIPPER, 295, 45, 60, 32, 50, 32, 76, 190, 70, 59, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ZEBSTRIKA, 5, false, false, false, "Thunderbolt Pokémon", PokemonType.ELECTRIC, null, 1.6, 79.5, Abilities.LIGHTNING_ROD, Abilities.MOTOR_DRIVE, Abilities.SAP_SIPPER, 497, 75, 100, 63, 80, 63, 116, 75, 70, 174, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ROGGENROLA, 5, false, false, false, "Mantle Pokémon", PokemonType.ROCK, null, 0.4, 18, Abilities.STURDY, Abilities.WEAK_ARMOR, Abilities.SAND_FORCE, 280, 55, 75, 85, 25, 25, 15, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.BOLDORE, 5, false, false, false, "Ore Pokémon", PokemonType.ROCK, null, 0.9, 102, Abilities.STURDY, Abilities.WEAK_ARMOR, Abilities.SAND_FORCE, 390, 70, 105, 105, 50, 40, 20, 120, 50, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GIGALITH, 5, false, false, false, "Compressed Pokémon", PokemonType.ROCK, null, 1.7, 260, Abilities.STURDY, Abilities.SAND_STREAM, Abilities.SAND_FORCE, 515, 85, 135, 130, 60, 80, 25, 45, 50, 258, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.WOOBAT, 5, false, false, false, "Bat Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.4, 2.1, Abilities.UNAWARE, Abilities.KLUTZ, Abilities.SIMPLE, 323, 65, 45, 43, 55, 43, 72, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SWOOBAT, 5, false, false, false, "Courting Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 0.9, 10.5, Abilities.UNAWARE, Abilities.KLUTZ, Abilities.SIMPLE, 425, 67, 57, 55, 77, 55, 114, 45, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DRILBUR, 5, false, false, false, "Mole Pokémon", PokemonType.GROUND, null, 0.3, 8.5, Abilities.SAND_RUSH, Abilities.SAND_FORCE, Abilities.MOLD_BREAKER, 328, 60, 85, 40, 30, 45, 68, 120, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.EXCADRILL, 5, false, false, false, "Subterrene Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 40.4, Abilities.SAND_RUSH, Abilities.SAND_FORCE, Abilities.MOLD_BREAKER, 508, 110, 135, 60, 50, 65, 88, 60, 50, 178, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.AUDINO, 5, false, false, false, "Hearing Pokémon", PokemonType.NORMAL, null, 1.1, 31, Abilities.HEALER, Abilities.REGENERATOR, Abilities.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, GrowthRate.FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.NORMAL, null, 1.1, 31, Abilities.HEALER, Abilities.REGENERATOR, Abilities.KLUTZ, 445, 103, 60, 86, 60, 86, 50, 255, 50, 390, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.NORMAL, PokemonType.FAIRY, 1.5, 32, Abilities.REGENERATOR, Abilities.REGENERATOR, Abilities.REGENERATOR, 545, 103, 60, 126, 80, 126, 50, 255, 50, 390), //Custom Ability, base form Hidden Ability + ), + new PokemonSpecies(Species.TIMBURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 0.6, 12.5, Abilities.GUTS, Abilities.SHEER_FORCE, Abilities.IRON_FIST, 305, 75, 80, 55, 25, 35, 35, 180, 70, 61, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(Species.GURDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.2, 40, Abilities.GUTS, Abilities.SHEER_FORCE, Abilities.IRON_FIST, 405, 85, 105, 85, 40, 50, 40, 90, 50, 142, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(Species.CONKELDURR, 5, false, false, false, "Muscular Pokémon", PokemonType.FIGHTING, null, 1.4, 87, Abilities.GUTS, Abilities.SHEER_FORCE, Abilities.IRON_FIST, 505, 105, 140, 95, 55, 65, 45, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 75, false), + new PokemonSpecies(Species.TYMPOLE, 5, false, false, false, "Tadpole Pokémon", PokemonType.WATER, null, 0.5, 4.5, Abilities.SWIFT_SWIM, Abilities.HYDRATION, Abilities.WATER_ABSORB, 294, 50, 50, 40, 50, 40, 64, 255, 50, 59, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.PALPITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 0.8, 17, Abilities.SWIFT_SWIM, Abilities.HYDRATION, Abilities.WATER_ABSORB, 384, 75, 65, 55, 65, 55, 69, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SEISMITOAD, 5, false, false, false, "Vibration Pokémon", PokemonType.WATER, PokemonType.GROUND, 1.5, 62, Abilities.SWIFT_SWIM, Abilities.POISON_TOUCH, Abilities.WATER_ABSORB, 509, 105, 95, 75, 85, 75, 74, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.THROH, 5, false, false, false, "Judo Pokémon", PokemonType.FIGHTING, null, 1.3, 55.5, Abilities.GUTS, Abilities.INNER_FOCUS, Abilities.MOLD_BREAKER, 465, 120, 100, 85, 30, 85, 45, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(Species.SAWK, 5, false, false, false, "Karate Pokémon", PokemonType.FIGHTING, null, 1.4, 51, Abilities.STURDY, Abilities.INNER_FOCUS, Abilities.MOLD_BREAKER, 465, 75, 125, 75, 30, 75, 85, 45, 50, 163, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(Species.SEWADDLE, 5, false, false, false, "Sewing Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.3, 2.5, Abilities.SWARM, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 310, 45, 53, 70, 40, 60, 42, 255, 70, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SWADLOON, 5, false, false, false, "Leaf-Wrapped Pokémon", PokemonType.BUG, PokemonType.GRASS, 0.5, 7.3, Abilities.LEAF_GUARD, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 380, 55, 63, 90, 50, 80, 42, 120, 70, 133, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.LEAVANNY, 5, false, false, false, "Nurturing Pokémon", PokemonType.BUG, PokemonType.GRASS, 1.2, 20.5, Abilities.SWARM, Abilities.CHLOROPHYLL, Abilities.OVERCOAT, 500, 75, 103, 80, 70, 80, 92, 45, 70, 250, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.VENIPEDE, 5, false, false, false, "Centipede Pokémon", PokemonType.BUG, PokemonType.POISON, 0.4, 5.3, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 260, 30, 45, 59, 30, 39, 57, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.WHIRLIPEDE, 5, false, false, false, "Curlipede Pokémon", PokemonType.BUG, PokemonType.POISON, 1.2, 58.5, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 360, 40, 55, 99, 40, 79, 47, 120, 50, 126, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SCOLIPEDE, 5, false, false, false, "Megapede Pokémon", PokemonType.BUG, PokemonType.POISON, 2.5, 200.5, Abilities.POISON_POINT, Abilities.SWARM, Abilities.SPEED_BOOST, 485, 60, 100, 89, 55, 69, 112, 45, 50, 243, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.COTTONEE, 5, false, false, false, "Cotton Puff Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.3, 0.6, Abilities.PRANKSTER, Abilities.INFILTRATOR, Abilities.CHLOROPHYLL, 280, 40, 27, 60, 37, 50, 66, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.WHIMSICOTT, 5, false, false, false, "Windveiled Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.7, 6.6, Abilities.PRANKSTER, Abilities.INFILTRATOR, Abilities.CHLOROPHYLL, 480, 60, 67, 85, 77, 75, 116, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PETILIL, 5, false, false, false, "Bulb Pokémon", PokemonType.GRASS, null, 0.5, 6.6, Abilities.CHLOROPHYLL, Abilities.OWN_TEMPO, Abilities.LEAF_GUARD, 280, 45, 35, 50, 70, 50, 30, 190, 50, 56, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(Species.LILLIGANT, 5, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 1.1, 16.3, Abilities.CHLOROPHYLL, Abilities.OWN_TEMPO, Abilities.LEAF_GUARD, 480, 70, 60, 75, 110, 75, 90, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(Species.BASCULIN, 5, false, false, false, "Hostile Pokémon", PokemonType.WATER, null, 1, 18, Abilities.RECKLESS, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Red-Striped Form", "red-striped", PokemonType.WATER, null, 1, 18, Abilities.RECKLESS, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), + new PokemonForm("Blue-Striped Form", "blue-striped", PokemonType.WATER, null, 1, 18, Abilities.ROCK_HEAD, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), + new PokemonForm("White-Striped Form", "white-striped", PokemonType.WATER, null, 1, 18, Abilities.RATTLED, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 460, 70, 92, 65, 80, 55, 98, 25, 50, 161, false, null, true), + ), + new PokemonSpecies(Species.SANDILE, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 0.7, 15.2, Abilities.INTIMIDATE, Abilities.MOXIE, Abilities.ANGER_POINT, 292, 50, 72, 35, 35, 35, 65, 180, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.KROKOROK, 5, false, false, false, "Desert Croc Pokémon", PokemonType.GROUND, PokemonType.DARK, 1, 33.4, Abilities.INTIMIDATE, Abilities.MOXIE, Abilities.ANGER_POINT, 351, 60, 82, 45, 45, 45, 74, 90, 50, 123, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.KROOKODILE, 5, false, false, false, "Intimidation Pokémon", PokemonType.GROUND, PokemonType.DARK, 1.5, 96.3, Abilities.INTIMIDATE, Abilities.MOXIE, Abilities.ANGER_POINT, 519, 95, 117, 80, 65, 70, 92, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.DARUMAKA, 5, false, false, false, "Zen Charm Pokémon", PokemonType.FIRE, null, 0.6, 37.5, Abilities.HUSTLE, Abilities.NONE, Abilities.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.DARMANITAN, 5, false, false, false, "Blazing Pokémon", PokemonType.FIRE, null, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Standard Mode", "", PokemonType.FIRE, null, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), + new PokemonForm("Zen Mode", "zen", PokemonType.FIRE, PokemonType.PSYCHIC, 1.3, 92.9, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.ZEN_MODE, 540, 105, 30, 105, 140, 105, 55, 60, 50, 189), + ), + new PokemonSpecies(Species.MARACTUS, 5, false, false, false, "Cactus Pokémon", PokemonType.GRASS, null, 1, 28, Abilities.WATER_ABSORB, Abilities.CHLOROPHYLL, Abilities.STORM_DRAIN, 461, 75, 86, 67, 106, 67, 60, 255, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DWEBBLE, 5, false, false, false, "Rock Inn Pokémon", PokemonType.BUG, PokemonType.ROCK, 0.3, 14.5, Abilities.STURDY, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 325, 50, 65, 85, 35, 35, 55, 190, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CRUSTLE, 5, false, false, false, "Stone Home Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.4, 200, Abilities.STURDY, Abilities.SHELL_ARMOR, Abilities.WEAK_ARMOR, 485, 70, 105, 125, 65, 75, 45, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SCRAGGY, 5, false, false, false, "Shedding Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 0.6, 11.8, Abilities.SHED_SKIN, Abilities.MOXIE, Abilities.INTIMIDATE, 348, 50, 75, 70, 35, 70, 48, 180, 35, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SCRAFTY, 5, false, false, false, "Hoodlum Pokémon", PokemonType.DARK, PokemonType.FIGHTING, 1.1, 30, Abilities.SHED_SKIN, Abilities.MOXIE, Abilities.INTIMIDATE, 488, 65, 90, 115, 45, 115, 58, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SIGILYPH, 5, false, false, false, "Avianoid Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.4, 14, Abilities.WONDER_SKIN, Abilities.MAGIC_GUARD, Abilities.TINTED_LENS, 490, 72, 58, 80, 103, 80, 97, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.YAMASK, 5, false, false, false, "Spirit Pokémon", PokemonType.GHOST, null, 0.5, 1.5, Abilities.MUMMY, Abilities.NONE, Abilities.NONE, 303, 38, 30, 85, 55, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.COFAGRIGUS, 5, false, false, false, "Coffin Pokémon", PokemonType.GHOST, null, 1.7, 76.5, Abilities.MUMMY, Abilities.NONE, Abilities.NONE, 483, 58, 50, 145, 95, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.TIRTOUGA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 0.7, 16.5, Abilities.SOLID_ROCK, Abilities.STURDY, Abilities.SWIFT_SWIM, 355, 54, 78, 103, 53, 45, 22, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.CARRACOSTA, 5, false, false, false, "Prototurtle Pokémon", PokemonType.WATER, PokemonType.ROCK, 1.2, 81, Abilities.SOLID_ROCK, Abilities.STURDY, Abilities.SWIFT_SWIM, 495, 74, 108, 133, 83, 65, 32, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.ARCHEN, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.5, 9.5, Abilities.DEFEATIST, Abilities.NONE, Abilities.WIMP_OUT, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden + new PokemonSpecies(Species.ARCHEOPS, 5, false, false, false, "First Bird Pokémon", PokemonType.ROCK, PokemonType.FLYING, 1.4, 32, Abilities.DEFEATIST, Abilities.NONE, Abilities.EMERGENCY_EXIT, 567, 75, 140, 65, 112, 65, 110, 45, 50, 177, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden + new PokemonSpecies(Species.TRUBBISH, 5, false, false, false, "Trash Bag Pokémon", PokemonType.POISON, null, 0.6, 31, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.AFTERMATH, 329, 50, 50, 62, 40, 62, 65, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GARBODOR, 5, false, false, false, "Trash Heap Pokémon", PokemonType.POISON, null, 1.9, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.POISON, null, 1.9, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.POISON, PokemonType.STEEL, 21, 999.9, Abilities.TOXIC_DEBRIS, Abilities.TOXIC_DEBRIS, Abilities.TOXIC_DEBRIS, 574, 135, 125, 102, 57, 102, 53, 60, 50, 166), + ), + new PokemonSpecies(Species.ZORUA, 5, false, false, false, "Tricky Fox Pokémon", PokemonType.DARK, null, 0.7, 12.5, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 330, 40, 65, 40, 80, 40, 65, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.ZOROARK, 5, false, false, false, "Illusion Fox Pokémon", PokemonType.DARK, null, 1.6, 81.1, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 510, 60, 105, 60, 120, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.MINCCINO, 5, false, false, false, "Chinchilla Pokémon", PokemonType.NORMAL, null, 0.4, 5.8, Abilities.CUTE_CHARM, Abilities.TECHNICIAN, Abilities.SKILL_LINK, 300, 55, 50, 40, 40, 40, 75, 255, 50, 60, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.CINCCINO, 5, false, false, false, "Scarf Pokémon", PokemonType.NORMAL, null, 0.5, 7.5, Abilities.CUTE_CHARM, Abilities.TECHNICIAN, Abilities.SKILL_LINK, 470, 75, 95, 60, 65, 60, 115, 60, 50, 165, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.GOTHITA, 5, false, false, false, "Fixation Pokémon", PokemonType.PSYCHIC, null, 0.4, 5.8, Abilities.FRISK, Abilities.COMPETITIVE, Abilities.SHADOW_TAG, 290, 45, 30, 50, 55, 65, 45, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 25, false), + new PokemonSpecies(Species.GOTHORITA, 5, false, false, false, "Manipulate Pokémon", PokemonType.PSYCHIC, null, 0.7, 18, Abilities.FRISK, Abilities.COMPETITIVE, Abilities.SHADOW_TAG, 390, 60, 45, 70, 75, 85, 55, 100, 50, 137, GrowthRate.MEDIUM_SLOW, 25, false), + new PokemonSpecies(Species.GOTHITELLE, 5, false, false, false, "Astral Body Pokémon", PokemonType.PSYCHIC, null, 1.5, 44, Abilities.FRISK, Abilities.COMPETITIVE, Abilities.SHADOW_TAG, 490, 70, 55, 95, 95, 110, 65, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 25, false), + new PokemonSpecies(Species.SOLOSIS, 5, false, false, false, "Cell Pokémon", PokemonType.PSYCHIC, null, 0.3, 1, Abilities.OVERCOAT, Abilities.MAGIC_GUARD, Abilities.REGENERATOR, 290, 45, 30, 40, 105, 50, 20, 200, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.DUOSION, 5, false, false, false, "Mitosis Pokémon", PokemonType.PSYCHIC, null, 0.6, 8, Abilities.OVERCOAT, Abilities.MAGIC_GUARD, Abilities.REGENERATOR, 370, 65, 40, 50, 125, 60, 30, 100, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.REUNICLUS, 5, false, false, false, "Multiplying Pokémon", PokemonType.PSYCHIC, null, 1, 20.1, Abilities.OVERCOAT, Abilities.MAGIC_GUARD, Abilities.REGENERATOR, 490, 110, 65, 75, 125, 85, 30, 50, 50, 245, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.DUCKLETT, 5, false, false, false, "Water Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 0.5, 5.5, Abilities.KEEN_EYE, Abilities.BIG_PECKS, Abilities.HYDRATION, 305, 62, 44, 50, 44, 50, 55, 190, 70, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SWANNA, 5, false, false, false, "White Bird Pokémon", PokemonType.WATER, PokemonType.FLYING, 1.3, 24.2, Abilities.KEEN_EYE, Abilities.BIG_PECKS, Abilities.HYDRATION, 473, 75, 87, 63, 87, 63, 98, 45, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.VANILLITE, 5, false, false, false, "Fresh Snow Pokémon", PokemonType.ICE, null, 0.4, 5.7, Abilities.ICE_BODY, Abilities.SNOW_CLOAK, Abilities.WEAK_ARMOR, 305, 36, 50, 50, 65, 60, 44, 255, 50, 61, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.VANILLISH, 5, false, false, false, "Icy Snow Pokémon", PokemonType.ICE, null, 1.1, 41, Abilities.ICE_BODY, Abilities.SNOW_CLOAK, Abilities.WEAK_ARMOR, 395, 51, 65, 65, 80, 75, 59, 120, 50, 138, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.VANILLUXE, 5, false, false, false, "Snowstorm Pokémon", PokemonType.ICE, null, 1.3, 57.5, Abilities.ICE_BODY, Abilities.SNOW_WARNING, Abilities.WEAK_ARMOR, 535, 71, 95, 85, 110, 95, 79, 45, 50, 268, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.DEERLING, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 0.6, 19.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 335, 60, 60, 50, 40, 50, 75, 190, 70, 67, false, null, true), + ), + new PokemonSpecies(Species.SAWSBUCK, 5, false, false, false, "Season Pokémon", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Spring Form", "spring", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + new PokemonForm("Summer Form", "summer", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + new PokemonForm("Autumn Form", "autumn", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + new PokemonForm("Winter Form", "winter", PokemonType.NORMAL, PokemonType.GRASS, 1.9, 92.5, Abilities.CHLOROPHYLL, Abilities.SAP_SIPPER, Abilities.SERENE_GRACE, 475, 80, 100, 70, 60, 70, 95, 75, 70, 166, false, null, true), + ), + new PokemonSpecies(Species.EMOLGA, 5, false, false, false, "Sky Squirrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 5, Abilities.STATIC, Abilities.NONE, Abilities.MOTOR_DRIVE, 428, 55, 75, 60, 75, 60, 103, 200, 50, 150, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.KARRABLAST, 5, false, false, false, "Clamping Pokémon", PokemonType.BUG, null, 0.5, 5.9, Abilities.SWARM, Abilities.SHED_SKIN, Abilities.NO_GUARD, 315, 50, 75, 45, 40, 45, 60, 200, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ESCAVALIER, 5, false, false, false, "Cavalry Pokémon", PokemonType.BUG, PokemonType.STEEL, 1, 33, Abilities.SWARM, Abilities.SHELL_ARMOR, Abilities.OVERCOAT, 495, 70, 135, 105, 60, 105, 20, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FOONGUS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.2, 1, Abilities.EFFECT_SPORE, Abilities.NONE, Abilities.REGENERATOR, 294, 69, 55, 45, 55, 55, 15, 190, 50, 59, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.AMOONGUSS, 5, false, false, false, "Mushroom Pokémon", PokemonType.GRASS, PokemonType.POISON, 0.6, 10.5, Abilities.EFFECT_SPORE, Abilities.NONE, Abilities.REGENERATOR, 464, 114, 85, 70, 85, 80, 30, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FRILLISH, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 1.2, 33, Abilities.WATER_ABSORB, Abilities.CURSED_BODY, Abilities.DAMP, 335, 55, 40, 50, 65, 85, 40, 190, 50, 67, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.JELLICENT, 5, false, false, false, "Floating Pokémon", PokemonType.WATER, PokemonType.GHOST, 2.2, 135, Abilities.WATER_ABSORB, Abilities.CURSED_BODY, Abilities.DAMP, 480, 100, 60, 70, 85, 105, 60, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, true), + new PokemonSpecies(Species.ALOMOMOLA, 5, false, false, false, "Caring Pokémon", PokemonType.WATER, null, 1.2, 31.6, Abilities.HEALER, Abilities.HYDRATION, Abilities.REGENERATOR, 470, 165, 75, 80, 40, 45, 65, 75, 70, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.JOLTIK, 5, false, false, false, "Attaching Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.1, 0.6, Abilities.COMPOUND_EYES, Abilities.UNNERVE, Abilities.SWARM, 319, 50, 47, 50, 57, 50, 65, 190, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALVANTULA, 5, false, false, false, "EleSpider Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.8, 14.3, Abilities.COMPOUND_EYES, Abilities.UNNERVE, Abilities.SWARM, 472, 70, 77, 60, 97, 60, 108, 75, 50, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FERROSEED, 5, false, false, false, "Thorn Seed Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.6, 18.8, Abilities.IRON_BARBS, Abilities.NONE, Abilities.ANTICIPATION, 305, 44, 50, 91, 24, 86, 10, 255, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FERROTHORN, 5, false, false, false, "Thorn Pod Pokémon", PokemonType.GRASS, PokemonType.STEEL, 1, 110, Abilities.IRON_BARBS, Abilities.NONE, Abilities.ANTICIPATION, 489, 74, 94, 131, 54, 116, 20, 90, 50, 171, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.KLINK, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.3, 21, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 300, 40, 55, 70, 45, 60, 30, 130, 50, 60, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(Species.KLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 51, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 440, 60, 80, 95, 70, 85, 50, 60, 50, 154, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(Species.KLINKLANG, 5, false, false, false, "Gear Pokémon", PokemonType.STEEL, null, 0.6, 81, Abilities.PLUS, Abilities.MINUS, Abilities.CLEAR_BODY, 520, 60, 100, 115, 70, 85, 90, 30, 50, 260, GrowthRate.MEDIUM_SLOW, null, false), + new PokemonSpecies(Species.TYNAMO, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 0.2, 0.3, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 275, 35, 55, 40, 45, 40, 60, 190, 70, 55, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.EELEKTRIK, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 1.2, 22, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 405, 65, 85, 70, 75, 70, 40, 60, 70, 142, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.EELEKTROSS, 5, false, false, false, "EleFish Pokémon", PokemonType.ELECTRIC, null, 2.1, 80.5, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 515, 85, 115, 80, 105, 80, 50, 30, 70, 258, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.ELGYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 0.5, 9, Abilities.TELEPATHY, Abilities.SYNCHRONIZE, Abilities.ANALYTIC, 335, 55, 55, 55, 85, 55, 30, 255, 50, 67, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BEHEEYEM, 5, false, false, false, "Cerebral Pokémon", PokemonType.PSYCHIC, null, 1, 34.5, Abilities.TELEPATHY, Abilities.SYNCHRONIZE, Abilities.ANALYTIC, 485, 75, 75, 75, 125, 95, 40, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.LITWICK, 5, false, false, false, "Candle Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.3, 3.1, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 275, 50, 30, 55, 65, 55, 20, 190, 50, 55, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.LAMPENT, 5, false, false, false, "Lamp Pokémon", PokemonType.GHOST, PokemonType.FIRE, 0.6, 13, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 370, 60, 40, 60, 95, 60, 55, 90, 50, 130, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CHANDELURE, 5, false, false, false, "Luring Pokémon", PokemonType.GHOST, PokemonType.FIRE, 1, 34.3, Abilities.FLASH_FIRE, Abilities.FLAME_BODY, Abilities.INFILTRATOR, 520, 60, 55, 90, 145, 90, 80, 45, 50, 260, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.AXEW, 5, false, false, false, "Tusk Pokémon", PokemonType.DRAGON, null, 0.6, 18, Abilities.RIVALRY, Abilities.MOLD_BREAKER, Abilities.UNNERVE, 320, 46, 87, 60, 30, 40, 57, 75, 35, 64, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.FRAXURE, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1, 36, Abilities.RIVALRY, Abilities.MOLD_BREAKER, Abilities.UNNERVE, 410, 66, 117, 70, 40, 50, 67, 60, 35, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.HAXORUS, 5, false, false, false, "Axe Jaw Pokémon", PokemonType.DRAGON, null, 1.8, 105.5, Abilities.RIVALRY, Abilities.MOLD_BREAKER, Abilities.UNNERVE, 540, 76, 147, 90, 60, 70, 97, 45, 35, 270, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.CUBCHOO, 5, false, false, false, "Chill Pokémon", PokemonType.ICE, null, 0.5, 8.5, Abilities.SNOW_CLOAK, Abilities.SLUSH_RUSH, Abilities.RATTLED, 305, 55, 70, 40, 60, 40, 40, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BEARTIC, 5, false, false, false, "Freezing Pokémon", PokemonType.ICE, null, 2.6, 260, Abilities.SNOW_CLOAK, Abilities.SLUSH_RUSH, Abilities.SWIFT_SWIM, 505, 95, 130, 80, 70, 80, 50, 60, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CRYOGONAL, 5, false, false, false, "Crystallizing Pokémon", PokemonType.ICE, null, 1.1, 148, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 515, 80, 50, 50, 95, 135, 105, 25, 50, 180, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.SHELMET, 5, false, false, false, "Snail Pokémon", PokemonType.BUG, null, 0.4, 7.7, Abilities.HYDRATION, Abilities.SHELL_ARMOR, Abilities.OVERCOAT, 305, 50, 40, 85, 40, 65, 25, 200, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ACCELGOR, 5, false, false, false, "Shell Out Pokémon", PokemonType.BUG, null, 0.8, 25.3, Abilities.HYDRATION, Abilities.STICKY_HOLD, Abilities.UNBURDEN, 495, 80, 70, 40, 100, 60, 145, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.STUNFISK, 5, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.ELECTRIC, 0.7, 11, Abilities.STATIC, Abilities.LIMBER, Abilities.SAND_VEIL, 471, 109, 66, 84, 81, 99, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MIENFOO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 0.9, 20, Abilities.INNER_FOCUS, Abilities.REGENERATOR, Abilities.RECKLESS, 350, 45, 85, 50, 55, 50, 65, 180, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.MIENSHAO, 5, false, false, false, "Martial Arts Pokémon", PokemonType.FIGHTING, null, 1.4, 35.5, Abilities.INNER_FOCUS, Abilities.REGENERATOR, Abilities.RECKLESS, 510, 65, 125, 60, 95, 60, 105, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.DRUDDIGON, 5, false, false, false, "Cave Pokémon", PokemonType.DRAGON, null, 1.6, 139, Abilities.ROUGH_SKIN, Abilities.SHEER_FORCE, Abilities.MOLD_BREAKER, 485, 77, 120, 90, 60, 90, 48, 45, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GOLETT, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1, 92, Abilities.IRON_FIST, Abilities.KLUTZ, Abilities.NO_GUARD, 303, 59, 74, 50, 35, 50, 35, 190, 50, 61, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.GOLURK, 5, false, false, false, "Automaton Pokémon", PokemonType.GROUND, PokemonType.GHOST, 2.8, 330, Abilities.IRON_FIST, Abilities.KLUTZ, Abilities.NO_GUARD, 483, 89, 124, 80, 55, 80, 55, 90, 50, 169, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.PAWNIARD, 5, false, false, false, "Sharp Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 0.5, 10.2, Abilities.DEFIANT, Abilities.INNER_FOCUS, Abilities.PRESSURE, 340, 45, 85, 70, 40, 40, 60, 120, 35, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BISHARP, 5, false, false, false, "Sword Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 1.6, 70, Abilities.DEFIANT, Abilities.INNER_FOCUS, Abilities.PRESSURE, 490, 65, 125, 100, 60, 70, 70, 45, 35, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BOUFFALANT, 5, false, false, false, "Bash Buffalo Pokémon", PokemonType.NORMAL, null, 1.6, 94.6, Abilities.RECKLESS, Abilities.SAP_SIPPER, Abilities.SOUNDPROOF, 490, 95, 110, 95, 40, 95, 55, 45, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.RUFFLET, 5, false, false, false, "Eaglet Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.5, 10.5, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.HUSTLE, 350, 70, 83, 50, 37, 50, 60, 190, 50, 70, GrowthRate.SLOW, 100, false), + new PokemonSpecies(Species.BRAVIARY, 5, false, false, false, "Valiant Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.5, 41, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.DEFIANT, 510, 100, 123, 75, 57, 75, 80, 60, 50, 179, GrowthRate.SLOW, 100, false), + new PokemonSpecies(Species.VULLABY, 5, false, false, false, "Diapered Pokémon", PokemonType.DARK, PokemonType.FLYING, 0.5, 9, Abilities.BIG_PECKS, Abilities.OVERCOAT, Abilities.WEAK_ARMOR, 370, 70, 55, 75, 45, 65, 60, 190, 35, 74, GrowthRate.SLOW, 0, false), + new PokemonSpecies(Species.MANDIBUZZ, 5, false, false, false, "Bone Vulture Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.2, 39.5, Abilities.BIG_PECKS, Abilities.OVERCOAT, Abilities.WEAK_ARMOR, 510, 110, 65, 105, 55, 95, 80, 60, 35, 179, GrowthRate.SLOW, 0, false), + new PokemonSpecies(Species.HEATMOR, 5, false, false, false, "Anteater Pokémon", PokemonType.FIRE, null, 1.4, 58, Abilities.GLUTTONY, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, 484, 85, 97, 66, 105, 66, 65, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DURANT, 5, false, false, false, "Iron Ant Pokémon", PokemonType.BUG, PokemonType.STEEL, 0.3, 33, Abilities.SWARM, Abilities.HUSTLE, Abilities.TRUANT, 484, 58, 109, 112, 48, 48, 109, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DEINO, 5, false, false, false, "Irate Pokémon", PokemonType.DARK, PokemonType.DRAGON, 0.8, 17.3, Abilities.HUSTLE, Abilities.NONE, Abilities.NONE, 300, 52, 65, 50, 45, 50, 38, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.ZWEILOUS, 5, false, false, false, "Hostile Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.4, 50, Abilities.HUSTLE, Abilities.NONE, Abilities.NONE, 420, 72, 85, 70, 65, 70, 58, 45, 35, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.HYDREIGON, 5, false, false, false, "Brutal Pokémon", PokemonType.DARK, PokemonType.DRAGON, 1.8, 160, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 600, 92, 105, 90, 125, 90, 98, 45, 35, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.LARVESTA, 5, false, false, false, "Torch Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.1, 28.8, Abilities.FLAME_BODY, Abilities.NONE, Abilities.SWARM, 360, 55, 85, 55, 50, 55, 60, 45, 50, 72, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.VOLCARONA, 5, false, false, false, "Sun Pokémon", PokemonType.BUG, PokemonType.FIRE, 1.6, 46, Abilities.FLAME_BODY, Abilities.NONE, Abilities.SWARM, 550, 85, 60, 65, 135, 105, 100, 15, 50, 275, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.COBALION, 5, true, false, false, "Iron Will Pokémon", PokemonType.STEEL, PokemonType.FIGHTING, 2.1, 250, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 90, 129, 90, 72, 108, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.TERRAKION, 5, true, false, false, "Cavern Pokémon", PokemonType.ROCK, PokemonType.FIGHTING, 1.9, 260, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 129, 90, 72, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.VIRIZION, 5, true, false, false, "Grassland Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 2, 200, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 90, 72, 90, 129, 108, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.TORNADUS, 5, true, false, false, "Cyclone Pokémon", PokemonType.FLYING, null, 1.5, 63, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FLYING, null, 1.5, 63, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.FLYING, null, 1.4, 63, Abilities.REGENERATOR, Abilities.NONE, Abilities.REGENERATOR, 580, 79, 100, 80, 110, 90, 121, 3, 90, 290), + ), + new PokemonSpecies(Species.THUNDURUS, 5, true, false, false, "Bolt Strike Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.ELECTRIC, PokemonType.FLYING, 1.5, 61, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.ELECTRIC, PokemonType.FLYING, 3, 61, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.VOLT_ABSORB, 580, 79, 105, 70, 145, 80, 101, 3, 90, 290), + ), + new PokemonSpecies(Species.RESHIRAM, 5, false, true, false, "Vast White Pokémon", PokemonType.DRAGON, PokemonType.FIRE, 3.2, 330, Abilities.TURBOBLAZE, Abilities.NONE, Abilities.NONE, 680, 100, 120, 100, 150, 120, 90, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ZEKROM, 5, false, true, false, "Deep Black Pokémon", PokemonType.DRAGON, PokemonType.ELECTRIC, 2.9, 345, Abilities.TERAVOLT, Abilities.NONE, Abilities.NONE, 680, 100, 150, 120, 120, 100, 90, 3, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.LANDORUS, 5, true, false, false, "Abundance Pokémon", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, GrowthRate.SLOW, 100, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.GROUND, PokemonType.FLYING, 1.5, 68, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.GROUND, PokemonType.FLYING, 1.3, 68, Abilities.INTIMIDATE, Abilities.NONE, Abilities.INTIMIDATE, 600, 89, 145, 90, 105, 80, 91, 3, 90, 300), + ), + new PokemonSpecies(Species.KYUREM, 5, false, true, false, "Boundary Pokémon", PokemonType.DRAGON, PokemonType.ICE, 3, 325, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.DRAGON, PokemonType.ICE, 3, 325, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330, false, null, true), + new PokemonForm("Black", "black", PokemonType.DRAGON, PokemonType.ICE, 3.3, 325, Abilities.TERAVOLT, Abilities.NONE, Abilities.NONE, 700, 125, 170, 100, 120, 90, 95, 3, 0, 350), + new PokemonForm("White", "white", PokemonType.DRAGON, PokemonType.ICE, 3.6, 325, Abilities.TURBOBLAZE, Abilities.NONE, Abilities.NONE, 700, 125, 120, 90, 170, 100, 95, 3, 0, 350), + ), + new PokemonSpecies(Species.KELDEO, 5, false, false, true, "Colt Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, GrowthRate.SLOW, null, false, true, + new PokemonForm("Ordinary Form", "ordinary", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290, false, null, true), + new PokemonForm("Resolute", "resolute", PokemonType.WATER, PokemonType.FIGHTING, 1.4, 48.5, Abilities.JUSTIFIED, Abilities.NONE, Abilities.NONE, 580, 91, 72, 90, 129, 90, 108, 3, 35, 290), + ), + new PokemonSpecies(Species.MELOETTA, 5, false, false, true, "Melody Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Aria Forme", "aria", PokemonType.NORMAL, PokemonType.PSYCHIC, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 77, 77, 128, 128, 90, 3, 100, 300, false, null, true), + new PokemonForm("Pirouette Forme", "pirouette", PokemonType.NORMAL, PokemonType.FIGHTING, 0.6, 6.5, Abilities.SERENE_GRACE, Abilities.NONE, Abilities.NONE, 600, 100, 128, 90, 77, 77, 128, 3, 100, 300, false, null, true), + ), + new PokemonSpecies(Species.GENESECT, 5, false, false, true, "Paleozoic Pokémon", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300, false, null, true), + new PokemonForm("Shock Drive", "shock", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + new PokemonForm("Burn Drive", "burn", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + new PokemonForm("Chill Drive", "chill", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + new PokemonForm("Douse Drive", "douse", PokemonType.BUG, PokemonType.STEEL, 1.5, 82.5, Abilities.DOWNLOAD, Abilities.NONE, Abilities.NONE, 600, 71, 120, 95, 120, 95, 99, 3, 0, 300), + ), + new PokemonSpecies(Species.CHESPIN, 6, false, false, false, "Spiny Nut Pokémon", PokemonType.GRASS, null, 0.4, 9, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 313, 56, 61, 65, 48, 45, 38, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.QUILLADIN, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, null, 0.7, 29, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 405, 61, 78, 95, 56, 58, 57, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.CHESNAUGHT, 6, false, false, false, "Spiny Armor Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.BULLETPROOF, 530, 88, 107, 122, 74, 75, 64, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.FENNEKIN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 0.4, 9.4, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 307, 40, 45, 40, 62, 60, 60, 45, 70, 61, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.BRAIXEN, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, null, 1, 14.5, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 409, 59, 59, 58, 90, 70, 73, 45, 70, 143, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.DELPHOX, 6, false, false, false, "Fox Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 39, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 267, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, null, true), + new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, "", true), + ), + new PokemonSpecies(Species.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", PokemonType.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, null, true), + new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, "", true), + ), + new PokemonSpecies(Species.GRENINJA, 6, false, false, false, "Ninja Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, false, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, null, true), + new PokemonForm("Battle Bond", "battle-bond", PokemonType.WATER, PokemonType.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 265, false, "", true), + new PokemonForm("Ash", "ash", PokemonType.WATER, PokemonType.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 640, 72, 145, 67, 153, 71, 132, 45, 70, 265), + ), + new PokemonSpecies(Species.BUNNELBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, null, 0.4, 5, Abilities.PICKUP, Abilities.CHEEK_POUCH, Abilities.HUGE_POWER, 237, 38, 36, 38, 32, 36, 57, 255, 50, 47, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DIGGERSBY, 6, false, false, false, "Digging Pokémon", PokemonType.NORMAL, PokemonType.GROUND, 1, 42.4, Abilities.PICKUP, Abilities.CHEEK_POUCH, Abilities.HUGE_POWER, 423, 85, 56, 77, 50, 77, 78, 127, 50, 148, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FLETCHLING, 6, false, false, false, "Tiny Robin Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.7, Abilities.BIG_PECKS, Abilities.NONE, Abilities.GALE_WINGS, 278, 45, 50, 43, 40, 38, 62, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.FLETCHINDER, 6, false, false, false, "Ember Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.7, 16, Abilities.FLAME_BODY, Abilities.NONE, Abilities.GALE_WINGS, 382, 62, 73, 55, 56, 52, 84, 120, 50, 134, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.TALONFLAME, 6, false, false, false, "Scorching Pokémon", PokemonType.FIRE, PokemonType.FLYING, 1.2, 24.5, Abilities.FLAME_BODY, Abilities.NONE, Abilities.GALE_WINGS, 499, 78, 81, 71, 74, 69, 126, 45, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SCATTERBUG, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 2.5, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 200, 38, 35, 40, 27, 25, 35, 255, 70, 40, false, "", true), + ), + new PokemonSpecies(Species.SPEWPA, 6, false, false, false, "Scatterdust Pokémon", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.SHED_SKIN, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("River Pattern", "river", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, null, 0.3, 8.4, Abilities.SHED_SKIN, Abilities.NONE, Abilities.FRIEND_GUARD, 213, 45, 22, 60, 27, 30, 29, 120, 70, 75, false, "", true), + ), + new PokemonSpecies(Species.VIVILLON, 6, false, false, false, "Scale Pokémon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Meadow Pattern", "meadow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Icy Snow Pattern", "icy-snow", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Polar Pattern", "polar", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Tundra Pattern", "tundra", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Continental Pattern", "continental", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Garden Pattern", "garden", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Elegant Pattern", "elegant", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Modern Pattern", "modern", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Marine Pattern", "marine", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Archipelago Pattern", "archipelago", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("High Plains Pattern", "high-plains", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Sandstorm Pattern", "sandstorm", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("River Pattern", "river", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Monsoon Pattern", "monsoon", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Savanna Pattern", "savanna", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Sun Pattern", "sun", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Ocean Pattern", "ocean", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Jungle Pattern", "jungle", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Fancy Pattern", "fancy", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + new PokemonForm("Poké Ball Pattern", "poke-ball", PokemonType.BUG, PokemonType.FLYING, 1.2, 17, Abilities.SHIELD_DUST, Abilities.COMPOUND_EYES, Abilities.FRIEND_GUARD, 411, 80, 52, 50, 90, 50, 89, 45, 70, 206, false, null, true), + ), + new PokemonSpecies(Species.LITLEO, 6, false, false, false, "Lion Cub Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 0.6, 13.5, Abilities.RIVALRY, Abilities.UNNERVE, Abilities.MOXIE, 369, 62, 50, 58, 73, 54, 72, 220, 70, 74, GrowthRate.MEDIUM_SLOW, 12.5, false), + new PokemonSpecies(Species.PYROAR, 6, false, false, false, "Royal Pokémon", PokemonType.FIRE, PokemonType.NORMAL, 1.5, 81.5, Abilities.RIVALRY, Abilities.UNNERVE, Abilities.MOXIE, 507, 86, 68, 72, 109, 66, 106, 65, 70, 177, GrowthRate.MEDIUM_SLOW, 12.5, true), + new PokemonSpecies(Species.FLABEBE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.1, 0.1, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 303, 44, 38, 39, 61, 79, 42, 225, 70, 61, false, null, true), + ), + new PokemonSpecies(Species.FLOETTE, 6, false, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 371, 54, 45, 47, 75, 98, 52, 120, 70, 130, false, null, true), + ), + new PokemonSpecies(Species.FLORGES, 6, false, false, false, "Garden Pokémon", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, GrowthRate.MEDIUM_FAST, 0, false, false, + new PokemonForm("Red Flower", "red", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("Yellow Flower", "yellow", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("Orange Flower", "orange", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("Blue Flower", "blue", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + new PokemonForm("White Flower", "white", PokemonType.FAIRY, null, 1.1, 10, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 552, 78, 65, 68, 112, 154, 75, 45, 70, 276, false, null, true), + ), + new PokemonSpecies(Species.SKIDDO, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 0.9, 31, Abilities.SAP_SIPPER, Abilities.NONE, Abilities.GRASS_PELT, 350, 66, 65, 48, 62, 57, 52, 200, 70, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GOGOAT, 6, false, false, false, "Mount Pokémon", PokemonType.GRASS, null, 1.7, 91, Abilities.SAP_SIPPER, Abilities.NONE, Abilities.GRASS_PELT, 531, 123, 100, 62, 97, 81, 68, 45, 70, 186, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PANCHAM, 6, false, false, false, "Playful Pokémon", PokemonType.FIGHTING, null, 0.6, 8, Abilities.IRON_FIST, Abilities.MOLD_BREAKER, Abilities.SCRAPPY, 348, 67, 82, 62, 46, 48, 43, 220, 50, 70, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PANGORO, 6, false, false, false, "Daunting Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 2.1, 136, Abilities.IRON_FIST, Abilities.MOLD_BREAKER, Abilities.SCRAPPY, 495, 95, 124, 78, 69, 71, 58, 65, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FURFROU, 6, false, false, false, "Poodle Pokémon", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Natural Form", "", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Heart Trim", "heart", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Star Trim", "star", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Diamond Trim", "diamond", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Debutante Trim", "debutante", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Matron Trim", "matron", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Dandy Trim", "dandy", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("La Reine Trim", "la-reine", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Kabuki Trim", "kabuki", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + new PokemonForm("Pharaoh Trim", "pharaoh", PokemonType.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, null, true), + ), + new PokemonSpecies(Species.ESPURR, 6, false, false, false, "Restraint Pokémon", PokemonType.PSYCHIC, null, 0.3, 3.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.OWN_TEMPO, 355, 62, 48, 54, 63, 60, 68, 190, 50, 71, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MEOWSTIC, 6, false, false, false, "Constraint Pokémon", PokemonType.PSYCHIC, null, 0.6, 8.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.PSYCHIC, null, 0.6, 8.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.PRANKSTER, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, "", true), + new PokemonForm("Female", "female", PokemonType.PSYCHIC, null, 0.6, 8.5, Abilities.KEEN_EYE, Abilities.INFILTRATOR, Abilities.COMPETITIVE, 466, 74, 48, 76, 83, 81, 104, 75, 50, 163, false, null, true), + ), + new PokemonSpecies(Species.HONEDGE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 2, Abilities.NO_GUARD, Abilities.NONE, Abilities.NONE, 325, 45, 80, 100, 35, 37, 28, 180, 50, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DOUBLADE, 6, false, false, false, "Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 0.8, 4.5, Abilities.NO_GUARD, Abilities.NONE, Abilities.NONE, 448, 59, 110, 150, 45, 49, 35, 90, 50, 157, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.AEGISLASH, 6, false, false, false, "Royal Sword Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, Abilities.STANCE_CHANGE, Abilities.NONE, Abilities.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Shield Forme", "shield", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, Abilities.STANCE_CHANGE, Abilities.NONE, Abilities.NONE, 500, 60, 50, 140, 50, 140, 60, 45, 50, 250, false, "", true), + new PokemonForm("Blade Forme", "blade", PokemonType.STEEL, PokemonType.GHOST, 1.7, 53, Abilities.STANCE_CHANGE, Abilities.NONE, Abilities.NONE, 500, 60, 140, 50, 140, 50, 60, 45, 50, 250), + ), + new PokemonSpecies(Species.SPRITZEE, 6, false, false, false, "Perfume Pokémon", PokemonType.FAIRY, null, 0.2, 0.5, Abilities.HEALER, Abilities.NONE, Abilities.AROMA_VEIL, 341, 78, 52, 60, 63, 65, 23, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.AROMATISSE, 6, false, false, false, "Fragrance Pokémon", PokemonType.FAIRY, null, 0.8, 15.5, Abilities.HEALER, Abilities.NONE, Abilities.AROMA_VEIL, 462, 101, 72, 72, 99, 89, 29, 140, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SWIRLIX, 6, false, false, false, "Cotton Candy Pokémon", PokemonType.FAIRY, null, 0.4, 3.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.UNBURDEN, 341, 62, 48, 66, 59, 57, 49, 200, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SLURPUFF, 6, false, false, false, "Meringue Pokémon", PokemonType.FAIRY, null, 0.8, 5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.UNBURDEN, 480, 82, 80, 86, 85, 75, 72, 140, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.INKAY, 6, false, false, false, "Revolving Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 0.4, 3.5, Abilities.CONTRARY, Abilities.SUCTION_CUPS, Abilities.INFILTRATOR, 288, 53, 54, 53, 37, 46, 45, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MALAMAR, 6, false, false, false, "Overturning Pokémon", PokemonType.DARK, PokemonType.PSYCHIC, 1.5, 47, Abilities.CONTRARY, Abilities.SUCTION_CUPS, Abilities.INFILTRATOR, 482, 86, 92, 88, 68, 75, 73, 80, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BINACLE, 6, false, false, false, "Two-Handed Pokémon", PokemonType.ROCK, PokemonType.WATER, 0.5, 31, Abilities.TOUGH_CLAWS, Abilities.SNIPER, Abilities.PICKPOCKET, 306, 42, 52, 67, 39, 56, 50, 120, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BARBARACLE, 6, false, false, false, "Collective Pokémon", PokemonType.ROCK, PokemonType.WATER, 1.3, 96, Abilities.TOUGH_CLAWS, Abilities.SNIPER, Abilities.PICKPOCKET, 500, 72, 105, 115, 54, 86, 68, 45, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SKRELP, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.WATER, 0.5, 7.3, Abilities.POISON_POINT, Abilities.POISON_TOUCH, Abilities.ADAPTABILITY, 320, 50, 60, 60, 60, 60, 30, 225, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DRAGALGE, 6, false, false, false, "Mock Kelp Pokémon", PokemonType.POISON, PokemonType.DRAGON, 1.8, 81.5, Abilities.POISON_POINT, Abilities.POISON_TOUCH, Abilities.ADAPTABILITY, 494, 65, 75, 90, 97, 123, 44, 55, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CLAUNCHER, 6, false, false, false, "Water Gun Pokémon", PokemonType.WATER, null, 0.5, 8.3, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.NONE, 330, 50, 53, 62, 58, 63, 44, 225, 50, 66, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.CLAWITZER, 6, false, false, false, "Howitzer Pokémon", PokemonType.WATER, null, 1.3, 35.3, Abilities.MEGA_LAUNCHER, Abilities.NONE, Abilities.NONE, 500, 71, 73, 88, 120, 89, 59, 55, 50, 100, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.HELIOPTILE, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 0.5, 6, Abilities.DRY_SKIN, Abilities.SAND_VEIL, Abilities.SOLAR_POWER, 289, 44, 38, 33, 61, 43, 70, 190, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.HELIOLISK, 6, false, false, false, "Generator Pokémon", PokemonType.ELECTRIC, PokemonType.NORMAL, 1, 21, Abilities.DRY_SKIN, Abilities.SAND_VEIL, Abilities.SOLAR_POWER, 481, 62, 55, 52, 109, 94, 109, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.TYRUNT, 6, false, false, false, "Royal Heir Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 0.8, 26, Abilities.STRONG_JAW, Abilities.NONE, Abilities.STURDY, 362, 58, 89, 77, 45, 45, 48, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.TYRANTRUM, 6, false, false, false, "Despot Pokémon", PokemonType.ROCK, PokemonType.DRAGON, 2.5, 270, Abilities.STRONG_JAW, Abilities.NONE, Abilities.ROCK_HEAD, 521, 82, 121, 119, 69, 59, 71, 45, 50, 182, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.AMAURA, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 1.3, 25.2, Abilities.REFRIGERATE, Abilities.NONE, Abilities.SNOW_WARNING, 362, 77, 59, 50, 67, 63, 46, 45, 50, 72, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.AURORUS, 6, false, false, false, "Tundra Pokémon", PokemonType.ROCK, PokemonType.ICE, 2.7, 225, Abilities.REFRIGERATE, Abilities.NONE, Abilities.SNOW_WARNING, 521, 123, 77, 72, 99, 92, 58, 45, 50, 104, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.SYLVEON, 6, false, false, false, "Intertwining Pokémon", PokemonType.FAIRY, null, 1, 23.5, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.PIXILATE, 525, 95, 65, 65, 110, 130, 60, 45, 50, 184, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.HAWLUCHA, 6, false, false, false, "Wrestling Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 0.8, 21.5, Abilities.LIMBER, Abilities.UNBURDEN, Abilities.MOLD_BREAKER, 500, 78, 92, 75, 74, 63, 118, 100, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DEDENNE, 6, false, false, false, "Antenna Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 0.2, 2.2, Abilities.CHEEK_POUCH, Abilities.PICKUP, Abilities.PLUS, 431, 67, 58, 57, 81, 67, 101, 180, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CARBINK, 6, false, false, false, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.3, 5.7, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.STURDY, 500, 50, 50, 150, 50, 150, 50, 60, 50, 100, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.GOOMY, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.3, 2.8, Abilities.SAP_SIPPER, Abilities.HYDRATION, Abilities.GOOEY, 300, 45, 50, 35, 55, 75, 40, 45, 35, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.SLIGGOO, 6, false, false, false, "Soft Tissue Pokémon", PokemonType.DRAGON, null, 0.8, 17.5, Abilities.SAP_SIPPER, Abilities.HYDRATION, Abilities.GOOEY, 452, 68, 75, 53, 83, 113, 60, 45, 35, 158, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.GOODRA, 6, false, false, false, "Dragon Pokémon", PokemonType.DRAGON, null, 2, 150.5, Abilities.SAP_SIPPER, Abilities.HYDRATION, Abilities.GOOEY, 600, 90, 100, 70, 110, 150, 80, 45, 35, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.KLEFKI, 6, false, false, false, "Key Ring Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 0.2, 3, Abilities.PRANKSTER, Abilities.NONE, Abilities.MAGICIAN, 470, 57, 80, 91, 80, 87, 75, 75, 50, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.PHANTUMP, 6, false, false, false, "Stump Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 7, Abilities.NATURAL_CURE, Abilities.FRISK, Abilities.HARVEST, 309, 43, 70, 48, 50, 60, 38, 120, 50, 62, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.TREVENANT, 6, false, false, false, "Elder Tree Pokémon", PokemonType.GHOST, PokemonType.GRASS, 1.5, 71, Abilities.NATURAL_CURE, Abilities.FRISK, Abilities.HARVEST, 474, 85, 110, 76, 65, 82, 56, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PUMPKABOO, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.4, 5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 49, 66, 70, 44, 55, 51, 120, 50, 67, false, null, true), + new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.3, 3.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 44, 66, 70, 44, 55, 56, 120, 50, 67, false, "", true), + new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 0.5, 7.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 54, 66, 70, 44, 55, 46, 120, 50, 67, false, "", true), + new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 0.8, 15, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 335, 59, 66, 70, 44, 55, 41, 120, 50, 67, false, "", true), + ), + new PokemonSpecies(Species.GOURGEIST, 6, false, false, false, "Pumpkin Pokémon", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Average Size", "", PokemonType.GHOST, PokemonType.GRASS, 0.9, 12.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 65, 90, 122, 58, 75, 84, 60, 50, 173, false, null, true), + new PokemonForm("Small Size", "small", PokemonType.GHOST, PokemonType.GRASS, 0.7, 9.5, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 55, 85, 122, 58, 75, 99, 60, 50, 173, false, "", true), + new PokemonForm("Large Size", "large", PokemonType.GHOST, PokemonType.GRASS, 1.1, 14, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 75, 95, 122, 58, 75, 69, 60, 50, 173, false, "", true), + new PokemonForm("Super Size", "super", PokemonType.GHOST, PokemonType.GRASS, 1.7, 39, Abilities.PICKUP, Abilities.FRISK, Abilities.INSOMNIA, 494, 85, 100, 122, 58, 75, 54, 60, 50, 173, false, "", true), + ), + new PokemonSpecies(Species.BERGMITE, 6, false, false, false, "Ice Chunk Pokémon", PokemonType.ICE, null, 1, 99.5, Abilities.OWN_TEMPO, Abilities.ICE_BODY, Abilities.STURDY, 304, 55, 69, 85, 32, 35, 28, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.AVALUGG, 6, false, false, false, "Iceberg Pokémon", PokemonType.ICE, null, 2, 505, Abilities.OWN_TEMPO, Abilities.ICE_BODY, Abilities.STURDY, 514, 95, 117, 184, 44, 46, 28, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.NOIBAT, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 0.5, 8, Abilities.FRISK, Abilities.INFILTRATOR, Abilities.TELEPATHY, 245, 40, 30, 35, 45, 40, 55, 190, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.NOIVERN, 6, false, false, false, "Sound Wave Pokémon", PokemonType.FLYING, PokemonType.DRAGON, 1.5, 85, Abilities.FRISK, Abilities.INFILTRATOR, Abilities.TELEPATHY, 535, 85, 70, 80, 97, 80, 123, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.XERNEAS, 6, false, true, false, "Life Pokémon", PokemonType.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false, true, + new PokemonForm("Neutral Mode", "neutral", PokemonType.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, false, null, true), + new PokemonForm("Active Mode", "active", PokemonType.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340) + ), + new PokemonSpecies(Species.YVELTAL, 6, false, true, false, "Destruction Pokémon", PokemonType.DARK, PokemonType.FLYING, 5.8, 203, Abilities.DARK_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ZYGARDE, 6, false, true, false, "Order Pokémon", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("50% Forme", "50", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), + new PokemonForm("10% Forme", "10", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, Abilities.AURA_BREAK, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, null, true), + new PokemonForm("50% Forme Power Construct", "50-pc", PokemonType.DRAGON, PokemonType.GROUND, 5, 305, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 600, 108, 100, 121, 81, 95, 95, 3, 0, 300, false, "", true), + new PokemonForm("10% Forme Power Construct", "10-pc", PokemonType.DRAGON, PokemonType.GROUND, 1.2, 33.5, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 243, false, "10", true), + new PokemonForm("Complete Forme (50% PC)", "complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354), + new PokemonForm("Complete Forme (10% PC)", "10-complete", PokemonType.DRAGON, PokemonType.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 354, false, "complete"), + ), + new PokemonSpecies(Species.DIANCIE, 6, false, false, true, "Jewel Pokémon", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, false, null, true), + new PokemonForm("Mega", SpeciesFormKey.MEGA, PokemonType.ROCK, PokemonType.FAIRY, 1.1, 27.8, Abilities.MAGIC_BOUNCE, Abilities.NONE, Abilities.NONE, 700, 50, 160, 110, 160, 110, 110, 3, 50, 300), + ), + new PokemonSpecies(Species.HOOPA, 6, false, false, true, "Mischief Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Hoopa Confined", "", PokemonType.PSYCHIC, PokemonType.GHOST, 0.5, 9, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 600, 80, 110, 60, 150, 130, 70, 3, 100, 300, false, null, true), + new PokemonForm("Hoopa Unbound", "unbound", PokemonType.PSYCHIC, PokemonType.DARK, 6.5, 490, Abilities.MAGICIAN, Abilities.NONE, Abilities.NONE, 680, 80, 160, 60, 170, 130, 80, 3, 100, 340), + ), + new PokemonSpecies(Species.VOLCANION, 6, false, false, true, "Steam Pokémon", PokemonType.FIRE, PokemonType.WATER, 1.7, 195, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.NONE, 600, 80, 110, 120, 130, 90, 70, 3, 100, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ROWLET, 7, false, false, false, "Grass Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.3, 1.5, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 320, 68, 55, 55, 50, 50, 42, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.DARTRIX, 7, false, false, false, "Blade Quill Pokémon", PokemonType.GRASS, PokemonType.FLYING, 0.7, 16, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 420, 78, 75, 75, 70, 70, 52, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.DECIDUEYE, 7, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.6, 36.6, Abilities.OVERGROW, Abilities.NONE, Abilities.LONG_REACH, 530, 78, 107, 75, 100, 100, 70, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.LITTEN, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.4, 4.3, Abilities.BLAZE, Abilities.NONE, Abilities.INTIMIDATE, 320, 45, 65, 40, 60, 40, 70, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.TORRACAT, 7, false, false, false, "Fire Cat Pokémon", PokemonType.FIRE, null, 0.7, 25, Abilities.BLAZE, Abilities.NONE, Abilities.INTIMIDATE, 420, 65, 85, 50, 80, 50, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.INCINEROAR, 7, false, false, false, "Heel Pokémon", PokemonType.FIRE, PokemonType.DARK, 1.8, 83, Abilities.BLAZE, Abilities.NONE, Abilities.INTIMIDATE, 530, 95, 115, 90, 80, 90, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.POPPLIO, 7, false, false, false, "Sea Lion Pokémon", PokemonType.WATER, null, 0.4, 7.5, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 320, 50, 54, 54, 66, 56, 40, 45, 50, 64, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.BRIONNE, 7, false, false, false, "Pop Star Pokémon", PokemonType.WATER, null, 0.6, 17.5, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 420, 60, 69, 69, 91, 81, 50, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.PRIMARINA, 7, false, false, false, "Soloist Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.8, 44, Abilities.TORRENT, Abilities.NONE, Abilities.LIQUID_VOICE, 530, 80, 74, 74, 126, 116, 60, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.PIKIPEK, 7, false, false, false, "Woodpecker Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.3, 1.2, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.PICKUP, 265, 35, 75, 30, 30, 30, 65, 255, 70, 53, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.TRUMBEAK, 7, false, false, false, "Bugle Beak Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 14.8, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.PICKUP, 355, 55, 85, 50, 40, 50, 75, 120, 70, 124, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.TOUCANNON, 7, false, false, false, "Cannon Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 1.1, 26, Abilities.KEEN_EYE, Abilities.SKILL_LINK, Abilities.SHEER_FORCE, 485, 80, 120, 75, 75, 75, 60, 45, 70, 243, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.YUNGOOS, 7, false, false, false, "Loitering Pokémon", PokemonType.NORMAL, null, 0.4, 6, Abilities.STAKEOUT, Abilities.STRONG_JAW, Abilities.ADAPTABILITY, 253, 48, 70, 30, 30, 30, 45, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GUMSHOOS, 7, false, false, false, "Stakeout Pokémon", PokemonType.NORMAL, null, 0.7, 14.2, Abilities.STAKEOUT, Abilities.STRONG_JAW, Abilities.ADAPTABILITY, 418, 88, 110, 60, 55, 60, 45, 127, 70, 146, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GRUBBIN, 7, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 4.4, Abilities.SWARM, Abilities.NONE, Abilities.NONE, 300, 47, 62, 45, 55, 45, 46, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CHARJABUG, 7, false, false, false, "Battery Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 0.5, 10.5, Abilities.BATTERY, Abilities.NONE, Abilities.NONE, 400, 57, 82, 95, 55, 75, 36, 120, 50, 140, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.VIKAVOLT, 7, false, false, false, "Stag Beetle Pokémon", PokemonType.BUG, PokemonType.ELECTRIC, 1.5, 45, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 500, 77, 70, 90, 145, 75, 43, 45, 50, 250, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CRABRAWLER, 7, false, false, false, "Boxing Pokémon", PokemonType.FIGHTING, null, 0.6, 7, Abilities.HYPER_CUTTER, Abilities.IRON_FIST, Abilities.ANGER_POINT, 338, 47, 82, 57, 42, 47, 63, 225, 70, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CRABOMINABLE, 7, false, false, false, "Woolly Crab Pokémon", PokemonType.FIGHTING, PokemonType.ICE, 1.7, 180, Abilities.HYPER_CUTTER, Abilities.IRON_FIST, Abilities.ANGER_POINT, 478, 97, 132, 77, 62, 67, 43, 60, 70, 167, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ORICORIO, 7, false, false, false, "Dancing Pokémon", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, GrowthRate.MEDIUM_FAST, 25, false, false, + new PokemonForm("Baile Style", "baile", PokemonType.FIRE, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, "", true), + new PokemonForm("Pom-Pom Style", "pompom", PokemonType.ELECTRIC, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), + new PokemonForm("Pau Style", "pau", PokemonType.PSYCHIC, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), + new PokemonForm("Sensu Style", "sensu", PokemonType.GHOST, PokemonType.FLYING, 0.6, 3.4, Abilities.DANCER, Abilities.NONE, Abilities.NONE, 476, 75, 70, 70, 98, 70, 93, 45, 70, 167, false, null, true), + ), + new PokemonSpecies(Species.CUTIEFLY, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.1, 0.2, Abilities.HONEY_GATHER, Abilities.SHIELD_DUST, Abilities.SWEET_VEIL, 304, 40, 45, 40, 55, 40, 84, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.RIBOMBEE, 7, false, false, false, "Bee Fly Pokémon", PokemonType.BUG, PokemonType.FAIRY, 0.2, 0.5, Abilities.HONEY_GATHER, Abilities.SHIELD_DUST, Abilities.SWEET_VEIL, 464, 60, 55, 60, 95, 70, 124, 75, 50, 162, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ROCKRUFF, 7, false, false, false, "Puppy Pokémon", PokemonType.ROCK, null, 0.5, 9.2, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.ROCK, null, 0.5, 9.2, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, null, true), + new PokemonForm("Own Tempo", "own-tempo", PokemonType.ROCK, null, 0.5, 9.2, Abilities.OWN_TEMPO, Abilities.NONE, Abilities.OWN_TEMPO, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, "", true), + ), + new PokemonSpecies(Species.LYCANROC, 7, false, false, false, "Wolf Pokémon", PokemonType.ROCK, null, 0.8, 25, Abilities.KEEN_EYE, Abilities.SAND_RUSH, Abilities.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Midday Form", "midday", PokemonType.ROCK, null, 0.8, 25, Abilities.KEEN_EYE, Abilities.SAND_RUSH, Abilities.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, false, "", true), + new PokemonForm("Midnight Form", "midnight", PokemonType.ROCK, null, 1.1, 25, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.NO_GUARD, 487, 85, 115, 75, 55, 75, 82, 90, 50, 170, false, null, true), + new PokemonForm("Dusk Form", "dusk", PokemonType.ROCK, null, 0.8, 25, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 487, 75, 117, 65, 55, 65, 110, 90, 50, 170, false, null, true), + ), + new PokemonSpecies(Species.WISHIWASHI, 7, false, false, false, "Small Fry Pokémon", PokemonType.WATER, null, 0.2, 0.3, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, GrowthRate.FAST, 50, false, false, + new PokemonForm("Solo Form", "", PokemonType.WATER, null, 0.2, 0.3, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61, false, null, true), + new PokemonForm("School", "school", PokemonType.WATER, null, 8.2, 78.6, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 620, 45, 140, 130, 140, 135, 30, 60, 50, 217), + ), + new PokemonSpecies(Species.MAREANIE, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.4, 8, Abilities.MERCILESS, Abilities.LIMBER, Abilities.REGENERATOR, 305, 50, 53, 62, 43, 52, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.TOXAPEX, 7, false, false, false, "Brutal Star Pokémon", PokemonType.POISON, PokemonType.WATER, 0.7, 14.5, Abilities.MERCILESS, Abilities.LIMBER, Abilities.REGENERATOR, 495, 50, 63, 152, 53, 142, 35, 75, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MUDBRAY, 7, false, false, false, "Donkey Pokémon", PokemonType.GROUND, null, 1, 110, Abilities.OWN_TEMPO, Abilities.STAMINA, Abilities.INNER_FOCUS, 385, 70, 100, 70, 45, 55, 45, 190, 50, 77, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MUDSDALE, 7, false, false, false, "Draft Horse Pokémon", PokemonType.GROUND, null, 2.5, 920, Abilities.OWN_TEMPO, Abilities.STAMINA, Abilities.INNER_FOCUS, 500, 100, 125, 100, 55, 85, 35, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DEWPIDER, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 0.3, 4, Abilities.WATER_BUBBLE, Abilities.NONE, Abilities.WATER_ABSORB, 269, 38, 40, 52, 40, 72, 27, 200, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ARAQUANID, 7, false, false, false, "Water Bubble Pokémon", PokemonType.WATER, PokemonType.BUG, 1.8, 82, Abilities.WATER_BUBBLE, Abilities.NONE, Abilities.WATER_ABSORB, 454, 68, 70, 92, 50, 132, 42, 100, 50, 159, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FOMANTIS, 7, false, false, false, "Sickle Grass Pokémon", PokemonType.GRASS, null, 0.3, 1.5, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.CONTRARY, 250, 40, 55, 35, 50, 35, 35, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.LURANTIS, 7, false, false, false, "Bloom Sickle Pokémon", PokemonType.GRASS, null, 0.9, 18.5, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.CONTRARY, 480, 70, 105, 90, 80, 90, 45, 75, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MORELULL, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 0.2, 1.5, Abilities.ILLUMINATE, Abilities.EFFECT_SPORE, Abilities.RAIN_DISH, 285, 40, 35, 55, 65, 75, 15, 190, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SHIINOTIC, 7, false, false, false, "Illuminating Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1, 11.5, Abilities.ILLUMINATE, Abilities.EFFECT_SPORE, Abilities.RAIN_DISH, 405, 60, 45, 80, 90, 100, 30, 75, 50, 142, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SALANDIT, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 0.6, 4.8, Abilities.CORROSION, Abilities.NONE, Abilities.OBLIVIOUS, 320, 48, 44, 40, 71, 40, 77, 120, 50, 64, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.SALAZZLE, 7, false, false, false, "Toxic Lizard Pokémon", PokemonType.POISON, PokemonType.FIRE, 1.2, 22.2, Abilities.CORROSION, Abilities.NONE, Abilities.OBLIVIOUS, 480, 68, 64, 60, 111, 60, 117, 45, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(Species.STUFFUL, 7, false, false, false, "Flailing Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 0.5, 6.8, Abilities.FLUFFY, Abilities.KLUTZ, Abilities.CUTE_CHARM, 340, 70, 75, 50, 45, 50, 50, 140, 50, 68, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BEWEAR, 7, false, false, false, "Strong Arm Pokémon", PokemonType.NORMAL, PokemonType.FIGHTING, 2.1, 135, Abilities.FLUFFY, Abilities.KLUTZ, Abilities.UNNERVE, 500, 120, 125, 80, 55, 60, 60, 70, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BOUNSWEET, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.3, 3.2, Abilities.LEAF_GUARD, Abilities.OBLIVIOUS, Abilities.SWEET_VEIL, 210, 42, 30, 38, 30, 38, 32, 235, 50, 42, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.STEENEE, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 0.7, 8.2, Abilities.LEAF_GUARD, Abilities.OBLIVIOUS, Abilities.SWEET_VEIL, 290, 52, 40, 48, 40, 48, 62, 120, 50, 102, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.TSAREENA, 7, false, false, false, "Fruit Pokémon", PokemonType.GRASS, null, 1.2, 21.4, Abilities.LEAF_GUARD, Abilities.QUEENLY_MAJESTY, Abilities.SWEET_VEIL, 510, 72, 120, 98, 50, 98, 72, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.COMFEY, 7, false, false, false, "Posy Picker Pokémon", PokemonType.FAIRY, null, 0.1, 0.3, Abilities.FLOWER_VEIL, Abilities.TRIAGE, Abilities.NATURAL_CURE, 485, 51, 52, 90, 82, 110, 100, 60, 50, 170, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.ORANGURU, 7, false, false, false, "Sage Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.5, 76, Abilities.INNER_FOCUS, Abilities.TELEPATHY, Abilities.SYMBIOSIS, 490, 90, 60, 80, 90, 110, 60, 45, 50, 172, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.PASSIMIAN, 7, false, false, false, "Teamwork Pokémon", PokemonType.FIGHTING, null, 2, 82.8, Abilities.RECEIVER, Abilities.NONE, Abilities.DEFIANT, 490, 100, 120, 90, 40, 60, 80, 45, 50, 172, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.WIMPOD, 7, false, false, false, "Turn Tail Pokémon", PokemonType.BUG, PokemonType.WATER, 0.5, 12, Abilities.WIMP_OUT, Abilities.NONE, Abilities.RUN_AWAY, 230, 25, 35, 40, 20, 30, 80, 90, 50, 46, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden + new PokemonSpecies(Species.GOLISOPOD, 7, false, false, false, "Hard Scale Pokémon", PokemonType.BUG, PokemonType.WATER, 2, 108, Abilities.EMERGENCY_EXIT, Abilities.NONE, Abilities.ANTICIPATION, 530, 75, 125, 140, 60, 90, 40, 45, 50, 186, GrowthRate.MEDIUM_FAST, 50, false), //Custom Hidden + new PokemonSpecies(Species.SANDYGAST, 7, false, false, false, "Sand Heap Pokémon", PokemonType.GHOST, PokemonType.GROUND, 0.5, 70, Abilities.WATER_COMPACTION, Abilities.NONE, Abilities.SAND_VEIL, 320, 55, 55, 80, 70, 45, 15, 140, 50, 64, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PALOSSAND, 7, false, false, false, "Sand Castle Pokémon", PokemonType.GHOST, PokemonType.GROUND, 1.3, 250, Abilities.WATER_COMPACTION, Abilities.NONE, Abilities.SAND_VEIL, 480, 85, 75, 110, 100, 75, 35, 60, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PYUKUMUKU, 7, false, false, false, "Sea Cucumber Pokémon", PokemonType.WATER, null, 0.3, 1.2, Abilities.INNARDS_OUT, Abilities.NONE, Abilities.UNAWARE, 410, 55, 60, 130, 30, 130, 5, 60, 50, 144, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.TYPE_NULL, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 1.9, 120.5, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.NONE, 534, 95, 95, 95, 95, 95, 59, 3, 0, 107, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.SILVALLY, 7, true, false, false, "Synthetic Pokémon", PokemonType.NORMAL, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, GrowthRate.SLOW, null, false, false, + new PokemonForm("Type: Normal", "normal", PokemonType.NORMAL, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285, false, "", true), + new PokemonForm("Type: Fighting", "fighting", PokemonType.FIGHTING, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Flying", "flying", PokemonType.FLYING, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Poison", "poison", PokemonType.POISON, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Ground", "ground", PokemonType.GROUND, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Rock", "rock", PokemonType.ROCK, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Bug", "bug", PokemonType.BUG, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Ghost", "ghost", PokemonType.GHOST, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Steel", "steel", PokemonType.STEEL, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Fire", "fire", PokemonType.FIRE, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Water", "water", PokemonType.WATER, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Grass", "grass", PokemonType.GRASS, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Electric", "electric", PokemonType.ELECTRIC, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Psychic", "psychic", PokemonType.PSYCHIC, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Ice", "ice", PokemonType.ICE, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Dragon", "dragon", PokemonType.DRAGON, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Dark", "dark", PokemonType.DARK, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + new PokemonForm("Type: Fairy", "fairy", PokemonType.FAIRY, null, 2.3, 100.5, Abilities.RKS_SYSTEM, Abilities.NONE, Abilities.NONE, 570, 95, 95, 95, 95, 95, 95, 3, 0, 285), + ), + new PokemonSpecies(Species.MINIOR, 7, false, false, false, "Meteor Pokémon", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, GrowthRate.MEDIUM_SLOW, null, false, false, + new PokemonForm("Red Meteor Form", "red-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Orange Meteor Form", "orange-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Yellow Meteor Form", "yellow-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Green Meteor Form", "green-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Blue Meteor Form", "blue-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Indigo Meteor Form", "indigo-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Violet Meteor Form", "violet-meteor", PokemonType.ROCK, PokemonType.FLYING, 0.3, 40, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 440, 60, 60, 100, 60, 100, 60, 30, 70, 154, false, "", true), + new PokemonForm("Red Core Form", "red", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Orange Core Form", "orange", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Yellow Core Form", "yellow", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Green Core Form", "green", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Blue Core Form", "blue", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Indigo Core Form", "indigo", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + new PokemonForm("Violet Core Form", "violet", PokemonType.ROCK, PokemonType.FLYING, 0.3, 0.3, Abilities.SHIELDS_DOWN, Abilities.NONE, Abilities.NONE, 500, 60, 100, 60, 100, 60, 120, 30, 70, 175, false, null, true), + ), + new PokemonSpecies(Species.KOMALA, 7, false, false, false, "Drowsing Pokémon", PokemonType.NORMAL, null, 0.4, 19.9, Abilities.COMATOSE, Abilities.NONE, Abilities.NONE, 480, 65, 115, 65, 75, 95, 65, 45, 70, 168, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.TURTONATOR, 7, false, false, false, "Blast Turtle Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 2, 212, Abilities.SHELL_ARMOR, Abilities.NONE, Abilities.NONE, 485, 60, 78, 135, 91, 85, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.TOGEDEMARU, 7, false, false, false, "Roly-Poly Pokémon", PokemonType.ELECTRIC, PokemonType.STEEL, 0.3, 3.3, Abilities.IRON_BARBS, Abilities.LIGHTNING_ROD, Abilities.STURDY, 435, 65, 98, 63, 40, 73, 96, 180, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MIMIKYU, 7, false, false, false, "Disguise Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, Abilities.DISGUISE, Abilities.NONE, Abilities.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Disguised Form", "disguised", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, Abilities.DISGUISE, Abilities.NONE, Abilities.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167, false, null, true), + new PokemonForm("Busted Form", "busted", PokemonType.GHOST, PokemonType.FAIRY, 0.2, 0.7, Abilities.DISGUISE, Abilities.NONE, Abilities.NONE, 476, 55, 90, 80, 50, 105, 96, 45, 50, 167), + ), + new PokemonSpecies(Species.BRUXISH, 7, false, false, false, "Gnash Teeth Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 0.9, 19, Abilities.DAZZLING, Abilities.STRONG_JAW, Abilities.WONDER_SKIN, 475, 68, 105, 70, 70, 70, 92, 80, 70, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DRAMPA, 7, false, false, false, "Placid Pokémon", PokemonType.NORMAL, PokemonType.DRAGON, 3, 185, Abilities.BERSERK, Abilities.SAP_SIPPER, Abilities.CLOUD_NINE, 485, 78, 60, 85, 135, 91, 36, 70, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DHELMISE, 7, false, false, false, "Sea Creeper Pokémon", PokemonType.GHOST, PokemonType.GRASS, 3.9, 210, Abilities.STEELWORKER, Abilities.NONE, Abilities.NONE, 517, 70, 131, 100, 86, 90, 40, 25, 50, 181, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.JANGMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, null, 0.6, 29.7, Abilities.BULLETPROOF, Abilities.SOUNDPROOF, Abilities.OVERCOAT, 300, 45, 55, 65, 45, 45, 45, 45, 50, 60, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.HAKAMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.2, 47, Abilities.BULLETPROOF, Abilities.SOUNDPROOF, Abilities.OVERCOAT, 420, 55, 75, 90, 65, 70, 65, 45, 50, 147, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.KOMMO_O, 7, false, false, false, "Scaly Pokémon", PokemonType.DRAGON, PokemonType.FIGHTING, 1.6, 78.2, Abilities.BULLETPROOF, Abilities.SOUNDPROOF, Abilities.OVERCOAT, 600, 75, 110, 125, 100, 105, 85, 45, 50, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.TAPU_KOKO, 7, true, false, false, "Land Spirit Pokémon", PokemonType.ELECTRIC, PokemonType.FAIRY, 1.8, 20.5, Abilities.ELECTRIC_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 115, 85, 95, 75, 130, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.TAPU_LELE, 7, true, false, false, "Land Spirit Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.2, 18.6, Abilities.PSYCHIC_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 85, 75, 130, 115, 95, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.TAPU_BULU, 7, true, false, false, "Land Spirit Pokémon", PokemonType.GRASS, PokemonType.FAIRY, 1.9, 45.5, Abilities.GRASSY_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 130, 115, 85, 95, 75, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.TAPU_FINI, 7, true, false, false, "Land Spirit Pokémon", PokemonType.WATER, PokemonType.FAIRY, 1.3, 21.2, Abilities.MISTY_SURGE, Abilities.NONE, Abilities.TELEPATHY, 570, 70, 75, 115, 95, 130, 85, 3, 50, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.COSMOG, 7, true, false, false, "Nebula Pokémon", PokemonType.PSYCHIC, null, 0.2, 0.1, Abilities.UNAWARE, Abilities.NONE, Abilities.NONE, 200, 43, 29, 31, 29, 31, 37, 45, 0, 40, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.COSMOEM, 7, true, false, false, "Protostar Pokémon", PokemonType.PSYCHIC, null, 0.1, 999.9, Abilities.STURDY, Abilities.NONE, Abilities.NONE, 400, 43, 29, 131, 29, 131, 37, 45, 0, 140, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.SOLGALEO, 7, false, true, false, "Sunne Pokémon", PokemonType.PSYCHIC, PokemonType.STEEL, 3.4, 230, Abilities.FULL_METAL_BODY, Abilities.NONE, Abilities.NONE, 680, 137, 137, 107, 113, 89, 97, 45, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.LUNALA, 7, false, true, false, "Moone Pokémon", PokemonType.PSYCHIC, PokemonType.GHOST, 4, 120, Abilities.SHADOW_SHIELD, Abilities.NONE, Abilities.NONE, 680, 137, 113, 89, 137, 107, 97, 45, 0, 340, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.NIHILEGO, 7, true, false, false, "Parasite Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.2, 55.5, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 109, 53, 47, 127, 131, 103, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.BUZZWOLE, 7, true, false, false, "Swollen Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 2.4, 333.6, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 107, 139, 139, 53, 53, 79, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.PHEROMOSA, 7, true, false, false, "Lissome Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 1.8, 25, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 71, 137, 37, 137, 37, 151, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.XURKITREE, 7, true, false, false, "Glowing Pokémon", PokemonType.ELECTRIC, null, 3.8, 100, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 83, 89, 71, 173, 71, 83, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.CELESTEELA, 7, true, false, false, "Launch Pokémon", PokemonType.STEEL, PokemonType.FLYING, 9.2, 999.9, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 97, 101, 103, 107, 101, 61, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.KARTANA, 7, true, false, false, "Drawn Sword Pokémon", PokemonType.GRASS, PokemonType.STEEL, 0.3, 0.1, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 59, 181, 131, 59, 31, 109, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.GUZZLORD, 7, true, false, false, "Junkivore Pokémon", PokemonType.DARK, PokemonType.DRAGON, 5.5, 888, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 223, 101, 53, 97, 53, 43, 45, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.NECROZMA, 7, false, true, false, "Prism Pokémon", PokemonType.PSYCHIC, null, 2.4, 230, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, null, 2.4, 230, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 600, 97, 107, 101, 127, 89, 79, 255, 0, 300, false, null, true), + new PokemonForm("Dusk Mane", "dusk-mane", PokemonType.PSYCHIC, PokemonType.STEEL, 3.8, 460, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 157, 127, 113, 109, 77, 255, 0, 340), + new PokemonForm("Dawn Wings", "dawn-wings", PokemonType.PSYCHIC, PokemonType.GHOST, 4.2, 350, Abilities.PRISM_ARMOR, Abilities.NONE, Abilities.NONE, 680, 97, 113, 109, 157, 127, 77, 255, 0, 340), + new PokemonForm("Ultra", "ultra", PokemonType.PSYCHIC, PokemonType.DRAGON, 7.5, 230, Abilities.NEUROFORCE, Abilities.NONE, Abilities.NONE, 754, 97, 167, 97, 167, 97, 129, 255, 0, 377), + ), + new PokemonSpecies(Species.MAGEARNA, 7, false, false, true, "Artificial Pokémon", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), + new PokemonForm("Original", "original", PokemonType.STEEL, PokemonType.FAIRY, 1, 80.5, Abilities.SOUL_HEART, Abilities.NONE, Abilities.NONE, 600, 80, 95, 115, 130, 115, 65, 3, 0, 300, false, null, true), + ), + new PokemonSpecies(Species.MARSHADOW, 7, false, false, true, "Gloomdweller Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, true), + new PokemonForm("Zenith", "zenith", PokemonType.FIGHTING, PokemonType.GHOST, 0.7, 22.2, Abilities.TECHNICIAN, Abilities.NONE, Abilities.NONE, 600, 90, 125, 80, 90, 90, 125, 3, 0, 300, false, null, false, true) + ), + new PokemonSpecies(Species.POIPOLE, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, null, 0.6, 1.8, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 420, 67, 73, 67, 73, 67, 73, 45, 0, 210, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.NAGANADEL, 7, true, false, false, "Poison Pin Pokémon", PokemonType.POISON, PokemonType.DRAGON, 3.6, 150, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 540, 73, 73, 73, 127, 73, 121, 45, 0, 270, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.STAKATAKA, 7, true, false, false, "Rampart Pokémon", PokemonType.ROCK, PokemonType.STEEL, 5.5, 820, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 61, 131, 211, 53, 101, 13, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.BLACEPHALON, 7, true, false, false, "Fireworks Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.8, 13, Abilities.BEAST_BOOST, Abilities.NONE, Abilities.NONE, 570, 53, 127, 53, 151, 79, 107, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ZERAORA, 7, false, false, true, "Thunderclap Pokémon", PokemonType.ELECTRIC, null, 1.5, 44.5, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.NONE, 600, 88, 112, 75, 102, 80, 143, 3, 0, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.MELTAN, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 0.2, 8, Abilities.MAGNET_PULL, Abilities.NONE, Abilities.NONE, 300, 46, 65, 65, 55, 35, 34, 3, 0, 150, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.MELMETAL, 7, false, false, true, "Hex Nut Pokémon", PokemonType.STEEL, null, 2.5, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, null, 2.5, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 600, 135, 143, 143, 80, 65, 34, 3, 0, 300, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, null, 25, 999.9, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 700, 175, 165, 155, 85, 75, 45, 3, 0, 300), + ), + new PokemonSpecies(Species.GROOKEY, 8, false, false, false, "Chimp Pokémon", PokemonType.GRASS, null, 0.3, 5, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 310, 50, 65, 50, 40, 40, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.THWACKEY, 8, false, false, false, "Beat Pokémon", PokemonType.GRASS, null, 0.7, 14, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 420, 70, 85, 70, 55, 60, 80, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.RILLABOOM, 8, false, false, false, "Drummer Pokémon", PokemonType.GRASS, null, 2.1, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, null, 2.1, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 530, 100, 125, 90, 60, 70, 85, 45, 50, 265, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, null, 28, 999.9, Abilities.GRASSY_SURGE, Abilities.NONE, Abilities.GRASSY_SURGE, 630, 125, 150, 105, 85, 85, 80, 45, 50, 265), + ), + new PokemonSpecies(Species.SCORBUNNY, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.3, 4.5, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 310, 50, 71, 40, 40, 40, 69, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.RABOOT, 8, false, false, false, "Rabbit Pokémon", PokemonType.FIRE, null, 0.6, 9, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 420, 65, 86, 60, 55, 60, 94, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.CINDERACE, 8, false, false, false, "Striker Pokémon", PokemonType.FIRE, null, 1.4, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.FIRE, null, 1.4, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 530, 80, 116, 75, 65, 75, 119, 45, 50, 265, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, null, 27, 999.9, Abilities.LIBERO, Abilities.NONE, Abilities.LIBERO, 630, 100, 146, 80, 90, 80, 134, 45, 50, 265), + ), + new PokemonSpecies(Species.SOBBLE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.3, 4, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 310, 50, 40, 40, 70, 40, 70, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.DRIZZILE, 8, false, false, false, "Water Lizard Pokémon", PokemonType.WATER, null, 0.7, 11.5, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 420, 65, 60, 55, 95, 55, 90, 45, 50, 147, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.INTELEON, 8, false, false, false, "Secret Agent Pokémon", PokemonType.WATER, null, 1.9, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, null, 1.9, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 530, 70, 85, 65, 125, 65, 120, 45, 50, 265, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, null, 40, 999.9, Abilities.SNIPER, Abilities.NONE, Abilities.SNIPER, 630, 95, 97, 77, 147, 77, 137, 45, 50, 265), + ), + new PokemonSpecies(Species.SKWOVET, 8, false, false, false, "Cheeky Pokémon", PokemonType.NORMAL, null, 0.3, 2.5, Abilities.CHEEK_POUCH, Abilities.NONE, Abilities.GLUTTONY, 275, 70, 55, 55, 35, 35, 25, 255, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GREEDENT, 8, false, false, false, "Greedy Pokémon", PokemonType.NORMAL, null, 0.6, 6, Abilities.CHEEK_POUCH, Abilities.NONE, Abilities.GLUTTONY, 460, 120, 95, 95, 55, 75, 20, 90, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ROOKIDEE, 8, false, false, false, "Tiny Bird Pokémon", PokemonType.FLYING, null, 0.2, 1.8, Abilities.KEEN_EYE, Abilities.UNNERVE, Abilities.BIG_PECKS, 245, 38, 47, 35, 33, 35, 57, 255, 50, 49, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CORVISQUIRE, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, null, 0.8, 16, Abilities.KEEN_EYE, Abilities.UNNERVE, Abilities.BIG_PECKS, 365, 68, 67, 55, 43, 55, 77, 120, 50, 128, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CORVIKNIGHT, 8, false, false, false, "Raven Pokémon", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.STEEL, 2.2, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 495, 98, 87, 105, 53, 85, 67, 45, 50, 248, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FLYING, PokemonType.STEEL, 14, 999.9, Abilities.MIRROR_ARMOR, Abilities.MIRROR_ARMOR, Abilities.MIRROR_ARMOR, 595, 128, 102, 140, 53, 95, 77, 45, 50, 248), + ), + new PokemonSpecies(Species.BLIPBUG, 8, false, false, false, "Larva Pokémon", PokemonType.BUG, null, 0.4, 8, Abilities.SWARM, Abilities.COMPOUND_EYES, Abilities.TELEPATHY, 180, 25, 20, 20, 25, 45, 45, 255, 50, 36, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DOTTLER, 8, false, false, false, "Radome Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 19.5, Abilities.SWARM, Abilities.COMPOUND_EYES, Abilities.TELEPATHY, 335, 50, 35, 80, 50, 90, 30, 120, 50, 117, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ORBEETLE, 8, false, false, false, "Seven Spot Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.BUG, PokemonType.PSYCHIC, 0.4, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 505, 60, 45, 110, 80, 120, 90, 45, 50, 253, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.BUG, PokemonType.PSYCHIC, 14, 999.9, Abilities.TRACE, Abilities.TRACE, Abilities.TRACE, 605, 90, 45, 130, 110, 140, 90, 45, 50, 253), + ), + new PokemonSpecies(Species.NICKIT, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 0.6, 8.9, Abilities.RUN_AWAY, Abilities.UNBURDEN, Abilities.STAKEOUT, 245, 40, 28, 28, 47, 52, 50, 255, 50, 49, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.THIEVUL, 8, false, false, false, "Fox Pokémon", PokemonType.DARK, null, 1.2, 19.9, Abilities.RUN_AWAY, Abilities.UNBURDEN, Abilities.STAKEOUT, 455, 70, 58, 58, 87, 92, 90, 127, 50, 159, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.GOSSIFLEUR, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, null, 0.4, 2.2, Abilities.COTTON_DOWN, Abilities.REGENERATOR, Abilities.EFFECT_SPORE, 250, 40, 40, 60, 40, 60, 10, 190, 50, 50, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ELDEGOSS, 8, false, false, false, "Cotton Bloom Pokémon", PokemonType.GRASS, null, 0.5, 2.5, Abilities.COTTON_DOWN, Abilities.REGENERATOR, Abilities.EFFECT_SPORE, 460, 60, 50, 90, 80, 120, 60, 75, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.WOOLOO, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 0.6, 6, Abilities.FLUFFY, Abilities.RUN_AWAY, Abilities.BULLETPROOF, 270, 42, 40, 55, 40, 45, 48, 255, 50, 122, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DUBWOOL, 8, false, false, false, "Sheep Pokémon", PokemonType.NORMAL, null, 1.3, 43, Abilities.FLUFFY, Abilities.STEADFAST, Abilities.BULLETPROOF, 490, 72, 80, 100, 60, 90, 88, 127, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CHEWTLE, 8, false, false, false, "Snapping Pokémon", PokemonType.WATER, null, 0.3, 8.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 284, 50, 64, 50, 38, 38, 44, 255, 50, 57, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DREDNAW, 8, false, false, false, "Bite Pokémon", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.WATER, PokemonType.ROCK, 1, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 485, 90, 115, 90, 48, 68, 74, 75, 50, 170, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.WATER, PokemonType.ROCK, 24, 999.9, Abilities.STRONG_JAW, Abilities.STRONG_JAW, Abilities.STRONG_JAW, 585, 115, 145, 115, 43, 83, 84, 75, 50, 170), + ), + new PokemonSpecies(Species.YAMPER, 8, false, false, false, "Puppy Pokémon", PokemonType.ELECTRIC, null, 0.3, 13.5, Abilities.BALL_FETCH, Abilities.NONE, Abilities.RATTLED, 270, 59, 45, 50, 40, 50, 26, 255, 50, 54, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.BOLTUND, 8, false, false, false, "Dog Pokémon", PokemonType.ELECTRIC, null, 1, 34, Abilities.STRONG_JAW, Abilities.NONE, Abilities.COMPETITIVE, 490, 69, 90, 60, 90, 60, 121, 45, 50, 172, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.ROLYCOLY, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, null, 0.3, 12, Abilities.STEAM_ENGINE, Abilities.HEATPROOF, Abilities.FLASH_FIRE, 240, 30, 40, 50, 40, 50, 30, 255, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CARKOL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 1.1, 78, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 410, 80, 60, 90, 60, 70, 50, 120, 50, 144, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.COALOSSAL, 8, false, false, false, "Coal Pokémon", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Normal", "", PokemonType.ROCK, PokemonType.FIRE, 2.8, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 510, 110, 80, 120, 80, 90, 30, 45, 50, 255, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ROCK, PokemonType.FIRE, 42, 999.9, Abilities.STEAM_ENGINE, Abilities.STEAM_ENGINE, Abilities.STEAM_ENGINE, 610, 140, 95, 130, 95, 110, 40, 45, 50, 255), + ), + new PokemonSpecies(Species.APPLIN, 8, false, false, false, "Apple Core Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.2, 0.5, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.BULLETPROOF, 260, 40, 40, 80, 40, 40, 20, 255, 50, 52, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.FLAPPLE, 8, false, false, false, "Apple Wing Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.3, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 485, 70, 110, 80, 95, 60, 70, 45, 50, 170, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, Abilities.HUSTLE, Abilities.HUSTLE, Abilities.HUSTLE, 585, 90, 130, 100, 85, 80, 100, 45, 50, 170), + ), + new PokemonSpecies(Species.APPLETUN, 8, false, false, false, "Apple Nectar Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, GrowthRate.ERRATIC, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 485, 110, 85, 80, 100, 80, 30, 45, 50, 170, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GRASS, PokemonType.DRAGON, 24, 999.9, Abilities.THICK_FAT, Abilities.THICK_FAT, Abilities.THICK_FAT, 585, 130, 75, 115, 125, 115, 25, 45, 50, 170), + ), + new PokemonSpecies(Species.SILICOBRA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 2.2, 7.6, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 315, 52, 57, 75, 35, 50, 46, 255, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SANDACONDA, 8, false, false, false, "Sand Snake Pokémon", PokemonType.GROUND, null, 3.8, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.GROUND, null, 3.8, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 510, 72, 107, 125, 65, 70, 71, 120, 50, 179, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.GROUND, null, 22, 999.9, Abilities.SAND_SPIT, Abilities.SAND_SPIT, Abilities.SAND_SPIT, 610, 117, 137, 140, 55, 80, 81, 120, 50, 179), + ), + new PokemonSpecies(Species.CRAMORANT, 8, false, false, false, "Gulp Pokémon", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166, false, null, true), + new PokemonForm("Gulping Form", "gulping", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), + new PokemonForm("Gorging Form", "gorging", PokemonType.FLYING, PokemonType.WATER, 0.8, 18, Abilities.GULP_MISSILE, Abilities.NONE, Abilities.NONE, 475, 70, 85, 55, 85, 95, 85, 45, 50, 166), + ), + new PokemonSpecies(Species.ARROKUDA, 8, false, false, false, "Rush Pokémon", PokemonType.WATER, null, 0.5, 1, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.PROPELLER_TAIL, 280, 41, 63, 40, 40, 30, 66, 255, 50, 56, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.BARRASKEWDA, 8, false, false, false, "Skewer Pokémon", PokemonType.WATER, null, 1.3, 30, Abilities.SWIFT_SWIM, Abilities.NONE, Abilities.PROPELLER_TAIL, 490, 61, 123, 60, 60, 50, 136, 60, 50, 172, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.TOXEL, 8, false, false, false, "Baby Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 0.4, 11, Abilities.RATTLED, Abilities.STATIC, Abilities.KLUTZ, 242, 40, 38, 35, 54, 35, 40, 75, 50, 48, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.TOXTRICITY, 8, false, false, false, "Punk Pokémon", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.PLUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Amped Form", "amped", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.PLUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "", true), + new PokemonForm("Low-Key Form", "lowkey", PokemonType.ELECTRIC, PokemonType.POISON, 1.6, 40, Abilities.PUNK_ROCK, Abilities.MINUS, Abilities.TECHNICIAN, 502, 75, 98, 70, 114, 70, 75, 45, 50, 176, false, "lowkey", true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.ELECTRIC, PokemonType.POISON, 24, 999.9, Abilities.PUNK_ROCK, Abilities.PUNK_ROCK, Abilities.PUNK_ROCK, 602, 114, 98, 82, 144, 82, 82, 45, 50, 176), + ), + new PokemonSpecies(Species.SIZZLIPEDE, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 0.7, 1, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 305, 50, 65, 45, 50, 50, 45, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CENTISKORCH, 8, false, false, false, "Radiator Pokémon", PokemonType.FIRE, PokemonType.BUG, 3, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.FIRE, PokemonType.BUG, 3, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 525, 100, 115, 65, 90, 90, 65, 75, 50, 184, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FIRE, PokemonType.BUG, 75, 999.9, Abilities.FLASH_FIRE, Abilities.FLASH_FIRE, Abilities.FLASH_FIRE, 625, 140, 145, 75, 90, 100, 75, 75, 50, 184), + ), + new PokemonSpecies(Species.CLOBBOPUS, 8, false, false, false, "Tantrum Pokémon", PokemonType.FIGHTING, null, 0.6, 4, Abilities.LIMBER, Abilities.NONE, Abilities.TECHNICIAN, 310, 50, 68, 60, 50, 50, 32, 180, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GRAPPLOCT, 8, false, false, false, "Jujitsu Pokémon", PokemonType.FIGHTING, null, 1.6, 39, Abilities.LIMBER, Abilities.NONE, Abilities.TECHNICIAN, 480, 80, 118, 90, 70, 80, 42, 45, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SINISTEA, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true), + new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.1, 0.2, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, "", true, true), + ), + new PokemonSpecies(Species.POLTEAGEIST, 8, false, false, false, "Black Tea Pokémon", PokemonType.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, GrowthRate.MEDIUM_FAST, null, false, false, + new PokemonForm("Phony Form", "phony", PokemonType.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true), + new PokemonForm("Antique Form", "antique", PokemonType.GHOST, null, 0.2, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 508, 60, 65, 65, 134, 114, 70, 60, 50, 178, false, "", true, true), + ), + new PokemonSpecies(Species.HATENNA, 8, false, false, false, "Calm Pokémon", PokemonType.PSYCHIC, null, 0.4, 3.4, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 265, 42, 30, 45, 56, 53, 39, 235, 50, 53, GrowthRate.SLOW, 0, false), + new PokemonSpecies(Species.HATTREM, 8, false, false, false, "Serene Pokémon", PokemonType.PSYCHIC, null, 0.6, 4.8, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 370, 57, 40, 65, 86, 73, 49, 120, 50, 130, GrowthRate.SLOW, 0, false), + new PokemonSpecies(Species.HATTERENE, 8, false, false, false, "Silent Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, GrowthRate.SLOW, 0, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.FAIRY, 2.1, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 510, 57, 90, 95, 136, 103, 29, 45, 50, 255, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.PSYCHIC, PokemonType.FAIRY, 26, 999.9, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, Abilities.MAGIC_BOUNCE, 610, 97, 90, 105, 146, 122, 50, 45, 50, 255), + ), + new PokemonSpecies(Species.IMPIDIMP, 8, false, false, false, "Wily Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.4, 5.5, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 265, 45, 45, 30, 55, 40, 50, 255, 50, 53, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(Species.MORGREM, 8, false, false, false, "Devious Pokémon", PokemonType.DARK, PokemonType.FAIRY, 0.8, 12.5, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 370, 65, 60, 45, 75, 55, 70, 120, 50, 130, GrowthRate.MEDIUM_FAST, 100, false), + new PokemonSpecies(Species.GRIMMSNARL, 8, false, false, false, "Bulk Up Pokémon", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, GrowthRate.MEDIUM_FAST, 100, false, true, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.FAIRY, 1.5, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 510, 95, 120, 65, 95, 75, 60, 45, 50, 255, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.DARK, PokemonType.FAIRY, 32, 999.9, Abilities.PRANKSTER, Abilities.PRANKSTER, Abilities.PRANKSTER, 610, 135, 138, 77, 110, 85, 65, 45, 50, 255), + ), + new PokemonSpecies(Species.OBSTAGOON, 8, false, false, false, "Blocking Pokémon", PokemonType.DARK, PokemonType.NORMAL, 1.6, 46, Abilities.RECKLESS, Abilities.GUTS, Abilities.DEFIANT, 520, 93, 90, 101, 60, 81, 95, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PERRSERKER, 8, false, false, false, "Viking Pokémon", PokemonType.STEEL, null, 0.8, 28, Abilities.BATTLE_ARMOR, Abilities.TOUGH_CLAWS, Abilities.STEELY_SPIRIT, 440, 70, 110, 100, 50, 60, 50, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CURSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 1, 0.4, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.PERISH_BODY, 510, 60, 95, 50, 145, 130, 30, 30, 50, 179, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.SIRFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 117, Abilities.STEADFAST, Abilities.NONE, Abilities.SCRAPPY, 507, 62, 135, 95, 68, 82, 65, 45, 50, 177, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MR_RIME, 8, false, false, false, "Comedian Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.5, 58.2, Abilities.TANGLED_FEET, Abilities.SCREEN_CLEANER, Abilities.ICE_BODY, 520, 80, 85, 75, 110, 100, 70, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.RUNERIGUS, 8, false, false, false, "Grudge Pokémon", PokemonType.GROUND, PokemonType.GHOST, 1.6, 66.6, Abilities.WANDERING_SPIRIT, Abilities.NONE, Abilities.NONE, 483, 58, 95, 145, 50, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.MILCERY, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.2, 0.3, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 270, 45, 40, 40, 50, 61, 34, 200, 50, 54, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(Species.ALCREMIE, 8, false, false, false, "Cream Pokémon", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, GrowthRate.MEDIUM_FAST, 0, false, true, + new PokemonForm("Vanilla Cream", "vanilla-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, "", true), + new PokemonForm("Ruby Cream", "ruby-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Matcha Cream", "matcha-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Mint Cream", "mint-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Lemon Cream", "lemon-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Salted Cream", "salted-cream", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Ruby Swirl", "ruby-swirl", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Caramel Swirl", "caramel-swirl", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("Rainbow Swirl", "rainbow-swirl", PokemonType.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.FAIRY, null, 30, 999.9, Abilities.MISTY_SURGE, Abilities.NONE, Abilities.MISTY_SURGE, 595, 135, 60, 75, 130, 131, 64, 100, 50, 173), + ), + new PokemonSpecies(Species.FALINKS, 8, false, false, false, "Formation Pokémon", PokemonType.FIGHTING, null, 3, 62, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.DEFIANT, 470, 65, 100, 100, 70, 60, 75, 45, 50, 165, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.PINCURCHIN, 8, false, false, false, "Sea Urchin Pokémon", PokemonType.ELECTRIC, null, 0.3, 1, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.ELECTRIC_SURGE, 435, 48, 101, 95, 91, 85, 15, 75, 50, 152, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SNOM, 8, false, false, false, "Worm Pokémon", PokemonType.ICE, PokemonType.BUG, 0.3, 3.8, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.ICE_SCALES, 185, 30, 25, 35, 45, 30, 20, 190, 50, 37, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FROSMOTH, 8, false, false, false, "Frost Moth Pokémon", PokemonType.ICE, PokemonType.BUG, 1.3, 42, Abilities.SHIELD_DUST, Abilities.NONE, Abilities.ICE_SCALES, 475, 70, 65, 60, 125, 90, 65, 75, 50, 166, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.STONJOURNER, 8, false, false, false, "Big Rock Pokémon", PokemonType.ROCK, null, 2.5, 520, Abilities.POWER_SPOT, Abilities.NONE, Abilities.NONE, 470, 100, 125, 135, 20, 20, 70, 60, 50, 165, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.EISCUE, 8, false, false, false, "Penguin Pokémon", PokemonType.ICE, null, 1.4, 89, Abilities.ICE_FACE, Abilities.NONE, Abilities.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, GrowthRate.SLOW, 50, false, false, + new PokemonForm("Ice Face", "", PokemonType.ICE, null, 1.4, 89, Abilities.ICE_FACE, Abilities.NONE, Abilities.NONE, 470, 75, 80, 110, 65, 90, 50, 60, 50, 165, false, null, true), + new PokemonForm("No Ice", "no-ice", PokemonType.ICE, null, 1.4, 89, Abilities.ICE_FACE, Abilities.NONE, Abilities.NONE, 470, 75, 80, 70, 65, 50, 130, 60, 50, 165), + ), + new PokemonSpecies(Species.INDEEDEE, 8, false, false, false, "Emotion Pokémon", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, Abilities.INNER_FOCUS, Abilities.SYNCHRONIZE, Abilities.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, GrowthRate.FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, Abilities.INNER_FOCUS, Abilities.SYNCHRONIZE, Abilities.PSYCHIC_SURGE, 475, 60, 65, 55, 105, 95, 95, 30, 140, 166, false, "", true), + new PokemonForm("Female", "female", PokemonType.PSYCHIC, PokemonType.NORMAL, 0.9, 28, Abilities.OWN_TEMPO, Abilities.SYNCHRONIZE, Abilities.PSYCHIC_SURGE, 475, 70, 55, 65, 95, 105, 85, 30, 140, 166, false, null, true), + ), + new PokemonSpecies(Species.MORPEKO, 8, false, false, false, "Two-Sided Pokémon", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, Abilities.HUNGER_SWITCH, Abilities.NONE, Abilities.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Full Belly Mode", "full-belly", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, Abilities.HUNGER_SWITCH, Abilities.NONE, Abilities.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153, false, "", true), + new PokemonForm("Hangry Mode", "hangry", PokemonType.ELECTRIC, PokemonType.DARK, 0.3, 3, Abilities.HUNGER_SWITCH, Abilities.NONE, Abilities.NONE, 436, 58, 95, 58, 70, 58, 97, 180, 50, 153), + ), + new PokemonSpecies(Species.CUFANT, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 1.2, 100, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 330, 72, 80, 49, 40, 49, 40, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.COPPERAJAH, 8, false, false, false, "Copperderm Pokémon", PokemonType.STEEL, null, 3, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, null, 3, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 500, 122, 130, 69, 80, 69, 30, 90, 50, 175, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.GROUND, 23, 999.9, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.MOLD_BREAKER, 600, 167, 155, 89, 80, 89, 20, 90, 50, 175), + ), + new PokemonSpecies(Species.DRACOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 1.8, 190, Abilities.VOLT_ABSORB, Abilities.HUSTLE, Abilities.SAND_RUSH, 505, 90, 100, 90, 80, 70, 75, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ARCTOZOLT, 8, false, false, false, "Fossil Pokémon", PokemonType.ELECTRIC, PokemonType.ICE, 2.3, 150, Abilities.VOLT_ABSORB, Abilities.STATIC, Abilities.SLUSH_RUSH, 505, 90, 100, 90, 90, 80, 55, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.DRACOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.DRAGON, 2.3, 215, Abilities.WATER_ABSORB, Abilities.STRONG_JAW, Abilities.SAND_RUSH, 505, 90, 90, 100, 70, 80, 75, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ARCTOVISH, 8, false, false, false, "Fossil Pokémon", PokemonType.WATER, PokemonType.ICE, 2, 175, Abilities.WATER_ABSORB, Abilities.ICE_BODY, Abilities.SLUSH_RUSH, 505, 90, 90, 100, 80, 90, 55, 45, 50, 177, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.DURALUDON, 8, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, GrowthRate.MEDIUM_FAST, 50, false, true, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.DRAGON, 1.8, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 535, 70, 95, 115, 120, 50, 85, 45, 50, 187, false, null, true), + new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, PokemonType.STEEL, PokemonType.DRAGON, 43, 999.9, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, Abilities.LIGHTNING_ROD, 635, 100, 110, 120, 175, 60, 70, 45, 50, 187), + ), + new PokemonSpecies(Species.DREEPY, 8, false, false, false, "Lingering Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 0.5, 2, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 270, 28, 60, 30, 40, 30, 82, 45, 50, 54, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.DRAKLOAK, 8, false, false, false, "Caretaker Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 1.4, 11, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 410, 68, 80, 50, 60, 50, 102, 45, 50, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.DRAGAPULT, 8, false, false, false, "Stealth Pokémon", PokemonType.DRAGON, PokemonType.GHOST, 3, 50, Abilities.CLEAR_BODY, Abilities.INFILTRATOR, Abilities.CURSED_BODY, 600, 88, 120, 75, 100, 75, 142, 45, 50, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.ZACIAN, 8, false, true, false, "Warrior Pokémon", PokemonType.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Hero of Many Battles", "hero-of-many-battles", PokemonType.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), + new PokemonForm("Crowned", "crowned", PokemonType.FAIRY, PokemonType.STEEL, 2.8, 355, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 700, 92, 150, 115, 80, 115, 148, 10, 0, 360), + ), + new PokemonSpecies(Species.ZAMAZENTA, 8, false, true, false, "Warrior Pokémon", PokemonType.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Hero of Many Battles", "hero-of-many-battles", PokemonType.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, "", true), + new PokemonForm("Crowned", "crowned", PokemonType.FIGHTING, PokemonType.STEEL, 2.9, 785, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 700, 92, 120, 140, 80, 140, 128, 10, 0, 360), + ), + new PokemonSpecies(Species.ETERNATUS, 8, false, true, false, "Gigantic Pokémon", PokemonType.POISON, PokemonType.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.POISON, PokemonType.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, false, null, true), + new PokemonForm("E-Max", "eternamax", PokemonType.POISON, PokemonType.DRAGON, 100, 999.9, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 1125, 255, 115, 250, 125, 250, 130, 255, 0, 345), + ), + new PokemonSpecies(Species.KUBFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, null, 0.6, 12, Abilities.INNER_FOCUS, Abilities.NONE, Abilities.NONE, 385, 60, 90, 60, 53, 50, 72, 3, 50, 77, GrowthRate.SLOW, 87.5, false), + new PokemonSpecies(Species.URSHIFU, 8, true, false, false, "Wushu Pokémon", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, GrowthRate.SLOW, 87.5, false, true, + new PokemonForm("Single Strike Style", "single-strike", PokemonType.FIGHTING, PokemonType.DARK, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, "", true), + new PokemonForm("Rapid Strike Style", "rapid-strike", PokemonType.FIGHTING, PokemonType.WATER, 1.9, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 550, 100, 130, 100, 63, 60, 97, 3, 50, 275, false, null, true), + new PokemonForm("G-Max Single Strike Style", SpeciesFormKey.GIGANTAMAX_SINGLE, PokemonType.FIGHTING, PokemonType.DARK, 29, 999.9, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 150, 115, 73, 70, 117, 3, 50, 275), + new PokemonForm("G-Max Rapid Strike Style", SpeciesFormKey.GIGANTAMAX_RAPID, PokemonType.FIGHTING, PokemonType.WATER, 26, 999.9, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 150, 115, 73, 70, 117, 3, 50, 275), + ), + new PokemonSpecies(Species.ZARUDE, 8, false, false, true, "Rogue Monkey Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, GrowthRate.SLOW, null, false, false, + new PokemonForm("Normal", "", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), + new PokemonForm("Dada", "dada", PokemonType.DARK, PokemonType.GRASS, 1.8, 70, Abilities.LEAF_GUARD, Abilities.NONE, Abilities.NONE, 600, 105, 120, 105, 70, 95, 105, 3, 0, 300, false, null, true), + ), + new PokemonSpecies(Species.REGIELEKI, 8, true, false, false, "Electron Pokémon", PokemonType.ELECTRIC, null, 1.2, 145, Abilities.TRANSISTOR, Abilities.NONE, Abilities.NONE, 580, 80, 100, 50, 100, 50, 200, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.REGIDRAGO, 8, true, false, false, "Dragon Orb Pokémon", PokemonType.DRAGON, null, 2.1, 200, Abilities.DRAGONS_MAW, Abilities.NONE, Abilities.NONE, 580, 200, 100, 50, 100, 50, 80, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.GLASTRIER, 8, true, false, false, "Wild Horse Pokémon", PokemonType.ICE, null, 2.2, 800, Abilities.CHILLING_NEIGH, Abilities.NONE, Abilities.NONE, 580, 100, 145, 130, 65, 110, 30, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.SPECTRIER, 8, true, false, false, "Swift Horse Pokémon", PokemonType.GHOST, null, 2, 44.5, Abilities.GRIM_NEIGH, Abilities.NONE, Abilities.NONE, 580, 100, 65, 60, 145, 80, 130, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.CALYREX, 8, false, true, false, "King Pokémon", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, Abilities.UNNERVE, Abilities.NONE, Abilities.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, GrowthRate.SLOW, null, false, true, + new PokemonForm("Normal", "", PokemonType.PSYCHIC, PokemonType.GRASS, 1.1, 7.7, Abilities.UNNERVE, Abilities.NONE, Abilities.NONE, 500, 100, 80, 80, 80, 80, 80, 3, 100, 250, false, null, true), + new PokemonForm("Ice", "ice", PokemonType.PSYCHIC, PokemonType.ICE, 2.4, 809.1, Abilities.AS_ONE_GLASTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 165, 150, 85, 130, 50, 3, 100, 340), + new PokemonForm("Shadow", "shadow", PokemonType.PSYCHIC, PokemonType.GHOST, 2.4, 53.6, Abilities.AS_ONE_SPECTRIER, Abilities.NONE, Abilities.NONE, 680, 100, 85, 80, 165, 100, 150, 3, 100, 340), + ), + new PokemonSpecies(Species.WYRDEER, 8, false, false, false, "Big Horn Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 1.8, 95.1, Abilities.INTIMIDATE, Abilities.FRISK, Abilities.SAP_SIPPER, 525, 103, 105, 72, 105, 75, 65, 135, 50, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.KLEAVOR, 8, false, false, false, "Axe Pokémon", PokemonType.BUG, PokemonType.ROCK, 1.8, 89, Abilities.SWARM, Abilities.SHEER_FORCE, Abilities.SHARPNESS, 500, 70, 135, 95, 45, 70, 85, 115, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.URSALUNA, 8, false, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.4, 290, Abilities.GUTS, Abilities.BULLETPROOF, Abilities.UNNERVE, 550, 130, 140, 105, 45, 80, 50, 75, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BASCULEGION, 8, false, false, false, "Big Fish Pokémon", PokemonType.WATER, PokemonType.GHOST, 3, 110, Abilities.SWIFT_SWIM, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.WATER, PokemonType.GHOST, 3, 110, Abilities.SWIFT_SWIM, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 530, 120, 112, 65, 80, 75, 78, 135, 50, 265, false, "", true), + new PokemonForm("Female", "female", PokemonType.WATER, PokemonType.GHOST, 3, 110, Abilities.SWIFT_SWIM, Abilities.ADAPTABILITY, Abilities.MOLD_BREAKER, 530, 120, 92, 65, 100, 75, 78, 135, 50, 265, false, null, true), + ), + new PokemonSpecies(Species.SNEASLER, 8, false, false, false, "Free Climb Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 1.3, 43, Abilities.PRESSURE, Abilities.UNBURDEN, Abilities.POISON_TOUCH, 510, 80, 130, 60, 40, 80, 120, 135, 50, 102, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.OVERQWIL, 8, false, false, false, "Pin Cluster Pokémon", PokemonType.DARK, PokemonType.POISON, 2.5, 60.5, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 510, 85, 115, 95, 65, 65, 85, 135, 50, 179, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ENAMORUS, 8, true, false, false, "Love-Hate Pokémon", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, GrowthRate.SLOW, 0, false, true, + new PokemonForm("Incarnate Forme", "incarnate", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116, false, null, true), + new PokemonForm("Therian Forme", "therian", PokemonType.FAIRY, PokemonType.FLYING, 1.6, 48, Abilities.OVERCOAT, Abilities.NONE, Abilities.OVERCOAT, 580, 74, 115, 110, 135, 100, 46, 3, 50, 116), + ), + new PokemonSpecies(Species.SPRIGATITO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.4, 4.1, Abilities.OVERGROW, Abilities.NONE, Abilities.PROTEAN, 310, 40, 61, 54, 45, 45, 65, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.FLORAGATO, 9, false, false, false, "Grass Cat Pokémon", PokemonType.GRASS, null, 0.9, 12.2, Abilities.OVERGROW, Abilities.NONE, Abilities.PROTEAN, 410, 61, 80, 63, 60, 63, 83, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.MEOWSCARADA, 9, false, false, false, "Magician Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.5, 31.2, Abilities.OVERGROW, Abilities.NONE, Abilities.PROTEAN, 530, 76, 110, 70, 81, 70, 123, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.FUECOCO, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 0.4, 9.8, Abilities.BLAZE, Abilities.NONE, Abilities.UNAWARE, 310, 67, 45, 59, 63, 40, 36, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.CROCALOR, 9, false, false, false, "Fire Croc Pokémon", PokemonType.FIRE, null, 1, 30.7, Abilities.BLAZE, Abilities.NONE, Abilities.UNAWARE, 411, 81, 55, 78, 90, 58, 49, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.SKELEDIRGE, 9, false, false, false, "Singer Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 326.5, Abilities.BLAZE, Abilities.NONE, Abilities.UNAWARE, 530, 104, 75, 100, 110, 75, 66, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.QUAXLY, 9, false, false, false, "Duckling Pokémon", PokemonType.WATER, null, 0.5, 6.1, Abilities.TORRENT, Abilities.NONE, Abilities.MOXIE, 310, 55, 65, 45, 50, 45, 50, 45, 50, 62, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.QUAXWELL, 9, false, false, false, "Practicing Pokémon", PokemonType.WATER, null, 1.2, 21.5, Abilities.TORRENT, Abilities.NONE, Abilities.MOXIE, 410, 70, 85, 65, 65, 60, 65, 45, 50, 144, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.QUAQUAVAL, 9, false, false, false, "Dancer Pokémon", PokemonType.WATER, PokemonType.FIGHTING, 1.8, 61.9, Abilities.TORRENT, Abilities.NONE, Abilities.MOXIE, 530, 85, 120, 80, 85, 75, 85, 45, 50, 265, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.LECHONK, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 0.5, 10.2, Abilities.AROMA_VEIL, Abilities.GLUTTONY, Abilities.THICK_FAT, 254, 54, 45, 40, 35, 45, 35, 255, 50, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.OINKOLOGNE, 9, false, false, false, "Hog Pokémon", PokemonType.NORMAL, null, 1, 120, Abilities.LINGERING_AROMA, Abilities.GLUTTONY, Abilities.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Male", "male", PokemonType.NORMAL, null, 1, 120, Abilities.LINGERING_AROMA, Abilities.GLUTTONY, Abilities.THICK_FAT, 489, 110, 100, 75, 59, 80, 65, 100, 50, 171, false, "", true), + new PokemonForm("Female", "female", PokemonType.NORMAL, null, 1, 120, Abilities.AROMA_VEIL, Abilities.GLUTTONY, Abilities.THICK_FAT, 489, 115, 90, 70, 59, 90, 65, 100, 50, 171, false, null, true), + ), + new PokemonSpecies(Species.TAROUNTULA, 9, false, false, false, "String Ball Pokémon", PokemonType.BUG, null, 0.3, 4, Abilities.INSOMNIA, Abilities.NONE, Abilities.STAKEOUT, 210, 35, 41, 45, 29, 40, 20, 255, 50, 42, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.SPIDOPS, 9, false, false, false, "Trap Pokémon", PokemonType.BUG, null, 1, 16.5, Abilities.INSOMNIA, Abilities.NONE, Abilities.STAKEOUT, 404, 60, 79, 92, 52, 86, 35, 120, 50, 141, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.NYMBLE, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, null, 0.2, 1, Abilities.SWARM, Abilities.NONE, Abilities.TINTED_LENS, 210, 33, 46, 40, 21, 25, 45, 190, 20, 42, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.LOKIX, 9, false, false, false, "Grasshopper Pokémon", PokemonType.BUG, PokemonType.DARK, 1, 17.5, Abilities.SWARM, Abilities.NONE, Abilities.TINTED_LENS, 450, 71, 102, 78, 52, 55, 92, 30, 0, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PAWMI, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, null, 0.3, 2.5, Abilities.STATIC, Abilities.NATURAL_CURE, Abilities.IRON_FIST, 240, 45, 50, 20, 40, 25, 60, 190, 50, 48, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PAWMO, 9, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.4, 6.5, Abilities.VOLT_ABSORB, Abilities.NATURAL_CURE, Abilities.IRON_FIST, 350, 60, 75, 40, 50, 40, 85, 80, 50, 123, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.PAWMOT, 9, false, false, false, "Hands-On Pokémon", PokemonType.ELECTRIC, PokemonType.FIGHTING, 0.9, 41, Abilities.VOLT_ABSORB, Abilities.NATURAL_CURE, Abilities.IRON_FIST, 490, 70, 115, 70, 70, 60, 105, 45, 50, 245, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.TANDEMAUS, 9, false, false, false, "Couple Pokémon", PokemonType.NORMAL, null, 0.3, 1.8, Abilities.RUN_AWAY, Abilities.PICKUP, Abilities.OWN_TEMPO, 305, 50, 50, 45, 40, 45, 75, 150, 50, 61, GrowthRate.FAST, null, false), + new PokemonSpecies(Species.MAUSHOLD, 9, false, false, false, "Family Pokémon", PokemonType.NORMAL, null, 0.3, 2.3, Abilities.FRIEND_GUARD, Abilities.CHEEK_POUCH, Abilities.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165, GrowthRate.FAST, null, false, false, + new PokemonForm("Family of Four", "four", PokemonType.NORMAL, null, 0.3, 2.8, Abilities.FRIEND_GUARD, Abilities.CHEEK_POUCH, Abilities.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), + new PokemonForm("Family of Three", "three", PokemonType.NORMAL, null, 0.3, 2.3, Abilities.FRIEND_GUARD, Abilities.CHEEK_POUCH, Abilities.TECHNICIAN, 470, 74, 75, 70, 65, 75, 111, 75, 50, 165), + ), + new PokemonSpecies(Species.FIDOUGH, 9, false, false, false, "Puppy Pokémon", PokemonType.FAIRY, null, 0.3, 10.9, Abilities.OWN_TEMPO, Abilities.NONE, Abilities.KLUTZ, 312, 37, 55, 70, 30, 55, 65, 190, 50, 62, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.DACHSBUN, 9, false, false, false, "Dog Pokémon", PokemonType.FAIRY, null, 0.5, 14.9, Abilities.WELL_BAKED_BODY, Abilities.NONE, Abilities.AROMA_VEIL, 477, 57, 80, 115, 50, 80, 95, 90, 50, 167, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SMOLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.3, 6.5, Abilities.EARLY_BIRD, Abilities.NONE, Abilities.HARVEST, 260, 41, 35, 45, 58, 51, 30, 255, 50, 52, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.DOLLIV, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 0.6, 11.9, Abilities.EARLY_BIRD, Abilities.NONE, Abilities.HARVEST, 354, 52, 53, 60, 78, 78, 33, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.ARBOLIVA, 9, false, false, false, "Olive Pokémon", PokemonType.GRASS, PokemonType.NORMAL, 1.4, 48.2, Abilities.SEED_SOWER, Abilities.NONE, Abilities.HARVEST, 510, 78, 69, 90, 125, 109, 39, 45, 50, 255, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SQUAWKABILLY, 9, false, false, false, "Parrot Pokémon", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, GrowthRate.ERRATIC, 50, false, false, + new PokemonForm("Green Plumage", "green-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + new PokemonForm("Blue Plumage", "blue-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.GUTS, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + new PokemonForm("Yellow Plumage", "yellow-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + new PokemonForm("White Plumage", "white-plumage", PokemonType.NORMAL, PokemonType.FLYING, 0.6, 2.4, Abilities.INTIMIDATE, Abilities.HUSTLE, Abilities.SHEER_FORCE, 417, 82, 96, 51, 45, 51, 92, 190, 50, 146, false, null, true), + ), + new PokemonSpecies(Species.NACLI, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.4, 16, Abilities.PURIFYING_SALT, Abilities.STURDY, Abilities.CLEAR_BODY, 280, 55, 55, 75, 35, 35, 25, 255, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.NACLSTACK, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 0.6, 105, Abilities.PURIFYING_SALT, Abilities.STURDY, Abilities.CLEAR_BODY, 355, 60, 60, 100, 35, 65, 35, 120, 50, 124, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GARGANACL, 9, false, false, false, "Rock Salt Pokémon", PokemonType.ROCK, null, 2.3, 240, Abilities.PURIFYING_SALT, Abilities.STURDY, Abilities.CLEAR_BODY, 500, 100, 100, 130, 45, 90, 35, 45, 50, 250, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CHARCADET, 9, false, false, false, "Fire Child Pokémon", PokemonType.FIRE, null, 0.6, 10.5, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.FLAME_BODY, 255, 40, 50, 40, 50, 40, 35, 90, 50, 51, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.ARMAROUGE, 9, false, false, false, "Fire Warrior Pokémon", PokemonType.FIRE, PokemonType.PSYCHIC, 1.5, 85, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.WEAK_ARMOR, 525, 85, 60, 100, 125, 80, 75, 25, 20, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.CERULEDGE, 9, false, false, false, "Fire Blades Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 62, Abilities.FLASH_FIRE, Abilities.NONE, Abilities.WEAK_ARMOR, 525, 75, 125, 80, 60, 100, 85, 25, 20, 263, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.TADBULB, 9, false, false, false, "EleTadpole Pokémon", PokemonType.ELECTRIC, null, 0.3, 0.4, Abilities.OWN_TEMPO, Abilities.STATIC, Abilities.DAMP, 272, 61, 31, 41, 59, 35, 45, 190, 50, 54, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BELLIBOLT, 9, false, false, false, "EleFrog Pokémon", PokemonType.ELECTRIC, null, 1.2, 113, Abilities.ELECTROMORPHOSIS, Abilities.STATIC, Abilities.DAMP, 495, 109, 64, 91, 103, 83, 45, 50, 50, 173, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.WATTREL, 9, false, false, false, "Storm Petrel Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 0.4, 3.6, Abilities.WIND_POWER, Abilities.VOLT_ABSORB, Abilities.COMPETITIVE, 280, 40, 40, 35, 55, 40, 70, 180, 50, 56, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.KILOWATTREL, 9, false, false, false, "Frigatebird Pokémon", PokemonType.ELECTRIC, PokemonType.FLYING, 1.4, 38.6, Abilities.WIND_POWER, Abilities.VOLT_ABSORB, Abilities.COMPETITIVE, 490, 70, 70, 60, 105, 60, 125, 90, 50, 172, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.MASCHIFF, 9, false, false, false, "Rascal Pokémon", PokemonType.DARK, null, 0.5, 16, Abilities.INTIMIDATE, Abilities.RUN_AWAY, Abilities.STAKEOUT, 340, 60, 78, 60, 40, 51, 51, 150, 50, 68, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.MABOSSTIFF, 9, false, false, false, "Boss Pokémon", PokemonType.DARK, null, 1.1, 61, Abilities.INTIMIDATE, Abilities.GUARD_DOG, Abilities.STAKEOUT, 505, 80, 120, 90, 60, 70, 85, 75, 50, 177, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.SHROODLE, 9, false, false, false, "Toxic Mouse Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.2, 0.7, Abilities.UNBURDEN, Abilities.PICKPOCKET, Abilities.PRANKSTER, 290, 40, 65, 35, 40, 35, 75, 190, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GRAFAIAI, 9, false, false, false, "Toxic Monkey Pokémon", PokemonType.POISON, PokemonType.NORMAL, 0.7, 27.2, Abilities.UNBURDEN, Abilities.POISON_TOUCH, Abilities.PRANKSTER, 485, 63, 95, 65, 80, 72, 110, 90, 50, 170, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.BRAMBLIN, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.6, 0.6, Abilities.WIND_RIDER, Abilities.NONE, Abilities.INFILTRATOR, 275, 40, 65, 30, 45, 35, 60, 190, 50, 55, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BRAMBLEGHAST, 9, false, false, false, "Tumbleweed Pokémon", PokemonType.GRASS, PokemonType.GHOST, 1.2, 6, Abilities.WIND_RIDER, Abilities.NONE, Abilities.INFILTRATOR, 480, 55, 115, 70, 80, 70, 90, 45, 50, 168, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.TOEDSCOOL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 0.9, 33, Abilities.MYCELIUM_MIGHT, Abilities.NONE, Abilities.NONE, 335, 40, 40, 35, 50, 100, 70, 190, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.TOEDSCRUEL, 9, false, false, false, "Woodear Pokémon", PokemonType.GROUND, PokemonType.GRASS, 1.9, 58, Abilities.MYCELIUM_MIGHT, Abilities.NONE, Abilities.NONE, 515, 80, 70, 65, 80, 120, 100, 90, 50, 180, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.KLAWF, 9, false, false, false, "Ambush Pokémon", PokemonType.ROCK, null, 1.3, 79, Abilities.ANGER_SHELL, Abilities.SHELL_ARMOR, Abilities.REGENERATOR, 450, 70, 100, 115, 35, 55, 75, 120, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CAPSAKID, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, null, 0.3, 3, Abilities.CHLOROPHYLL, Abilities.INSOMNIA, Abilities.KLUTZ, 304, 50, 62, 40, 62, 40, 50, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.SCOVILLAIN, 9, false, false, false, "Spicy Pepper Pokémon", PokemonType.GRASS, PokemonType.FIRE, 0.9, 15, Abilities.CHLOROPHYLL, Abilities.INSOMNIA, Abilities.MOODY, 486, 65, 108, 65, 108, 65, 75, 75, 50, 170, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.RELLOR, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, null, 0.2, 1, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.SHED_SKIN, 270, 41, 50, 60, 31, 58, 30, 190, 50, 54, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.RABSCA, 9, false, false, false, "Rolling Pokémon", PokemonType.BUG, PokemonType.PSYCHIC, 0.3, 3.5, Abilities.SYNCHRONIZE, Abilities.NONE, Abilities.TELEPATHY, 470, 75, 50, 85, 115, 100, 45, 45, 50, 165, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.FLITTLE, 9, false, false, false, "Frill Pokémon", PokemonType.PSYCHIC, null, 0.2, 1.5, Abilities.ANTICIPATION, Abilities.FRISK, Abilities.SPEED_BOOST, 255, 30, 35, 30, 55, 30, 75, 120, 50, 51, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.ESPATHRA, 9, false, false, false, "Ostrich Pokémon", PokemonType.PSYCHIC, null, 1.9, 90, Abilities.OPPORTUNIST, Abilities.FRISK, Abilities.SPEED_BOOST, 481, 95, 60, 60, 101, 60, 105, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.TINKATINK, 9, false, false, false, "Metalsmith Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.4, 8.9, Abilities.MOLD_BREAKER, Abilities.OWN_TEMPO, Abilities.PICKPOCKET, 297, 50, 45, 45, 35, 64, 58, 190, 50, 59, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.TINKATUFF, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 59.1, Abilities.MOLD_BREAKER, Abilities.OWN_TEMPO, Abilities.PICKPOCKET, 380, 65, 55, 55, 45, 82, 78, 90, 50, 133, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.TINKATON, 9, false, false, false, "Hammer Pokémon", PokemonType.FAIRY, PokemonType.STEEL, 0.7, 112.8, Abilities.MOLD_BREAKER, Abilities.OWN_TEMPO, Abilities.PICKPOCKET, 506, 85, 75, 77, 70, 105, 94, 45, 50, 253, GrowthRate.MEDIUM_SLOW, 0, false), + new PokemonSpecies(Species.WIGLETT, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 1.8, Abilities.GOOEY, Abilities.RATTLED, Abilities.SAND_VEIL, 245, 10, 55, 25, 35, 25, 95, 255, 50, 49, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.WUGTRIO, 9, false, false, false, "Garden Eel Pokémon", PokemonType.WATER, null, 1.2, 5.4, Abilities.GOOEY, Abilities.RATTLED, Abilities.SAND_VEIL, 425, 35, 100, 50, 50, 70, 120, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BOMBIRDIER, 9, false, false, false, "Item Drop Pokémon", PokemonType.FLYING, PokemonType.DARK, 1.5, 42.9, Abilities.BIG_PECKS, Abilities.KEEN_EYE, Abilities.ROCKY_PAYLOAD, 485, 70, 103, 85, 60, 85, 82, 25, 50, 243, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.FINIZEN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, Abilities.WATER_VEIL, Abilities.NONE, Abilities.NONE, 315, 70, 45, 40, 45, 40, 75, 200, 50, 63, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.PALAFIN, 9, false, false, false, "Dolphin Pokémon", PokemonType.WATER, null, 1.3, 60.2, Abilities.ZERO_TO_HERO, Abilities.NONE, Abilities.NONE, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, GrowthRate.SLOW, 50, false, true, + new PokemonForm("Zero Form", "zero", PokemonType.WATER, null, 1.3, 60.2, Abilities.ZERO_TO_HERO, Abilities.NONE, Abilities.ZERO_TO_HERO, 457, 100, 70, 72, 53, 62, 100, 45, 50, 160, false, null, true), + new PokemonForm("Hero Form", "hero", PokemonType.WATER, null, 1.8, 97.4, Abilities.ZERO_TO_HERO, Abilities.NONE, Abilities.ZERO_TO_HERO, 650, 100, 160, 97, 106, 87, 100, 45, 50, 160), + ), + new PokemonSpecies(Species.VAROOM, 9, false, false, false, "Single-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1, 35, Abilities.OVERCOAT, Abilities.NONE, Abilities.SLOW_START, 300, 45, 70, 63, 30, 45, 47, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.REVAVROOM, 9, false, false, false, "Multi-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, Abilities.OVERCOAT, Abilities.NONE, Abilities.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, Abilities.OVERCOAT, Abilities.NONE, Abilities.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, false, null, true), + new PokemonForm("Segin Starmobile", "segin-starmobile", PokemonType.STEEL, PokemonType.DARK, 1.8, 240, Abilities.INTIMIDATE, Abilities.NONE, Abilities.INTIMIDATE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), + new PokemonForm("Schedar Starmobile", "schedar-starmobile", PokemonType.STEEL, PokemonType.FIRE, 1.8, 240, Abilities.SPEED_BOOST, Abilities.NONE, Abilities.SPEED_BOOST, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), + new PokemonForm("Navi Starmobile", "navi-starmobile", PokemonType.STEEL, PokemonType.POISON, 1.8, 240, Abilities.TOXIC_DEBRIS, Abilities.NONE, Abilities.TOXIC_DEBRIS, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), + new PokemonForm("Ruchbah Starmobile", "ruchbah-starmobile", PokemonType.STEEL, PokemonType.FAIRY, 1.8, 240, Abilities.MISTY_SURGE, Abilities.NONE, Abilities.MISTY_SURGE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), + new PokemonForm("Caph Starmobile", "caph-starmobile", PokemonType.STEEL, PokemonType.FIGHTING, 1.8, 240, Abilities.STAMINA, Abilities.NONE, Abilities.STAMINA, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175), + ), + new PokemonSpecies(Species.CYCLIZAR, 9, false, false, false, "Mount Pokémon", PokemonType.DRAGON, PokemonType.NORMAL, 1.6, 63, Abilities.SHED_SKIN, Abilities.NONE, Abilities.REGENERATOR, 501, 70, 95, 65, 85, 65, 121, 190, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.ORTHWORM, 9, false, false, false, "Earthworm Pokémon", PokemonType.STEEL, null, 2.5, 310, Abilities.EARTH_EATER, Abilities.NONE, Abilities.SAND_VEIL, 480, 70, 85, 145, 60, 55, 65, 25, 50, 240, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.GLIMMET, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 0.7, 8, Abilities.TOXIC_DEBRIS, Abilities.NONE, Abilities.CORROSION, 350, 48, 35, 42, 105, 60, 60, 70, 50, 70, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GLIMMORA, 9, false, false, false, "Ore Pokémon", PokemonType.ROCK, PokemonType.POISON, 1.5, 45, Abilities.TOXIC_DEBRIS, Abilities.NONE, Abilities.CORROSION, 525, 83, 55, 90, 130, 81, 86, 25, 50, 184, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GREAVARD, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 0.6, 35, Abilities.PICKUP, Abilities.NONE, Abilities.FLUFFY, 290, 50, 61, 60, 30, 55, 34, 120, 50, 58, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.HOUNDSTONE, 9, false, false, false, "Ghost Dog Pokémon", PokemonType.GHOST, null, 2, 15, Abilities.SAND_RUSH, Abilities.NONE, Abilities.FLUFFY, 488, 72, 101, 100, 50, 97, 68, 60, 50, 171, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.FLAMIGO, 9, false, false, false, "Synchronize Pokémon", PokemonType.FLYING, PokemonType.FIGHTING, 1.6, 37, Abilities.SCRAPPY, Abilities.TANGLED_FEET, Abilities.COSTAR, 500, 82, 115, 74, 75, 64, 90, 100, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CETODDLE, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 1.2, 45, Abilities.THICK_FAT, Abilities.SNOW_CLOAK, Abilities.SHEER_FORCE, 334, 108, 68, 45, 30, 40, 43, 150, 50, 67, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.CETITAN, 9, false, false, false, "Terra Whale Pokémon", PokemonType.ICE, null, 4.5, 700, Abilities.THICK_FAT, Abilities.SLUSH_RUSH, Abilities.SHEER_FORCE, 521, 170, 113, 65, 45, 55, 73, 50, 50, 182, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.VELUZA, 9, false, false, false, "Jettison Pokémon", PokemonType.WATER, PokemonType.PSYCHIC, 2.5, 90, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.SHARPNESS, 478, 90, 102, 73, 78, 65, 70, 100, 50, 167, GrowthRate.FAST, 50, false), + new PokemonSpecies(Species.DONDOZO, 9, false, false, false, "Big Catfish Pokémon", PokemonType.WATER, null, 12, 220, Abilities.UNAWARE, Abilities.OBLIVIOUS, Abilities.WATER_VEIL, 530, 150, 100, 115, 65, 65, 35, 25, 50, 265, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.TATSUGIRI, 9, false, false, false, "Mimicry Pokémon", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, GrowthRate.MEDIUM_SLOW, 50, false, false, + new PokemonForm("Curly Form", "curly", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), + new PokemonForm("Droopy Form", "droopy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), + new PokemonForm("Stretchy Form", "stretchy", PokemonType.DRAGON, PokemonType.WATER, 0.3, 8, Abilities.COMMANDER, Abilities.NONE, Abilities.STORM_DRAIN, 475, 68, 50, 60, 120, 95, 82, 100, 50, 166, false, null, true), + ), + new PokemonSpecies(Species.ANNIHILAPE, 9, false, false, false, "Rage Monkey Pokémon", PokemonType.FIGHTING, PokemonType.GHOST, 1.2, 56, Abilities.VITAL_SPIRIT, Abilities.INNER_FOCUS, Abilities.DEFIANT, 535, 110, 115, 80, 50, 90, 90, 45, 50, 268, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.CLODSIRE, 9, false, false, false, "Spiny Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 1.8, 223, Abilities.POISON_POINT, Abilities.WATER_ABSORB, Abilities.UNAWARE, 430, 130, 75, 60, 45, 100, 20, 90, 50, 151, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.FARIGIRAF, 9, false, false, false, "Long Neck Pokémon", PokemonType.NORMAL, PokemonType.PSYCHIC, 3.2, 160, Abilities.CUD_CHEW, Abilities.ARMOR_TAIL, Abilities.SAP_SIPPER, 520, 120, 90, 70, 110, 70, 60, 45, 50, 260, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.DUDUNSPARCE, 9, false, false, false, "Land Snake Pokémon", PokemonType.NORMAL, null, 3.6, 39.2, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, GrowthRate.MEDIUM_FAST, 50, false, false, + new PokemonForm("Two-Segment Form", "two-segment", PokemonType.NORMAL, null, 3.6, 39.2, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182, false, ""), + new PokemonForm("Three-Segment Form", "three-segment", PokemonType.NORMAL, null, 4.5, 47.4, Abilities.SERENE_GRACE, Abilities.RUN_AWAY, Abilities.RATTLED, 520, 125, 100, 80, 85, 75, 55, 45, 50, 182), + ), + new PokemonSpecies(Species.KINGAMBIT, 9, false, false, false, "Big Blade Pokémon", PokemonType.DARK, PokemonType.STEEL, 2, 120, Abilities.DEFIANT, Abilities.SUPREME_OVERLORD, Abilities.PRESSURE, 550, 100, 135, 120, 60, 85, 50, 25, 50, 275, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GREAT_TUSK, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.FIGHTING, 2.2, 320, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 115, 131, 131, 53, 53, 87, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.SCREAM_TAIL, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.PSYCHIC, 1.2, 8, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 115, 65, 99, 65, 115, 111, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.BRUTE_BONNET, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.DARK, 1.2, 21, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 111, 127, 99, 79, 99, 55, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.FLUTTER_MANE, 9, false, false, false, "Paradox Pokémon", PokemonType.GHOST, PokemonType.FAIRY, 1.4, 4, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 55, 55, 55, 135, 135, 135, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.SLITHER_WING, 9, false, false, false, "Paradox Pokémon", PokemonType.BUG, PokemonType.FIGHTING, 3.2, 92, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 85, 135, 79, 85, 105, 81, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.SANDY_SHOCKS, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.GROUND, 2.3, 60, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 570, 85, 81, 97, 121, 85, 101, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.IRON_TREADS, 9, false, false, false, "Paradox Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.9, 240, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 90, 112, 120, 72, 70, 106, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.IRON_BUNDLE, 9, false, false, false, "Paradox Pokémon", PokemonType.ICE, PokemonType.WATER, 0.6, 11, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 56, 80, 114, 124, 60, 136, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.IRON_HANDS, 9, false, false, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.ELECTRIC, 1.8, 380.7, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 154, 140, 108, 50, 68, 50, 50, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.IRON_JUGULIS, 9, false, false, false, "Paradox Pokémon", PokemonType.DARK, PokemonType.FLYING, 1.3, 111, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 94, 80, 86, 122, 80, 108, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.IRON_MOTH, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.POISON, 1.2, 36, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 80, 70, 60, 140, 110, 110, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.IRON_THORNS, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.6, 303, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 570, 100, 134, 110, 70, 84, 72, 30, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.FRIGIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.5, 17, Abilities.THERMAL_EXCHANGE, Abilities.NONE, Abilities.ICE_BODY, 320, 65, 75, 45, 35, 45, 55, 45, 50, 64, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.ARCTIBAX, 9, false, false, false, "Ice Fin Pokémon", PokemonType.DRAGON, PokemonType.ICE, 0.8, 30, Abilities.THERMAL_EXCHANGE, Abilities.NONE, Abilities.ICE_BODY, 423, 90, 95, 66, 45, 65, 62, 25, 50, 148, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.BAXCALIBUR, 9, false, false, false, "Ice Dragon Pokémon", PokemonType.DRAGON, PokemonType.ICE, 2.1, 210, Abilities.THERMAL_EXCHANGE, Abilities.NONE, Abilities.ICE_BODY, 600, 115, 145, 92, 75, 86, 87, 10, 50, 300, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.GIMMIGHOUL, 9, false, false, false, "Coin Chest Pokémon", PokemonType.GHOST, null, 0.3, 5, Abilities.RATTLED, Abilities.NONE, Abilities.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, GrowthRate.SLOW, null, false, false, + new PokemonForm("Chest Form", "chest", PokemonType.GHOST, null, 0.3, 5, Abilities.RATTLED, Abilities.NONE, Abilities.NONE, 300, 45, 30, 70, 75, 70, 10, 45, 50, 60, false, "", true), + new PokemonForm("Roaming Form", "roaming", PokemonType.GHOST, null, 0.1, 1, Abilities.RUN_AWAY, Abilities.NONE, Abilities.NONE, 300, 45, 30, 25, 75, 45, 80, 45, 50, 60, false, null, true), + ), + new PokemonSpecies(Species.GHOLDENGO, 9, false, false, false, "Coin Entity Pokémon", PokemonType.STEEL, PokemonType.GHOST, 1.2, 30, Abilities.GOOD_AS_GOLD, Abilities.NONE, Abilities.NONE, 550, 87, 60, 95, 133, 91, 84, 45, 50, 275, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.WO_CHIEN, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GRASS, 1.5, 74.2, Abilities.TABLETS_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 85, 85, 100, 95, 135, 70, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.CHIEN_PAO, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.ICE, 1.9, 152.2, Abilities.SWORD_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 80, 120, 80, 90, 65, 135, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.TING_LU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.GROUND, 2.7, 699.7, Abilities.VESSEL_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 155, 110, 125, 55, 80, 45, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.CHI_YU, 9, true, false, false, "Ruinous Pokémon", PokemonType.DARK, PokemonType.FIRE, 0.4, 4.9, Abilities.BEADS_OF_RUIN, Abilities.NONE, Abilities.NONE, 570, 55, 80, 80, 135, 120, 100, 6, 0, 285, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ROARING_MOON, 9, false, false, false, "Paradox Pokémon", PokemonType.DRAGON, PokemonType.DARK, 2, 380, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 105, 139, 71, 55, 101, 119, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.IRON_VALIANT, 9, false, false, false, "Paradox Pokémon", PokemonType.FAIRY, PokemonType.FIGHTING, 1.4, 35, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 74, 130, 90, 120, 60, 116, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.KORAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Apex Build", "apex-build", PokemonType.FIGHTING, PokemonType.DRAGON, 2.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335, false, null, true), + ), + new PokemonSpecies(Species.MIRAIDON, 9, false, true, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, GrowthRate.SLOW, null, false, false, + new PokemonForm("Ultimate Mode", "ultimate-mode", PokemonType.ELECTRIC, PokemonType.DRAGON, 3.5, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335, false, null, true), + ), + new PokemonSpecies(Species.WALKING_WAKE, 9, false, false, false, "Paradox Pokémon", PokemonType.WATER, PokemonType.DRAGON, 3.5, 280, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 99, 83, 91, 125, 83, 109, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Gouging Fire and Raging Bolt + new PokemonSpecies(Species.IRON_LEAVES, 9, false, false, false, "Paradox Pokémon", PokemonType.GRASS, PokemonType.PSYCHIC, 1.5, 125, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 130, 88, 70, 108, 104, 10, 0, 295, GrowthRate.SLOW, null, false), //Custom Catchrate, matching Iron Boulder and Iron Crown + new PokemonSpecies(Species.DIPPLIN, 9, false, false, false, "Candy Apple Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 0.4, 9.7, Abilities.SUPERSWEET_SYRUP, Abilities.GLUTTONY, Abilities.STICKY_HOLD, 485, 80, 80, 110, 95, 80, 40, 45, 50, 170, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.POLTCHAGEIST, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, GrowthRate.SLOW, null, false, false, + new PokemonForm("Counterfeit Form", "counterfeit", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, true), + new PokemonForm("Artisan Form", "artisan", PokemonType.GRASS, PokemonType.GHOST, 0.1, 1.1, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 308, 40, 45, 45, 74, 54, 50, 120, 50, 62, false, null, true), + ), + new PokemonSpecies(Species.SINISTCHA, 9, false, false, false, "Matcha Pokémon", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178, GrowthRate.SLOW, null, false, false, + new PokemonForm("Unremarkable Form", "unremarkable", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178), + new PokemonForm("Masterpiece Form", "masterpiece", PokemonType.GRASS, PokemonType.GHOST, 0.2, 2.2, Abilities.HOSPITALITY, Abilities.NONE, Abilities.HEATPROOF, 508, 71, 60, 106, 121, 80, 70, 60, 50, 178), + ), + new PokemonSpecies(Species.OKIDOGI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FIGHTING, 1.8, 92.2, Abilities.TOXIC_CHAIN, Abilities.NONE, Abilities.GUARD_DOG, 555, 88, 128, 115, 58, 86, 80, 3, 0, 276, GrowthRate.SLOW, 100, false), + new PokemonSpecies(Species.MUNKIDORI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1, 12.2, Abilities.TOXIC_CHAIN, Abilities.NONE, Abilities.FRISK, 555, 88, 75, 66, 130, 90, 106, 3, 0, 276, GrowthRate.SLOW, 100, false), + new PokemonSpecies(Species.FEZANDIPITI, 9, true, false, false, "Retainer Pokémon", PokemonType.POISON, PokemonType.FAIRY, 1.4, 30.1, Abilities.TOXIC_CHAIN, Abilities.NONE, Abilities.TECHNICIAN, 555, 88, 91, 82, 70, 125, 99, 3, 0, 276, GrowthRate.SLOW, 100, false), + new PokemonSpecies(Species.OGERPON, 9, true, false, false, "Mask Pokémon", PokemonType.GRASS, null, 1.2, 39.8, Abilities.DEFIANT, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, GrowthRate.SLOW, 0, false, false, + new PokemonForm("Teal Mask", "teal-mask", PokemonType.GRASS, null, 1.2, 39.8, Abilities.DEFIANT, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275, false, null, true), + new PokemonForm("Wellspring Mask", "wellspring-mask", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, Abilities.WATER_ABSORB, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Hearthflame Mask", "hearthflame-mask", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, Abilities.MOLD_BREAKER, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Cornerstone Mask", "cornerstone-mask", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, Abilities.STURDY, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Teal Mask Terastallized", "teal-mask-tera", PokemonType.GRASS, null, 1.2, 39.8, Abilities.EMBODY_ASPECT_TEAL, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Wellspring Mask Terastallized", "wellspring-mask-tera", PokemonType.GRASS, PokemonType.WATER, 1.2, 39.8, Abilities.EMBODY_ASPECT_WELLSPRING, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Hearthflame Mask Terastallized", "hearthflame-mask-tera", PokemonType.GRASS, PokemonType.FIRE, 1.2, 39.8, Abilities.EMBODY_ASPECT_HEARTHFLAME, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + new PokemonForm("Cornerstone Mask Terastallized", "cornerstone-mask-tera", PokemonType.GRASS, PokemonType.ROCK, 1.2, 39.8, Abilities.EMBODY_ASPECT_CORNERSTONE, Abilities.NONE, Abilities.NONE, 550, 80, 120, 84, 60, 96, 110, 5, 50, 275), + ), + new PokemonSpecies(Species.ARCHALUDON, 9, false, false, false, "Alloy Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 2, 60, Abilities.STAMINA, Abilities.STURDY, Abilities.STALWART, 600, 90, 105, 130, 125, 65, 85, 10, 50, 300, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.HYDRAPPLE, 9, false, false, false, "Apple Hydra Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 1.8, 93, Abilities.SUPERSWEET_SYRUP, Abilities.REGENERATOR, Abilities.STICKY_HOLD, 540, 106, 80, 110, 120, 80, 44, 10, 50, 270, GrowthRate.ERRATIC, 50, false), + new PokemonSpecies(Species.GOUGING_FIRE, 9, false, false, false, "Paradox Pokémon", PokemonType.FIRE, PokemonType.DRAGON, 3.5, 590, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 105, 115, 121, 65, 93, 91, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.RAGING_BOLT, 9, false, false, false, "Paradox Pokémon", PokemonType.ELECTRIC, PokemonType.DRAGON, 5.2, 480, Abilities.PROTOSYNTHESIS, Abilities.NONE, Abilities.NONE, 590, 125, 73, 91, 137, 89, 75, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.IRON_BOULDER, 9, false, false, false, "Paradox Pokémon", PokemonType.ROCK, PokemonType.PSYCHIC, 1.5, 162.5, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 120, 80, 68, 108, 124, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.IRON_CROWN, 9, false, false, false, "Paradox Pokémon", PokemonType.STEEL, PokemonType.PSYCHIC, 1.6, 156, Abilities.QUARK_DRIVE, Abilities.NONE, Abilities.NONE, 590, 90, 72, 100, 122, 108, 98, 10, 0, 295, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.TERAPAGOS, 9, false, true, false, "Tera Pokémon", PokemonType.NORMAL, null, 0.2, 6.5, Abilities.TERA_SHIFT, Abilities.NONE, Abilities.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, GrowthRate.SLOW, 50, false, false, + new PokemonForm("Normal Form", "", PokemonType.NORMAL, null, 0.2, 6.5, Abilities.TERA_SHIFT, Abilities.NONE, Abilities.NONE, 450, 90, 65, 85, 65, 85, 60, 5, 50, 90, false, null, true), + new PokemonForm("Terastal Form", "terastal", PokemonType.NORMAL, null, 0.3, 16, Abilities.TERA_SHELL, Abilities.NONE, Abilities.NONE, 600, 95, 95, 110, 105, 110, 85, 5, 50, 120), + new PokemonForm("Stellar Form", "stellar", PokemonType.NORMAL, null, 1.7, 77, Abilities.TERAFORM_ZERO, Abilities.NONE, Abilities.NONE, 700, 160, 105, 110, 130, 110, 85, 5, 50, 140), + ), + new PokemonSpecies(Species.PECHARUNT, 9, false, false, true, "Subjugation Pokémon", PokemonType.POISON, PokemonType.GHOST, 0.3, 0.3, Abilities.POISON_PUPPETEER, Abilities.NONE, Abilities.NONE, 600, 88, 88, 160, 88, 88, 88, 3, 0, 300, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.ALOLA_RATTATA, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.3, 3.8, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 253, 30, 56, 35, 25, 35, 72, 255, 70, 51, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_RATICATE, 7, false, false, false, "Mouse Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.7, 25.5, Abilities.GLUTTONY, Abilities.HUSTLE, Abilities.THICK_FAT, 413, 75, 71, 70, 40, 80, 77, 127, 70, 145, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_RAICHU, 7, false, false, false, "Mouse Pokémon", PokemonType.ELECTRIC, PokemonType.PSYCHIC, 0.7, 21, Abilities.SURGE_SURFER, Abilities.NONE, Abilities.NONE, 485, 60, 85, 50, 95, 85, 110, 75, 50, 243, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_SANDSHREW, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 0.7, 40, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SLUSH_RUSH, 300, 50, 75, 90, 10, 35, 40, 255, 50, 60, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_SANDSLASH, 7, false, false, false, "Mouse Pokémon", PokemonType.ICE, PokemonType.STEEL, 1.2, 55, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SLUSH_RUSH, 450, 75, 100, 120, 25, 65, 65, 90, 50, 158, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_VULPIX, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, null, 0.6, 9.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SNOW_WARNING, 299, 38, 41, 40, 50, 65, 65, 190, 50, 60, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(Species.ALOLA_NINETALES, 7, false, false, false, "Fox Pokémon", PokemonType.ICE, PokemonType.FAIRY, 1.1, 19.9, Abilities.SNOW_CLOAK, Abilities.NONE, Abilities.SNOW_WARNING, 505, 73, 67, 75, 81, 100, 109, 75, 50, 177, GrowthRate.MEDIUM_FAST, 25, false), + new PokemonSpecies(Species.ALOLA_DIGLETT, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.2, 1, Abilities.SAND_VEIL, Abilities.TANGLING_HAIR, Abilities.SAND_FORCE, 265, 10, 55, 30, 35, 45, 90, 255, 50, 53, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_DUGTRIO, 7, false, false, false, "Mole Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 66.6, Abilities.SAND_VEIL, Abilities.TANGLING_HAIR, Abilities.SAND_FORCE, 425, 35, 100, 60, 50, 70, 110, 50, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_MEOWTH, 7, false, false, false, "Scratch Cat Pokémon", PokemonType.DARK, null, 0.4, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.RATTLED, 290, 40, 35, 35, 50, 40, 90, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_PERSIAN, 7, false, false, false, "Classy Cat Pokémon", PokemonType.DARK, null, 1.1, 33, Abilities.FUR_COAT, Abilities.TECHNICIAN, Abilities.RATTLED, 440, 65, 60, 60, 75, 65, 115, 90, 50, 154, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_GEODUDE, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 0.4, 20.3, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.GALVANIZE, 300, 40, 80, 100, 30, 30, 20, 255, 70, 60, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.ALOLA_GRAVELER, 7, false, false, false, "Rock Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1, 110, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.GALVANIZE, 390, 55, 95, 115, 45, 45, 35, 120, 70, 137, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.ALOLA_GOLEM, 7, false, false, false, "Megaton Pokémon", PokemonType.ROCK, PokemonType.ELECTRIC, 1.7, 316, Abilities.MAGNET_PULL, Abilities.STURDY, Abilities.GALVANIZE, 495, 80, 120, 130, 55, 65, 45, 45, 70, 223, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.ALOLA_GRIMER, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 0.7, 42, Abilities.POISON_TOUCH, Abilities.GLUTTONY, Abilities.POWER_OF_ALCHEMY, 325, 80, 80, 50, 40, 50, 25, 190, 70, 65, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_MUK, 7, false, false, false, "Sludge Pokémon", PokemonType.POISON, PokemonType.DARK, 1, 52, Abilities.POISON_TOUCH, Abilities.GLUTTONY, Abilities.POWER_OF_ALCHEMY, 500, 105, 105, 75, 65, 100, 50, 75, 70, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ALOLA_EXEGGUTOR, 7, false, false, false, "Coconut Pokémon", PokemonType.GRASS, PokemonType.DRAGON, 10.9, 415.6, Abilities.FRISK, Abilities.NONE, Abilities.HARVEST, 530, 95, 105, 85, 125, 75, 45, 45, 50, 186, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.ALOLA_MAROWAK, 7, false, false, false, "Bone Keeper Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1, 34, Abilities.CURSED_BODY, Abilities.LIGHTNING_ROD, Abilities.ROCK_HEAD, 425, 60, 80, 110, 50, 80, 45, 75, 50, 149, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.ETERNAL_FLOETTE, 6, true, false, false, "Single Bloom Pokémon", PokemonType.FAIRY, null, 0.2, 0.9, Abilities.FLOWER_VEIL, Abilities.NONE, Abilities.SYMBIOSIS, 551, 74, 65, 67, 125, 128, 92, 120, 70, 243, GrowthRate.MEDIUM_FAST, 0, false), //Marked as Sub-Legend, for casing purposes + new PokemonSpecies(Species.GALAR_MEOWTH, 8, false, false, false, "Scratch Cat Pokémon", PokemonType.STEEL, null, 0.4, 7.5, Abilities.PICKUP, Abilities.TOUGH_CLAWS, Abilities.UNNERVE, 290, 50, 65, 55, 40, 40, 40, 255, 50, 58, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_PONYTA, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, null, 0.8, 24, Abilities.RUN_AWAY, Abilities.PASTEL_VEIL, Abilities.ANTICIPATION, 410, 50, 85, 55, 65, 65, 90, 190, 50, 82, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_RAPIDASH, 8, false, false, false, "Fire Horse Pokémon", PokemonType.PSYCHIC, PokemonType.FAIRY, 1.7, 80, Abilities.RUN_AWAY, Abilities.PASTEL_VEIL, Abilities.ANTICIPATION, 500, 65, 100, 70, 80, 80, 105, 60, 50, 175, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_SLOWPOKE, 8, false, false, false, "Dopey Pokémon", PokemonType.PSYCHIC, null, 1.2, 36, Abilities.GLUTTONY, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 315, 90, 65, 65, 40, 40, 15, 190, 50, 63, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_SLOWBRO, 8, false, false, false, "Hermit Crab Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.6, 70.5, Abilities.QUICK_DRAW, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 100, 95, 100, 70, 30, 75, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_FARFETCHD, 8, false, false, false, "Wild Duck Pokémon", PokemonType.FIGHTING, null, 0.8, 42, Abilities.STEADFAST, Abilities.NONE, Abilities.SCRAPPY, 377, 52, 95, 55, 58, 62, 55, 45, 50, 132, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_WEEZING, 8, false, false, false, "Poison Gas Pokémon", PokemonType.POISON, PokemonType.FAIRY, 3, 16, Abilities.LEVITATE, Abilities.NEUTRALIZING_GAS, Abilities.MISTY_SURGE, 490, 65, 90, 120, 85, 70, 60, 60, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_MR_MIME, 8, false, false, false, "Barrier Pokémon", PokemonType.ICE, PokemonType.PSYCHIC, 1.4, 56.8, Abilities.VITAL_SPIRIT, Abilities.SCREEN_CLEANER, Abilities.ICE_BODY, 460, 50, 65, 65, 90, 90, 100, 45, 50, 161, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_ARTICUNO, 8, true, false, false, "Freeze Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 50.9, Abilities.COMPETITIVE, Abilities.NONE, Abilities.NONE, 580, 90, 85, 85, 125, 100, 95, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.GALAR_ZAPDOS, 8, true, false, false, "Electric Pokémon", PokemonType.FIGHTING, PokemonType.FLYING, 1.6, 58.2, Abilities.DEFIANT, Abilities.NONE, Abilities.NONE, 580, 90, 125, 90, 85, 90, 100, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.GALAR_MOLTRES, 8, true, false, false, "Flame Pokémon", PokemonType.DARK, PokemonType.FLYING, 2, 66, Abilities.BERSERK, Abilities.NONE, Abilities.NONE, 580, 90, 85, 90, 100, 125, 90, 3, 35, 290, GrowthRate.SLOW, null, false), + new PokemonSpecies(Species.GALAR_SLOWKING, 8, false, false, false, "Royal Pokémon", PokemonType.POISON, PokemonType.PSYCHIC, 1.8, 79.5, Abilities.CURIOUS_MEDICINE, Abilities.OWN_TEMPO, Abilities.REGENERATOR, 490, 95, 65, 80, 110, 110, 30, 70, 50, 172, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_CORSOLA, 8, false, false, false, "Coral Pokémon", PokemonType.GHOST, null, 0.6, 0.5, Abilities.WEAK_ARMOR, Abilities.NONE, Abilities.CURSED_BODY, 410, 60, 55, 100, 65, 100, 30, 60, 50, 144, GrowthRate.FAST, 25, false), + new PokemonSpecies(Species.GALAR_ZIGZAGOON, 8, false, false, false, "Tiny Raccoon Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.4, 17.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 240, 38, 30, 41, 30, 41, 60, 255, 50, 56, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_LINOONE, 8, false, false, false, "Rushing Pokémon", PokemonType.DARK, PokemonType.NORMAL, 0.5, 32.5, Abilities.PICKUP, Abilities.GLUTTONY, Abilities.QUICK_FEET, 420, 78, 70, 61, 50, 61, 100, 90, 50, 147, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_DARUMAKA, 8, false, false, false, "Zen Charm Pokémon", PokemonType.ICE, null, 0.7, 40, Abilities.HUSTLE, Abilities.NONE, Abilities.INNER_FOCUS, 315, 70, 90, 45, 15, 45, 50, 120, 50, 63, GrowthRate.MEDIUM_SLOW, 50, false), + new PokemonSpecies(Species.GALAR_DARMANITAN, 8, false, false, false, "Blazing Pokémon", PokemonType.ICE, null, 1.7, 120, Abilities.GORILLA_TACTICS, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, GrowthRate.MEDIUM_SLOW, 50, false, true, + new PokemonForm("Standard Mode", "", PokemonType.ICE, null, 1.7, 120, Abilities.GORILLA_TACTICS, Abilities.NONE, Abilities.ZEN_MODE, 480, 105, 140, 55, 30, 55, 95, 60, 50, 168, false, null, true), + new PokemonForm("Zen Mode", "zen", PokemonType.ICE, PokemonType.FIRE, 1.7, 120, Abilities.GORILLA_TACTICS, Abilities.NONE, Abilities.ZEN_MODE, 540, 105, 160, 55, 30, 55, 135, 60, 50, 189), + ), + new PokemonSpecies(Species.GALAR_YAMASK, 8, false, false, false, "Spirit Pokémon", PokemonType.GROUND, PokemonType.GHOST, 0.5, 1.5, Abilities.WANDERING_SPIRIT, Abilities.NONE, Abilities.NONE, 303, 38, 55, 85, 30, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GALAR_STUNFISK, 8, false, false, false, "Trap Pokémon", PokemonType.GROUND, PokemonType.STEEL, 0.7, 20.5, Abilities.MIMICRY, Abilities.NONE, Abilities.NONE, 471, 109, 81, 99, 66, 84, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.HISUI_GROWLITHE, 8, false, false, false, "Puppy Pokémon", PokemonType.FIRE, PokemonType.ROCK, 0.8, 22.7, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.ROCK_HEAD, 350, 60, 75, 45, 65, 50, 55, 190, 50, 70, GrowthRate.SLOW, 75, false), + new PokemonSpecies(Species.HISUI_ARCANINE, 8, false, false, false, "Legendary Pokémon", PokemonType.FIRE, PokemonType.ROCK, 2, 168, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.ROCK_HEAD, 555, 95, 115, 80, 95, 80, 90, 85, 50, 194, GrowthRate.SLOW, 75, false), + new PokemonSpecies(Species.HISUI_VOLTORB, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 0.5, 13, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 80, 66, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.HISUI_ELECTRODE, 8, false, false, false, "Ball Pokémon", PokemonType.ELECTRIC, PokemonType.GRASS, 1.2, 81, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false), + new PokemonSpecies(Species.HISUI_TYPHLOSION, 8, false, false, false, "Volcano Pokémon", PokemonType.FIRE, PokemonType.GHOST, 1.6, 69.8, Abilities.BLAZE, Abilities.NONE, Abilities.FRISK, 534, 73, 84, 78, 119, 85, 95, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.HISUI_QWILFISH, 8, false, false, false, "Balloon Pokémon", PokemonType.DARK, PokemonType.POISON, 0.5, 3.9, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.HISUI_SNEASEL, 8, false, false, false, "Sharp Claw Pokémon", PokemonType.FIGHTING, PokemonType.POISON, 0.9, 27, Abilities.INNER_FOCUS, Abilities.KEEN_EYE, Abilities.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true), + new PokemonSpecies(Species.HISUI_SAMUROTT, 8, false, false, false, "Formidable Pokémon", PokemonType.WATER, PokemonType.DARK, 1.5, 58.2, Abilities.TORRENT, Abilities.NONE, Abilities.SHARPNESS, 528, 90, 108, 80, 100, 65, 85, 45, 80, 238, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.HISUI_LILLIGANT, 8, false, false, false, "Flowering Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.2, 19.2, Abilities.CHLOROPHYLL, Abilities.HUSTLE, Abilities.LEAF_GUARD, 480, 70, 105, 75, 50, 75, 105, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false), + new PokemonSpecies(Species.HISUI_ZORUA, 8, false, false, false, "Tricky Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 0.7, 12.5, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 330, 35, 60, 40, 85, 40, 70, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.HISUI_ZOROARK, 8, false, false, false, "Illusion Fox Pokémon", PokemonType.NORMAL, PokemonType.GHOST, 1.6, 83, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 510, 55, 100, 60, 125, 60, 110, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.HISUI_BRAVIARY, 8, false, false, false, "Valiant Pokémon", PokemonType.PSYCHIC, PokemonType.FLYING, 1.7, 43.4, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.TINTED_LENS, 510, 110, 83, 70, 112, 70, 65, 60, 50, 179, GrowthRate.SLOW, 100, false), + new PokemonSpecies(Species.HISUI_SLIGGOO, 8, false, false, false, "Soft Tissue Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 0.7, 68.5, Abilities.SAP_SIPPER, Abilities.SHELL_ARMOR, Abilities.GOOEY, 452, 58, 75, 83, 83, 113, 40, 45, 35, 158, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.HISUI_GOODRA, 8, false, false, false, "Dragon Pokémon", PokemonType.STEEL, PokemonType.DRAGON, 1.7, 334.1, Abilities.SAP_SIPPER, Abilities.SHELL_ARMOR, Abilities.GOOEY, 600, 80, 100, 100, 110, 150, 60, 45, 35, 270, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.HISUI_AVALUGG, 8, false, false, false, "Iceberg Pokémon", PokemonType.ICE, PokemonType.ROCK, 1.4, 262.4, Abilities.STRONG_JAW, Abilities.ICE_BODY, Abilities.STURDY, 514, 95, 127, 184, 34, 36, 38, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.HISUI_DECIDUEYE, 8, false, false, false, "Arrow Quill Pokémon", PokemonType.GRASS, PokemonType.FIGHTING, 1.6, 37, Abilities.OVERGROW, Abilities.NONE, Abilities.SCRAPPY, 530, 88, 112, 80, 95, 95, 60, 45, 50, 239, GrowthRate.MEDIUM_SLOW, 87.5, false), + new PokemonSpecies(Species.PALDEA_TAUROS, 9, false, false, false, "Wild Bull Pokémon", PokemonType.FIGHTING, null, 1.4, 115, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, GrowthRate.SLOW, 100, false, false, + new PokemonForm("Combat Breed", "combat", PokemonType.FIGHTING, null, 1.4, 115, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, "", true), + new PokemonForm("Blaze Breed", "blaze", PokemonType.FIGHTING, PokemonType.FIRE, 1.4, 85, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), + new PokemonForm("Aqua Breed", "aqua", PokemonType.FIGHTING, PokemonType.WATER, 1.4, 110, Abilities.INTIMIDATE, Abilities.ANGER_POINT, Abilities.CUD_CHEW, 490, 75, 110, 105, 30, 70, 100, 45, 50, 172, false, null, true), + ), + new PokemonSpecies(Species.PALDEA_WOOPER, 9, false, false, false, "Water Fish Pokémon", PokemonType.POISON, PokemonType.GROUND, 0.4, 11, Abilities.POISON_POINT, Abilities.WATER_ABSORB, Abilities.UNAWARE, 210, 55, 45, 45, 25, 25, 15, 255, 50, 42, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.BLOODMOON_URSALUNA, 9, true, false, false, "Peat Pokémon", PokemonType.GROUND, PokemonType.NORMAL, 2.7, 333, Abilities.MINDS_EYE, Abilities.NONE, Abilities.NONE, 555, 113, 70, 120, 135, 65, 52, 75, 50, 278, GrowthRate.MEDIUM_FAST, 50, false), //Marked as Sub-Legend, for casing purposes ); } diff --git a/src/data/terrain.ts b/src/data/terrain.ts index 1ffe0adc8bf..c727ef724c9 100644 --- a/src/data/terrain.ts +++ b/src/data/terrain.ts @@ -1,7 +1,7 @@ import type Pokemon from "../field/pokemon"; -import type Move from "./move"; -import { Type } from "#enums/type"; -import { ProtectAttr } from "./move"; +import type Move from "./moves/move"; +import { PokemonType } from "#enums/pokemon-type"; +import { ProtectAttr } from "./moves/move"; import type { BattlerIndex } from "#app/battle"; import i18next from "i18next"; @@ -30,20 +30,20 @@ export class Terrain { return true; } - getAttackTypeMultiplier(attackType: Type): number { + getAttackTypeMultiplier(attackType: PokemonType): number { switch (this.terrainType) { case TerrainType.ELECTRIC: - if (attackType === Type.ELECTRIC) { + if (attackType === PokemonType.ELECTRIC) { return 1.3; } break; case TerrainType.GRASSY: - if (attackType === Type.GRASS) { + if (attackType === PokemonType.GRASS) { return 1.3; } break; case TerrainType.PSYCHIC: - if (attackType === Type.PSYCHIC) { + if (attackType === PokemonType.PSYCHIC) { return 1.3; } break; diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 21b04c182e6..2b912bda603 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -11,7 +11,7 @@ import type { PokemonSpeciesFilter } from "#app/data/pokemon-species"; import type PokemonSpecies from "#app/data/pokemon-species"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { tmSpecies } from "#app/data/balance/tms"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { doubleBattleDialogue } from "#app/data/dialogue"; import type { PersistentModifier } from "#app/modifier/modifier"; import { TrainerVariant } from "#app/field/trainer"; @@ -254,7 +254,7 @@ export class TrainerConfig { public partyMemberFuncs: PartyMemberFuncs = {}; public speciesPools: TrainerTierPools; public speciesFilter: PokemonSpeciesFilter; - public specialtyType: Type; + public specialtyType: PokemonType; public hasVoucher: boolean = false; public trainerAI: TrainerAI; @@ -586,7 +586,7 @@ export class TrainerConfig { return this; } - setSpecialtyType(specialtyType: Type): TrainerConfig { + setSpecialtyType(specialtyType: PokemonType): TrainerConfig { this.specialtyType = specialtyType; return this; } @@ -604,7 +604,7 @@ export class TrainerConfig { */ setRandomTeraModifiers(count: () => number, slot?: number): TrainerConfig { this.genAIFuncs.push((party: EnemyPokemon[]) => { - const shedinjaCanTera = !this.hasSpecialtyType() || this.specialtyType === Type.BUG; // Better to check one time than 6 + const shedinjaCanTera = !this.hasSpecialtyType() || this.specialtyType === PokemonType.BUG; // Better to check one time than 6 const partyMemberIndexes = new Array(party.length).fill(null).map((_, i) => i) .filter(i => shedinjaCanTera || party[i].species.speciesId !== Species.SHEDINJA); // Shedinja can only Tera on Bug specialty type (or no specialty type) const setPartySlot = !Utils.isNullOrUndefined(slot) ? Phaser.Math.Wrap(slot, 0, party.length) : -1; // If we have a tera slot defined, wrap it to party size. @@ -789,7 +789,7 @@ export class TrainerConfig { * @param specialtyType The specialty Type of the admin, if they have one * @returns {TrainerConfig} The updated TrainerConfig instance. * **/ - initForEvilTeamAdmin(title: string, poolName: string, signatureSpecies: (Species | Species[])[], specialtyType?: Type): TrainerConfig { + initForEvilTeamAdmin(title: string, poolName: string, signatureSpecies: (Species | Species[])[], specialtyType?: PokemonType): TrainerConfig { if (!getIsInitialized()) { initI18n(); } @@ -851,11 +851,11 @@ export class TrainerConfig { /** * Initializes the trainer configuration for an evil team leader. Temporarily hardcoding evil leader teams though. * @param {Species | Species[]} signatureSpecies The signature species for the evil team leader. - * @param {Type} specialtyType The specialty type for the evil team Leader. + * @param {PokemonType} specialtyType The specialty type for the evil team Leader. * @param boolean Whether or not this is the rematch fight * @returns {TrainerConfig} The updated TrainerConfig instance. * **/ - initForEvilTeamLeader(title: string, signatureSpecies: (Species | Species[])[], rematch: boolean = false, specialtyType?: Type): TrainerConfig { + initForEvilTeamLeader(title: string, signatureSpecies: (Species | Species[])[], rematch: boolean = false, specialtyType?: PokemonType): TrainerConfig { if (!getIsInitialized()) { initI18n(); } @@ -891,12 +891,12 @@ export class TrainerConfig { * Initializes the trainer configuration for a Gym Leader. * @param {Species | Species[]} signatureSpecies The signature species for the Gym Leader. Added to party in reverse order. * @param isMale Whether the Gym Leader is Male or Not (for localization of the title). - * @param {Type} specialtyType The specialty type for the Gym Leader. + * @param {PokemonType} specialtyType The specialty type for the Gym Leader. * @param ignoreMinTeraWave Whether the Gym Leader always uses Tera (true), or only Teras after {@linkcode GYM_LEADER_TERA_WAVE} (false). Defaults to false. * @param teraSlot Optional, sets the party member in this slot to Terastallize. Wraps based on party size. * @returns {TrainerConfig} The updated TrainerConfig instance. * **/ - initForGymLeader(signatureSpecies: (Species | Species[])[], isMale: boolean, specialtyType: Type, ignoreMinTeraWave: boolean = false, teraSlot?: number): TrainerConfig { + initForGymLeader(signatureSpecies: (Species | Species[])[], isMale: boolean, specialtyType: PokemonType, ignoreMinTeraWave: boolean = false, teraSlot?: number): TrainerConfig { // Check if the internationalization (i18n) system is initialized. if (!getIsInitialized()) { initI18n(); @@ -945,11 +945,11 @@ export class TrainerConfig { * Initializes the trainer configuration for an Elite Four member. * @param {Species | Species[]} signatureSpecies The signature species for the Elite Four member. * @param isMale Whether the Elite Four Member is Male or Female (for localization of the title). - * @param specialtyType {Type} The specialty type for the Elite Four member. + * @param specialtyType {PokemonType} The specialty type for the Elite Four member. * @param teraSlot Optional, sets the party member in this slot to Terastallize. * @returns {TrainerConfig} The updated TrainerConfig instance. **/ - initForEliteFour(signatureSpecies: (Species | Species[])[], isMale: boolean, specialtyType?: Type, teraSlot?: number): TrainerConfig { + initForEliteFour(signatureSpecies: (Species | Species[])[], isMale: boolean, specialtyType?: PokemonType, teraSlot?: number): TrainerConfig { // Check if the internationalization (i18n) system is initialized. if (!getIsInitialized()) { initI18n(); @@ -1149,7 +1149,7 @@ export class TrainerConfig { * @returns true if specialtyType is defined and not Type.UNKNOWN */ hasSpecialtyType(): boolean { - return !Utils.isNullOrUndefined(this.specialtyType) && this.specialtyType !== Type.UNKNOWN; + return !Utils.isNullOrUndefined(this.specialtyType) && this.specialtyType !== PokemonType.UNKNOWN; } /** @@ -1418,7 +1418,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.ARTIST]: new TrainerConfig(++t).setEncounterBgm(TrainerType.RICH).setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.THREE_AVG) .setSpeciesPools([ Species.SMEARGLE ]), [TrainerType.BACKERS]: new TrainerConfig(++t).setHasGenders("Backers").setDoubleOnly().setEncounterBgm(TrainerType.CYCLIST), - [TrainerType.BACKPACKER]: new TrainerConfig(++t).setHasGenders("Backpacker Female").setHasDouble("Backpackers").setSpeciesFilter(s => s.isOfType(Type.FLYING) || s.isOfType(Type.ROCK)).setEncounterBgm(TrainerType.BACKPACKER) + [TrainerType.BACKPACKER]: new TrainerConfig(++t).setHasGenders("Backpacker Female").setHasDouble("Backpackers").setSpeciesFilter(s => s.isOfType(PokemonType.FLYING) || s.isOfType(PokemonType.ROCK)).setEncounterBgm(TrainerType.BACKPACKER) .setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.ONE_WEAK_ONE_STRONG, trainerPartyTemplates.ONE_AVG_ONE_STRONG) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.RHYHORN, Species.AIPOM, Species.MAKUHITA, Species.MAWILE, Species.NUMEL, Species.LILLIPUP, Species.SANDILE, Species.WOOLOO ], @@ -1426,10 +1426,10 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.RARE]: [ Species.TAUROS, Species.STANTLER, Species.DARUMAKA, Species.BOUFFALANT, Species.DEERLING, Species.IMPIDIMP ], [TrainerPoolTier.SUPER_RARE]: [ Species.GALAR_DARUMAKA, Species.TEDDIURSA ] }), - [TrainerType.BAKER]: new TrainerConfig(++t).setEncounterBgm(TrainerType.CLERK).setMoneyMultiplier(1.35).setSpeciesFilter(s => s.isOfType(Type.GRASS) || s.isOfType(Type.FIRE)), + [TrainerType.BAKER]: new TrainerConfig(++t).setEncounterBgm(TrainerType.CLERK).setMoneyMultiplier(1.35).setSpeciesFilter(s => s.isOfType(PokemonType.GRASS) || s.isOfType(PokemonType.FIRE)), [TrainerType.BEAUTY]: new TrainerConfig(++t).setMoneyMultiplier(1.55).setEncounterBgm(TrainerType.PARASOL_LADY), - [TrainerType.BIKER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(Type.POISON)), - [TrainerType.BLACK_BELT]: new TrainerConfig(++t).setHasGenders("Battle Girl", TrainerType.PSYCHIC).setHasDouble("Crush Kin").setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyType(Type.FIGHTING) + [TrainerType.BIKER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(PokemonType.POISON)), + [TrainerType.BLACK_BELT]: new TrainerConfig(++t).setHasGenders("Battle Girl", TrainerType.PSYCHIC).setHasDouble("Crush Kin").setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyType(PokemonType.FIGHTING) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK_ONE_AVG, trainerPartyTemplates.TWO_WEAK_ONE_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_ONE_STRONG, trainerPartyTemplates.THREE_AVG, trainerPartyTemplates.TWO_AVG_ONE_STRONG) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.NIDORAN_F, Species.NIDORAN_M, Species.MACHOP, Species.MAKUHITA, Species.MEDITITE, Species.CROAGUNK, Species.TIMBURR ], @@ -1468,8 +1468,8 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.DOCTOR]: new TrainerConfig(++t).setHasGenders("Nurse", "lass").setHasDouble("Medical Team").setMoneyMultiplier(3).setEncounterBgm(TrainerType.CLERK) .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.HEAL_PULSE)), [TrainerType.FIREBREATHER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK) - .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.SMOG) || s.isOfType(Type.FIRE)), - [TrainerType.FISHERMAN]: new TrainerConfig(++t).setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.BACKPACKER).setSpecialtyType(Type.WATER) + .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.SMOG) || s.isOfType(PokemonType.FIRE)), + [TrainerType.FISHERMAN]: new TrainerConfig(++t).setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.BACKPACKER).setSpecialtyType(PokemonType.WATER) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.THREE_WEAK_SAME, trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.SIX_WEAKER) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.TENTACOOL, Species.MAGIKARP, Species.GOLDEEN, Species.STARYU, Species.REMORAID, Species.SKRELP, Species.CLAUNCHER, Species.ARROKUDA ], @@ -1477,7 +1477,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.RARE]: [ Species.CHINCHOU, Species.CORSOLA, Species.WAILMER, Species.BARBOACH, Species.CLAMPERL, Species.LUVDISC, Species.MANTYKE, Species.ALOMOMOLA, Species.TATSUGIRI, Species.VELUZA ], [TrainerPoolTier.SUPER_RARE]: [ Species.LAPRAS, Species.FEEBAS, Species.RELICANTH, Species.DONDOZO ] }), - [TrainerType.GUITARIST]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyType(Type.ELECTRIC).setSpeciesFilter(s => s.isOfType(Type.ELECTRIC)), + [TrainerType.GUITARIST]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyType(PokemonType.ELECTRIC).setSpeciesFilter(s => s.isOfType(PokemonType.ELECTRIC)), [TrainerType.HARLEQUIN]: new TrainerConfig(++t).setEncounterBgm(TrainerType.PSYCHIC).setSpeciesFilter(s => tmSpecies[Moves.TRICK_ROOM].indexOf(s.speciesId) > -1), [TrainerType.HIKER]: new TrainerConfig(++t).setEncounterBgm(TrainerType.BACKPACKER) .setPartyTemplates(trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, trainerPartyTemplates.TWO_AVG_SAME_ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.FOUR_WEAK, trainerPartyTemplates.ONE_STRONG) @@ -1487,7 +1487,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.RARE]: [ Species.TORKOAL, Species.TRAPINCH, Species.BARBOACH, Species.GOLETT, Species.ALOLA_DIGLETT, Species.ALOLA_GEODUDE, Species.GALAR_STUNFISK, Species.PALDEA_WOOPER ], [TrainerPoolTier.SUPER_RARE]: [ Species.MAGBY, Species.LARVITAR ] }), - [TrainerType.HOOLIGANS]: new TrainerConfig(++t).setDoubleOnly().setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(Type.POISON) || s.isOfType(Type.DARK)), + [TrainerType.HOOLIGANS]: new TrainerConfig(++t).setDoubleOnly().setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(PokemonType.POISON) || s.isOfType(PokemonType.DARK)), [TrainerType.HOOPSTER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), [TrainerType.INFIELDER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), [TrainerType.JANITOR]: new TrainerConfig(++t).setMoneyMultiplier(1.1).setEncounterBgm(TrainerType.CLERK), @@ -1496,7 +1496,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.MUSICIAN]: new TrainerConfig(++t).setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.SING)), [TrainerType.HEX_MANIAC]: new TrainerConfig(++t).setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.PSYCHIC) .setPartyTemplates(trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.ONE_AVG_ONE_STRONG, trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, trainerPartyTemplates.THREE_AVG, trainerPartyTemplates.TWO_STRONG) - .setSpeciesFilter(s => s.isOfType(Type.GHOST)), + .setSpeciesFilter(s => s.isOfType(PokemonType.GHOST)), [TrainerType.NURSERY_AIDE]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm("lass"), [TrainerType.OFFICER]: new TrainerConfig(++t).setMoneyMultiplier(1.55).setEncounterBgm(TrainerType.CLERK) .setPartyTemplates(trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG) @@ -1507,7 +1507,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.SUPER_RARE]: [], [TrainerPoolTier.ULTRA_RARE]: [ Species.ENTEI, Species.SUICUNE, Species.RAIKOU ] }), - [TrainerType.PARASOL_LADY]: new TrainerConfig(++t).setMoneyMultiplier(1.55).setEncounterBgm(TrainerType.PARASOL_LADY).setSpeciesFilter(s => s.isOfType(Type.WATER)), + [TrainerType.PARASOL_LADY]: new TrainerConfig(++t).setMoneyMultiplier(1.55).setEncounterBgm(TrainerType.PARASOL_LADY).setSpeciesFilter(s => s.isOfType(PokemonType.WATER)), [TrainerType.PILOT]: new TrainerConfig(++t).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => tmSpecies[Moves.FLY].indexOf(s.speciesId) > -1), [TrainerType.POKEFAN]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setName("PokéFan").setHasGenders("PokéFan Female").setHasDouble("PokéFan Family").setEncounterBgm(TrainerType.POKEFAN) .setPartyTemplates(trainerPartyTemplates.SIX_WEAKER, trainerPartyTemplates.FOUR_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.FOUR_WEAK_SAME, trainerPartyTemplates.FIVE_WEAK, trainerPartyTemplates.SIX_WEAKER_SAME), @@ -1536,8 +1536,8 @@ export const trainerConfigs: TrainerConfigs = { }), [TrainerType.RICH]: new TrainerConfig(++t).setMoneyMultiplier(5).setName("Gentleman").setHasGenders("Madame").setHasDouble("Rich Couple"), [TrainerType.RICH_KID]: new TrainerConfig(++t).setMoneyMultiplier(3.75).setName("Rich Boy").setHasGenders("Lady").setHasDouble("Rich Kids").setEncounterBgm(TrainerType.RICH), - [TrainerType.ROUGHNECK]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(Type.DARK)), - [TrainerType.SAILOR]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.BACKPACKER).setSpeciesFilter(s => s.isOfType(Type.WATER) || s.isOfType(Type.FIGHTING)), + [TrainerType.ROUGHNECK]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(PokemonType.DARK)), + [TrainerType.SAILOR]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.BACKPACKER).setSpeciesFilter(s => s.isOfType(PokemonType.WATER) || s.isOfType(PokemonType.FIGHTING)), [TrainerType.SCIENTIST]: new TrainerConfig(++t).setHasGenders("Scientist Female").setHasDouble("Scientists").setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.SCIENTIST) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.MAGNEMITE, Species.GRIMER, Species.DROWZEE, Species.VOLTORB, Species.KOFFING ], @@ -1547,7 +1547,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.ULTRA_RARE]: [ Species.ROTOM, Species.MELTAN ] }), [TrainerType.SMASHER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), - [TrainerType.SNOW_WORKER]: new TrainerConfig(++t).setName("Worker").setHasDouble("Workers").setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => s.isOfType(Type.ICE) || s.isOfType(Type.STEEL)), + [TrainerType.SNOW_WORKER]: new TrainerConfig(++t).setName("Worker").setHasDouble("Workers").setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => s.isOfType(PokemonType.ICE) || s.isOfType(PokemonType.STEEL)), [TrainerType.STRIKER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), [TrainerType.SCHOOL_KID]: new TrainerConfig(++t).setMoneyMultiplier(0.75).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders("School Kid Female", "lass").setHasDouble("School Kids") .setSpeciesPools({ @@ -1556,20 +1556,20 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.RARE]: [ Species.TANGELA, Species.EEVEE, Species.YANMA ], [TrainerPoolTier.SUPER_RARE]: [ Species.TADBULB ] }), - [TrainerType.SWIMMER]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm(TrainerType.PARASOL_LADY).setHasGenders("Swimmer Female").setHasDouble("Swimmers").setSpecialtyType(Type.WATER).setSpeciesFilter(s => s.isOfType(Type.WATER)), + [TrainerType.SWIMMER]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm(TrainerType.PARASOL_LADY).setHasGenders("Swimmer Female").setHasDouble("Swimmers").setSpecialtyType(PokemonType.WATER).setSpeciesFilter(s => s.isOfType(PokemonType.WATER)), [TrainerType.TWINS]: new TrainerConfig(++t).setDoubleOnly().setMoneyMultiplier(0.65).setUseSameSeedForAllMembers() .setPartyTemplateFunc(() => getWavePartyTemplate(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_STRONG)) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.PLUSLE, Species.VOLBEAT, Species.PACHIRISU, Species.SILCOON, Species.METAPOD, Species.IGGLYBUFF, Species.PETILIL, Species.EEVEE ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.MINUN, Species.ILLUMISE, Species.EMOLGA, Species.CASCOON, Species.KAKUNA, Species.CLEFFA, Species.COTTONEE, Species.EEVEE ], TrainerSlot.TRAINER_PARTNER)) .setEncounterBgm(TrainerType.TWINS), - [TrainerType.VETERAN]: new TrainerConfig(++t).setHasGenders("Veteran Female").setHasDouble("Veteran Duo").setMoneyMultiplier(2.5).setEncounterBgm(TrainerType.ACE_TRAINER).setSpeciesFilter(s => s.isOfType(Type.DRAGON)), + [TrainerType.VETERAN]: new TrainerConfig(++t).setHasGenders("Veteran Female").setHasDouble("Veteran Duo").setMoneyMultiplier(2.5).setEncounterBgm(TrainerType.ACE_TRAINER).setSpeciesFilter(s => s.isOfType(PokemonType.DRAGON)), [TrainerType.WAITER]: new TrainerConfig(++t).setHasGenders("Waitress").setHasDouble("Restaurant Staff").setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.CLERK) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.CLEFFA, Species.CHATOT, Species.PANSAGE, Species.PANSEAR, Species.PANPOUR, Species.MINCCINO ], [TrainerPoolTier.UNCOMMON]: [ Species.TROPIUS, Species.PETILIL, Species.BOUNSWEET, Species.INDEEDEE ], [TrainerPoolTier.RARE]: [ Species.APPLIN, Species.SINISTEA, Species.POLTCHAGEIST ] }), - [TrainerType.WORKER]: new TrainerConfig(++t).setHasGenders("Worker Female").setHasDouble("Workers").setEncounterBgm(TrainerType.CLERK).setMoneyMultiplier(1.7).setSpeciesFilter(s => s.isOfType(Type.ROCK) || s.isOfType(Type.STEEL)), + [TrainerType.WORKER]: new TrainerConfig(++t).setHasGenders("Worker Female").setHasDouble("Workers").setEncounterBgm(TrainerType.CLERK).setMoneyMultiplier(1.7).setSpeciesFilter(s => s.isOfType(PokemonType.ROCK) || s.isOfType(PokemonType.STEEL)), [TrainerType.YOUNGSTER]: new TrainerConfig(++t).setMoneyMultiplier(0.5).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders("Lass", "lass").setHasDouble("Beginners").setPartyTemplates(trainerPartyTemplates.TWO_WEAKER) .setSpeciesPools( [ Species.CATERPIE, Species.WEEDLE, Species.RATTATA, Species.SENTRET, Species.POOCHYENA, Species.ZIGZAGOON, Species.WURMPLE, Species.BIDOOF, Species.PATRAT, Species.LILLIPUP ] @@ -1662,148 +1662,148 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.RARE]: [ Species.MANKEY, Species.PAWNIARD, Species.CHARCADET, Species.FLITTLE, Species.VAROOM, Species.ORTHWORM ], [TrainerPoolTier.SUPER_RARE]: [ Species.DONDOZO, Species.GIMMIGHOUL ] }), - [TrainerType.GIACOMO]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_1", [ Species.KINGAMBIT ], Type.DARK).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + [TrainerType.GIACOMO]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_1", [ Species.KINGAMBIT ], PokemonType.DARK).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Segin Starmobile p.moveset = [ new PokemonMove(Moves.WICKED_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; })), - [TrainerType.MELA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_2", [ Species.ARMAROUGE ], Type.FIRE).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + [TrainerType.MELA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_2", [ Species.ARMAROUGE ], PokemonType.FIRE).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 2; // Schedar Starmobile p.moveset = [ new PokemonMove(Moves.BLAZING_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; })), - [TrainerType.ATTICUS]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_3", [ Species.REVAVROOM ], Type.POISON).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + [TrainerType.ATTICUS]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_3", [ Species.REVAVROOM ], PokemonType.POISON).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 3; // Navi Starmobile p.moveset = [ new PokemonMove(Moves.NOXIOUS_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; })), - [TrainerType.ORTEGA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_4", [ Species.DACHSBUN ], Type.FAIRY).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + [TrainerType.ORTEGA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_4", [ Species.DACHSBUN ], PokemonType.FAIRY).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 4; // Ruchbah Starmobile p.moveset = [ new PokemonMove(Moves.MAGICAL_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; })), - [TrainerType.ERI]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_5", [ Species.ANNIHILAPE ], Type.FIGHTING).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + [TrainerType.ERI]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_5", [ Species.ANNIHILAPE ], PokemonType.FIGHTING).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 5; // Caph Starmobile p.moveset = [ new PokemonMove(Moves.COMBAT_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; })), - [TrainerType.BROCK]: new TrainerConfig((t = TrainerType.BROCK)).initForGymLeader(signatureSpecies["BROCK"], true, Type.ROCK).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.MISTY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MISTY"], false, Type.WATER).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.LT_SURGE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["LT_SURGE"], true, Type.ELECTRIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.ERIKA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ERIKA"], false, Type.GRASS).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.JANINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JANINE"], false, Type.POISON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.SABRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["SABRINA"], false, Type.PSYCHIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.BLAINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BLAINE"], true, Type.FIRE).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GIOVANNI"], true, Type.DARK).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.FALKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FALKNER"], true, Type.FLYING).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.BUGSY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BUGSY"], true, Type.BUG).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.WHITNEY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WHITNEY"], false, Type.NORMAL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.MORTY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MORTY"], true, Type.GHOST).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.CHUCK]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHUCK"], true, Type.FIGHTING).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.JASMINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JASMINE"], false, Type.STEEL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.PRYCE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["PRYCE"], true, Type.ICE).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.CLAIR]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLAIR"], false, Type.DRAGON).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.ROXANNE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ROXANNE"], false, Type.ROCK).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.BRAWLY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRAWLY"], true, Type.FIGHTING).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.WATTSON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WATTSON"], true, Type.ELECTRIC).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.FLANNERY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FLANNERY"], false, Type.FIRE).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.NORMAN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["NORMAN"], true, Type.NORMAL).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.WINONA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WINONA"], false, Type.FLYING).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.TATE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TATE"], true, Type.PSYCHIC).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym").setHasDouble("tate_liza_double").setDoubleTrainerType(TrainerType.LIZA).setDoubleTitle("gym_leader_double"), - [TrainerType.LIZA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["LIZA"], false, Type.PSYCHIC).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym").setHasDouble("liza_tate_double").setDoubleTrainerType(TrainerType.TATE).setDoubleTitle("gym_leader_double"), - [TrainerType.JUAN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JUAN"], true, Type.WATER).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.ROARK]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ROARK"], true, Type.ROCK).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.GARDENIA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GARDENIA"], false, Type.GRASS).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.MAYLENE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MAYLENE"], false, Type.FIGHTING).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.CRASHER_WAKE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CRASHER_WAKE"], true, Type.WATER).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.FANTINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FANTINA"], false, Type.GHOST).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.BYRON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BYRON"], true, Type.STEEL).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.CANDICE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CANDICE"], false, Type.ICE).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.VOLKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VOLKNER"], true, Type.ELECTRIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.CILAN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CILAN"], true, Type.GRASS).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.CHILI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHILI"], true, Type.FIRE).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.CRESS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CRESS"], true, Type.WATER).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.CHEREN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHEREN"], true, Type.NORMAL).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.LENORA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["LENORA"], false, Type.NORMAL).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.ROXIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ROXIE"], false, Type.POISON).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.BURGH]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BURGH"], true, Type.BUG).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.ELESA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ELESA"], false, Type.ELECTRIC).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.CLAY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLAY"], true, Type.GROUND).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.SKYLA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["SKYLA"], false, Type.FLYING).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.BRYCEN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRYCEN"], true, Type.ICE).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.DRAYDEN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["DRAYDEN"], true, Type.DRAGON).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.MARLON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MARLON"], true, Type.WATER).setMixedBattleBgm("battle_unova_gym"), - [TrainerType.VIOLA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VIOLA"], false, Type.BUG).setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.GRANT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRANT"], true, Type.ROCK).setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.KORRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KORRINA"], false, Type.FIGHTING).setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.RAMOS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RAMOS"], true, Type.GRASS).setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.CLEMONT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLEMONT"], true, Type.ELECTRIC).setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.VALERIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VALERIE"], false, Type.FAIRY).setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.OLYMPIA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OLYMPIA"], false, Type.PSYCHIC).setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.WULFRIC]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WULFRIC"], true, Type.ICE).setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.MILO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MILO"], true, Type.GRASS).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.NESSA]: new TrainerConfig(++t).setName("Nessa").initForGymLeader(signatureSpecies["NESSA"], false, Type.WATER).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.KABU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KABU"], true, Type.FIRE).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.BEA]: new TrainerConfig(++t).setName("Bea").initForGymLeader(signatureSpecies["BEA"], false, Type.FIGHTING).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.ALLISTER]: new TrainerConfig(++t).setName("Allister").initForGymLeader(signatureSpecies["ALLISTER"], true, Type.GHOST).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.OPAL]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OPAL"], false, Type.FAIRY).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.BEDE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BEDE"], true, Type.FAIRY).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.GORDIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GORDIE"], true, Type.ROCK).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.MELONY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MELONY"], false, Type.ICE).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.PIERS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["PIERS"], true, Type.DARK).setHasDouble("piers_marnie_double").setDoubleTrainerType(TrainerType.MARNIE).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"), - [TrainerType.MARNIE]: new TrainerConfig(++t).setName("Marnie").initForGymLeader(signatureSpecies["MARNIE"], false, Type.DARK).setHasDouble("marnie_piers_double").setDoubleTrainerType(TrainerType.PIERS).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"), - [TrainerType.RAIHAN]: new TrainerConfig(++t).setName("Raihan").initForGymLeader(signatureSpecies["RAIHAN"], true, Type.DRAGON).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"], false, Type.BUG, true, -1).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"], true, Type.GRASS, true, -1).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"], false, Type.ELECTRIC, true, -1).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"], true, Type.WATER, true, -1).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"], true, Type.NORMAL, true, -1).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"], false, Type.GHOST, true, -1).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"], false, Type.PSYCHIC, true, -1).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRUSHA"], true, Type.ICE, true, -1).setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.BROCK]: new TrainerConfig((t = TrainerType.BROCK)).initForGymLeader(signatureSpecies["BROCK"], true, PokemonType.ROCK).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.MISTY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MISTY"], false, PokemonType.WATER).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.LT_SURGE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["LT_SURGE"], true, PokemonType.ELECTRIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.ERIKA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ERIKA"], false, PokemonType.GRASS).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.JANINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JANINE"], false, PokemonType.POISON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.SABRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["SABRINA"], false, PokemonType.PSYCHIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.BLAINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BLAINE"], true, PokemonType.FIRE).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GIOVANNI"], true, PokemonType.DARK).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.FALKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FALKNER"], true, PokemonType.FLYING).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.BUGSY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BUGSY"], true, PokemonType.BUG).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.WHITNEY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WHITNEY"], false, PokemonType.NORMAL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.MORTY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MORTY"], true, PokemonType.GHOST).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.CHUCK]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHUCK"], true, PokemonType.FIGHTING).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.JASMINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JASMINE"], false, PokemonType.STEEL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.PRYCE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["PRYCE"], true, PokemonType.ICE).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.CLAIR]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLAIR"], false, PokemonType.DRAGON).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.ROXANNE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ROXANNE"], false, PokemonType.ROCK).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.BRAWLY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRAWLY"], true, PokemonType.FIGHTING).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.WATTSON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WATTSON"], true, PokemonType.ELECTRIC).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.FLANNERY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FLANNERY"], false, PokemonType.FIRE).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.NORMAN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["NORMAN"], true, PokemonType.NORMAL).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.WINONA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WINONA"], false, PokemonType.FLYING).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.TATE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TATE"], true, PokemonType.PSYCHIC).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym").setHasDouble("tate_liza_double").setDoubleTrainerType(TrainerType.LIZA).setDoubleTitle("gym_leader_double"), + [TrainerType.LIZA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["LIZA"], false, PokemonType.PSYCHIC).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym").setHasDouble("liza_tate_double").setDoubleTrainerType(TrainerType.TATE).setDoubleTitle("gym_leader_double"), + [TrainerType.JUAN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JUAN"], true, PokemonType.WATER).setBattleBgm("battle_hoenn_gym").setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.ROARK]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ROARK"], true, PokemonType.ROCK).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.GARDENIA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GARDENIA"], false, PokemonType.GRASS).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.MAYLENE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MAYLENE"], false, PokemonType.FIGHTING).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.CRASHER_WAKE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CRASHER_WAKE"], true, PokemonType.WATER).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.FANTINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FANTINA"], false, PokemonType.GHOST).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.BYRON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BYRON"], true, PokemonType.STEEL).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.CANDICE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CANDICE"], false, PokemonType.ICE).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.VOLKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VOLKNER"], true, PokemonType.ELECTRIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.CILAN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CILAN"], true, PokemonType.GRASS).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.CHILI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHILI"], true, PokemonType.FIRE).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.CRESS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CRESS"], true, PokemonType.WATER).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.CHEREN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHEREN"], true, PokemonType.NORMAL).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.LENORA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["LENORA"], false, PokemonType.NORMAL).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.ROXIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ROXIE"], false, PokemonType.POISON).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.BURGH]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BURGH"], true, PokemonType.BUG).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.ELESA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ELESA"], false, PokemonType.ELECTRIC).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.CLAY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLAY"], true, PokemonType.GROUND).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.SKYLA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["SKYLA"], false, PokemonType.FLYING).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.BRYCEN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRYCEN"], true, PokemonType.ICE).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.DRAYDEN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["DRAYDEN"], true, PokemonType.DRAGON).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.MARLON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MARLON"], true, PokemonType.WATER).setMixedBattleBgm("battle_unova_gym"), + [TrainerType.VIOLA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VIOLA"], false, PokemonType.BUG).setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.GRANT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRANT"], true, PokemonType.ROCK).setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.KORRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KORRINA"], false, PokemonType.FIGHTING).setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.RAMOS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RAMOS"], true, PokemonType.GRASS).setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.CLEMONT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLEMONT"], true, PokemonType.ELECTRIC).setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.VALERIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VALERIE"], false, PokemonType.FAIRY).setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.OLYMPIA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OLYMPIA"], false, PokemonType.PSYCHIC).setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.WULFRIC]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WULFRIC"], true, PokemonType.ICE).setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.MILO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MILO"], true, PokemonType.GRASS).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.NESSA]: new TrainerConfig(++t).setName("Nessa").initForGymLeader(signatureSpecies["NESSA"], false, PokemonType.WATER).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.KABU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KABU"], true, PokemonType.FIRE).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.BEA]: new TrainerConfig(++t).setName("Bea").initForGymLeader(signatureSpecies["BEA"], false, PokemonType.FIGHTING).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.ALLISTER]: new TrainerConfig(++t).setName("Allister").initForGymLeader(signatureSpecies["ALLISTER"], true, PokemonType.GHOST).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.OPAL]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OPAL"], false, PokemonType.FAIRY).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.BEDE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BEDE"], true, PokemonType.FAIRY).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.GORDIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GORDIE"], true, PokemonType.ROCK).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.MELONY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MELONY"], false, PokemonType.ICE).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.PIERS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["PIERS"], true, PokemonType.DARK).setHasDouble("piers_marnie_double").setDoubleTrainerType(TrainerType.MARNIE).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"), + [TrainerType.MARNIE]: new TrainerConfig(++t).setName("Marnie").initForGymLeader(signatureSpecies["MARNIE"], false, PokemonType.DARK).setHasDouble("marnie_piers_double").setDoubleTrainerType(TrainerType.PIERS).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"), + [TrainerType.RAIHAN]: new TrainerConfig(++t).setName("Raihan").initForGymLeader(signatureSpecies["RAIHAN"], true, PokemonType.DRAGON).setMixedBattleBgm("battle_galar_gym"), + [TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"], false, PokemonType.BUG, true, -1).setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"], true, PokemonType.GRASS, true, -1).setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"], false, PokemonType.ELECTRIC, true, -1).setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"], true, PokemonType.WATER, true, -1).setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"], true, PokemonType.NORMAL, true, -1).setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"], false, PokemonType.GHOST, true, -1).setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"], false, PokemonType.PSYCHIC, true, -1).setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRUSHA"], true, PokemonType.ICE, true, -1).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour(signatureSpecies["LORELEI"], false, Type.ICE).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BRUNO"], true, Type.FIGHTING).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AGATHA"], false, Type.GHOST).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour(signatureSpecies["LANCE"], true, Type.DRAGON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WILL"], true, Type.PSYCHIC).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA"], true, Type.POISON).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAREN"], false, Type.DARK).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIDNEY"], true, Type.DARK).setMixedBattleBgm("battle_hoenn_elite"), - [TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["PHOEBE"], false, Type.GHOST).setMixedBattleBgm("battle_hoenn_elite"), - [TrainerType.GLACIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GLACIA"], false, Type.ICE).setMixedBattleBgm("battle_hoenn_elite"), - [TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAKE"], true, Type.DRAGON).setMixedBattleBgm("battle_hoenn_elite"), - [TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AARON"], true, Type.BUG).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BERTHA"], false, Type.GROUND).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"], true, Type.FIRE, 3).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LUCIAN"], true, Type.PSYCHIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.SHAUNTAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SHAUNTAL"], false, Type.GHOST).setMixedBattleBgm("battle_unova_elite"), - [TrainerType.MARSHAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MARSHAL"], true, Type.FIGHTING).setMixedBattleBgm("battle_unova_elite"), - [TrainerType.GRIMSLEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GRIMSLEY"], true, Type.DARK).setMixedBattleBgm("battle_unova_elite"), - [TrainerType.CAITLIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CAITLIN"], false, Type.PSYCHIC).setMixedBattleBgm("battle_unova_elite"), - [TrainerType.MALVA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MALVA"], false, Type.FIRE).setMixedBattleBgm("battle_kalos_elite"), - [TrainerType.SIEBOLD]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIEBOLD"], true, Type.WATER).setMixedBattleBgm("battle_kalos_elite"), - [TrainerType.WIKSTROM]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WIKSTROM"], true, Type.STEEL).setMixedBattleBgm("battle_kalos_elite"), - [TrainerType.DRASNA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRASNA"], false, Type.DRAGON).setMixedBattleBgm("battle_kalos_elite"), - [TrainerType.HALA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HALA"], true, Type.FIGHTING).setMixedBattleBgm("battle_alola_elite"), - [TrainerType.MOLAYNE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MOLAYNE"], true, Type.STEEL).setMixedBattleBgm("battle_alola_elite"), - [TrainerType.OLIVIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["OLIVIA"], false, Type.ROCK).setMixedBattleBgm("battle_alola_elite"), - [TrainerType.ACEROLA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["ACEROLA"], false, Type.GHOST).setMixedBattleBgm("battle_alola_elite"), - [TrainerType.KAHILI]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAHILI"], false, Type.FLYING).setMixedBattleBgm("battle_alola_elite"), - [TrainerType.MARNIE_ELITE]: new TrainerConfig(++t).setName("Marnie").initForEliteFour(signatureSpecies["MARNIE_ELITE"], false, Type.DARK).setMixedBattleBgm("battle_galar_elite"), - [TrainerType.NESSA_ELITE]: new TrainerConfig(++t).setName("Nessa").initForEliteFour(signatureSpecies["NESSA_ELITE"], false, Type.WATER).setMixedBattleBgm("battle_galar_elite"), - [TrainerType.BEA_ELITE]: new TrainerConfig(++t).setName("Bea").initForEliteFour(signatureSpecies["BEA_ELITE"], false, Type.FIGHTING).setMixedBattleBgm("battle_galar_elite"), - [TrainerType.ALLISTER_ELITE]: new TrainerConfig(++t).setName("Allister").initForEliteFour(signatureSpecies["ALLISTER_ELITE"], true, Type.GHOST).setMixedBattleBgm("battle_galar_elite"), - [TrainerType.RAIHAN_ELITE]: new TrainerConfig(++t).setName("Raihan").initForEliteFour(signatureSpecies["RAIHAN_ELITE"], true, Type.DRAGON).setMixedBattleBgm("battle_galar_elite"), - [TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["RIKA"], false, Type.GROUND, 5).setMixedBattleBgm("battle_paldea_elite"), - [TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["POPPY"], false, Type.STEEL, 5).setMixedBattleBgm("battle_paldea_elite"), - [TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName("Larry").initForEliteFour(signatureSpecies["LARRY_ELITE"], true, Type.FLYING, 5).setMixedBattleBgm("battle_paldea_elite"), - [TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HASSEL"], true, Type.DRAGON, 5).setMixedBattleBgm("battle_paldea_elite"), - [TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CRISPIN"], true, Type.FIRE, 5).setMixedBattleBgm("battle_bb_elite"), - [TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AMARYS"], false, Type.STEEL, 5).setMixedBattleBgm("battle_bb_elite"), - [TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"], false, Type.FAIRY, 5).setMixedBattleBgm("battle_bb_elite"), - [TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"], true, Type.DRAGON, 5).setMixedBattleBgm("battle_bb_elite"), + [TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour(signatureSpecies["LORELEI"], false, PokemonType.ICE).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BRUNO"], true, PokemonType.FIGHTING).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AGATHA"], false, PokemonType.GHOST).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour(signatureSpecies["LANCE"], true, PokemonType.DRAGON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WILL"], true, PokemonType.PSYCHIC).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA"], true, PokemonType.POISON).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAREN"], false, PokemonType.DARK).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIDNEY"], true, PokemonType.DARK).setMixedBattleBgm("battle_hoenn_elite"), + [TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["PHOEBE"], false, PokemonType.GHOST).setMixedBattleBgm("battle_hoenn_elite"), + [TrainerType.GLACIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GLACIA"], false, PokemonType.ICE).setMixedBattleBgm("battle_hoenn_elite"), + [TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAKE"], true, PokemonType.DRAGON).setMixedBattleBgm("battle_hoenn_elite"), + [TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AARON"], true, PokemonType.BUG).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BERTHA"], false, PokemonType.GROUND).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"], true, PokemonType.FIRE, 3).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LUCIAN"], true, PokemonType.PSYCHIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.SHAUNTAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SHAUNTAL"], false, PokemonType.GHOST).setMixedBattleBgm("battle_unova_elite"), + [TrainerType.MARSHAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MARSHAL"], true, PokemonType.FIGHTING).setMixedBattleBgm("battle_unova_elite"), + [TrainerType.GRIMSLEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GRIMSLEY"], true, PokemonType.DARK).setMixedBattleBgm("battle_unova_elite"), + [TrainerType.CAITLIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CAITLIN"], false, PokemonType.PSYCHIC).setMixedBattleBgm("battle_unova_elite"), + [TrainerType.MALVA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MALVA"], false, PokemonType.FIRE).setMixedBattleBgm("battle_kalos_elite"), + [TrainerType.SIEBOLD]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIEBOLD"], true, PokemonType.WATER).setMixedBattleBgm("battle_kalos_elite"), + [TrainerType.WIKSTROM]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WIKSTROM"], true, PokemonType.STEEL).setMixedBattleBgm("battle_kalos_elite"), + [TrainerType.DRASNA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRASNA"], false, PokemonType.DRAGON).setMixedBattleBgm("battle_kalos_elite"), + [TrainerType.HALA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HALA"], true, PokemonType.FIGHTING).setMixedBattleBgm("battle_alola_elite"), + [TrainerType.MOLAYNE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MOLAYNE"], true, PokemonType.STEEL).setMixedBattleBgm("battle_alola_elite"), + [TrainerType.OLIVIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["OLIVIA"], false, PokemonType.ROCK).setMixedBattleBgm("battle_alola_elite"), + [TrainerType.ACEROLA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["ACEROLA"], false, PokemonType.GHOST).setMixedBattleBgm("battle_alola_elite"), + [TrainerType.KAHILI]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAHILI"], false, PokemonType.FLYING).setMixedBattleBgm("battle_alola_elite"), + [TrainerType.MARNIE_ELITE]: new TrainerConfig(++t).setName("Marnie").initForEliteFour(signatureSpecies["MARNIE_ELITE"], false, PokemonType.DARK).setMixedBattleBgm("battle_galar_elite"), + [TrainerType.NESSA_ELITE]: new TrainerConfig(++t).setName("Nessa").initForEliteFour(signatureSpecies["NESSA_ELITE"], false, PokemonType.WATER).setMixedBattleBgm("battle_galar_elite"), + [TrainerType.BEA_ELITE]: new TrainerConfig(++t).setName("Bea").initForEliteFour(signatureSpecies["BEA_ELITE"], false, PokemonType.FIGHTING).setMixedBattleBgm("battle_galar_elite"), + [TrainerType.ALLISTER_ELITE]: new TrainerConfig(++t).setName("Allister").initForEliteFour(signatureSpecies["ALLISTER_ELITE"], true, PokemonType.GHOST).setMixedBattleBgm("battle_galar_elite"), + [TrainerType.RAIHAN_ELITE]: new TrainerConfig(++t).setName("Raihan").initForEliteFour(signatureSpecies["RAIHAN_ELITE"], true, PokemonType.DRAGON).setMixedBattleBgm("battle_galar_elite"), + [TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["RIKA"], false, PokemonType.GROUND, 5).setMixedBattleBgm("battle_paldea_elite"), + [TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["POPPY"], false, PokemonType.STEEL, 5).setMixedBattleBgm("battle_paldea_elite"), + [TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName("Larry").initForEliteFour(signatureSpecies["LARRY_ELITE"], true, PokemonType.FLYING, 5).setMixedBattleBgm("battle_paldea_elite"), + [TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HASSEL"], true, PokemonType.DRAGON, 5).setMixedBattleBgm("battle_paldea_elite"), + [TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CRISPIN"], true, PokemonType.FIRE, 5).setMixedBattleBgm("battle_bb_elite"), + [TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AMARYS"], false, PokemonType.STEEL, 5).setMixedBattleBgm("battle_bb_elite"), + [TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"], false, PokemonType.FAIRY, 5).setMixedBattleBgm("battle_bb_elite"), + [TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"], true, PokemonType.DRAGON, 5).setMixedBattleBgm("battle_bb_elite"), [TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion(true).setBattleBgm("battle_kanto_champion").setMixedBattleBgm("battle_kanto_champion").setHasDouble("blue_red_double").setDoubleTrainerType(TrainerType.RED).setDoubleTitle("champion_double") .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ALAKAZAM ])) @@ -1858,7 +1858,7 @@ export const trainerConfigs: TrainerConfigs = { })) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.CHARIZARD ])) .setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.TYRANITAR, Species.GARCHOMP, Species.KOMMO_O ], TrainerSlot.TRAINER, true, p => { - p.teraType = Type.DRAGON; + p.teraType = PokemonType.DRAGON; p.abilityIndex = p.species.speciesId === Species.KOMMO_O ? 1 : 2; // Soundproof Kommo-o, Unnerve Tyranitar, Rough Skin Garchomp })) .setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.DRAGONITE ], TrainerSlot.TRAINER, true, p => { @@ -1946,7 +1946,7 @@ export const trainerConfigs: TrainerConfigs = { p.pokeball = PokeballType.ULTRA_BALL; })) .setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.CHANDELURE, Species.KROOKODILE, Species.REUNICLUS, Species.CONKELDURR ], TrainerSlot.TRAINER, true, p => { - p.teraType = p.species.speciesId === Species.KROOKODILE ? Type.DARK : p.species.type1; + p.teraType = p.species.speciesId === Species.KROOKODILE ? PokemonType.DARK : p.species.type1; })) .setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.VOLCARONA ], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); @@ -1962,7 +1962,7 @@ export const trainerConfigs: TrainerConfigs = { p.pokeball = PokeballType.MASTER_BALL; })) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.SALAMENCE, Species.HYDREIGON, Species.ARCHALUDON ], TrainerSlot.TRAINER, true, p => { - p.teraType = Type.DRAGON; + p.teraType = PokemonType.DRAGON; })) .setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.LAPRAS ], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // G-Max Lapras @@ -2085,7 +2085,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GALAR_SLOWBRO, Species.GALAR_SLOWKING ], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; - p.teraType = Type.PSYCHIC; + p.teraType = PokemonType.PSYCHIC; })) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.GALAR_DARMANITAN ], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); @@ -2120,7 +2120,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.KINGAMBIT ], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.abilityIndex = 1; // Supreme Overlord - p.teraType = Type.FLYING; + p.teraType = PokemonType.FLYING; })) .setInstantTera(5), // Tera Flying Kingambit [TrainerType.NEMONA]: new TrainerConfig(++t).initForChampion(false).setMixedBattleBgm("battle_champion_nemona") diff --git a/src/data/type.ts b/src/data/type.ts index 498394bf90e..c57fd3b94a3 100644 --- a/src/data/type.ts +++ b/src/data/type.ts @@ -1,266 +1,266 @@ -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; export type TypeDamageMultiplier = 0 | 0.125 | 0.25 | 0.5 | 1 | 2 | 4 | 8; -export function getTypeDamageMultiplier(attackType: Type, defType: Type): TypeDamageMultiplier { - if (attackType === Type.UNKNOWN || defType === Type.UNKNOWN) { +export function getTypeDamageMultiplier(attackType: PokemonType, defType: PokemonType): TypeDamageMultiplier { + if (attackType === PokemonType.UNKNOWN || defType === PokemonType.UNKNOWN) { return 1; } switch (defType) { - case Type.NORMAL: + case PokemonType.NORMAL: switch (attackType) { - case Type.FIGHTING: + case PokemonType.FIGHTING: return 2; - case Type.GHOST: + case PokemonType.GHOST: return 0; default: return 1; } - case Type.FIGHTING: + case PokemonType.FIGHTING: switch (attackType) { - case Type.FLYING: - case Type.PSYCHIC: - case Type.FAIRY: + case PokemonType.FLYING: + case PokemonType.PSYCHIC: + case PokemonType.FAIRY: return 2; - case Type.ROCK: - case Type.BUG: - case Type.DARK: + case PokemonType.ROCK: + case PokemonType.BUG: + case PokemonType.DARK: return 0.5; default: return 1; } - case Type.FLYING: + case PokemonType.FLYING: switch (attackType) { - case Type.ROCK: - case Type.ELECTRIC: - case Type.ICE: + case PokemonType.ROCK: + case PokemonType.ELECTRIC: + case PokemonType.ICE: return 2; - case Type.FIGHTING: - case Type.BUG: - case Type.GRASS: + case PokemonType.FIGHTING: + case PokemonType.BUG: + case PokemonType.GRASS: return 0.5; - case Type.GROUND: + case PokemonType.GROUND: return 0; default: return 1; } - case Type.POISON: + case PokemonType.POISON: switch (attackType) { - case Type.GROUND: - case Type.PSYCHIC: + case PokemonType.GROUND: + case PokemonType.PSYCHIC: return 2; - case Type.FIGHTING: - case Type.POISON: - case Type.BUG: - case Type.GRASS: - case Type.FAIRY: + case PokemonType.FIGHTING: + case PokemonType.POISON: + case PokemonType.BUG: + case PokemonType.GRASS: + case PokemonType.FAIRY: return 0.5; default: return 1; } - case Type.GROUND: + case PokemonType.GROUND: switch (attackType) { - case Type.WATER: - case Type.GRASS: - case Type.ICE: + case PokemonType.WATER: + case PokemonType.GRASS: + case PokemonType.ICE: return 2; - case Type.POISON: - case Type.ROCK: + case PokemonType.POISON: + case PokemonType.ROCK: return 0.5; - case Type.ELECTRIC: + case PokemonType.ELECTRIC: return 0; default: return 1; } - case Type.ROCK: + case PokemonType.ROCK: switch (attackType) { - case Type.FIGHTING: - case Type.GROUND: - case Type.STEEL: - case Type.WATER: - case Type.GRASS: + case PokemonType.FIGHTING: + case PokemonType.GROUND: + case PokemonType.STEEL: + case PokemonType.WATER: + case PokemonType.GRASS: return 2; - case Type.NORMAL: - case Type.FLYING: - case Type.POISON: - case Type.FIRE: + case PokemonType.NORMAL: + case PokemonType.FLYING: + case PokemonType.POISON: + case PokemonType.FIRE: return 0.5; default: return 1; } - case Type.BUG: + case PokemonType.BUG: switch (attackType) { - case Type.FLYING: - case Type.ROCK: - case Type.FIRE: + case PokemonType.FLYING: + case PokemonType.ROCK: + case PokemonType.FIRE: return 2; - case Type.FIGHTING: - case Type.GROUND: - case Type.GRASS: + case PokemonType.FIGHTING: + case PokemonType.GROUND: + case PokemonType.GRASS: return 0.5; default: return 1; } - case Type.GHOST: + case PokemonType.GHOST: switch (attackType) { - case Type.GHOST: - case Type.DARK: + case PokemonType.GHOST: + case PokemonType.DARK: return 2; - case Type.POISON: - case Type.BUG: + case PokemonType.POISON: + case PokemonType.BUG: return 0.5; - case Type.NORMAL: - case Type.FIGHTING: + case PokemonType.NORMAL: + case PokemonType.FIGHTING: return 0; default: return 1; } - case Type.STEEL: + case PokemonType.STEEL: switch (attackType) { - case Type.FIGHTING: - case Type.GROUND: - case Type.FIRE: + case PokemonType.FIGHTING: + case PokemonType.GROUND: + case PokemonType.FIRE: return 2; - case Type.NORMAL: - case Type.FLYING: - case Type.ROCK: - case Type.BUG: - case Type.STEEL: - case Type.GRASS: - case Type.PSYCHIC: - case Type.ICE: - case Type.DRAGON: - case Type.FAIRY: + case PokemonType.NORMAL: + case PokemonType.FLYING: + case PokemonType.ROCK: + case PokemonType.BUG: + case PokemonType.STEEL: + case PokemonType.GRASS: + case PokemonType.PSYCHIC: + case PokemonType.ICE: + case PokemonType.DRAGON: + case PokemonType.FAIRY: return 0.5; - case Type.POISON: + case PokemonType.POISON: return 0; default: return 1; } - case Type.FIRE: + case PokemonType.FIRE: switch (attackType) { - case Type.GROUND: - case Type.ROCK: - case Type.WATER: + case PokemonType.GROUND: + case PokemonType.ROCK: + case PokemonType.WATER: return 2; - case Type.BUG: - case Type.STEEL: - case Type.FIRE: - case Type.GRASS: - case Type.ICE: - case Type.FAIRY: + case PokemonType.BUG: + case PokemonType.STEEL: + case PokemonType.FIRE: + case PokemonType.GRASS: + case PokemonType.ICE: + case PokemonType.FAIRY: return 0.5; default: return 1; } - case Type.WATER: + case PokemonType.WATER: switch (attackType) { - case Type.GRASS: - case Type.ELECTRIC: + case PokemonType.GRASS: + case PokemonType.ELECTRIC: return 2; - case Type.STEEL: - case Type.FIRE: - case Type.WATER: - case Type.ICE: + case PokemonType.STEEL: + case PokemonType.FIRE: + case PokemonType.WATER: + case PokemonType.ICE: return 0.5; default: return 1; } - case Type.GRASS: + case PokemonType.GRASS: switch (attackType) { - case Type.FLYING: - case Type.POISON: - case Type.BUG: - case Type.FIRE: - case Type.ICE: + case PokemonType.FLYING: + case PokemonType.POISON: + case PokemonType.BUG: + case PokemonType.FIRE: + case PokemonType.ICE: return 2; - case Type.GROUND: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: + case PokemonType.GROUND: + case PokemonType.WATER: + case PokemonType.GRASS: + case PokemonType.ELECTRIC: return 0.5; default: return 1; } - case Type.ELECTRIC: + case PokemonType.ELECTRIC: switch (attackType) { - case Type.GROUND: + case PokemonType.GROUND: return 2; - case Type.FLYING: - case Type.STEEL: - case Type.ELECTRIC: + case PokemonType.FLYING: + case PokemonType.STEEL: + case PokemonType.ELECTRIC: return 0.5; default: return 1; } - case Type.PSYCHIC: + case PokemonType.PSYCHIC: switch (attackType) { - case Type.BUG: - case Type.GHOST: - case Type.DARK: + case PokemonType.BUG: + case PokemonType.GHOST: + case PokemonType.DARK: return 2; - case Type.FIGHTING: - case Type.PSYCHIC: + case PokemonType.FIGHTING: + case PokemonType.PSYCHIC: return 0.5; default: return 1; } - case Type.ICE: + case PokemonType.ICE: switch (attackType) { - case Type.FIGHTING: - case Type.ROCK: - case Type.STEEL: - case Type.FIRE: + case PokemonType.FIGHTING: + case PokemonType.ROCK: + case PokemonType.STEEL: + case PokemonType.FIRE: return 2; - case Type.ICE: + case PokemonType.ICE: return 0.5; default: return 1; } - case Type.DRAGON: + case PokemonType.DRAGON: switch (attackType) { - case Type.ICE: - case Type.DRAGON: - case Type.FAIRY: + case PokemonType.ICE: + case PokemonType.DRAGON: + case PokemonType.FAIRY: return 2; - case Type.FIRE: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: + case PokemonType.FIRE: + case PokemonType.WATER: + case PokemonType.GRASS: + case PokemonType.ELECTRIC: return 0.5; default: return 1; } - case Type.DARK: + case PokemonType.DARK: switch (attackType) { - case Type.FIGHTING: - case Type.BUG: - case Type.FAIRY: + case PokemonType.FIGHTING: + case PokemonType.BUG: + case PokemonType.FAIRY: return 2; - case Type.GHOST: - case Type.DARK: + case PokemonType.GHOST: + case PokemonType.DARK: return 0.5; - case Type.PSYCHIC: + case PokemonType.PSYCHIC: return 0; default: return 1; } - case Type.FAIRY: + case PokemonType.FAIRY: switch (attackType) { - case Type.POISON: - case Type.STEEL: + case PokemonType.POISON: + case PokemonType.STEEL: return 2; - case Type.FIGHTING: - case Type.BUG: - case Type.DARK: + case PokemonType.FIGHTING: + case PokemonType.BUG: + case PokemonType.DARK: return 0.5; - case Type.DRAGON: + case PokemonType.DRAGON: return 0; default: return 1; } - case Type.STELLAR: + case PokemonType.STELLAR: return 1; } @@ -313,45 +313,45 @@ export function getTypeDamageMultiplierColor(multiplier: TypeDamageMultiplier, s } } -export function getTypeRgb(type: Type): [ number, number, number ] { +export function getTypeRgb(type: PokemonType): [ number, number, number ] { switch (type) { - case Type.NORMAL: + case PokemonType.NORMAL: return [ 168, 168, 120 ]; - case Type.FIGHTING: + case PokemonType.FIGHTING: return [ 192, 48, 40 ]; - case Type.FLYING: + case PokemonType.FLYING: return [ 168, 144, 240 ]; - case Type.POISON: + case PokemonType.POISON: return [ 160, 64, 160 ]; - case Type.GROUND: + case PokemonType.GROUND: return [ 224, 192, 104 ]; - case Type.ROCK: + case PokemonType.ROCK: return [ 184, 160, 56 ]; - case Type.BUG: + case PokemonType.BUG: return [ 168, 184, 32 ]; - case Type.GHOST: + case PokemonType.GHOST: return [ 112, 88, 152 ]; - case Type.STEEL: + case PokemonType.STEEL: return [ 184, 184, 208 ]; - case Type.FIRE: + case PokemonType.FIRE: return [ 240, 128, 48 ]; - case Type.WATER: + case PokemonType.WATER: return [ 104, 144, 240 ]; - case Type.GRASS: + case PokemonType.GRASS: return [ 120, 200, 80 ]; - case Type.ELECTRIC: + case PokemonType.ELECTRIC: return [ 248, 208, 48 ]; - case Type.PSYCHIC: + case PokemonType.PSYCHIC: return [ 248, 88, 136 ]; - case Type.ICE: + case PokemonType.ICE: return [ 152, 216, 216 ]; - case Type.DRAGON: + case PokemonType.DRAGON: return [ 112, 56, 248 ]; - case Type.DARK: + case PokemonType.DARK: return [ 112, 88, 72 ]; - case Type.FAIRY: + case PokemonType.FAIRY: return [ 232, 136, 200 ]; - case Type.STELLAR: + case PokemonType.STELLAR: return [ 255, 255, 255 ]; default: return [ 0, 0, 0 ]; diff --git a/src/data/weather.ts b/src/data/weather.ts index 587d46f0772..2b7333de7dd 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -2,9 +2,9 @@ import { Biome } from "#enums/biome"; import { WeatherType } from "#enums/weather-type"; import { getPokemonNameWithAffix } from "../messages"; import type Pokemon from "../field/pokemon"; -import { Type } from "#enums/type"; -import type Move from "./move"; -import { AttackMove } from "./move"; +import { PokemonType } from "#enums/pokemon-type"; +import type Move from "./moves/move"; +import { AttackMove } from "./moves/move"; import * as Utils from "../utils"; import { SuppressWeatherEffectAbAttr } from "./ability"; import { TerrainType, getTerrainName } from "./terrain"; @@ -53,34 +53,34 @@ export class Weather { return false; } - isTypeDamageImmune(type: Type): boolean { + isTypeDamageImmune(type: PokemonType): boolean { switch (this.weatherType) { case WeatherType.SANDSTORM: - return type === Type.GROUND || type === Type.ROCK || type === Type.STEEL; + return type === PokemonType.GROUND || type === PokemonType.ROCK || type === PokemonType.STEEL; case WeatherType.HAIL: - return type === Type.ICE; + return type === PokemonType.ICE; } return false; } - getAttackTypeMultiplier(attackType: Type): number { + getAttackTypeMultiplier(attackType: PokemonType): number { switch (this.weatherType) { case WeatherType.SUNNY: case WeatherType.HARSH_SUN: - if (attackType === Type.FIRE) { + if (attackType === PokemonType.FIRE) { return 1.5; } - if (attackType === Type.WATER) { + if (attackType === PokemonType.WATER) { return 0.5; } break; case WeatherType.RAIN: case WeatherType.HEAVY_RAIN: - if (attackType === Type.FIRE) { + if (attackType === PokemonType.FIRE) { return 0.5; } - if (attackType === Type.WATER) { + if (attackType === PokemonType.WATER) { return 1.5; } break; @@ -94,9 +94,9 @@ export class Weather { switch (this.weatherType) { case WeatherType.HARSH_SUN: - return move instanceof AttackMove && moveType === Type.WATER; + return move instanceof AttackMove && moveType === PokemonType.WATER; case WeatherType.HEAVY_RAIN: - return move instanceof AttackMove && moveType === Type.FIRE; + return move instanceof AttackMove && moveType === PokemonType.FIRE; } return false; diff --git a/src/enums/MoveCategory.ts b/src/enums/MoveCategory.ts new file mode 100644 index 00000000000..0408655e6db --- /dev/null +++ b/src/enums/MoveCategory.ts @@ -0,0 +1,5 @@ +export enum MoveCategory { + PHYSICAL, + SPECIAL, + STATUS +} diff --git a/src/enums/MoveEffectTrigger.ts b/src/enums/MoveEffectTrigger.ts new file mode 100644 index 00000000000..1e7753d94fa --- /dev/null +++ b/src/enums/MoveEffectTrigger.ts @@ -0,0 +1,7 @@ +export enum MoveEffectTrigger { + PRE_APPLY, + POST_APPLY, + HIT, + /** Triggers one time after all target effects have applied */ + POST_TARGET +} diff --git a/src/enums/MoveFlags.ts b/src/enums/MoveFlags.ts new file mode 100644 index 00000000000..0fc85fddec6 --- /dev/null +++ b/src/enums/MoveFlags.ts @@ -0,0 +1,46 @@ +export enum MoveFlags { + NONE = 0, + MAKES_CONTACT = 1 << 0, + IGNORE_PROTECT = 1 << 1, + /** + * Sound-based moves have the following effects: + * - Pokemon with the {@linkcode Abilities.SOUNDPROOF Soundproof Ability} are unaffected by other Pokemon's sound-based moves. + * - Pokemon affected by {@linkcode Moves.THROAT_CHOP Throat Chop} cannot use sound-based moves for two turns. + * - Sound-based moves used by a Pokemon with {@linkcode Abilities.LIQUID_VOICE Liquid Voice} become Water-type moves. + * - Sound-based moves used by a Pokemon with {@linkcode Abilities.PUNK_ROCK Punk Rock} are boosted by 30%. Pokemon with Punk Rock also take half damage from sound-based moves. + * - All sound-based moves (except Howl) can hit Pokemon behind an active {@linkcode Moves.SUBSTITUTE Substitute}. + * + * cf https://bulbapedia.bulbagarden.net/wiki/Sound-based_move + */ + SOUND_BASED = 1 << 2, + HIDE_USER = 1 << 3, + HIDE_TARGET = 1 << 4, + BITING_MOVE = 1 << 5, + PULSE_MOVE = 1 << 6, + PUNCHING_MOVE = 1 << 7, + SLICING_MOVE = 1 << 8, + /** + * Indicates a move should be affected by {@linkcode Abilities.RECKLESS} + * @see {@linkcode Move.recklessMove()} + */ + RECKLESS_MOVE = 1 << 9, + /** Indicates a move should be affected by {@linkcode Abilities.BULLETPROOF} */ + BALLBOMB_MOVE = 1 << 10, + /** Grass types and pokemon with {@linkcode Abilities.OVERCOAT} are immune to powder moves */ + POWDER_MOVE = 1 << 11, + /** Indicates a move should trigger {@linkcode Abilities.DANCER} */ + DANCE_MOVE = 1 << 12, + /** Indicates a move should trigger {@linkcode Abilities.WIND_RIDER} */ + WIND_MOVE = 1 << 13, + /** Indicates a move should trigger {@linkcode Abilities.TRIAGE} */ + TRIAGE_MOVE = 1 << 14, + IGNORE_ABILITIES = 1 << 15, + /** Enables all hits of a multi-hit move to be accuracy checked individually */ + CHECK_ALL_HITS = 1 << 16, + /** Indicates a move is able to bypass its target's Substitute (if the target has one) */ + IGNORE_SUBSTITUTE = 1 << 17, + /** Indicates a move is able to be redirected to allies in a double battle if the attacker faints */ + REDIRECT_COUNTER = 1 << 18, + /** Indicates a move is able to be reflected by {@linkcode Abilities.MAGIC_BOUNCE} and {@linkcode Moves.MAGIC_COAT} */ + REFLECTABLE = 1 << 19 +} diff --git a/src/enums/MoveTarget.ts b/src/enums/MoveTarget.ts new file mode 100644 index 00000000000..615628cf4e8 --- /dev/null +++ b/src/enums/MoveTarget.ts @@ -0,0 +1,29 @@ +export enum MoveTarget { + /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_the_user Moves that target the User} */ + USER, + OTHER, + ALL_OTHERS, + NEAR_OTHER, + /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_all_adjacent_Pok%C3%A9mon Moves that target all adjacent Pokemon} */ + ALL_NEAR_OTHERS, + NEAR_ENEMY, + /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_all_adjacent_foes Moves that target all adjacent foes} */ + ALL_NEAR_ENEMIES, + RANDOM_NEAR_ENEMY, + ALL_ENEMIES, + /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Counterattacks Counterattacks} */ + ATTACKER, + /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_one_adjacent_ally Moves that target one adjacent ally} */ + NEAR_ALLY, + ALLY, + USER_OR_NEAR_ALLY, + USER_AND_ALLIES, + /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_all_Pok%C3%A9mon Moves that target all Pokemon} */ + ALL, + USER_SIDE, + /** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Entry_hazard-creating_moves Entry hazard-creating moves} */ + ENEMY_SIDE, + BOTH_SIDES, + PARTY, + CURSE +} diff --git a/src/enums/MultiHitType.ts b/src/enums/MultiHitType.ts new file mode 100644 index 00000000000..27e8214112e --- /dev/null +++ b/src/enums/MultiHitType.ts @@ -0,0 +1,7 @@ +export enum MultiHitType { + _2, + _2_TO_5, + _3, + _10, + BEAT_UP +} diff --git a/src/enums/type.ts b/src/enums/pokemon-type.ts similarity index 88% rename from src/enums/type.ts rename to src/enums/pokemon-type.ts index a04849c2ca3..eca02bae275 100644 --- a/src/enums/type.ts +++ b/src/enums/pokemon-type.ts @@ -1,4 +1,4 @@ -export enum Type { +export enum PokemonType { UNKNOWN = -1, NORMAL = 0, FIGHTING, diff --git a/src/events/battle-scene.ts b/src/events/battle-scene.ts index 548666c96de..4ed0e60cdc7 100644 --- a/src/events/battle-scene.ts +++ b/src/events/battle-scene.ts @@ -1,4 +1,4 @@ -import type Move from "../data/move"; +import type Move from "../data/moves/move"; import type { BerryModifier } from "../modifier/modifier"; /** Alias for all {@linkcode BattleScene} events */ diff --git a/src/field/arena.ts b/src/field/arena.ts index 08ba3542fc2..aedb0c1c5f8 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -7,8 +7,8 @@ import type PokemonSpecies from "#app/data/pokemon-species"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { getTerrainClearMessage, getTerrainStartMessage, getWeatherClearMessage, getWeatherStartMessage, getLegendaryWeatherContinuesMessage, Weather } from "#app/data/weather"; import { CommonAnim } from "#app/data/battle-anims"; -import type { Type } from "#enums/type"; -import type Move from "#app/data/move"; +import type { PokemonType } from "#enums/pokemon-type"; +import type Move from "#app/data/moves/move"; import type { ArenaTag } from "#app/data/arena-tag"; import { ArenaTagSide, ArenaTrapTag, getArenaTag } from "#app/data/arena-tag"; import type { BattlerIndex } from "#app/battle"; @@ -372,7 +372,7 @@ export class Arena { return this.terrain?.terrainType ?? TerrainType.NONE; } - getAttackTypeMultiplier(attackType: Type, grounded: boolean): number { + getAttackTypeMultiplier(attackType: PokemonType, grounded: boolean): number { let weatherMultiplier = 1; if (this.weather && !this.weather.isEffectSuppressed()) { weatherMultiplier = this.weather.getAttackTypeMultiplier(attackType); diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index d8e22898d42..bc0490372bc 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -6,7 +6,7 @@ import type { Variant, VariantSet } from "#app/data/variant"; import { variantColorCache } from "#app/data/variant"; import { variantData } from "#app/data/variant"; import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from "#app/ui/battle-info"; -import type Move from "#app/data/move"; +import type Move from "#app/data/moves/move"; import { HighCritAttr, StatChangeBeforeDmgCalcAttr, @@ -15,7 +15,6 @@ import { FixedDamageAttr, VariableAtkAttr, allMoves, - MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, @@ -36,11 +35,12 @@ import { SacrificialAttrOnHit, OneHitKOAccuracyAttr, RespectAttackTypeImmunityAttr, - MoveTarget, CombinedPledgeStabBoostAttr, VariableMoveTypeChartAttr, HpSplitAttr -} from "#app/data/move"; +} from "#app/data/moves/move"; +import { MoveTarget } from "#enums/MoveTarget"; +import { MoveCategory } from "#enums/MoveCategory"; import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; import { default as PokemonSpecies, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; @@ -49,7 +49,7 @@ import { isNullOrUndefined, randSeedInt, type nil } from "#app/utils"; import * as Utils from "#app/utils"; import type { TypeDamageMultiplier } from "#app/data/type"; import { getTypeDamageMultiplier, getTypeRgb } from "#app/data/type"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { getLevelTotalExp } from "#app/data/exp"; import { Stat, type PermanentStat, type BattleStat, type EffectiveStat, PERMANENT_STATS, BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; import { DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, HiddenAbilityRateBoosterModifier, BaseStatModifier, PokemonFriendshipBoosterModifier, PokemonHeldItemModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempStatStageBoosterModifier, TempCritBoosterModifier, StatBoosterModifier, CritBoosterModifier, PokemonBaseStatFlatModifier, PokemonBaseStatTotalModifier, PokemonIncrementingStatModifier, EvoTrackerModifier, PokemonMultiHitModifier } from "#app/modifier/modifier"; @@ -163,9 +163,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public pokerus: boolean; public switchOutStatus: boolean; public evoCounter: number; - public teraType: Type; + public teraType: PokemonType; public isTerastallized: boolean; - public stellarTypesBoosted: Type[]; + public stellarTypesBoosted: PokemonType[]; public fusionSpecies: PokemonSpecies | null; public fusionFormIndex: number; @@ -175,7 +175,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public fusionGender: Gender; public fusionLuck: number; public fusionCustomPokemonData: CustomPokemonData | null; - public fusionTeraType: Type; + public fusionTeraType: PokemonType; private summonDataPrimer: PokemonSummonData | null; @@ -974,7 +974,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const critBoostTag = source.getTag(CritBoostTag); if (critBoostTag) { if (critBoostTag instanceof DragonCheerTag) { - critStage.value += critBoostTag.typesOnAdd.includes(Type.DRAGON) ? 2 : 1; + critStage.value += critBoostTag.typesOnAdd.includes(PokemonType.DRAGON) ? 2 : 1; } else { critStage.value += 2; } @@ -1025,14 +1025,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } break; case Stat.DEF: - if (this.isOfType(Type.ICE) && globalScene.arena.weather?.weatherType === WeatherType.SNOW) { + if (this.isOfType(PokemonType.ICE) && globalScene.arena.weather?.weatherType === WeatherType.SNOW) { ret *= 1.5; } break; case Stat.SPATK: break; case Stat.SPDEF: - if (this.isOfType(Type.ROCK) && globalScene.arena.weather?.weatherType === WeatherType.SANDSTORM) { + if (this.isOfType(PokemonType.ROCK) && globalScene.arena.weather?.weatherType === WeatherType.SANDSTORM) { ret *= 1.5; } break; @@ -1308,14 +1308,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param includeTeraType - `true` to include tera-formed type; Default: `false` * @param forDefend - `true` if the pokemon is defending from an attack; Default: `false` * @param ignoreOverride - If `true`, ignore ability changing effects; Default: `false` - * @returns array of {@linkcode Type} + * @returns array of {@linkcode PokemonType} */ - public getTypes(includeTeraType = false, forDefend: boolean = false, ignoreOverride: boolean = false): Type[] { - const types: Type[] = []; + public getTypes(includeTeraType = false, forDefend: boolean = false, ignoreOverride: boolean = false): PokemonType[] { + const types: PokemonType[] = []; if (includeTeraType && this.isTerastallized) { const teraType = this.getTeraType(); - if (this.isTerastallized && !(forDefend && teraType === Type.STELLAR)) { // Stellar tera uses its original types defensively + if (this.isTerastallized && !(forDefend && teraType === PokemonType.STELLAR)) { // Stellar tera uses its original types defensively types.push(teraType); if (forDefend) { return types; @@ -1332,17 +1332,17 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const customTypes = this.customPokemonData.types?.length > 0; // First type, checking for "permanently changed" types from ME - const firstType = (customTypes && this.customPokemonData.types[0] !== Type.UNKNOWN) ? this.customPokemonData.types[0] : speciesForm.type1; + const firstType = (customTypes && this.customPokemonData.types[0] !== PokemonType.UNKNOWN) ? this.customPokemonData.types[0] : speciesForm.type1; types.push(firstType); // Second type - let secondType: Type = Type.UNKNOWN; + let secondType: PokemonType = PokemonType.UNKNOWN; if (fusionSpeciesForm) { // Check if the fusion Pokemon also has permanent changes from ME when determining the fusion types - const fusionType1 = (this.fusionCustomPokemonData?.types && this.fusionCustomPokemonData.types.length > 0 && this.fusionCustomPokemonData.types[0] !== Type.UNKNOWN) + const fusionType1 = (this.fusionCustomPokemonData?.types && this.fusionCustomPokemonData.types.length > 0 && this.fusionCustomPokemonData.types[0] !== PokemonType.UNKNOWN) ? this.fusionCustomPokemonData.types[0] : fusionSpeciesForm.type1; - const fusionType2 = (this.fusionCustomPokemonData?.types && this.fusionCustomPokemonData.types.length > 1 && this.fusionCustomPokemonData.types[1] !== Type.UNKNOWN) + const fusionType2 = (this.fusionCustomPokemonData?.types && this.fusionCustomPokemonData.types.length > 1 && this.fusionCustomPokemonData.types[1] !== PokemonType.UNKNOWN) ? this.fusionCustomPokemonData.types[1] : fusionSpeciesForm.type2; // Assign second type if the fusion can provide one @@ -1353,17 +1353,17 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } - if (secondType === Type.UNKNOWN && Utils.isNullOrUndefined(fusionType2)) { // If second pokemon was monotype and shared its primary type - secondType = (customTypes && this.customPokemonData.types.length > 1 && this.customPokemonData.types[1] !== Type.UNKNOWN) - ? this.customPokemonData.types[1] : (speciesForm.type2 ?? Type.UNKNOWN); + if (secondType === PokemonType.UNKNOWN && Utils.isNullOrUndefined(fusionType2)) { // If second pokemon was monotype and shared its primary type + secondType = (customTypes && this.customPokemonData.types.length > 1 && this.customPokemonData.types[1] !== PokemonType.UNKNOWN) + ? this.customPokemonData.types[1] : (speciesForm.type2 ?? PokemonType.UNKNOWN); } } else { // If not a fusion, just get the second type from the species, checking for permanent changes from ME - secondType = (customTypes && this.customPokemonData.types.length > 1 && this.customPokemonData.types[1] !== Type.UNKNOWN) - ? this.customPokemonData.types[1] : (speciesForm.type2 ?? Type.UNKNOWN); + secondType = (customTypes && this.customPokemonData.types.length > 1 && this.customPokemonData.types[1] !== PokemonType.UNKNOWN) + ? this.customPokemonData.types[1] : (speciesForm.type2 ?? PokemonType.UNKNOWN); } - if (secondType !== Type.UNKNOWN) { + if (secondType !== PokemonType.UNKNOWN) { types.push(secondType); } } @@ -1371,12 +1371,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // become UNKNOWN if no types are present if (!types.length) { - types.push(Type.UNKNOWN); + types.push(PokemonType.UNKNOWN); } // remove UNKNOWN if other types are present - if (types.length > 1 && types.includes(Type.UNKNOWN)) { - const index = types.indexOf(Type.UNKNOWN); + if (types.length > 1 && types.includes(PokemonType.UNKNOWN)) { + const index = types.indexOf(PokemonType.UNKNOWN); if (index !== -1) { types.splice(index, 1); } @@ -1397,13 +1397,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Checks if the pokemon's typing includes the specified type - * @param type - {@linkcode Type} to check + * @param type - {@linkcode PokemonType} to check * @param includeTeraType - `true` to include tera-formed type; Default: `true` * @param forDefend - `true` if the pokemon is defending from an attack; Default: `false` * @param ignoreOverride - If `true`, ignore ability changing effects; Default: `false` * @returns `true` if the Pokemon's type matches */ - public isOfType(type: Type, includeTeraType: boolean = true, forDefend: boolean = false, ignoreOverride: boolean = false): boolean { + public isOfType(type: PokemonType, includeTeraType: boolean = true, forDefend: boolean = false, ignoreOverride: boolean = false): boolean { return this.getTypes(includeTeraType, forDefend, ignoreOverride).some((t) => t === type); } @@ -1641,35 +1641,35 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @returns the pokemon's current tera {@linkcode Type} + * @returns the pokemon's current tera {@linkcode PokemonType} */ - getTeraType(): Type { + getTeraType(): PokemonType { if (this.hasSpecies(Species.TERAPAGOS)) { - return Type.STELLAR; + return PokemonType.STELLAR; } else if (this.hasSpecies(Species.OGERPON)) { const ogerponForm = this.species.speciesId === Species.OGERPON ? this.formIndex : this.fusionFormIndex; switch (ogerponForm) { case 0: case 4: - return Type.GRASS; + return PokemonType.GRASS; case 1: case 5: - return Type.WATER; + return PokemonType.WATER; case 2: case 6: - return Type.FIRE; + return PokemonType.FIRE; case 3: case 7: - return Type.ROCK; + return PokemonType.ROCK; } } else if (this.hasSpecies(Species.SHEDINJA)) { - return Type.BUG; + return PokemonType.BUG; } return this.teraType; } public isGrounded(): boolean { - return !!this.getTag(GroundedTag) || (!this.isOfType(Type.FLYING, true, true) && !this.hasAbility(Abilities.LEVITATE) && !this.getTag(BattlerTagType.FLOATING) && !this.getTag(SemiInvulnerableTag)); + return !!this.getTag(GroundedTag) || (!this.isOfType(PokemonType.FLYING, true, true) && !this.hasAbility(Abilities.LEVITATE) && !this.getTag(BattlerTagType.FLOATING) && !this.getTag(SemiInvulnerableTag)); } /** @@ -1686,7 +1686,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return true; } - if (this.isOfType(Type.GHOST)) { + if (this.isOfType(PokemonType.GHOST)) { return false; } @@ -1711,9 +1711,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * type-changing move and ability attributes have applied. * @param move - {@linkcode Move} The move being used. * @param simulated - If `true`, prevents showing abilities applied in this calculation. - * @returns The {@linkcode Type} of the move after attributes are applied + * @returns The {@linkcode PokemonType} of the move after attributes are applied */ - public getMoveType(move: Move, simulated: boolean = true): Type { + public getMoveType(move: Move, simulated: boolean = true): PokemonType { const moveTypeHolder = new Utils.NumberHolder(move.type); applyMoveAttrs(VariableMoveTypeAttr, this, null, move, moveTypeHolder); @@ -1721,10 +1721,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { globalScene.arena.applyTags(ArenaTagType.ION_DELUGE, simulated, moveTypeHolder); if (this.getTag(BattlerTagType.ELECTRIFIED)) { - moveTypeHolder.value = Type.ELECTRIC; + moveTypeHolder.value = PokemonType.ELECTRIC; } - return moveTypeHolder.value as Type; + return moveTypeHolder.value as PokemonType; } @@ -1758,7 +1758,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { typeMultiplier.value = 0; } - if (this.getTag(TarShotTag) && (this.getMoveType(move) === Type.FIRE)) { + if (this.getTag(TarShotTag) && (this.getMoveType(move) === PokemonType.FIRE)) { typeMultiplier.value *= 2; } @@ -1798,15 +1798,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Calculates the move's type effectiveness multiplier based on the target's type/s. - * @param moveType {@linkcode Type} the type of the move being used + * @param moveType {@linkcode PokemonType} the type of the move being used * @param source {@linkcode Pokemon} the Pokemon using the move * @param ignoreStrongWinds whether or not this ignores strong winds (anticipation, forewarn, stealth rocks) * @param simulated tag to only apply the strong winds effect message when the move is used * @param move (optional) the move whose type effectiveness is to be checked. Used for applying {@linkcode VariableMoveTypeChartAttr} * @returns a multiplier for the type effectiveness */ - getAttackTypeEffectiveness(moveType: Type, source?: Pokemon, ignoreStrongWinds: boolean = false, simulated: boolean = true, move?: Move): TypeDamageMultiplier { - if (moveType === Type.STELLAR) { + getAttackTypeEffectiveness(moveType: PokemonType, source?: Pokemon, ignoreStrongWinds: boolean = false, simulated: boolean = true, move?: Move): TypeDamageMultiplier { + if (moveType === PokemonType.STELLAR) { return this.isTerastallized ? 2 : 1; } const types = this.getTypes(true, true); @@ -1814,8 +1814,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Handle flying v ground type immunity without removing flying type so effective types are still effective // Related to https://github.com/pagefaultgames/pokerogue/issues/524 - if (moveType === Type.GROUND && (this.isGrounded() || arena.hasTag(ArenaTagType.GRAVITY))) { - const flyingIndex = types.indexOf(Type.FLYING); + if (moveType === PokemonType.GROUND && (this.isGrounded() || arena.hasTag(ArenaTagType.GRAVITY))) { + const flyingIndex = types.indexOf(PokemonType.FLYING); if (flyingIndex > -1) { types.splice(flyingIndex, 1); } @@ -1848,10 +1848,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return multiplier.value; }).reduce((acc, cur) => acc * cur, 1) as TypeDamageMultiplier; - const typeMultiplierAgainstFlying = new Utils.NumberHolder(getTypeDamageMultiplier(moveType, Type.FLYING)); + const typeMultiplierAgainstFlying = new Utils.NumberHolder(getTypeDamageMultiplier(moveType, PokemonType.FLYING)); applyChallenges(globalScene.gameMode, ChallengeType.TYPE_EFFECTIVENESS, typeMultiplierAgainstFlying); // Handle strong winds lowering effectiveness of types super effective against pure flying - if (!ignoreStrongWinds && arena.weather?.weatherType === WeatherType.STRONG_WINDS && !arena.weather.isEffectSuppressed() && this.isOfType(Type.FLYING) && typeMultiplierAgainstFlying.value === 2) { + if (!ignoreStrongWinds && arena.weather?.weatherType === WeatherType.STRONG_WINDS && !arena.weather.isEffectSuppressed() && this.isOfType(PokemonType.FLYING) && typeMultiplierAgainstFlying.value === 2) { multiplier /= 2; if (!simulated) { globalScene.queueMessage(i18next.t("weather:strongWindsEffectMessage")); @@ -2846,7 +2846,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const matchesSourceType = sourceTypes.includes(moveType); /** A damage multiplier for when the attack is of the attacker's type and/or Tera type. */ const stabMultiplier = new Utils.NumberHolder(1); - if (matchesSourceType && moveType !== Type.STELLAR) { + if (matchesSourceType && moveType !== PokemonType.STELLAR) { stabMultiplier.value += 0.5; } @@ -2856,11 +2856,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyMoveAttrs(CombinedPledgeStabBoostAttr, source, this, move, stabMultiplier); - if (source.isTerastallized && sourceTeraType === moveType && moveType !== Type.STELLAR) { + if (source.isTerastallized && sourceTeraType === moveType && moveType !== PokemonType.STELLAR) { stabMultiplier.value += 0.5; } - if (source.isTerastallized && source.getTeraType() === Type.STELLAR && (!source.stellarTypesBoosted.includes(moveType) || source.hasSpecies(Species.TERAPAGOS))) { + if (source.isTerastallized && source.getTeraType() === PokemonType.STELLAR && (!source.stellarTypesBoosted.includes(moveType) || source.hasSpecies(Species.TERAPAGOS))) { if (matchesSourceType) { stabMultiplier.value += 0.5; } else { @@ -2906,7 +2906,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { }); /** Halves damage if this Pokemon is grounded in Misty Terrain against a Dragon-type attack */ - const mistyTerrainMultiplier = (globalScene.arena.terrain?.terrainType === TerrainType.MISTY && this.isGrounded() && moveType === Type.DRAGON) + const mistyTerrainMultiplier = (globalScene.arena.terrain?.terrainType === TerrainType.MISTY && this.isGrounded() && moveType === PokemonType.DRAGON) ? 0.5 : 1; @@ -3707,7 +3707,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Check if the Pokemon is immune to Poison/Toxic or if the source pokemon is canceling the immunity const poisonImmunity = types.map(defType => { // Check if the Pokemon is not immune to Poison/Toxic - if (defType !== Type.POISON && defType !== Type.STEEL) { + if (defType !== PokemonType.POISON && defType !== PokemonType.STEEL) { return false; } @@ -3723,14 +3723,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return true; }); - if (this.isOfType(Type.POISON) || this.isOfType(Type.STEEL)) { + if (this.isOfType(PokemonType.POISON) || this.isOfType(PokemonType.STEEL)) { if (poisonImmunity.includes(true)) { return false; } } break; case StatusEffect.PARALYSIS: - if (this.isOfType(Type.ELECTRIC)) { + if (this.isOfType(PokemonType.ELECTRIC)) { return false; } break; @@ -3740,12 +3740,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } break; case StatusEffect.FREEZE: - if (this.isOfType(Type.ICE) || (!ignoreField && (globalScene?.arena?.weather?.weatherType && [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(globalScene.arena.weather.weatherType)))) { + if (this.isOfType(PokemonType.ICE) || (!ignoreField && (globalScene?.arena?.weather?.weatherType && [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(globalScene.arena.weather.weatherType)))) { return false; } break; case StatusEffect.BURN: - if (this.isOfType(Type.FIRE)) { + if (this.isOfType(PokemonType.FIRE)) { return false; } break; @@ -5402,8 +5402,8 @@ export class PokemonSummonData { public stats: number[] = [ 0, 0, 0, 0, 0, 0 ]; public moveset: (PokemonMove | null)[]; // If not initialized this value will not be populated from save data. - public types: Type[] = []; - public addedType: Type | null = null; + public types: PokemonType[] = []; + public addedType: PokemonType | null = null; } export class PokemonBattleData { diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 183b38c49e5..02bd849f66c 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -10,7 +10,7 @@ import { initBiomes } from "#app/data/balance/biomes"; import { initEggMoves } from "#app/data/balance/egg-moves"; import { initPokemonForms } from "#app/data/pokemon-forms"; import { initSpecies } from "#app/data/pokemon-species"; -import { initMoves } from "#app/data/move"; +import { initMoves } from "#app/data/moves/move"; import { initAbilities } from "#app/data/ability"; import { initAchievements } from "#app/system/achv"; import { initTrainerTypeDialogue } from "#app/data/dialogue"; diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index ae8b9a45c0d..6cb8051518d 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -2,12 +2,12 @@ import { globalScene } from "#app/global-scene"; import { EvolutionItem, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { tmPoolTiers, tmSpecies } from "#app/data/balance/tms"; import { getBerryEffectDescription, getBerryName } from "#app/data/berry"; -import { allMoves, AttackMove } from "#app/data/move"; +import { allMoves, AttackMove } from "#app/data/moves/move"; import { getNatureName, getNatureStatMultiplier } from "#app/data/nature"; import { getPokeballCatchMultiplier, getPokeballName, MAX_PER_TYPE_POKEBALLS } from "#app/data/pokeball"; import { FormChangeItem, pokemonFormChanges, SpeciesFormChangeCondition, SpeciesFormChangeItemTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectDescriptor } from "#app/data/status-effect"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import type { EnemyPokemon, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -277,10 +277,10 @@ export class PokemonHeldItemModifierType extends PokemonModifierType { export class TerastallizeModifierType extends PokemonModifierType { - private teraType: Type; + private teraType: PokemonType; - constructor(teraType: Type) { - super("", `${Type[teraType].toLowerCase()}_tera_shard`, (type, args) => new TerrastalizeModifier(type as TerastallizeModifierType, (args[0] as Pokemon).id, teraType), + constructor(teraType: PokemonType) { + super("", `${PokemonType[teraType].toLowerCase()}_tera_shard`, (type, args) => new TerrastalizeModifier(type as TerastallizeModifierType, (args[0] as Pokemon).id, teraType), (pokemon: PlayerPokemon) => { if ([ pokemon.species.speciesId, pokemon.fusionSpecies?.speciesId ].filter(s => s === Species.TERAPAGOS || s === Species.OGERPON || s === Species.SHEDINJA).length > 0) { return PartyUiHandler.NoEffectMessage; @@ -293,11 +293,11 @@ export class TerastallizeModifierType extends PokemonModifierType { } get name(): string { - return i18next.t("modifierType:ModifierType.TerastallizeModifierType.name", { teraType: i18next.t(`pokemonInfo:Type.${Type[this.teraType]}`) }); + return i18next.t("modifierType:ModifierType.TerastallizeModifierType.name", { teraType: i18next.t(`pokemonInfo:Type.${PokemonType[this.teraType]}`) }); } getDescription(): string { - return i18next.t("modifierType:ModifierType.TerastallizeModifierType.description", { teraType: i18next.t(`pokemonInfo:Type.${Type[this.teraType]}`) }); + return i18next.t("modifierType:ModifierType.TerastallizeModifierType.description", { teraType: i18next.t(`pokemonInfo:Type.${PokemonType[this.teraType]}`) }); } getPregenArgs(): any[] { @@ -581,10 +581,10 @@ enum AttackTypeBoosterItem { } export class AttackTypeBoosterModifierType extends PokemonHeldItemModifierType implements GeneratedPersistentModifierType { - public moveType: Type; + public moveType: PokemonType; public boostPercent: number; - constructor(moveType: Type, boostPercent: number) { + constructor(moveType: PokemonType, boostPercent: number) { super("", `${AttackTypeBoosterItem[moveType]?.toLowerCase()}`, (_type, args) => new AttackTypeBoosterModifier(this, (args[0] as Pokemon).id, moveType, boostPercent)); @@ -598,7 +598,7 @@ export class AttackTypeBoosterModifierType extends PokemonHeldItemModifierType i getDescription(): string { // TODO: Need getTypeName? - return i18next.t("modifierType:ModifierType.AttackTypeBoosterModifierType.description", { moveType: i18next.t(`pokemonInfo:Type.${Type[this.moveType]}`) }); + return i18next.t("modifierType:ModifierType.AttackTypeBoosterModifierType.description", { moveType: i18next.t(`pokemonInfo:Type.${PokemonType[this.moveType]}`) }); } getPregenArgs(): any[] { @@ -841,7 +841,7 @@ export class TmModifierType extends PokemonModifierType { public moveId: Moves; constructor(moveId: Moves) { - super("", `tm_${Type[allMoves[moveId].type].toLowerCase()}`, (_type, args) => new TmModifier(this, (args[0] as PlayerPokemon).id), + super("", `tm_${PokemonType[allMoves[moveId].type].toLowerCase()}`, (_type, args) => new TmModifier(this, (args[0] as PlayerPokemon).id), (pokemon: PlayerPokemon) => { if (pokemon.compatibleTms.indexOf(moveId) === -1 || pokemon.getMoveset().filter(m => m?.moveId === moveId).length) { return PartyUiHandler.NoEffectMessage; @@ -955,8 +955,8 @@ export class FusePokemonModifierType extends PokemonModifierType { class AttackTypeBoosterModifierTypeGenerator extends ModifierTypeGenerator { constructor() { super((party: Pokemon[], pregenArgs?: any[]) => { - if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in Type)) { - return new AttackTypeBoosterModifierType(pregenArgs[0] as Type, 20); + if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in PokemonType)) { + return new AttackTypeBoosterModifierType(pregenArgs[0] as PokemonType, 20); } const attackMoveTypes = party.map(p => p.getMoveset().map(m => m?.getMove()).filter(m => m instanceof AttackMove).map(m => m.type)).flat(); @@ -964,7 +964,7 @@ class AttackTypeBoosterModifierTypeGenerator extends ModifierTypeGenerator { return null; } - const attackMoveTypeWeights = new Map(); + const attackMoveTypeWeights = new Map(); let totalWeight = 0; for (const t of attackMoveTypes) { if (attackMoveTypeWeights.has(t)) { @@ -983,7 +983,7 @@ class AttackTypeBoosterModifierTypeGenerator extends ModifierTypeGenerator { return null; } - let type: Type; + let type: PokemonType; const randInt = randSeedInt(totalWeight); let weight = 0; @@ -1366,7 +1366,7 @@ export type GeneratorModifierOverride = { } | { name: keyof Pick; - type?: Type; + type?: PokemonType; } | { name: keyof Pick; @@ -1473,25 +1473,25 @@ export const modifierTypes = { }), TERA_SHARD: () => new ModifierTypeGenerator((party: Pokemon[], pregenArgs?: any[]) => { - if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in Type)) { - return new TerastallizeModifierType(pregenArgs[0] as Type); + if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in PokemonType)) { + return new TerastallizeModifierType(pregenArgs[0] as PokemonType); } if (!globalScene.getModifiers(TerastallizeAccessModifier).length) { return null; } - const teraTypes: Type[] = []; + const teraTypes: PokemonType[] = []; party.forEach(p => { if (!(p.hasSpecies(Species.TERAPAGOS) || p.hasSpecies(Species.OGERPON) || p.hasSpecies(Species.SHEDINJA))) { teraTypes.push(p.teraType); } }); - let excludedType = Type.UNKNOWN; + let excludedType = PokemonType.UNKNOWN; if (teraTypes.length > 0 && teraTypes.filter(t => t === teraTypes[0]).length === teraTypes.length) { excludedType = teraTypes[0]; } - let shardType = randSeedInt(64) ? randSeedInt(18) as Type : Type.STELLAR; + let shardType = randSeedInt(64) ? randSeedInt(18) as PokemonType : PokemonType.STELLAR; while (shardType === excludedType) { - shardType = randSeedInt(64) ? randSeedInt(18) as Type : Type.STELLAR; + shardType = randSeedInt(64) ? randSeedInt(18) as PokemonType : PokemonType.STELLAR; } return new TerastallizeModifierType(shardType); }), diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index f6a69fcca2d..1f8d1eb0322 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1,7 +1,7 @@ import { FusionSpeciesFormEvolution, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { getBerryEffectFunc, getBerryPredicate } from "#app/data/berry"; import { getLevelTotalExp } from "#app/data/exp"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { MAX_PER_TYPE_POKEBALLS } from "#app/data/pokeball"; import { type FormChangeItem, SpeciesFormChangeItemTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectHealText } from "#app/data/status-effect"; @@ -25,7 +25,7 @@ import type { PokeballType } from "#enums/pokeball"; import { Species } from "#enums/species"; import { type PermanentStat, type TempBattleStat, BATTLE_STATS, Stat, TEMP_BATTLE_STATS } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; -import type { Type } from "#enums/type"; +import type { PokemonType } from "#enums/pokemon-type"; import i18next from "i18next"; import { type DoubleBattleChanceBoosterModifierType, type EvolutionItemModifierType, type FormChangeItemModifierType, type ModifierOverride, type ModifierType, type PokemonBaseStatTotalModifierType, type PokemonExpBoosterModifierType, type PokemonFriendshipBoosterModifierType, type PokemonMoveAccuracyBoosterModifierType, type PokemonMultiHitModifierType, type TerastallizeModifierType, type TmModifierType, getModifierType, ModifierPoolType, ModifierTypeGenerator, modifierTypes, PokemonHeldItemModifierType } from "./modifier-type"; import { Color, ShadowColor } from "#enums/color"; @@ -1373,10 +1373,10 @@ export class SpeciesCritBoosterModifier extends CritBoosterModifier { * Applies Specific Type item boosts (e.g., Magnet) */ export class AttackTypeBoosterModifier extends PokemonHeldItemModifier { - public moveType: Type; + public moveType: PokemonType; private boostMultiplier: number; - constructor(type: ModifierType, pokemonId: number, moveType: Type, boostPercent: number, stackCount?: number) { + constructor(type: ModifierType, pokemonId: number, moveType: PokemonType, boostPercent: number, stackCount?: number) { super(type, pokemonId, stackCount); this.moveType = moveType; @@ -1403,22 +1403,22 @@ export class AttackTypeBoosterModifier extends PokemonHeldItemModifier { /** * Checks if {@linkcode AttackTypeBoosterModifier} should be applied * @param pokemon the {@linkcode Pokemon} that holds the held item - * @param moveType the {@linkcode Type} of the move being used + * @param moveType the {@linkcode PokemonType} of the move being used * @param movePower the {@linkcode NumberHolder} that holds the power of the move * @returns `true` if boosts should be applied to the move. */ - override shouldApply(pokemon?: Pokemon, moveType?: Type, movePower?: NumberHolder): boolean { + override shouldApply(pokemon?: Pokemon, moveType?: PokemonType, movePower?: NumberHolder): boolean { return super.shouldApply(pokemon, moveType, movePower) && typeof moveType === "number" && movePower instanceof NumberHolder; } /** * Applies {@linkcode AttackTypeBoosterModifier} * @param pokemon {@linkcode Pokemon} that holds the held item - * @param moveType {@linkcode Type} of the move being used + * @param moveType {@linkcode PokemonType} of the move being used * @param movePower {@linkcode NumberHolder} that holds the power of the move * @returns `true` if boosts have been applied to the move. */ - override apply(_pokemon: Pokemon, moveType: Type, movePower: NumberHolder): boolean { + override apply(_pokemon: Pokemon, moveType: PokemonType, movePower: NumberHolder): boolean { if (moveType === this.moveType && movePower.value >= 1) { (movePower as NumberHolder).value = Math.floor((movePower as NumberHolder).value * (1 + (this.getStackCount() * this.boostMultiplier))); return true; @@ -1958,9 +1958,9 @@ export abstract class ConsumablePokemonModifier extends ConsumableModifier { export class TerrastalizeModifier extends ConsumablePokemonModifier { public override type: TerastallizeModifierType; - public teraType: Type; + public teraType: PokemonType; - constructor(type: TerastallizeModifierType, pokemonId: number, teraType: Type) { + constructor(type: TerastallizeModifierType, pokemonId: number, teraType: PokemonType) { super(type, pokemonId); this.teraType = teraType; diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index 411022a84b4..5f4466d942c 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -3,8 +3,8 @@ import type { TurnCommand } from "#app/battle"; import { BattleType } from "#app/battle"; import type { EncoreTag } from "#app/data/battler-tags"; import { TrappedTag } from "#app/data/battler-tags"; -import type { MoveTargetSet } from "#app/data/move"; -import { getMoveTargets } from "#app/data/move"; +import type { MoveTargetSet } from "#app/data/moves/move"; +import { getMoveTargets } from "#app/data/moves/move"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { Abilities } from "#app/enums/abilities"; import { BattlerTagType } from "#app/enums/battler-tag-type"; diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts index f354bc8031e..a6b9a482ba0 100644 --- a/src/phases/faint-phase.ts +++ b/src/phases/faint-phase.ts @@ -5,7 +5,7 @@ import { applyPostFaintAbAttrs, applyPostKnockOutAbAttrs, applyPostVictoryAbAttr import type { DestinyBondTag, GrudgeTag } from "#app/data/battler-tags"; import { BattlerTagLapseType } from "#app/data/battler-tags"; import { battleSpecDialogue } from "#app/data/dialogue"; -import { allMoves, PostVictoryStatStageChangeAttr } from "#app/data/move"; +import { allMoves, PostVictoryStatStageChangeAttr } from "#app/data/moves/move"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { BattleSpec } from "#app/enums/battle-spec"; import { StatusEffect } from "#app/enums/status-effect"; diff --git a/src/phases/learn-move-phase.ts b/src/phases/learn-move-phase.ts index c1f3042dbbe..5d3c4078fa1 100644 --- a/src/phases/learn-move-phase.ts +++ b/src/phases/learn-move-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; -import type Move from "#app/data/move"; -import { allMoves } from "#app/data/move"; +import type Move from "#app/data/moves/move"; +import { allMoves } from "#app/data/moves/move"; import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms"; import { Moves } from "#enums/moves"; import { getPokemonNameWithAffix } from "#app/messages"; diff --git a/src/phases/move-anim-test-phase.ts b/src/phases/move-anim-test-phase.ts index 588fc402357..871d6188237 100644 --- a/src/phases/move-anim-test-phase.ts +++ b/src/phases/move-anim-test-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; import { initMoveAnim, loadMoveAnimAssets, MoveAnim } from "#app/data/battle-anims"; -import { allMoves, SelfStatusMove } from "#app/data/move"; +import { allMoves, SelfStatusMove } from "#app/data/moves/move"; import { Moves } from "#app/enums/moves"; import * as Utils from "#app/utils"; import { BattlePhase } from "./battle-phase"; diff --git a/src/phases/move-charge-phase.ts b/src/phases/move-charge-phase.ts index 6eccdd20254..3989221504d 100644 --- a/src/phases/move-charge-phase.ts +++ b/src/phases/move-charge-phase.ts @@ -1,7 +1,7 @@ import { globalScene } from "#app/global-scene"; import type { BattlerIndex } from "#app/battle"; import { MoveChargeAnim } from "#app/data/battle-anims"; -import { applyMoveChargeAttrs, MoveEffectAttr, InstantChargeAttr } from "#app/data/move"; +import { applyMoveChargeAttrs, MoveEffectAttr, InstantChargeAttr } from "#app/data/moves/move"; import type { PokemonMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index f878cb40e2e..c382c6aa4c4 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -25,7 +25,7 @@ import { SubstituteTag, } from "#app/data/battler-tags"; import type { - MoveAttr } from "#app/data/move"; + MoveAttr } from "#app/data/moves/move"; import { applyFilteredMoveAttrs, applyMoveAttrs, @@ -35,20 +35,20 @@ import { getMoveTargets, HitsTagAttr, MissEffectAttr, - MoveCategory, MoveEffectAttr, - MoveEffectTrigger, - MoveFlags, - MoveTarget, MultiHitAttr, NoEffectAttr, OneHitKOAttr, OverrideMoveEffectAttr, ToxicAccuracyAttr, VariableTargetAttr, -} from "#app/data/move"; +} from "#app/data/moves/move"; +import { MoveEffectTrigger } from "#enums/MoveEffectTrigger"; +import { MoveFlags } from "#enums/MoveFlags"; +import { MoveTarget } from "#enums/MoveTarget"; +import { MoveCategory } from "#enums/MoveCategory"; import { SpeciesFormChangePostMoveTrigger } from "#app/data/pokemon-forms"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { PokemonMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { HitResult, MoveResult } from "#app/field/pokemon"; @@ -671,7 +671,7 @@ export class MoveEffectPhase extends PokemonPhase { if (user.hasAbilityWithAttr(AlwaysHitAbAttr) || target.hasAbilityWithAttr(AlwaysHitAbAttr)) { return true; } - if ((this.move.getMove().hasAttr(ToxicAccuracyAttr) && user.isOfType(Type.POISON))) { + if ((this.move.getMove().hasAttr(ToxicAccuracyAttr) && user.isOfType(PokemonType.POISON))) { return true; } // TODO: Fix lock on / mind reader check. diff --git a/src/phases/move-header-phase.ts b/src/phases/move-header-phase.ts index 5b89548b663..c320df462d1 100644 --- a/src/phases/move-header-phase.ts +++ b/src/phases/move-header-phase.ts @@ -1,4 +1,4 @@ -import { applyMoveAttrs, MoveHeaderAttr } from "#app/data/move"; +import { applyMoveAttrs, MoveHeaderAttr } from "#app/data/moves/move"; import type { PokemonMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { BattlePhase } from "./battle-phase"; diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 3804ea78a3c..7e454d654d0 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -23,13 +23,13 @@ import { DelayedAttackAttr, frenzyMissFunc, HealStatusEffectAttr, - MoveFlags, PreMoveMessageAttr, PreUseInterruptAttr, -} from "#app/data/move"; +} from "#app/data/moves/move"; +import { MoveFlags } from "#enums/MoveFlags"; import { SpeciesFormChangePreMoveTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectActivationText, getStatusEffectHealText } from "#app/data/status-effect"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { getTerrainBlockMessage, getWeatherBlockMessage } from "#app/data/weather"; import { MoveUsedEvent } from "#app/events/battle-scene"; import type { PokemonMove } from "#app/field/pokemon"; @@ -469,7 +469,7 @@ export class MovePhase extends BattlePhase { // TODO: don't hardcode this interaction. // Handle interaction between the rage powder center-of-attention tag and moves used by grass types/overcoat-havers (which are immune to RP's redirect) - if (redirectTag && (!redirectTag.powder || (!this.pokemon.isOfType(Type.GRASS) && !this.pokemon.hasAbility(Abilities.OVERCOAT)))) { + if (redirectTag && (!redirectTag.powder || (!this.pokemon.isOfType(PokemonType.GRASS) && !this.pokemon.hasAbility(Abilities.OVERCOAT)))) { redirectTarget.value = p.getBattlerIndex(); redirectedByAbility = false; } diff --git a/src/phases/select-target-phase.ts b/src/phases/select-target-phase.ts index a30ef9000a5..a1e38e3f9d2 100644 --- a/src/phases/select-target-phase.ts +++ b/src/phases/select-target-phase.ts @@ -5,7 +5,7 @@ import { Mode } from "#app/ui/ui"; import { CommandPhase } from "./command-phase"; import { PokemonPhase } from "./pokemon-phase"; import i18next from "#app/plugins/i18n"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; export class SelectTargetPhase extends PokemonPhase { constructor(fieldIndex: number) { diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index dad0f6f11ad..f8350fb7d4c 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -1,6 +1,6 @@ import { globalScene } from "#app/global-scene"; import { applyPreSwitchOutAbAttrs, PostDamageForceSwitchAbAttr, PreSwitchOutAbAttr } from "#app/data/ability"; -import { allMoves, ForceSwitchOutAttr } from "#app/data/move"; +import { allMoves, ForceSwitchOutAttr } from "#app/data/moves/move"; import { getPokeballTintColor } from "#app/data/pokeball"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { TrainerSlot } from "#app/data/trainer-config"; diff --git a/src/phases/tera-phase.ts b/src/phases/tera-phase.ts index 462a4e1882e..5411861011e 100644 --- a/src/phases/tera-phase.ts +++ b/src/phases/tera-phase.ts @@ -3,7 +3,7 @@ import { getPokemonNameWithAffix } from "#app/messages"; import { BattlePhase } from "./battle-phase"; import i18next from "i18next"; import { globalScene } from "#app/global-scene"; -import { Type } from "#app/enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { achvs } from "#app/system/achv"; import { SpeciesFormChangeTeraTrigger } from "#app/data/pokemon-forms"; import { CommonAnim, CommonBattleAnim } from "#app/data/battle-anims"; @@ -20,7 +20,7 @@ export class TeraPhase extends BattlePhase { start() { super.start(); - globalScene.queueMessage(i18next.t("battle:pokemonTerastallized", { pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), type: i18next.t(`pokemonInfo:Type.${Type[this.pokemon.getTeraType()]}`) })); + globalScene.queueMessage(i18next.t("battle:pokemonTerastallized", { pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), type: i18next.t(`pokemonInfo:Type.${PokemonType[this.pokemon.getTeraType()]}`) })); new CommonBattleAnim(CommonAnim.TERASTALLIZE, this.pokemon).play(false, () => { this.end(); }); @@ -39,7 +39,7 @@ export class TeraPhase extends BattlePhase { if (this.pokemon.isPlayer()) { globalScene.validateAchv(achvs.TERASTALLIZE); - if (this.pokemon.getTeraType() === Type.STELLAR) { + if (this.pokemon.getTeraType() === PokemonType.STELLAR) { globalScene.validateAchv(achvs.STELLAR_TERASTALLIZE); } } diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts index c6d145e1a4c..0d924e9f48b 100644 --- a/src/phases/turn-start-phase.ts +++ b/src/phases/turn-start-phase.ts @@ -1,5 +1,5 @@ import { applyAbAttrs, BypassSpeedChanceAbAttr, PreventBypassSpeedChanceAbAttr } from "#app/data/ability"; -import { allMoves, MoveHeaderAttr } from "#app/data/move"; +import { allMoves, MoveHeaderAttr } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { Stat } from "#app/enums/stat"; import type Pokemon from "#app/field/pokemon"; diff --git a/src/system/game-data.ts b/src/system/game-data.ts index aefc583a98a..4f6cb0aed93 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -30,7 +30,7 @@ import { Nature } from "#enums/nature"; import { GameStats } from "#app/system/game-stats"; import { Tutorial } from "#app/tutorial"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { TrainerVariant } from "#app/field/trainer"; import type { Variant } from "#app/data/variant"; import { setSettingGamepad, SettingGamepad, settingGamepadDefaults } from "#app/system/settings/settings-gamepad"; @@ -56,7 +56,7 @@ import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { ArenaTrapTag } from "#app/data/arena-tag"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; -import type { Type } from "#enums/type"; +import type { PokemonType } from "#enums/pokemon-type"; export const defaultStarterSpecies: Species[] = [ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, @@ -231,7 +231,7 @@ export interface StarterAttributes { shiny?: boolean; favorite?: boolean; nickname?: string; - tera?: Type; + tera?: PokemonType; } export interface StarterPreferences { diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 20507860e4e..7531d74e404 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -13,7 +13,7 @@ import type { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import type { Species } from "#enums/species"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import type { Type } from "#app/enums/type"; +import type { PokemonType } from "#enums/pokemon-type"; export default class PokemonData { public id: number; @@ -46,9 +46,9 @@ export default class PokemonData { public pokerus: boolean; public usedTMs: Moves[]; public evoCounter: number; - public teraType: Type; + public teraType: PokemonType; public isTerastallized: boolean; - public stellarTypesBoosted: Type[]; + public stellarTypesBoosted: PokemonType[]; public fusionSpecies: Species; public fusionFormIndex: number; @@ -57,7 +57,7 @@ export default class PokemonData { public fusionVariant: Variant; public fusionGender: Gender; public fusionLuck: number; - public fusionTeraType: Type; + public fusionTeraType: PokemonType; public boss: boolean; public bossSegments?: number; @@ -108,7 +108,7 @@ export default class PokemonData { this.evoCounter = source.evoCounter ?? 0; } this.pokerus = !!source.pokerus; - this.teraType = source.teraType as Type; + this.teraType = source.teraType as PokemonType; this.isTerastallized = source.isTerastallized || false; this.stellarTypesBoosted = source.stellarTypesBoosted || []; @@ -120,7 +120,7 @@ export default class PokemonData { this.fusionGender = source.fusionGender; this.fusionLuck = source.fusionLuck !== undefined ? source.fusionLuck : (source.fusionShiny ? source.fusionVariant + 1 : 0); this.fusionCustomPokemonData = new CustomPokemonData(source.fusionCustomPokemonData); - this.fusionTeraType = (source.fusionTeraType ?? 0) as Type; + this.fusionTeraType = (source.fusionTeraType ?? 0) as PokemonType; this.usedTMs = source.usedTMs ?? []; this.customPokemonData = new CustomPokemonData(source.customPokemonData); diff --git a/src/ui/battle-flyout.ts b/src/ui/battle-flyout.ts index c716705452c..c26f853382e 100644 --- a/src/ui/battle-flyout.ts +++ b/src/ui/battle-flyout.ts @@ -2,7 +2,7 @@ import type { default as Pokemon } from "../field/pokemon"; import { addTextObject, TextStyle } from "./text"; import * as Utils from "../utils"; import { globalScene } from "#app/global-scene"; -import type Move from "#app/data/move"; +import type Move from "#app/data/moves/move"; import type { BerryUsedEvent, MoveUsedEvent } from "../events/battle-scene"; import { BattleSceneEventType } from "../events/battle-scene"; import { BerryType } from "#enums/berry-type"; diff --git a/src/ui/battle-info.ts b/src/ui/battle-info.ts index ab7f76daf0b..b866ec229d1 100644 --- a/src/ui/battle-info.ts +++ b/src/ui/battle-info.ts @@ -6,7 +6,7 @@ import { getGenderSymbol, getGenderColor, Gender } from "../data/gender"; import { StatusEffect } from "#enums/status-effect"; import { globalScene } from "#app/global-scene"; import { getTypeRgb } from "#app/data/type"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { getVariantTint } from "#app/data/variant"; import { Stat } from "#enums/stat"; import BattleFlyout from "./battle-flyout"; @@ -25,7 +25,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { private bossSegments: number; private offset: boolean; private lastName: string | null; - private lastTeraType: Type; + private lastTeraType: PokemonType; private lastStatus: StatusEffect; private lastHp: number; private lastMaxHp: number; @@ -84,7 +84,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.boss = false; this.offset = false; this.lastName = null; - this.lastTeraType = Type.UNKNOWN; + this.lastTeraType = PokemonType.UNKNOWN; this.lastStatus = StatusEffect.NONE; this.lastHp = -1; this.lastMaxHp = -1; @@ -327,7 +327,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.teraIcon.setVisible(pokemon.isTerastallized); this.teraIcon.on("pointerover", () => { if (pokemon.isTerastallized) { - globalScene.ui.showTooltip("", i18next.t("fightUiHandler:teraHover", { type: i18next.t(`pokemonInfo:Type.${Type[this.lastTeraType]}`) })); + globalScene.ui.showTooltip("", i18next.t("fightUiHandler:teraHover", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.lastTeraType]}`) })); } }); this.teraIcon.on("pointerout", () => globalScene.ui.hideTooltip()); @@ -410,14 +410,14 @@ export default class BattleInfo extends Phaser.GameObjects.Container { const types = pokemon.getTypes(true); this.type1Icon.setTexture(`pbinfo_${this.player ? "player" : "enemy"}_type${types.length > 1 ? "1" : ""}`); - this.type1Icon.setFrame(Type[types[0]].toLowerCase()); + this.type1Icon.setFrame(PokemonType[types[0]].toLowerCase()); this.type2Icon.setVisible(types.length > 1); this.type3Icon.setVisible(types.length > 2); if (types.length > 1) { - this.type2Icon.setFrame(Type[types[1]].toLowerCase()); + this.type2Icon.setFrame(PokemonType[types[1]].toLowerCase()); } if (types.length > 2) { - this.type3Icon.setFrame(Type[types[2]].toLowerCase()); + this.type3Icon.setFrame(PokemonType[types[2]].toLowerCase()); } if (this.player) { @@ -542,11 +542,11 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.genderText.setPositionRelative(this.nameText, this.nameText.displayWidth, 0); } - const teraType = pokemon.isTerastallized ? pokemon.getTeraType() : Type.UNKNOWN; + const teraType = pokemon.isTerastallized ? pokemon.getTeraType() : PokemonType.UNKNOWN; const teraTypeUpdated = this.lastTeraType !== teraType; if (teraTypeUpdated) { - this.teraIcon.setVisible(teraType !== Type.UNKNOWN); + this.teraIcon.setVisible(teraType !== PokemonType.UNKNOWN); this.teraIcon.setPositionRelative(this.nameText, this.nameText.displayWidth + this.genderText.displayWidth + 1, 2); this.teraIcon.setTintFill(Phaser.Display.Color.GetColor(...getTypeRgb(teraType))); this.lastTeraType = teraType; @@ -575,14 +575,14 @@ export default class BattleInfo extends Phaser.GameObjects.Container { const types = pokemon.getTypes(true); this.type1Icon.setTexture(`pbinfo_${this.player ? "player" : "enemy"}_type${types.length > 1 ? "1" : ""}`); - this.type1Icon.setFrame(Type[types[0]].toLowerCase()); + this.type1Icon.setFrame(PokemonType[types[0]].toLowerCase()); this.type2Icon.setVisible(types.length > 1); this.type3Icon.setVisible(types.length > 2); if (types.length > 1) { - this.type2Icon.setFrame(Type[types[1]].toLowerCase()); + this.type2Icon.setFrame(PokemonType[types[1]].toLowerCase()); } if (types.length > 2) { - this.type3Icon.setFrame(Type[types[2]].toLowerCase()); + this.type3Icon.setFrame(PokemonType[types[2]].toLowerCase()); } const updateHpFrame = () => { diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index 20cffbbe30a..0dd3602d205 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -8,7 +8,7 @@ import { getPokemonNameWithAffix } from "#app/messages"; import { CommandPhase } from "#app/phases/command-phase"; import { globalScene } from "#app/global-scene"; import { TerastallizeAccessModifier } from "#app/modifier/modifier"; -import { Type } from "#app/enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { getTypeRgb } from "#app/data/type"; import { Species } from "#enums/species"; @@ -51,7 +51,7 @@ export default class CommandUiHandler extends UiHandler { this.teraButton.setName("terrastallize-button"); this.teraButton.setScale(1.3); this.teraButton.setFrame("fire"); - this.teraButton.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true, teraColor: getTypeRgb(Type.FIRE), isTerastallized: false }); + this.teraButton.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true, teraColor: getTypeRgb(PokemonType.FIRE), isTerastallized: false }); this.commandsContainer.add(this.teraButton); for (let c = 0; c < commands.length; c++) { @@ -78,7 +78,7 @@ export default class CommandUiHandler extends UiHandler { if (this.canTera()) { this.teraButton.setVisible(true); - this.teraButton.setFrame(Type[globalScene.getField()[this.fieldIndex].getTeraType()].toLowerCase()); + this.teraButton.setFrame(PokemonType[globalScene.getField()[this.fieldIndex].getTeraType()].toLowerCase()); } else { this.teraButton.setVisible(false); if (this.cursor === Command.TERA) { diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 8e8b197117c..2b1eaa8221e 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -2,12 +2,12 @@ import type { InfoToggle } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; import { addTextObject, TextStyle } from "./text"; import { getTypeDamageMultiplierColor } from "#app/data/type"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Command } from "./command-ui-handler"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import * as Utils from "../utils"; -import { MoveCategory } from "#app/data/move"; +import { MoveCategory } from "#enums/MoveCategory"; import i18next from "i18next"; import { Button } from "#enums/buttons"; import type { PokemonMove } from "#app/field/pokemon"; @@ -241,7 +241,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { const pokemonMove = moveset[cursor]!; // TODO: is the bang correct? const moveType = pokemon.getMoveType(pokemonMove.getMove()); const textureKey = Utils.getLocalizedSpriteKey("types"); - this.typeIcon.setTexture(textureKey, Type[moveType].toLowerCase()).setScale(0.8); + this.typeIcon.setTexture(textureKey, PokemonType[moveType].toLowerCase()).setScale(0.8); const moveCategory = pokemonMove.getMove().category; this.moveCategoryIcon.setTexture("categories", MoveCategory[moveCategory].toLowerCase()).setScale(1.0); diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index 76d02c191bb..7942a160a85 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -9,7 +9,7 @@ import { LockModifierTiersModifier, PokemonHeldItemModifier, HealShopCostModifie import { handleTutorial, Tutorial } from "../tutorial"; import { Button } from "#enums/buttons"; import MoveInfoOverlay from "./move-info-overlay"; -import { allMoves } from "../data/move"; +import { allMoves } from "../data/moves/move"; import * as Utils from "./../utils"; import Overrides from "#app/overrides"; import i18next from "i18next"; diff --git a/src/ui/move-info-overlay.ts b/src/ui/move-info-overlay.ts index 5b3b30b14dd..1b49c2dd3c3 100644 --- a/src/ui/move-info-overlay.ts +++ b/src/ui/move-info-overlay.ts @@ -3,9 +3,9 @@ import { globalScene } from "#app/global-scene"; import { TextStyle, addTextObject } from "./text"; import { addWindow } from "./ui-theme"; import * as Utils from "../utils"; -import type Move from "../data/move"; -import { MoveCategory } from "../data/move"; -import { Type } from "#enums/type"; +import type Move from "../data/moves/move"; +import { MoveCategory } from "#enums/MoveCategory"; +import { PokemonType } from "#enums/pokemon-type"; import i18next from "i18next"; export interface MoveInfoOverlaySettings { @@ -153,7 +153,7 @@ export default class MoveInfoOverlay extends Phaser.GameObjects.Container implem this.pow.setText(move.power >= 0 ? move.power.toString() : "---"); this.acc.setText(move.accuracy >= 0 ? move.accuracy.toString() : "---"); this.pp.setText(move.pp >= 0 ? move.pp.toString() : "---"); - this.typ.setTexture(Utils.getLocalizedSpriteKey("types"), Type[move.type].toLowerCase()); + this.typ.setTexture(Utils.getLocalizedSpriteKey("types"), PokemonType[move.type].toLowerCase()); this.cat.setFrame(MoveCategory[move.category].toLowerCase()); this.desc.setText(move?.effect || ""); diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 0af94053ceb..19b2b78e22f 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -7,7 +7,7 @@ import MessageUiHandler from "#app/ui/message-ui-handler"; import { Mode } from "#app/ui/ui"; import * as Utils from "#app/utils"; import { PokemonFormChangeItemModifier, PokemonHeldItemModifier, SwitchEffectTransferModifier } from "#app/modifier/modifier"; -import { allMoves, ForceSwitchOutAttr } from "#app/data/move"; +import { allMoves, ForceSwitchOutAttr } from "#app/data/moves/move"; import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; import { StatusEffect } from "#enums/status-effect"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index eee900d411e..6b6c2c89933 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -9,7 +9,7 @@ import { allAbilities } from "#app/data/ability"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate, getGrowthRateColor } from "#app/data/exp"; import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { getNatureName } from "#app/data/nature"; import type { SpeciesFormChange } from "#app/data/pokemon-forms"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; @@ -19,7 +19,7 @@ import type PokemonSpecies from "#app/data/pokemon-species"; import { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, normalForm } from "#app/data/pokemon-species"; import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; import { starterPassiveAbilities } from "#app/data/balance/passives"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { GameModes } from "#app/game-mode"; import type { DexEntry, StarterAttributes } from "#app/system/game-data"; import { AbilityAttr, DexAttr } from "#app/system/game-data"; @@ -2376,16 +2376,16 @@ export default class PokedexPageUiHandler extends MessageUiHandler { this.updateInstructions(); } - setTypeIcons(type1: Type | null, type2: Type | null): void { + setTypeIcons(type1: PokemonType | null, type2: PokemonType | null): void { if (type1 !== null) { this.type1Icon.setVisible(true); - this.type1Icon.setFrame(Type[type1].toLowerCase()); + this.type1Icon.setFrame(PokemonType[type1].toLowerCase()); } else { this.type1Icon.setVisible(false); } if (type2 !== null) { this.type2Icon.setVisible(true); - this.type2Icon.setFrame(Type[type2].toLowerCase()); + this.type2Icon.setFrame(PokemonType[type2].toLowerCase()); } else { this.type2Icon.setVisible(false); } diff --git a/src/ui/pokedex-scan-ui-handler.ts b/src/ui/pokedex-scan-ui-handler.ts index 3920c866486..a0a430018ff 100644 --- a/src/ui/pokedex-scan-ui-handler.ts +++ b/src/ui/pokedex-scan-ui-handler.ts @@ -7,7 +7,7 @@ import { isNullOrUndefined } from "#app/utils"; import { Mode } from "./ui"; import { FilterTextRow } from "./filter-text"; import { allAbilities } from "#app/data/ability"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { allSpecies } from "#app/data/pokemon-species"; import i18next from "i18next"; diff --git a/src/ui/pokedex-ui-handler.ts b/src/ui/pokedex-ui-handler.ts index 83739ba26a8..85bc0ee40f6 100644 --- a/src/ui/pokedex-ui-handler.ts +++ b/src/ui/pokedex-ui-handler.ts @@ -10,7 +10,7 @@ import type PokemonSpecies from "#app/data/pokemon-species"; import { allSpecies, getPokemonSpeciesForm, getPokerusStarters, normalForm } from "#app/data/pokemon-species"; import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; import { catchableSpecies } from "#app/data/balance/biomes"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import type { DexAttrProps, DexEntry, StarterAttributes, StarterPreferences } from "#app/system/game-data"; import { AbilityAttr, DexAttr, StarterPrefs } from "#app/system/game-data"; import MessageUiHandler from "#app/ui/message-ui-handler"; @@ -35,7 +35,7 @@ import { FilterText, FilterTextRow } from "./filter-text"; import { allAbilities } from "#app/data/ability"; import type { PassiveAbilities } from "#app/data/balance/passives"; import { starterPassiveAbilities } from "#app/data/balance/passives"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { speciesTmMoves } from "#app/data/balance/tms"; import { pokemonStarters } from "#app/data/balance/pokemon-evolutions"; import { Biome } from "#enums/biome"; @@ -287,7 +287,7 @@ export default class PokedexUiHandler extends MessageUiHandler { this.filterBar.addFilter(DropDownColumn.GEN, i18next.t("filterBar:genFilter"), genDropDown); // type filter - const typeKeys = Object.keys(Type).filter(v => isNaN(Number(v))); + const typeKeys = Object.keys(PokemonType).filter(v => isNaN(Number(v))); const typeOptions: DropDownOption[] = []; typeKeys.forEach((type, index) => { if (index === 0 || index === 19) { @@ -2032,16 +2032,16 @@ export default class PokedexUiHandler extends MessageUiHandler { } - setTypeIcons(type1: Type | null, type2: Type | null): void { + setTypeIcons(type1: PokemonType | null, type2: PokemonType | null): void { if (type1 !== null) { this.type1Icon.setVisible(true); - this.type1Icon.setFrame(Type[type1].toLowerCase()); + this.type1Icon.setFrame(PokemonType[type1].toLowerCase()); } else { this.type1Icon.setVisible(false); } if (type2 !== null) { this.type2Icon.setVisible(true); - this.type2Icon.setFrame(Type[type2].toLowerCase()); + this.type2Icon.setFrame(PokemonType[type2].toLowerCase()); } else { this.type2Icon.setVisible(false); } diff --git a/src/ui/pokemon-hatch-info-container.ts b/src/ui/pokemon-hatch-info-container.ts index a9b8e260b34..eb0e0ed909b 100644 --- a/src/ui/pokemon-hatch-info-container.ts +++ b/src/ui/pokemon-hatch-info-container.ts @@ -1,10 +1,10 @@ import PokemonInfoContainer from "#app/ui/pokemon-info-container"; import { Gender } from "#app/data/gender"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import * as Utils from "#app/utils"; import { TextStyle, addTextObject } from "#app/ui/text"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Species } from "#enums/species"; import { getEggTierForSpecies } from "#app/data/egg"; import { starterColors } from "#app/battle-scene"; @@ -167,7 +167,7 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { for (let em = 0; em < 4; em++) { const eggMove = hasEggMoves ? allMoves[speciesEggMoves[species.speciesId][em]] : null; const eggMoveUnlocked = eggMove && globalScene.gameData.starterData[species.speciesId].eggMoves & Math.pow(2, em); - this.pokemonEggMoveBgs[em].setFrame(Type[eggMove ? eggMove.type : Type.UNKNOWN].toString().toLowerCase()); + this.pokemonEggMoveBgs[em].setFrame(PokemonType[eggMove ? eggMove.type : PokemonType.UNKNOWN].toString().toLowerCase()); this.pokemonEggMoveLabels[em].setText(eggMove && eggMoveUnlocked ? eggMove.name : "???"); if (!(eggMove && hatchInfo.starterDataEntryBeforeUpdate.eggMoves & Math.pow(2, em)) && eggMoveUnlocked) { diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index eda5ac3f580..7e2932fecf9 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -3,7 +3,7 @@ import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { globalScene } from "#app/global-scene"; import { Gender, getGenderColor, getGenderSymbol } from "../data/gender"; import { getNatureName } from "../data/nature"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import type Pokemon from "../field/pokemon"; import i18next from "i18next"; import type { DexEntry, StarterDataEntry } from "../system/game-data"; @@ -342,7 +342,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { for (let m = 0; m < 4; m++) { const move = m < pokemon.moveset.length && pokemon.moveset[m] ? pokemon.moveset[m]!.getMove() : null; - this.pokemonMoveBgs[m].setFrame(Type[move ? move.type : Type.UNKNOWN].toString().toLowerCase()); + this.pokemonMoveBgs[m].setFrame(PokemonType[move ? move.type : PokemonType.UNKNOWN].toString().toLowerCase()); this.pokemonMoveLabels[m].setText(move ? move.name : "-"); this.pokemonMovesContainers[m].setVisible(!!move); } diff --git a/src/ui/run-info-ui-handler.ts b/src/ui/run-info-ui-handler.ts index f1fe9ac8194..3b4a0e3d335 100644 --- a/src/ui/run-info-ui-handler.ts +++ b/src/ui/run-info-ui-handler.ts @@ -15,7 +15,7 @@ import { Challenges } from "#enums/challenges"; import { getLuckString, getLuckTextTint } from "../modifier/modifier-type"; import RoundRectangle from "phaser3-rex-plugins/plugins/roundrectangle"; import { getTypeRgb } from "#app/data/type"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { TypeColor, TypeShadow } from "#app/enums/color"; import { getNatureStatMultiplier, getNatureName } from "../data/nature"; import { getVariantTint } from "#app/data/variant"; @@ -569,7 +569,7 @@ export default class RunInfoUiHandler extends UiHandler { rules.push(i18next.t(`runHistory:challengeMonoGen${this.runInfo.challenges[i].value}`)); break; case Challenges.SINGLE_TYPE: - const typeRule = Type[this.runInfo.challenges[i].value - 1]; + const typeRule = PokemonType[this.runInfo.challenges[i].value - 1]; const typeTextColor = `[color=${TypeColor[typeRule]}]`; const typeShadowColor = `[shadow=${TypeShadow[typeRule]}]`; const typeText = typeTextColor + typeShadowColor + i18next.t(`pokemonInfo:Type.${typeRule}`)! + "[/color]" + "[/shadow]"; @@ -726,7 +726,7 @@ export default class RunInfoUiHandler extends UiHandler { moveContainer.add(moveLabel); movesetContainer.add(moveContainer); const move = pokemonMoveset[m]?.getMove(); - pokemonMoveBgs[m].setFrame(Type[move ? move.type : Type.UNKNOWN].toString().toLowerCase()); + pokemonMoveBgs[m].setFrame(PokemonType[move ? move.type : PokemonType.UNKNOWN].toString().toLowerCase()); pokemonMoveLabels[m].setText(move ? move.name : "-"); } diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 34a29411de4..c2ed625f7e8 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -13,7 +13,7 @@ import { allAbilities } from "#app/data/ability"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate, getGrowthRateColor } from "#app/data/exp"; import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { getNatureName } from "#app/data/nature"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; @@ -21,7 +21,7 @@ import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balan import type PokemonSpecies from "#app/data/pokemon-species"; import { allSpecies, getPokemonSpeciesForm, getPokerusStarters } from "#app/data/pokemon-species"; import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { GameModes } from "#app/game-mode"; import type { DexAttrProps, DexEntry, StarterMoveset, StarterAttributes, StarterPreferences } from "#app/system/game-data"; import { AbilityAttr, DexAttr, StarterPrefs } from "#app/system/game-data"; @@ -71,7 +71,7 @@ export interface Starter { moveset?: StarterMoveset; pokerus: boolean; nickname?: string; - teraType?: Type; + teraType?: PokemonType; } interface LanguageSetting { @@ -216,7 +216,7 @@ interface SpeciesDetails { abilityIndex?: number, natureIndex?: number, forSeen?: boolean, // default = false - teraType?: Type, + teraType?: PokemonType, } export default class StarterSelectUiHandler extends MessageUiHandler { @@ -300,7 +300,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private dexAttrCursor: bigint = 0n; private abilityCursor: number = -1; private natureCursor: number = -1; - private teraCursor: Type = Type.UNKNOWN; + private teraCursor: PokemonType = PokemonType.UNKNOWN; private filterBarCursor: number = 0; private starterMoveset: StarterMoveset | null; private scrollCursor: number; @@ -313,7 +313,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private starterAttr: bigint[] = []; private starterAbilityIndexes: number[] = []; private starterNatures: Nature[] = []; - private starterTeras: Type[] = []; + private starterTeras: PokemonType[] = []; private starterMovesets: StarterMoveset[] = []; private speciesStarterDexEntry: DexEntry | null; private speciesStarterMoves: Moves[]; @@ -406,7 +406,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.filterBar.addFilter(DropDownColumn.GEN, i18next.t("filterBar:genFilter"), genDropDown); // type filter - const typeKeys = Object.keys(Type).filter(v => isNaN(Number(v))); + const typeKeys = Object.keys(PokemonType).filter(v => isNaN(Number(v))); const typeOptions: DropDownOption[] = []; typeKeys.forEach((type, index) => { if (index === 0 || index === 19) { @@ -2334,7 +2334,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { return [ isDupe, removeIndex ]; } - addToParty(species: PokemonSpecies, dexAttr: bigint, abilityIndex: number, nature: Nature, moveset: StarterMoveset, teraType: Type, randomSelection: boolean = false) { + addToParty(species: PokemonSpecies, dexAttr: bigint, abilityIndex: number, nature: Nature, moveset: StarterMoveset, teraType: PokemonType, randomSelection: boolean = false) { const props = globalScene.gameData.getSpeciesDexAttrProps(species, dexAttr); this.starterIcons[this.starterSpecies.length].setTexture(species.getIconAtlasKey(props.formIndex, props.shiny, props.variant)); this.starterIcons[this.starterSpecies.length].setFrame(species.getIconId(props.female, props.formIndex, props.shiny, props.variant)); @@ -2928,7 +2928,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.dexAttrCursor = species ? this.getCurrentDexProps(species.speciesId) : 0n; this.abilityCursor = species ? globalScene.gameData.getStarterSpeciesDefaultAbilityIndex(species) : 0; this.natureCursor = species ? globalScene.gameData.getSpeciesDefaultNature(species) : 0; - this.teraCursor = species ? species.type1 : Type.UNKNOWN; + this.teraCursor = species ? species.type1 : PokemonType.UNKNOWN; if (!species && globalScene.ui.getTooltip().visible) { globalScene.ui.hideTooltip(); @@ -3199,7 +3199,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.dexAttrCursor = 0n; this.abilityCursor = -1; this.natureCursor = -1; - this.teraCursor = Type.UNKNOWN; + this.teraCursor = PokemonType.UNKNOWN; // We will only update the sprite if there is a change to form, shiny/variant // or gender for species with gender sprite differences const shouldUpdateSprite = (species?.genderDiffs && !isNullOrUndefined(female)) @@ -3483,7 +3483,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.setTypeIcons(speciesForm.type1, speciesForm.type2); - this.teraIcon.setFrame(Type[this.teraCursor].toLowerCase()); + this.teraIcon.setFrame(PokemonType[this.teraCursor].toLowerCase()); this.teraIcon.setVisible(!this.statsMode && globalScene.gameData.achvUnlocks.hasOwnProperty(achvs.TERASTALLIZE.id)); } else { this.pokemonAbilityText.setText(""); @@ -3510,7 +3510,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { for (let m = 0; m < 4; m++) { const move = m < this.starterMoveset.length ? allMoves[this.starterMoveset[m]] : null; - this.pokemonMoveBgs[m].setFrame(Type[move ? move.type : Type.UNKNOWN].toString().toLowerCase()); + this.pokemonMoveBgs[m].setFrame(PokemonType[move ? move.type : PokemonType.UNKNOWN].toString().toLowerCase()); this.pokemonMoveLabels[m].setText(move ? move.name : "-"); this.pokemonMoveContainers[m].setVisible(!!move); } @@ -3520,7 +3520,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { for (let em = 0; em < 4; em++) { const eggMove = hasEggMoves ? allMoves[speciesEggMoves[species.speciesId][em]] : null; const eggMoveUnlocked = eggMove && globalScene.gameData.starterData[species.speciesId].eggMoves & (1 << em); - this.pokemonEggMoveBgs[em].setFrame(Type[eggMove ? eggMove.type : Type.UNKNOWN].toString().toLowerCase()); + this.pokemonEggMoveBgs[em].setFrame(PokemonType[eggMove ? eggMove.type : PokemonType.UNKNOWN].toString().toLowerCase()); this.pokemonEggMoveLabels[em].setText(eggMove && eggMoveUnlocked ? eggMove.name : "???"); } @@ -3534,16 +3534,16 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.updateInstructions(); } - setTypeIcons(type1: Type | null, type2: Type | null): void { + setTypeIcons(type1: PokemonType | null, type2: PokemonType | null): void { if (type1 !== null) { this.type1Icon.setVisible(true); - this.type1Icon.setFrame(Type[type1].toLowerCase()); + this.type1Icon.setFrame(PokemonType[type1].toLowerCase()); } else { this.type1Icon.setVisible(false); } if (type2 !== null) { this.type2Icon.setVisible(true); - this.type2Icon.setFrame(Type[type2].toLowerCase()); + this.type2Icon.setFrame(PokemonType[type2].toLowerCase()); } else { this.type2Icon.setVisible(false); } @@ -3766,7 +3766,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { abilityIndex: thisObj.starterAbilityIndexes[i], passive: !(globalScene.gameData.starterData[starterSpecies.speciesId].passiveAttr ^ (PassiveAttr.ENABLED | PassiveAttr.UNLOCKED)), nature: thisObj.starterNatures[i] as Nature, - teraType: thisObj.starterTeras[i] as Type, + teraType: thisObj.starterTeras[i] as PokemonType, moveset: thisObj.starterMovesets[i], pokerus: thisObj.pokerusSpecies.includes(starterSpecies), nickname: thisObj.starterPreferences[starterSpecies.speciesId]?.nickname, diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index 31dee6bb46c..465f1e2c8ec 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -7,10 +7,10 @@ import type { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; import { argbFromRgba } from "@material/material-color-utilities"; import { getTypeRgb } from "#app/data/type"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { TextStyle, addBBCodeTextObject, addTextObject, getBBCodeFrag } from "#app/ui/text"; -import type Move from "#app/data/move"; -import { MoveCategory } from "#app/data/move"; +import type Move from "#app/data/moves/move"; +import { MoveCategory } from "#enums/MoveCategory"; import { getPokeballAtlasKey } from "#app/data/pokeball"; import { getGenderColor, getGenderSymbol } from "#app/data/gender"; import { getLevelRelExp, getLevelTotalExp } from "#app/data/exp"; @@ -765,10 +765,10 @@ export default class SummaryUiHandler extends UiHandler { typeLabel.setOrigin(0, 0); profileContainer.add(typeLabel); - const getTypeIcon = (index: number, type: Type, tera: boolean = false) => { + const getTypeIcon = (index: number, type: PokemonType, tera: boolean = false) => { const xCoord = typeLabel.width * typeLabel.scale + 9 + 34 * index; const typeIcon = !tera - ? globalScene.add.sprite(xCoord, 42, Utils.getLocalizedSpriteKey("types"), Type[type].toLowerCase()) + ? globalScene.add.sprite(xCoord, 42, Utils.getLocalizedSpriteKey("types"), PokemonType[type].toLowerCase()) : globalScene.add.sprite(xCoord, 42, "type_tera"); if (tera) { typeIcon.setScale(0.5); @@ -799,7 +799,7 @@ export default class SummaryUiHandler extends UiHandler { if (globalScene.gameData.achvUnlocks.hasOwnProperty(achvs.TERASTALLIZE.id) && !Utils.isNullOrUndefined(this.pokemon)) { const teraIcon = globalScene.add.sprite(123, 26, "button_tera"); teraIcon.setName("terrastallize-icon"); - teraIcon.setFrame(Type[this.pokemon.getTeraType()].toLowerCase()); + teraIcon.setFrame(PokemonType[this.pokemon.getTeraType()].toLowerCase()); profileContainer.add(teraIcon); } @@ -1010,7 +1010,7 @@ export default class SummaryUiHandler extends UiHandler { if (this.newMove && this.pokemon) { const spriteKey = Utils.getLocalizedSpriteKey("types"); const moveType = this.pokemon.getMoveType(this.newMove); - const newMoveTypeIcon = globalScene.add.sprite(0, 0, spriteKey, Type[moveType].toLowerCase()); + const newMoveTypeIcon = globalScene.add.sprite(0, 0, spriteKey, PokemonType[moveType].toLowerCase()); newMoveTypeIcon.setOrigin(0, 1); this.extraMoveRowContainer.add(newMoveTypeIcon); } @@ -1035,7 +1035,7 @@ export default class SummaryUiHandler extends UiHandler { if (move && this.pokemon) { const spriteKey = Utils.getLocalizedSpriteKey("types"); const moveType = this.pokemon.getMoveType(move.getMove()); - const typeIcon = globalScene.add.sprite(0, 0, spriteKey, Type[moveType].toLowerCase()); + const typeIcon = globalScene.add.sprite(0, 0, spriteKey, PokemonType[moveType].toLowerCase()); typeIcon.setOrigin(0, 1); moveRowContainer.add(typeIcon); } diff --git a/src/ui/target-select-ui-handler.ts b/src/ui/target-select-ui-handler.ts index 681c5ff40c0..1f2e4955081 100644 --- a/src/ui/target-select-ui-handler.ts +++ b/src/ui/target-select-ui-handler.ts @@ -2,7 +2,7 @@ import { BattlerIndex } from "../battle"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import * as Utils from "../utils"; -import { getMoveTargets } from "../data/move"; +import { getMoveTargets } from "../data/moves/move"; import { Button } from "#enums/buttons"; import type { Moves } from "#enums/moves"; import type Pokemon from "#app/field/pokemon"; diff --git a/test/abilities/aura_break.test.ts b/test/abilities/aura_break.test.ts index 230835a887e..017bb2cea06 100644 --- a/test/abilities/aura_break.test.ts +++ b/test/abilities/aura_break.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/abilities/battery.test.ts b/test/abilities/battery.test.ts index b82ffaeea7b..7ce37f472f0 100644 --- a/test/abilities/battery.test.ts +++ b/test/abilities/battery.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; diff --git a/test/abilities/battle_bond.test.ts b/test/abilities/battle_bond.test.ts index 38d25fa3800..b2ba9ceedd9 100644 --- a/test/abilities/battle_bond.test.ts +++ b/test/abilities/battle_bond.test.ts @@ -1,4 +1,5 @@ -import { allMoves, MultiHitAttr, MultiHitType } from "#app/data/move"; +import { allMoves, MultiHitAttr } from "#app/data/moves/move"; +import { MultiHitType } from "#enums/MultiHitType"; import { Status } from "#app/data/status-effect"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/abilities/friend_guard.test.ts b/test/abilities/friend_guard.test.ts index 986bd8e7925..8cb7b0233c2 100644 --- a/test/abilities/friend_guard.test.ts +++ b/test/abilities/friend_guard.test.ts @@ -6,7 +6,8 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { BattlerIndex } from "#app/battle"; import { allAbilities } from "#app/data/ability"; -import { allMoves, MoveCategory } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; +import { MoveCategory } from "#enums/MoveCategory"; describe("Moves - Friend Guard", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/galvanize.test.ts b/test/abilities/galvanize.test.ts index f0230be3b31..9ba57c296d9 100644 --- a/test/abilities/galvanize.test.ts +++ b/test/abilities/galvanize.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; -import { Type } from "#enums/type"; +import { allMoves } from "#app/data/moves/move"; +import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; @@ -54,7 +54,7 @@ describe("Abilities - Galvanize", () => { await game.phaseInterceptor.to("BerryPhase", false); - expect(playerPokemon.getMoveType).toHaveLastReturnedWith(Type.ELECTRIC); + expect(playerPokemon.getMoveType).toHaveLastReturnedWith(PokemonType.ELECTRIC); expect(enemyPokemon.apply).toHaveReturnedWith(HitResult.EFFECTIVE); expect(move.calculateBattlePower).toHaveReturnedWith(48); expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); @@ -77,7 +77,7 @@ describe("Abilities - Galvanize", () => { await game.phaseInterceptor.to("BerryPhase", false); - expect(playerPokemon.getMoveType).toHaveLastReturnedWith(Type.ELECTRIC); + expect(playerPokemon.getMoveType).toHaveLastReturnedWith(PokemonType.ELECTRIC); expect(enemyPokemon.apply).toHaveReturnedWith(HitResult.NO_EFFECT); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); }); @@ -96,7 +96,7 @@ describe("Abilities - Galvanize", () => { game.move.select(Moves.REVELATION_DANCE); await game.phaseInterceptor.to("BerryPhase", false); - expect(playerPokemon.getMoveType).not.toHaveLastReturnedWith(Type.ELECTRIC); + expect(playerPokemon.getMoveType).not.toHaveLastReturnedWith(PokemonType.ELECTRIC); expect(enemyPokemon.apply).toHaveReturnedWith(HitResult.NO_EFFECT); expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); }); @@ -122,7 +122,7 @@ describe("Abilities - Galvanize", () => { const enemyStartingHp = enemyPokemon.hp; await game.phaseInterceptor.to("MoveEffectPhase"); - expect(playerPokemon.getMoveType).toHaveLastReturnedWith(Type.ELECTRIC); + expect(playerPokemon.getMoveType).toHaveLastReturnedWith(PokemonType.ELECTRIC); expect(enemyPokemon.hp).toBeLessThan(enemyStartingHp); } diff --git a/test/abilities/hustle.test.ts b/test/abilities/hustle.test.ts index c92bc5cbbd3..669e73961e3 100644 --- a/test/abilities/hustle.test.ts +++ b/test/abilities/hustle.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { Stat } from "#app/enums/stat"; import { Moves } from "#enums/moves"; diff --git a/test/abilities/infiltrator.test.ts b/test/abilities/infiltrator.test.ts index c614bbe4474..35fa816b88b 100644 --- a/test/abilities/infiltrator.test.ts +++ b/test/abilities/infiltrator.test.ts @@ -1,5 +1,5 @@ import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Stat } from "#enums/stat"; diff --git a/test/abilities/libero.test.ts b/test/abilities/libero.test.ts index 46093019daa..d36422ade4a 100644 --- a/test/abilities/libero.test.ts +++ b/test/abilities/libero.test.ts @@ -1,5 +1,5 @@ -import { allMoves } from "#app/data/move"; -import { Type } from "#enums/type"; +import { allMoves } from "#app/data/moves/move"; +import { PokemonType } from "#enums/pokemon-type"; import { Weather } from "#app/data/weather"; import type { PlayerPokemon } from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; @@ -74,8 +74,8 @@ describe("Abilities - Libero", () => { await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.summonData.abilitiesApplied.filter((a) => a === Abilities.LIBERO)).toHaveLength(1); - const leadPokemonType = Type[leadPokemon.getTypes()[0]]; - const moveType = Type[allMoves[Moves.AGILITY].type]; + const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]]; + const moveType = PokemonType[allMoves[Moves.AGILITY].type]; expect(leadPokemonType).not.toBe(moveType); await game.toNextTurn(); @@ -110,8 +110,8 @@ describe("Abilities - Libero", () => { expect(leadPokemon.summonData.abilitiesApplied).toContain(Abilities.LIBERO); expect(leadPokemon.getTypes()).toHaveLength(1); - const leadPokemonType = Type[leadPokemon.getTypes()[0]], - moveType = Type[Type.FIRE]; + const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], + moveType = PokemonType[PokemonType.FIRE]; expect(leadPokemonType).toBe(moveType); }, ); @@ -132,8 +132,8 @@ describe("Abilities - Libero", () => { expect(leadPokemon.summonData.abilitiesApplied).toContain(Abilities.LIBERO); expect(leadPokemon.getTypes()).toHaveLength(1); - const leadPokemonType = Type[leadPokemon.getTypes()[0]], - moveType = Type[Type.ICE]; + const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], + moveType = PokemonType[PokemonType.ICE]; expect(leadPokemonType).toBe(moveType); }, ); @@ -341,7 +341,7 @@ describe("Abilities - Libero", () => { function testPokemonTypeMatchesDefaultMoveType(pokemon: PlayerPokemon, move: Moves) { expect(pokemon.summonData.abilitiesApplied).toContain(Abilities.LIBERO); expect(pokemon.getTypes()).toHaveLength(1); - const pokemonType = Type[pokemon.getTypes()[0]], - moveType = Type[allMoves[move].type]; + const pokemonType = PokemonType[pokemon.getTypes()[0]], + moveType = PokemonType[allMoves[move].type]; expect(pokemonType).toBe(moveType); } diff --git a/test/abilities/magic_bounce.test.ts b/test/abilities/magic_bounce.test.ts index 9bb7b55bc72..398d0d530e1 100644 --- a/test/abilities/magic_bounce.test.ts +++ b/test/abilities/magic_bounce.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { allAbilities } from "#app/data/ability"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Stat } from "#app/enums/stat"; diff --git a/test/abilities/mimicry.test.ts b/test/abilities/mimicry.test.ts index 75990c89707..63f8bb5b15e 100644 --- a/test/abilities/mimicry.test.ts +++ b/test/abilities/mimicry.test.ts @@ -1,7 +1,7 @@ import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,12 +38,12 @@ describe("Abilities - Mimicry", () => { const [ playerPokemon1, playerPokemon2 ] = game.scene.getPlayerParty(); game.move.select(Moves.SPLASH); await game.toNextTurn(); - expect(playerPokemon1.getTypes().includes(Type.FAIRY)).toBe(true); + expect(playerPokemon1.getTypes().includes(PokemonType.FAIRY)).toBe(true); game.doSwitchPokemon(1); await game.toNextTurn(); - expect(playerPokemon2.getTypes().includes(Type.FAIRY)).toBe(true); + expect(playerPokemon2.getTypes().includes(PokemonType.FAIRY)).toBe(true); }); it("Pokemon should revert back to its original, root type once terrain ends", async () => { @@ -57,7 +57,7 @@ describe("Abilities - Mimicry", () => { game.move.select(Moves.TRANSFORM); await game.forceEnemyMove(Moves.PSYCHIC_TERRAIN); await game.toNextTurn(); - expect(playerPokemon?.getTypes().includes(Type.PSYCHIC)).toBe(true); + expect(playerPokemon?.getTypes().includes(PokemonType.PSYCHIC)).toBe(true); if (game.scene.arena.terrain) { game.scene.arena.terrain.turnsLeft = 1; @@ -66,7 +66,7 @@ describe("Abilities - Mimicry", () => { game.move.select(Moves.SPLASH); await game.forceEnemyMove(Moves.SPLASH); await game.toNextTurn(); - expect(playerPokemon?.getTypes().includes(Type.ELECTRIC)).toBe(true); + expect(playerPokemon?.getTypes().includes(PokemonType.ELECTRIC)).toBe(true); }); it("If the Pokemon is under the effect of a type-adding move and an equivalent terrain activates, the move's effect disappears", async () => { @@ -79,13 +79,13 @@ describe("Abilities - Mimicry", () => { await game.forceEnemyMove(Moves.FORESTS_CURSE); await game.toNextTurn(); - expect(playerPokemon?.summonData.addedType).toBe(Type.GRASS); + expect(playerPokemon?.summonData.addedType).toBe(PokemonType.GRASS); game.move.select(Moves.SPLASH); await game.forceEnemyMove(Moves.GRASSY_TERRAIN); await game.phaseInterceptor.to("TurnEndPhase"); expect(playerPokemon?.summonData.addedType).toBeNull(); - expect(playerPokemon?.getTypes().includes(Type.GRASS)).toBe(true); + expect(playerPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); }); }); diff --git a/test/abilities/parental_bond.test.ts b/test/abilities/parental_bond.test.ts index d22c5615df2..55dc39bfbbd 100644 --- a/test/abilities/parental_bond.test.ts +++ b/test/abilities/parental_bond.test.ts @@ -1,4 +1,4 @@ -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { toDmgValue } from "#app/utils"; import { Abilities } from "#enums/abilities"; @@ -265,11 +265,11 @@ describe("Abilities - Parental Bond", () => { expect(leadPokemon.turnData.hitCount).toBe(2); expect(enemyPokemon.hp).toBeGreaterThan(0); - expect(leadPokemon.isOfType(Type.FIRE)).toBe(true); + expect(leadPokemon.isOfType(PokemonType.FIRE)).toBe(true); await game.phaseInterceptor.to("BerryPhase", false); - expect(leadPokemon.isOfType(Type.FIRE)).toBe(false); + expect(leadPokemon.isOfType(PokemonType.FIRE)).toBe(false); } ); diff --git a/test/abilities/power_spot.test.ts b/test/abilities/power_spot.test.ts index dbc3799d48d..d4035da33d9 100644 --- a/test/abilities/power_spot.test.ts +++ b/test/abilities/power_spot.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; diff --git a/test/abilities/protean.test.ts b/test/abilities/protean.test.ts index a20fa61d75f..6c200f757e9 100644 --- a/test/abilities/protean.test.ts +++ b/test/abilities/protean.test.ts @@ -1,5 +1,5 @@ -import { allMoves } from "#app/data/move"; -import { Type } from "#enums/type"; +import { allMoves } from "#app/data/moves/move"; +import { PokemonType } from "#enums/pokemon-type"; import { Weather } from "#app/data/weather"; import type { PlayerPokemon } from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; @@ -74,8 +74,8 @@ describe("Abilities - Protean", () => { await game.phaseInterceptor.to(TurnEndPhase); expect(leadPokemon.summonData.abilitiesApplied.filter((a) => a === Abilities.PROTEAN)).toHaveLength(1); - const leadPokemonType = Type[leadPokemon.getTypes()[0]]; - const moveType = Type[allMoves[Moves.AGILITY].type]; + const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]]; + const moveType = PokemonType[allMoves[Moves.AGILITY].type]; expect(leadPokemonType).not.toBe(moveType); await game.toNextTurn(); @@ -110,8 +110,8 @@ describe("Abilities - Protean", () => { expect(leadPokemon.summonData.abilitiesApplied).toContain(Abilities.PROTEAN); expect(leadPokemon.getTypes()).toHaveLength(1); - const leadPokemonType = Type[leadPokemon.getTypes()[0]], - moveType = Type[Type.FIRE]; + const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], + moveType = PokemonType[PokemonType.FIRE]; expect(leadPokemonType).toBe(moveType); }, ); @@ -132,8 +132,8 @@ describe("Abilities - Protean", () => { expect(leadPokemon.summonData.abilitiesApplied).toContain(Abilities.PROTEAN); expect(leadPokemon.getTypes()).toHaveLength(1); - const leadPokemonType = Type[leadPokemon.getTypes()[0]], - moveType = Type[Type.ICE]; + const leadPokemonType = PokemonType[leadPokemon.getTypes()[0]], + moveType = PokemonType[PokemonType.ICE]; expect(leadPokemonType).toBe(moveType); }, ); @@ -341,7 +341,7 @@ describe("Abilities - Protean", () => { function testPokemonTypeMatchesDefaultMoveType(pokemon: PlayerPokemon, move: Moves) { expect(pokemon.summonData.abilitiesApplied).toContain(Abilities.PROTEAN); expect(pokemon.getTypes()).toHaveLength(1); - const pokemonType = Type[pokemon.getTypes()[0]], - moveType = Type[allMoves[move].type]; + const pokemonType = PokemonType[pokemon.getTypes()[0]], + moveType = PokemonType[allMoves[move].type]; expect(pokemonType).toBe(moveType); } diff --git a/test/abilities/sap_sipper.test.ts b/test/abilities/sap_sipper.test.ts index 836219fcbcb..8294d2e1d69 100644 --- a/test/abilities/sap_sipper.test.ts +++ b/test/abilities/sap_sipper.test.ts @@ -9,7 +9,7 @@ import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves, RandomMoveAttr } from "#app/data/move"; +import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; // See also: TypeImmunityAbAttr describe("Abilities - Sap Sipper", () => { diff --git a/test/abilities/serene_grace.test.ts b/test/abilities/serene_grace.test.ts index cb21121743b..7444347401c 100644 --- a/test/abilities/serene_grace.test.ts +++ b/test/abilities/serene_grace.test.ts @@ -4,9 +4,9 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { FlinchAttr } from "#app/data/move"; +import { FlinchAttr } from "#app/data/moves/move"; describe("Abilities - Serene Grace", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/sheer_force.test.ts b/test/abilities/sheer_force.test.ts index a65334cbfa0..1f9a101f409 100644 --- a/test/abilities/sheer_force.test.ts +++ b/test/abilities/sheer_force.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { Type } from "#app/enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -7,7 +7,7 @@ import { Stat } from "#enums/stat"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves, FlinchAttr } from "#app/data/move"; +import { allMoves, FlinchAttr } from "#app/data/moves/move"; describe("Abilities - Sheer Force", () => { let phaserGame: Phaser.Game; @@ -106,7 +106,7 @@ describe("Abilities - Sheer Force", () => { await game.move.forceHit(); await game.phaseInterceptor.to("BerryPhase", false); - expect(enemyPokemon?.getTypes()[0]).toBe(Type.WATER); + expect(enemyPokemon?.getTypes()[0]).toBe(PokemonType.WATER); expect(headbuttMove.calculateBattlePower).toHaveLastReturnedWith(headbuttMove.power * SHEER_FORCE_MULT); expect(headbuttFlinchAttr.getMoveChance).toHaveLastReturnedWith(0); }); diff --git a/test/abilities/steely_spirit.test.ts b/test/abilities/steely_spirit.test.ts index e1f6a04c0fa..beda5d34e8e 100644 --- a/test/abilities/steely_spirit.test.ts +++ b/test/abilities/steely_spirit.test.ts @@ -1,5 +1,5 @@ import { allAbilities } from "#app/data/ability"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/abilities/supreme_overlord.test.ts b/test/abilities/supreme_overlord.test.ts index 6de17bc3c7a..18e0823a7cb 100644 --- a/test/abilities/supreme_overlord.test.ts +++ b/test/abilities/supreme_overlord.test.ts @@ -6,7 +6,7 @@ import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; describe("Abilities - Supreme Overlord", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/unburden.test.ts b/test/abilities/unburden.test.ts index 67cf83870b3..a2134a96f4d 100644 --- a/test/abilities/unburden.test.ts +++ b/test/abilities/unburden.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; import { PostItemLostAbAttr } from "#app/data/ability"; -import { allMoves, StealHeldItemChanceAttr } from "#app/data/move"; +import { allMoves, StealHeldItemChanceAttr } from "#app/data/moves/move"; import type Pokemon from "#app/field/pokemon"; import type { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; import { Abilities } from "#enums/abilities"; diff --git a/test/abilities/wimp_out.test.ts b/test/abilities/wimp_out.test.ts index 5aff05d4c20..a37885834c4 100644 --- a/test/abilities/wimp_out.test.ts +++ b/test/abilities/wimp_out.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import GameManager from "#test/testUtils/gameManager"; import { toDmgValue } from "#app/utils"; import { Abilities } from "#enums/abilities"; diff --git a/test/abilities/wonder_skin.test.ts b/test/abilities/wonder_skin.test.ts index 4f6e45d8fe0..d6c49ed4abe 100644 --- a/test/abilities/wonder_skin.test.ts +++ b/test/abilities/wonder_skin.test.ts @@ -1,5 +1,5 @@ import { allAbilities } from "#app/data/ability"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/arena/arena_gravity.test.ts b/test/arena/arena_gravity.test.ts index 75197a4341c..4bacf51f094 100644 --- a/test/arena/arena_gravity.test.ts +++ b/test/arena/arena_gravity.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; diff --git a/test/arena/grassy_terrain.test.ts b/test/arena/grassy_terrain.test.ts index f493242a9d8..a9a955efdfe 100644 --- a/test/arena/grassy_terrain.test.ts +++ b/test/arena/grassy_terrain.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/arena/weather_fog.test.ts b/test/arena/weather_fog.test.ts index 8b4ffff3a64..1b98b791aec 100644 --- a/test/arena/weather_fog.test.ts +++ b/test/arena/weather_fog.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Moves } from "#enums/moves"; diff --git a/test/arena/weather_strong_winds.test.ts b/test/arena/weather_strong_winds.test.ts index 2685a9149ae..edc3025111d 100644 --- a/test/arena/weather_strong_winds.test.ts +++ b/test/arena/weather_strong_winds.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { StatusEffect } from "#app/enums/status-effect"; import { TurnStartPhase } from "#app/phases/turn-start-phase"; import { Abilities } from "#enums/abilities"; diff --git a/test/battle/damage_calculation.test.ts b/test/battle/damage_calculation.test.ts index 0a954b624c0..111a53a0c9b 100644 --- a/test/battle/damage_calculation.test.ts +++ b/test/battle/damage_calculation.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import type { EnemyPersistentModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; import { Abilities } from "#enums/abilities"; diff --git a/test/battle/inverse_battle.test.ts b/test/battle/inverse_battle.test.ts index ce44824e772..9d23a34a45e 100644 --- a/test/battle/inverse_battle.test.ts +++ b/test/battle/inverse_battle.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { Challenges } from "#enums/challenges"; @@ -221,7 +221,7 @@ describe("Inverse Battle", () => { await game.phaseInterceptor.to("TurnEndPhase"); - expect(player.getTypes()[0]).toBe(Type.DRAGON); + expect(player.getTypes()[0]).toBe(PokemonType.DRAGON); }); it("Flying Press should be 0.25x effective against Grass + Dark Type - Flying Press against Meowscarada", async () => { diff --git a/test/battlerTags/substitute.test.ts b/test/battlerTags/substitute.test.ts index 4bf7e584ed3..7e27cf9a826 100644 --- a/test/battlerTags/substitute.test.ts +++ b/test/battlerTags/substitute.test.ts @@ -7,7 +7,7 @@ import { BattlerTagLapseType, BindTag, SubstituteTag } from "#app/data/battler-t import { Moves } from "#app/enums/moves"; import { PokemonAnimType } from "#app/enums/pokemon-anim-type"; import * as messages from "#app/messages"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; describe("BattlerTag - SubstituteTag", () => { diff --git a/test/enemy_command.test.ts b/test/enemy_command.test.ts index b8e0c38b9e8..2d6a65e3edd 100644 --- a/test/enemy_command.test.ts +++ b/test/enemy_command.test.ts @@ -1,5 +1,6 @@ import type BattleScene from "#app/battle-scene"; -import { allMoves, MoveCategory } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; +import { MoveCategory } from "#enums/MoveCategory"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; diff --git a/test/field/pokemon.test.ts b/test/field/pokemon.test.ts index b327fe0c137..0ea1e08c31d 100644 --- a/test/field/pokemon.test.ts +++ b/test/field/pokemon.test.ts @@ -4,7 +4,7 @@ import GameManager from "#test/testUtils/gameManager"; import { PokeballType } from "#enums/pokeball"; import type BattleScene from "#app/battle-scene"; import { Moves } from "#app/enums/moves"; -import { Type } from "#app/enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; describe("Spec - Pokemon", () => { @@ -94,39 +94,39 @@ describe("Spec - Pokemon", () => { const pokemon = scene.getPlayerParty()[0]; let types = pokemon.getTypes(); - expect(types[0]).toBe(Type.PSYCHIC); - expect(types[1]).toBe(Type.FIRE); + expect(types[0]).toBe(PokemonType.PSYCHIC); + expect(types[1]).toBe(PokemonType.FIRE); - pokemon.customPokemonData.types = [ Type.UNKNOWN, Type.NORMAL ]; + pokemon.customPokemonData.types = [ PokemonType.UNKNOWN, PokemonType.NORMAL ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.PSYCHIC); - expect(types[1]).toBe(Type.FIRE); + expect(types[0]).toBe(PokemonType.PSYCHIC); + expect(types[1]).toBe(PokemonType.FIRE); - pokemon.customPokemonData.types = [ Type.NORMAL, Type.UNKNOWN ]; + pokemon.customPokemonData.types = [ PokemonType.NORMAL, PokemonType.UNKNOWN ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.NORMAL); - expect(types[1]).toBe(Type.FIRE); + expect(types[0]).toBe(PokemonType.NORMAL); + expect(types[1]).toBe(PokemonType.FIRE); if (!pokemon.fusionCustomPokemonData) { pokemon.fusionCustomPokemonData = new CustomPokemonData(); } pokemon.customPokemonData.types = []; - pokemon.fusionCustomPokemonData.types = [ Type.UNKNOWN, Type.NORMAL ]; + pokemon.fusionCustomPokemonData.types = [ PokemonType.UNKNOWN, PokemonType.NORMAL ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.PSYCHIC); - expect(types[1]).toBe(Type.NORMAL); + expect(types[0]).toBe(PokemonType.PSYCHIC); + expect(types[1]).toBe(PokemonType.NORMAL); - pokemon.fusionCustomPokemonData.types = [ Type.NORMAL, Type.UNKNOWN ]; + pokemon.fusionCustomPokemonData.types = [ PokemonType.NORMAL, PokemonType.UNKNOWN ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.PSYCHIC); - expect(types[1]).toBe(Type.NORMAL); + expect(types[0]).toBe(PokemonType.PSYCHIC); + expect(types[1]).toBe(PokemonType.NORMAL); - pokemon.customPokemonData.types = [ Type.NORMAL, Type.UNKNOWN ]; - pokemon.fusionCustomPokemonData.types = [ Type.UNKNOWN, Type.NORMAL ]; + pokemon.customPokemonData.types = [ PokemonType.NORMAL, PokemonType.UNKNOWN ]; + pokemon.fusionCustomPokemonData.types = [ PokemonType.UNKNOWN, PokemonType.NORMAL ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.NORMAL); - expect(types[1]).toBe(Type.FIRE); + expect(types[0]).toBe(PokemonType.NORMAL); + expect(types[1]).toBe(PokemonType.FIRE); }); it("Fusing two mons with same single type", async () => { @@ -135,7 +135,7 @@ describe("Spec - Pokemon", () => { const pokemon = scene.getPlayerParty()[0]; const types = pokemon.getTypes(); - expect(types[0]).toBe(Type.PSYCHIC); + expect(types[0]).toBe(PokemonType.PSYCHIC); expect(types.length).toBe(1); }); @@ -146,8 +146,8 @@ describe("Spec - Pokemon", () => { const pokemon = scene.getPlayerParty()[0]; const types = pokemon.getTypes(); - expect(types[0]).toBe(Type.FIRE); - expect(types[1]).toBe(Type.DARK); + expect(types[0]).toBe(PokemonType.FIRE); + expect(types[1]).toBe(PokemonType.DARK); }); it("Fusing mons with two and one types", async () => { @@ -157,8 +157,8 @@ describe("Spec - Pokemon", () => { const pokemon = scene.getPlayerParty()[0]; const types = pokemon.getTypes(); - expect(types[0]).toBe(Type.FIRE); - expect(types[1]).toBe(Type.GROUND); + expect(types[0]).toBe(PokemonType.FIRE); + expect(types[1]).toBe(PokemonType.GROUND); }); it("Fusing two mons with two types", async () => { @@ -168,20 +168,20 @@ describe("Spec - Pokemon", () => { const pokemon = scene.getPlayerParty()[0]; let types = pokemon.getTypes(); - expect(types[0]).toBe(Type.PSYCHIC); - expect(types[1]).toBe(Type.FIRE); + expect(types[0]).toBe(PokemonType.PSYCHIC); + expect(types[1]).toBe(PokemonType.FIRE); // Natu Psychic/Grass - pokemon.customPokemonData.types = [ Type.UNKNOWN, Type.GRASS ]; + pokemon.customPokemonData.types = [ PokemonType.UNKNOWN, PokemonType.GRASS ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.PSYCHIC); - expect(types[1]).toBe(Type.FIRE); + expect(types[0]).toBe(PokemonType.PSYCHIC); + expect(types[1]).toBe(PokemonType.FIRE); // Natu Grass/Flying - pokemon.customPokemonData.types = [ Type.GRASS, Type.UNKNOWN ]; + pokemon.customPokemonData.types = [ PokemonType.GRASS, PokemonType.UNKNOWN ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.GRASS); - expect(types[1]).toBe(Type.FIRE); + expect(types[0]).toBe(PokemonType.GRASS); + expect(types[1]).toBe(PokemonType.FIRE); if (!pokemon.fusionCustomPokemonData) { pokemon.fusionCustomPokemonData = new CustomPokemonData(); @@ -189,24 +189,24 @@ describe("Spec - Pokemon", () => { pokemon.customPokemonData.types = []; // Houndour Dark/Grass - pokemon.fusionCustomPokemonData.types = [ Type.UNKNOWN, Type.GRASS ]; + pokemon.fusionCustomPokemonData.types = [ PokemonType.UNKNOWN, PokemonType.GRASS ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.PSYCHIC); - expect(types[1]).toBe(Type.GRASS); + expect(types[0]).toBe(PokemonType.PSYCHIC); + expect(types[1]).toBe(PokemonType.GRASS); // Houndour Grass/Fire - pokemon.fusionCustomPokemonData.types = [ Type.GRASS, Type.UNKNOWN ]; + pokemon.fusionCustomPokemonData.types = [ PokemonType.GRASS, PokemonType.UNKNOWN ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.PSYCHIC); - expect(types[1]).toBe(Type.FIRE); + expect(types[0]).toBe(PokemonType.PSYCHIC); + expect(types[1]).toBe(PokemonType.FIRE); // Natu Grass/Flying // Houndour Dark/Grass - pokemon.customPokemonData.types = [ Type.GRASS, Type.UNKNOWN ]; - pokemon.fusionCustomPokemonData.types = [ Type.UNKNOWN, Type.GRASS ]; + pokemon.customPokemonData.types = [ PokemonType.GRASS, PokemonType.UNKNOWN ]; + pokemon.fusionCustomPokemonData.types = [ PokemonType.UNKNOWN, PokemonType.GRASS ]; types = pokemon.getTypes(); - expect(types[0]).toBe(Type.GRASS); - expect(types[1]).toBe(Type.DARK); + expect(types[0]).toBe(PokemonType.GRASS); + expect(types[1]).toBe(PokemonType.DARK); }); }); }); diff --git a/test/moves/astonish.test.ts b/test/moves/astonish.test.ts index 87af0db737b..f6e447ec7c5 100644 --- a/test/moves/astonish.test.ts +++ b/test/moves/astonish.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { BerryPhase } from "#app/phases/berry-phase"; import { CommandPhase } from "#app/phases/command-phase"; diff --git a/test/moves/aurora_veil.test.ts b/test/moves/aurora_veil.test.ts index 21b46c4be79..eb77cdc3a44 100644 --- a/test/moves/aurora_veil.test.ts +++ b/test/moves/aurora_veil.test.ts @@ -1,7 +1,7 @@ import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; -import type Move from "#app/data/move"; -import { allMoves, CritOnlyAttr } from "#app/data/move"; +import type Move from "#app/data/moves/move"; +import { allMoves, CritOnlyAttr } from "#app/data/moves/move"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; diff --git a/test/moves/burning_jealousy.test.ts b/test/moves/burning_jealousy.test.ts index bfa9af600a2..acdce23db92 100644 --- a/test/moves/burning_jealousy.test.ts +++ b/test/moves/burning_jealousy.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { StatusEffect } from "#app/enums/status-effect"; import { Moves } from "#enums/moves"; diff --git a/test/moves/camouflage.test.ts b/test/moves/camouflage.test.ts index 8995e2d00bb..b329170cc42 100644 --- a/test/moves/camouflage.test.ts +++ b/test/moves/camouflage.test.ts @@ -2,7 +2,7 @@ import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { TerrainType } from "#app/data/terrain"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { BattlerIndex } from "#app/battle"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -44,6 +44,6 @@ describe("Moves - Camouflage", () => { await game.phaseInterceptor.to("BerryPhase"); expect(game.scene.arena.getTerrainType()).toBe(TerrainType.PSYCHIC); const pokemonType = playerPokemon.getTypes()[0]; - expect(pokemonType).toBe(Type.PSYCHIC); + expect(pokemonType).toBe(PokemonType.PSYCHIC); }); }); diff --git a/test/moves/ceaseless_edge.test.ts b/test/moves/ceaseless_edge.test.ts index 22cf310bc80..2d929221e0b 100644 --- a/test/moves/ceaseless_edge.test.ts +++ b/test/moves/ceaseless_edge.test.ts @@ -1,5 +1,5 @@ import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; diff --git a/test/moves/copycat.test.ts b/test/moves/copycat.test.ts index 9b111c7b342..f682aeb7b5e 100644 --- a/test/moves/copycat.test.ts +++ b/test/moves/copycat.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves, RandomMoveAttr } from "#app/data/move"; +import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; import { Stat } from "#app/enums/stat"; import { MoveResult } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; diff --git a/test/moves/destiny_bond.test.ts b/test/moves/destiny_bond.test.ts index 9ae37ef5b9b..a64065178ce 100644 --- a/test/moves/destiny_bond.test.ts +++ b/test/moves/destiny_bond.test.ts @@ -1,6 +1,6 @@ import type { ArenaTrapTag } from "#app/data/arena-tag"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { Moves } from "#enums/moves"; diff --git a/test/moves/diamond_storm.test.ts b/test/moves/diamond_storm.test.ts index 7a30f73a113..3c81f8221ba 100644 --- a/test/moves/diamond_storm.test.ts +++ b/test/moves/diamond_storm.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/dig.test.ts b/test/moves/dig.test.ts index 53104f13b20..d9cf4845a67 100644 --- a/test/moves/dig.test.ts +++ b/test/moves/dig.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; diff --git a/test/moves/dragon_cheer.test.ts b/test/moves/dragon_cheer.test.ts index 44bedeaa03a..0c5b0d69675 100644 --- a/test/moves/dragon_cheer.test.ts +++ b/test/moves/dragon_cheer.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; import { Abilities } from "#enums/abilities"; @@ -84,8 +84,8 @@ describe("Moves - Dragon Cheer", () => { await game.toNextTurn(); // Change Magikarp's type to Dragon - vi.spyOn(magikarp, "getTypes").mockReturnValue([ Type.DRAGON ]); - expect(magikarp.getTypes()).toEqual([ Type.DRAGON ]); + vi.spyOn(magikarp, "getTypes").mockReturnValue([ PokemonType.DRAGON ]); + expect(magikarp.getTypes()).toEqual([ PokemonType.DRAGON ]); game.move.select(Moves.SPLASH, 0); game.move.select(Moves.TACKLE, 1, BattlerIndex.ENEMY); diff --git a/test/moves/dragon_rage.test.ts b/test/moves/dragon_rage.test.ts index 0a5202825f5..6540bc2f327 100644 --- a/test/moves/dragon_rage.test.ts +++ b/test/moves/dragon_rage.test.ts @@ -1,5 +1,5 @@ import { Stat } from "#enums/stat"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Species } from "#app/enums/species"; import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; @@ -53,7 +53,7 @@ describe("Moves - Dragon Rage", () => { it("ignores weaknesses", async () => { game.override.disableCrits(); - vi.spyOn(enemyPokemon, "getTypes").mockReturnValue([ Type.DRAGON ]); + vi.spyOn(enemyPokemon, "getTypes").mockReturnValue([ PokemonType.DRAGON ]); game.move.select(Moves.DRAGON_RAGE); await game.phaseInterceptor.to(TurnEndPhase); @@ -63,7 +63,7 @@ describe("Moves - Dragon Rage", () => { it("ignores resistances", async () => { game.override.disableCrits(); - vi.spyOn(enemyPokemon, "getTypes").mockReturnValue([ Type.STEEL ]); + vi.spyOn(enemyPokemon, "getTypes").mockReturnValue([ PokemonType.STEEL ]); game.move.select(Moves.DRAGON_RAGE); await game.phaseInterceptor.to(TurnEndPhase); @@ -83,7 +83,7 @@ describe("Moves - Dragon Rage", () => { it("ignores stab", async () => { game.override.disableCrits(); - vi.spyOn(partyPokemon, "getTypes").mockReturnValue([ Type.DRAGON ]); + vi.spyOn(partyPokemon, "getTypes").mockReturnValue([ PokemonType.DRAGON ]); game.move.select(Moves.DRAGON_RAGE); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/moves/dragon_tail.test.ts b/test/moves/dragon_tail.test.ts index 8415251c24c..545ad9fe8eb 100644 --- a/test/moves/dragon_tail.test.ts +++ b/test/moves/dragon_tail.test.ts @@ -1,9 +1,9 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Status } from "#app/data/status-effect"; import { Challenges } from "#enums/challenges"; import { StatusEffect } from "#enums/status-effect"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -237,7 +237,7 @@ describe("Moves - Dragon Tail", () => { .startingLevel(100) .enemyLevel(1); // Mono-Water challenge, Eevee is ineligible - game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, Type.WATER + 1, 0); + game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, PokemonType.WATER + 1, 0); await game.challengeMode.startBattle([ Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA ]); const [ lapras, eevee, toxapex, primarina ] = game.scene.getPlayerParty(); diff --git a/test/moves/dynamax_cannon.test.ts b/test/moves/dynamax_cannon.test.ts index 0deb12b2737..63e88808218 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax_cannon.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Moves } from "#enums/moves"; diff --git a/test/moves/effectiveness.test.ts b/test/moves/effectiveness.test.ts index d9974fd1980..31c8ee715c6 100644 --- a/test/moves/effectiveness.test.ts +++ b/test/moves/effectiveness.test.ts @@ -1,7 +1,7 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { TrainerSlot } from "#app/data/trainer-config"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; @@ -11,7 +11,7 @@ import Phaser from "phaser"; import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; function testMoveEffectiveness(game: GameManager, move: Moves, targetSpecies: Species, - expected: number, targetAbility: Abilities = Abilities.BALL_FETCH, teraType?: Type): void { + expected: number, targetAbility: Abilities = Abilities.BALL_FETCH, teraType?: PokemonType): void { // Suppress getPokemonNameWithAffix because it calls on a null battle spec vi.spyOn(Messages, "getPokemonNameWithAffix").mockReturnValue(""); game.override.enemyAbility(targetAbility); @@ -83,7 +83,7 @@ describe("Moves - Type Effectiveness", () => { ); it("Electric-type attacks are super-effective against Tera-Water Pokemon", - () => testMoveEffectiveness(game, Moves.THUNDERBOLT, Species.EXCADRILL, 2, Abilities.BALL_FETCH, Type.WATER) + () => testMoveEffectiveness(game, Moves.THUNDERBOLT, Species.EXCADRILL, 2, Abilities.BALL_FETCH, PokemonType.WATER) ); it("Powder moves have no effect on Grass-type Pokemon", @@ -91,7 +91,7 @@ describe("Moves - Type Effectiveness", () => { ); it("Powder moves have no effect on Tera-Grass Pokemon", - () => testMoveEffectiveness(game, Moves.SLEEP_POWDER, Species.SNORLAX, 0, Abilities.BALL_FETCH, Type.GRASS) + () => testMoveEffectiveness(game, Moves.SLEEP_POWDER, Species.SNORLAX, 0, Abilities.BALL_FETCH, PokemonType.GRASS) ); it("Prankster-boosted status moves have no effect on Dark-type Pokemon", @@ -104,7 +104,7 @@ describe("Moves - Type Effectiveness", () => { it("Prankster-boosted status moves have no effect on Tera-Dark Pokemon", () => { game.override.ability(Abilities.PRANKSTER); - testMoveEffectiveness(game, Moves.BABY_DOLL_EYES, Species.SNORLAX, 0, Abilities.BALL_FETCH, Type.DARK); + testMoveEffectiveness(game, Moves.BABY_DOLL_EYES, Species.SNORLAX, 0, Abilities.BALL_FETCH, PokemonType.DARK); } ); }); diff --git a/test/moves/electrify.test.ts b/test/moves/electrify.test.ts index f7d78a2f4d0..7f6221f4036 100644 --- a/test/moves/electrify.test.ts +++ b/test/moves/electrify.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -45,7 +45,7 @@ describe("Moves - Electrify", () => { await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); await game.phaseInterceptor.to("BerryPhase", false); - expect(enemyPokemon.getMoveType).toHaveLastReturnedWith(Type.ELECTRIC); + expect(enemyPokemon.getMoveType).toHaveLastReturnedWith(PokemonType.ELECTRIC); expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); }); @@ -63,7 +63,7 @@ describe("Moves - Electrify", () => { await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); await game.phaseInterceptor.to("BerryPhase", false); - expect(enemyPokemon.getMoveType).toHaveLastReturnedWith(Type.ELECTRIC); + expect(enemyPokemon.getMoveType).toHaveLastReturnedWith(PokemonType.ELECTRIC); expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); }); }); diff --git a/test/moves/fell_stinger.test.ts b/test/moves/fell_stinger.test.ts index fdcba624e22..c7cd616a95e 100644 --- a/test/moves/fell_stinger.test.ts +++ b/test/moves/fell_stinger.test.ts @@ -7,7 +7,7 @@ import { Moves } from "#enums/moves"; import { Stat } from "#enums/stat"; import { StatusEffect } from "#app/enums/status-effect"; import { WeatherType } from "#app/enums/weather-type"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; describe("Moves - Fell Stinger", () => { diff --git a/test/moves/flower_shield.test.ts b/test/moves/flower_shield.test.ts index d6f79c40533..f51cb8a085e 100644 --- a/test/moves/flower_shield.test.ts +++ b/test/moves/flower_shield.test.ts @@ -1,6 +1,6 @@ import { Stat } from "#enums/stat"; import { SemiInvulnerableTag } from "#app/data/battler-tags"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Biome } from "#app/enums/biome"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { Abilities } from "#enums/abilities"; @@ -56,7 +56,7 @@ describe("Moves - Flower Shield", () => { await game.startBattle([ Species.CHERRIM, Species.MAGIKARP ]); const field = game.scene.getField(true); - const grassPokemons = field.filter(p => p.getTypes().includes(Type.GRASS)); + const grassPokemons = field.filter(p => p.getTypes().includes(PokemonType.GRASS)); const nonGrassPokemons = field.filter(pokemon => !grassPokemons.includes(pokemon)); grassPokemons.forEach(p => expect(p.getStatStage(Stat.DEF)).toBe(0)); diff --git a/test/moves/fly.test.ts b/test/moves/fly.test.ts index b0abf96e128..2471372f97c 100644 --- a/test/moves/fly.test.ts +++ b/test/moves/fly.test.ts @@ -8,7 +8,7 @@ import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; describe("Moves - Fly", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/forests_curse.test.ts b/test/moves/forests_curse.test.ts index c9977190c9d..f275db8d2bb 100644 --- a/test/moves/forests_curse.test.ts +++ b/test/moves/forests_curse.test.ts @@ -1,7 +1,7 @@ import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,10 +38,10 @@ describe("Moves - Forest's Curse", () => { const enemyPokemon = game.scene.getEnemyPokemon(); game.move.select(Moves.TRICK_OR_TREAT); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemyPokemon!.summonData.addedType).toBe(Type.GHOST); + expect(enemyPokemon!.summonData.addedType).toBe(PokemonType.GHOST); game.move.select(Moves.FORESTS_CURSE); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemyPokemon?.summonData.addedType).toBe(Type.GRASS); + expect(enemyPokemon?.summonData.addedType).toBe(PokemonType.GRASS); }); }); diff --git a/test/moves/freeze_dry.test.ts b/test/moves/freeze_dry.test.ts index f07105882c2..62375393563 100644 --- a/test/moves/freeze_dry.test.ts +++ b/test/moves/freeze_dry.test.ts @@ -2,7 +2,7 @@ import { BattlerIndex } from "#app/battle"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Challenges } from "#enums/challenges"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -121,7 +121,7 @@ describe("Moves - Freeze-Dry", () => { await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; - enemy.teraType = Type.WATER; + enemy.teraType = PokemonType.WATER; enemy.isTerastallized = true; vi.spyOn(enemy, "getMoveEffectiveness"); @@ -137,7 +137,7 @@ describe("Moves - Freeze-Dry", () => { await game.classicMode.startBattle(); const enemy = game.scene.getEnemyPokemon()!; - enemy.teraType = Type.FIRE; + enemy.teraType = PokemonType.FIRE; enemy.isTerastallized = true; vi.spyOn(enemy, "getMoveEffectiveness"); diff --git a/test/moves/freezy_frost.test.ts b/test/moves/freezy_frost.test.ts index 26c7d06961f..fe7fee10ad1 100644 --- a/test/moves/freezy_frost.test.ts +++ b/test/moves/freezy_frost.test.ts @@ -5,7 +5,7 @@ import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { CommandPhase } from "#app/phases/command-phase"; describe("Moves - Freezy Frost", () => { diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion_flare_bolt.test.ts index 340020c85b7..aa2b0cb1bc3 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion_flare_bolt.test.ts @@ -1,6 +1,6 @@ import { Stat } from "#enums/stat"; import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; diff --git a/test/moves/glaive_rush.test.ts b/test/moves/glaive_rush.test.ts index 557d003e541..278cea86c83 100644 --- a/test/moves/glaive_rush.test.ts +++ b/test/moves/glaive_rush.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; diff --git a/test/moves/hard_press.test.ts b/test/moves/hard_press.test.ts index 29a386207ad..32c9190e06e 100644 --- a/test/moves/hard_press.test.ts +++ b/test/moves/hard_press.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/moves/hyper_beam.test.ts b/test/moves/hyper_beam.test.ts index 5869655948c..f03d54426d6 100644 --- a/test/moves/hyper_beam.test.ts +++ b/test/moves/hyper_beam.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Moves } from "#app/enums/moves"; diff --git a/test/moves/lash_out.test.ts b/test/moves/lash_out.test.ts index 3fe5c56dd3e..7ba507b66b9 100644 --- a/test/moves/lash_out.test.ts +++ b/test/moves/lash_out.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/last_respects.test.ts b/test/moves/last_respects.test.ts index 54e4bc5a0bc..272c6bc71b7 100644 --- a/test/moves/last_respects.test.ts +++ b/test/moves/last_respects.test.ts @@ -3,7 +3,7 @@ import { BattlerIndex } from "#app/battle"; import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import GameManager from "#test/testUtils/gameManager"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/light_screen.test.ts b/test/moves/light_screen.test.ts index 1f9e4f9b97f..2a4a1568136 100644 --- a/test/moves/light_screen.test.ts +++ b/test/moves/light_screen.test.ts @@ -1,7 +1,7 @@ import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; -import type Move from "#app/data/move"; -import { allMoves, CritOnlyAttr } from "#app/data/move"; +import type Move from "#app/data/moves/move"; +import { allMoves, CritOnlyAttr } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; diff --git a/test/moves/magic_coat.test.ts b/test/moves/magic_coat.test.ts index 6ecbea435b6..c3e2e6e9f51 100644 --- a/test/moves/magic_coat.test.ts +++ b/test/moves/magic_coat.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Stat } from "#app/enums/stat"; diff --git a/test/moves/metronome.test.ts b/test/moves/metronome.test.ts index 85c027b62e3..a1253334f0f 100644 --- a/test/moves/metronome.test.ts +++ b/test/moves/metronome.test.ts @@ -1,5 +1,5 @@ import { RechargingTag, SemiInvulnerableTag } from "#app/data/battler-tags"; -import { allMoves, RandomMoveAttr } from "#app/data/move"; +import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { Stat } from "#app/enums/stat"; import { CommandPhase } from "#app/phases/command-phase"; diff --git a/test/moves/moongeist_beam.test.ts b/test/moves/moongeist_beam.test.ts index 15a5787be41..5b36129fe2a 100644 --- a/test/moves/moongeist_beam.test.ts +++ b/test/moves/moongeist_beam.test.ts @@ -1,4 +1,4 @@ -import { allMoves, RandomMoveAttr } from "#app/data/move"; +import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/plasma_fists.test.ts b/test/moves/plasma_fists.test.ts index 5a2ec90f60b..276b5fd999a 100644 --- a/test/moves/plasma_fists.test.ts +++ b/test/moves/plasma_fists.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -50,7 +50,7 @@ describe("Moves - Plasma Fists", () => { await game.phaseInterceptor.to("BerryPhase", false); field.forEach(p => { - expect(p.getMoveType).toHaveLastReturnedWith(Type.ELECTRIC); + expect(p.getMoveType).toHaveLastReturnedWith(PokemonType.ELECTRIC); expect(p.hp).toBeLessThan(p.getMaxHp()); }); }); @@ -71,7 +71,7 @@ describe("Moves - Plasma Fists", () => { await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); await game.phaseInterceptor.to("BerryPhase", false); - expect(enemyPokemon.getMoveType).toHaveLastReturnedWith(Type.FAIRY); + expect(enemyPokemon.getMoveType).toHaveLastReturnedWith(PokemonType.FAIRY); expect(playerPokemon.hp).toBeLessThan(playerPokemon.getMaxHp()); }); @@ -92,7 +92,7 @@ describe("Moves - Plasma Fists", () => { await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); await game.phaseInterceptor.to("BerryPhase", false); - expect(enemyPokemon.getMoveType).toHaveLastReturnedWith(Type.ELECTRIC); + expect(enemyPokemon.getMoveType).toHaveLastReturnedWith(PokemonType.ELECTRIC); expect(playerPokemon.hp).toBeLessThan(playerPokemon.getMaxHp()); }); }); diff --git a/test/moves/pledge_moves.test.ts b/test/moves/pledge_moves.test.ts index 24fff05a25d..62606489d0b 100644 --- a/test/moves/pledge_moves.test.ts +++ b/test/moves/pledge_moves.test.ts @@ -1,8 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { allAbilities } from "#app/data/ability"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allMoves, FlinchAttr } from "#app/data/move"; -import { Type } from "#enums/type"; +import { allMoves, FlinchAttr } from "#app/data/moves/move"; +import { PokemonType } from "#enums/pokemon-type"; import { ArenaTagType } from "#enums/arena-tag-type"; import { Stat } from "#enums/stat"; import { toDmgValue } from "#app/utils"; @@ -57,7 +57,7 @@ describe("Moves - Pledge Moves", () => { await game.phaseInterceptor.to("MoveEndPhase", false); expect(firePledge.calculateBattlePower).toHaveLastReturnedWith(80); - expect(playerPokemon[0].getMoveType).toHaveLastReturnedWith(Type.FIRE); + expect(playerPokemon[0].getMoveType).toHaveLastReturnedWith(PokemonType.FIRE); } ); @@ -81,11 +81,11 @@ describe("Moves - Pledge Moves", () => { await game.phaseInterceptor.to("MoveEndPhase"); expect(firePledge.calculateBattlePower).toHaveLastReturnedWith(80); - expect(playerPokemon[0].getMoveType).toHaveLastReturnedWith(Type.FIRE); + expect(playerPokemon[0].getMoveType).toHaveLastReturnedWith(PokemonType.FIRE); await game.phaseInterceptor.to("BerryPhase", false); expect(firePledge.calculateBattlePower).toHaveLastReturnedWith(80); - expect(playerPokemon[1].getMoveType).toHaveLastReturnedWith(Type.FIRE); + expect(playerPokemon[1].getMoveType).toHaveLastReturnedWith(PokemonType.FIRE); enemyPokemon.forEach(p => expect(p.hp).toBeLessThan(p.getMaxHp())); } @@ -137,7 +137,7 @@ describe("Moves - Pledge Moves", () => { for (let i = 0; i < 2; i++) { await game.phaseInterceptor.to("MoveEndPhase"); } - expect(playerPokemon[1].getMoveType).toHaveLastReturnedWith(Type.FIRE); + expect(playerPokemon[1].getMoveType).toHaveLastReturnedWith(PokemonType.FIRE); expect(grassPledge.calculateBattlePower).toHaveLastReturnedWith(150); const baseDmg = baseDmgMock.mock.results[baseDmgMock.mock.results.length - 1].value; @@ -174,7 +174,7 @@ describe("Moves - Pledge Moves", () => { for (let i = 0; i < 2; i++) { await game.phaseInterceptor.to("MoveEndPhase"); } - expect(playerPokemon[1].getMoveType).toHaveLastReturnedWith(Type.WATER); + expect(playerPokemon[1].getMoveType).toHaveLastReturnedWith(PokemonType.WATER); expect(firePledge.calculateBattlePower).toHaveLastReturnedWith(150); expect(enemyPokemon[1].hp).toBe(enemyPokemon[1].getMaxHp()); // PLAYER should not have attacked expect(game.scene.arena.getTagOnSide(ArenaTagType.WATER_FIRE_PLEDGE, ArenaTagSide.PLAYER)).toBeDefined(); @@ -214,7 +214,7 @@ describe("Moves - Pledge Moves", () => { await game.phaseInterceptor.to("MoveEndPhase"); } - expect(playerPokemon[1].getMoveType).toHaveLastReturnedWith(Type.GRASS); + expect(playerPokemon[1].getMoveType).toHaveLastReturnedWith(PokemonType.GRASS); expect(waterPledge.calculateBattlePower).toHaveLastReturnedWith(150); expect(enemyPokemon[1].hp).toBe(enemyPokemon[1].getMaxHp()); diff --git a/test/moves/powder.test.ts b/test/moves/powder.test.ts index 24162825230..b43772bd703 100644 --- a/test/moves/powder.test.ts +++ b/test/moves/powder.test.ts @@ -6,7 +6,7 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { BerryPhase } from "#app/phases/berry-phase"; import { MoveResult, PokemonMove } from "#app/field/pokemon"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { StatusEffect } from "#enums/status-effect"; import { BattlerIndex } from "#app/battle"; @@ -163,7 +163,7 @@ describe("Moves - Powder", () => { await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - expect(enemyPokemon.summonData?.types).not.toBe(Type.FIRE); + expect(enemyPokemon.summonData?.types).not.toBe(PokemonType.FIRE); }); it( diff --git a/test/moves/protect.test.ts b/test/moves/protect.test.ts index d502e997483..7f5484ab7c9 100644 --- a/test/moves/protect.test.ts +++ b/test/moves/protect.test.ts @@ -5,7 +5,7 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Stat } from "#enums/stat"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; import { BattlerIndex } from "#app/battle"; import { MoveResult } from "#app/field/pokemon"; diff --git a/test/moves/rage_fist.test.ts b/test/moves/rage_fist.test.ts index 4d17cf990f7..15c8794a469 100644 --- a/test/moves/rage_fist.test.ts +++ b/test/moves/rage_fist.test.ts @@ -2,7 +2,7 @@ import { BattlerIndex } from "#app/battle"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; diff --git a/test/moves/reflect.test.ts b/test/moves/reflect.test.ts index a0376aa24b4..4f818afb071 100644 --- a/test/moves/reflect.test.ts +++ b/test/moves/reflect.test.ts @@ -1,7 +1,7 @@ import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; -import type Move from "#app/data/move"; -import { allMoves, CritOnlyAttr } from "#app/data/move"; +import type Move from "#app/data/moves/move"; +import { allMoves, CritOnlyAttr } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import type Pokemon from "#app/field/pokemon"; diff --git a/test/moves/reflect_type.test.ts b/test/moves/reflect_type.test.ts index 575f4b88f86..aa61f00a083 100644 --- a/test/moves/reflect_type.test.ts +++ b/test/moves/reflect_type.test.ts @@ -1,7 +1,7 @@ import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -47,13 +47,13 @@ describe("Moves - Reflect Type", () => { game.move.select(Moves.FORESTS_CURSE); await game.forceEnemyMove(Moves.SPLASH); await game.toNextTurn(); - expect(enemyPokemon?.getTypes().includes(Type.UNKNOWN)).toBe(true); - expect(enemyPokemon?.getTypes().includes(Type.GRASS)).toBe(true); + expect(enemyPokemon?.getTypes().includes(PokemonType.UNKNOWN)).toBe(true); + expect(enemyPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); game.move.select(Moves.REFLECT_TYPE); await game.forceEnemyMove(Moves.SPLASH); await game.phaseInterceptor.to("TurnEndPhase"); - expect(playerPokemon?.getTypes()[0]).toBe(Type.NORMAL); - expect(playerPokemon?.getTypes().includes(Type.GRASS)).toBe(true); + expect(playerPokemon?.getTypes()[0]).toBe(PokemonType.NORMAL); + expect(playerPokemon?.getTypes().includes(PokemonType.GRASS)).toBe(true); }); }); diff --git a/test/moves/relic_song.test.ts b/test/moves/relic_song.test.ts index f28047bb90e..48e945f596a 100644 --- a/test/moves/relic_song.test.ts +++ b/test/moves/relic_song.test.ts @@ -1,4 +1,4 @@ -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Challenges } from "#app/enums/challenges"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; @@ -48,7 +48,7 @@ describe("Moves - Relic Song", () => { }); it("doesn't swap Meloetta's form during a mono-type challenge", async () => { - game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, Type.PSYCHIC + 1, 0); + game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, PokemonType.PSYCHIC + 1, 0); await game.challengeMode.startBattle([ Species.MELOETTA ]); const meloetta = game.scene.getPlayerPokemon()!; diff --git a/test/moves/retaliate.test.ts b/test/moves/retaliate.test.ts index 32d5379f05e..33bba2af211 100644 --- a/test/moves/retaliate.test.ts +++ b/test/moves/retaliate.test.ts @@ -3,7 +3,7 @@ import Phaser from "phaser"; import GameManager from "#test/testUtils/gameManager"; import { Species } from "#enums/species"; import { Moves } from "#enums/moves"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; describe("Moves - Retaliate", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/rollout.test.ts b/test/moves/rollout.test.ts index c58ab3e6a18..08c18267a75 100644 --- a/test/moves/rollout.test.ts +++ b/test/moves/rollout.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { CommandPhase } from "#app/phases/command-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/moves/roost.test.ts b/test/moves/roost.test.ts index b9424747f5e..470313a27fb 100644 --- a/test/moves/roost.test.ts +++ b/test/moves/roost.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; @@ -59,7 +59,7 @@ describe("Moves - Roost", () => { // Should only be normal type, and NOT flying type let playerPokemonTypes = playerPokemon.getTypes(); - expect(playerPokemonTypes[0] === Type.NORMAL).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.NORMAL).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeTruthy(); @@ -68,7 +68,7 @@ describe("Moves - Roost", () => { // Lose HP, still normal type playerPokemonTypes = playerPokemon.getTypes(); expect(playerPokemon.hp).toBeLessThan(playerPokemonStartingHP); - expect(playerPokemonTypes[0] === Type.NORMAL).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.NORMAL).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeTruthy(); } @@ -86,8 +86,8 @@ describe("Moves - Roost", () => { // Should only be normal type, and NOT flying type let playerPokemonTypes = playerPokemon.getTypes(); - expect(playerPokemonTypes[0] === Type.NORMAL).toBeTruthy(); - expect(playerPokemonTypes[0] === Type.FLYING).toBeFalsy(); + expect(playerPokemonTypes[0] === PokemonType.NORMAL).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.FLYING).toBeFalsy(); expect(playerPokemon.isGrounded()).toBeTruthy(); await game.phaseInterceptor.to(TurnEndPhase); @@ -95,8 +95,8 @@ describe("Moves - Roost", () => { // Should have lost HP and is now back to being pure flying playerPokemonTypes = playerPokemon.getTypes(); expect(playerPokemon.hp).toBeLessThan(playerPokemonStartingHP); - expect(playerPokemonTypes[0] === Type.NORMAL).toBeFalsy(); - expect(playerPokemonTypes[0] === Type.FLYING).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.NORMAL).toBeFalsy(); + expect(playerPokemonTypes[0] === PokemonType.FLYING).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeFalsy(); } @@ -114,7 +114,7 @@ describe("Moves - Roost", () => { // Should only be pure fighting type and grounded let playerPokemonTypes = playerPokemon.getTypes(); - expect(playerPokemonTypes[0] === Type.FIGHTING).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.FIGHTING).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeTruthy(); @@ -123,8 +123,8 @@ describe("Moves - Roost", () => { // Should have lost HP and is now back to being fighting/flying playerPokemonTypes = playerPokemon.getTypes(); expect(playerPokemon.hp).toBeLessThan(playerPokemonStartingHP); - expect(playerPokemonTypes[0] === Type.FIGHTING).toBeTruthy(); - expect(playerPokemonTypes[1] === Type.FLYING).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.FIGHTING).toBeTruthy(); + expect(playerPokemonTypes[1] === PokemonType.FLYING).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeFalsy(); } @@ -143,7 +143,7 @@ describe("Moves - Roost", () => { // Should only be pure eletric type and grounded let playerPokemonTypes = playerPokemon.getTypes(); - expect(playerPokemonTypes[0] === Type.ELECTRIC).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.ELECTRIC).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeFalsy(); @@ -152,8 +152,8 @@ describe("Moves - Roost", () => { // Should have lost HP and is now back to being electric/flying playerPokemonTypes = playerPokemon.getTypes(); expect(playerPokemon.hp).toBe(playerPokemonStartingHP); - expect(playerPokemonTypes[0] === Type.ELECTRIC).toBeTruthy(); - expect(playerPokemonTypes[1] === Type.FLYING).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.ELECTRIC).toBeTruthy(); + expect(playerPokemonTypes[1] === PokemonType.FLYING).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeFalsy(); } @@ -171,7 +171,7 @@ describe("Moves - Roost", () => { // Should only be pure flying type after burn up let playerPokemonTypes = playerPokemon.getTypes(); - expect(playerPokemonTypes[0] === Type.FLYING).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.FLYING).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); await game.phaseInterceptor.to(TurnEndPhase); @@ -182,7 +182,7 @@ describe("Moves - Roost", () => { // Should only be typeless type after roost and is grounded playerPokemonTypes = playerPokemon.getTypes(); expect(playerPokemon.getTag(BattlerTagType.ROOSTED)).toBeDefined(); - expect(playerPokemonTypes[0] === Type.UNKNOWN).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.UNKNOWN).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeTruthy(); @@ -191,7 +191,7 @@ describe("Moves - Roost", () => { // Should go back to being pure flying and have taken damage from earthquake, and is ungrounded again playerPokemonTypes = playerPokemon.getTypes(); expect(playerPokemon.hp).toBeLessThan(playerPokemonStartingHP); - expect(playerPokemonTypes[0] === Type.FLYING).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.FLYING).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeFalsy(); @@ -211,7 +211,7 @@ describe("Moves - Roost", () => { // Should only be pure flying type after burn up let playerPokemonTypes = playerPokemon.getTypes(); - expect(playerPokemonTypes[0] === Type.FLYING).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.FLYING).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); await game.phaseInterceptor.to(TurnEndPhase); @@ -222,7 +222,7 @@ describe("Moves - Roost", () => { // Should only be typeless type after roost and is grounded playerPokemonTypes = playerPokemon.getTypes(); expect(playerPokemon.getTag(BattlerTagType.ROOSTED)).toBeDefined(); - expect(playerPokemonTypes[0] === Type.UNKNOWN).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.UNKNOWN).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeTruthy(); @@ -231,7 +231,7 @@ describe("Moves - Roost", () => { // Should go back to being pure flying and have taken damage from earthquake, and is ungrounded again playerPokemonTypes = playerPokemon.getTypes(); expect(playerPokemon.hp).toBeLessThan(playerPokemonStartingHP); - expect(playerPokemonTypes[0] === Type.FLYING).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.FLYING).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeFalsy(); @@ -248,7 +248,7 @@ describe("Moves - Roost", () => { await game.phaseInterceptor.to(MoveEffectPhase); let playerPokemonTypes = playerPokemon.getTypes(); - expect(playerPokemonTypes[0] === Type.FIRE).toBeTruthy(); + expect(playerPokemonTypes[0] === PokemonType.FIRE).toBeTruthy(); expect(playerPokemonTypes.length === 1).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeTruthy(); @@ -256,9 +256,9 @@ describe("Moves - Roost", () => { // Should be fire/flying/ghost playerPokemonTypes = playerPokemon.getTypes(); - expect(playerPokemonTypes.filter(type => type === Type.FLYING)).toHaveLength(1); - expect(playerPokemonTypes.filter(type => type === Type.FIRE)).toHaveLength(1); - expect(playerPokemonTypes.filter(type => type === Type.GHOST)).toHaveLength(1); + expect(playerPokemonTypes.filter(type => type === PokemonType.FLYING)).toHaveLength(1); + expect(playerPokemonTypes.filter(type => type === PokemonType.FIRE)).toHaveLength(1); + expect(playerPokemonTypes.filter(type => type === PokemonType.GHOST)).toHaveLength(1); expect(playerPokemonTypes.length === 3).toBeTruthy(); expect(playerPokemon.isGrounded()).toBeFalsy(); diff --git a/test/moves/round.test.ts b/test/moves/round.test.ts index 5d26e242aff..01efa098f5a 100644 --- a/test/moves/round.test.ts +++ b/test/moves/round.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/moves/scale_shot.test.ts b/test/moves/scale_shot.test.ts index 76954ba2413..118b37795a1 100644 --- a/test/moves/scale_shot.test.ts +++ b/test/moves/scale_shot.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; diff --git a/test/moves/secret_power.test.ts b/test/moves/secret_power.test.ts index f155633d545..26fec5fabc3 100644 --- a/test/moves/secret_power.test.ts +++ b/test/moves/secret_power.test.ts @@ -2,7 +2,7 @@ import { Abilities } from "#enums/abilities"; import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Stat } from "#enums/stat"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; diff --git a/test/moves/shell_side_arm.test.ts b/test/moves/shell_side_arm.test.ts index 3a658d53a83..c23bb316ba0 100644 --- a/test/moves/shell_side_arm.test.ts +++ b/test/moves/shell_side_arm.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves, ShellSideArmCategoryAttr } from "#app/data/move"; +import { allMoves, ShellSideArmCategoryAttr } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/shell_trap.test.ts b/test/moves/shell_trap.test.ts index aa94d0cab1b..2e9d9ed69d6 100644 --- a/test/moves/shell_trap.test.ts +++ b/test/moves/shell_trap.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; import { MoveResult } from "#app/field/pokemon"; diff --git a/test/moves/sketch.test.ts b/test/moves/sketch.test.ts index e736893b0aa..0b63598ba9b 100644 --- a/test/moves/sketch.test.ts +++ b/test/moves/sketch.test.ts @@ -7,7 +7,7 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { StatusEffect } from "#app/enums/status-effect"; import { BattlerIndex } from "#app/battle"; -import { allMoves, RandomMoveAttr } from "#app/data/move"; +import { allMoves, RandomMoveAttr } from "#app/data/moves/move"; describe("Moves - Sketch", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/solar_beam.test.ts b/test/moves/solar_beam.test.ts index 7f18cebff6d..c3025db57d0 100644 --- a/test/moves/solar_beam.test.ts +++ b/test/moves/solar_beam.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { BattlerTagType } from "#enums/battler-tag-type"; import { WeatherType } from "#enums/weather-type"; import { MoveResult } from "#app/field/pokemon"; diff --git a/test/moves/sparkly_swirl.test.ts b/test/moves/sparkly_swirl.test.ts index 53851cb77d3..f865c00271f 100644 --- a/test/moves/sparkly_swirl.test.ts +++ b/test/moves/sparkly_swirl.test.ts @@ -1,4 +1,4 @@ -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { StatusEffect } from "#app/enums/status-effect"; import { CommandPhase } from "#app/phases/command-phase"; import { Abilities } from "#enums/abilities"; diff --git a/test/moves/spectral_thief.test.ts b/test/moves/spectral_thief.test.ts index 883f280da08..d7524586d66 100644 --- a/test/moves/spectral_thief.test.ts +++ b/test/moves/spectral_thief.test.ts @@ -1,7 +1,7 @@ import { Abilities } from "#enums/abilities"; import { BattlerIndex } from "#app/battle"; import { Stat } from "#enums/stat"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; diff --git a/test/moves/spit_up.test.ts b/test/moves/spit_up.test.ts index 125b17891ed..59dca04fe26 100644 --- a/test/moves/spit_up.test.ts +++ b/test/moves/spit_up.test.ts @@ -1,6 +1,6 @@ import { Stat } from "#enums/stat"; import { StockpilingTag } from "#app/data/battler-tags"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import type { TurnMove } from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; diff --git a/test/moves/steamroller.test.ts b/test/moves/steamroller.test.ts index 2aed941fd92..e83b67e9d9c 100644 --- a/test/moves/steamroller.test.ts +++ b/test/moves/steamroller.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import type { DamageCalculationResult } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; diff --git a/test/moves/substitute.test.ts b/test/moves/substitute.test.ts index 5acbb6c0a44..ce5fbdd99d8 100644 --- a/test/moves/substitute.test.ts +++ b/test/moves/substitute.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { ArenaTagSide } from "#app/data/arena-tag"; import { SubstituteTag, TrappedTag } from "#app/data/battler-tags"; -import { allMoves, StealHeldItemChanceAttr } from "#app/data/move"; +import { allMoves, StealHeldItemChanceAttr } from "#app/data/moves/move"; import { MoveResult } from "#app/field/pokemon"; import type { CommandPhase } from "#app/phases/command-phase"; import GameManager from "#test/testUtils/gameManager"; diff --git a/test/moves/tar_shot.test.ts b/test/moves/tar_shot.test.ts index 1a259206e48..e5adfe6112d 100644 --- a/test/moves/tar_shot.test.ts +++ b/test/moves/tar_shot.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; import { Stat } from "#app/enums/stat"; @@ -87,7 +87,7 @@ describe("Moves - Tar Shot", () => { await game.classicMode.startBattle([ Species.PIKACHU ]); const enemy = game.scene.getEnemyPokemon()!; - enemy.teraType = Type.GRASS; + enemy.teraType = PokemonType.GRASS; enemy.isTerastallized = true; vi.spyOn(enemy, "getMoveEffectiveness"); @@ -121,7 +121,7 @@ describe("Moves - Tar Shot", () => { await game.toNextTurn(); - enemy.teraType = Type.GRASS; + enemy.teraType = PokemonType.GRASS; enemy.isTerastallized = true; game.move.select(Moves.FIRE_PUNCH); diff --git a/test/moves/telekinesis.test.ts b/test/moves/telekinesis.test.ts index 441c70fff34..f24f972b44c 100644 --- a/test/moves/telekinesis.test.ts +++ b/test/moves/telekinesis.test.ts @@ -1,5 +1,5 @@ import { BattlerTagType } from "#enums/battler-tag-type"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/tera_blast.test.ts b/test/moves/tera_blast.test.ts index 22231ec6e46..772b14d9f36 100644 --- a/test/moves/tera_blast.test.ts +++ b/test/moves/tera_blast.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { Stat } from "#enums/stat"; -import { allMoves, TeraMoveCategoryAttr } from "#app/data/move"; -import { Type } from "#enums/type"; +import { allMoves, TeraMoveCategoryAttr } from "#app/data/moves/move"; +import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#app/enums/abilities"; import { HitResult } from "#app/field/pokemon"; import { Moves } from "#enums/moves"; @@ -50,7 +50,7 @@ describe("Moves - Tera Blast", () => { vi.spyOn(enemyPokemon, "apply"); const playerPokemon = game.scene.getPlayerPokemon()!; - playerPokemon.teraType = Type.FIGHTING; + playerPokemon.teraType = PokemonType.FIGHTING; playerPokemon.isTerastallized = true; game.move.select(Moves.TERA_BLAST); @@ -64,7 +64,7 @@ describe("Moves - Tera Blast", () => { await game.startBattle(); const playerPokemon = game.scene.getPlayerPokemon()!; - playerPokemon.teraType = Type.STELLAR; + playerPokemon.teraType = PokemonType.STELLAR; playerPokemon.isTerastallized = true; game.move.select(Moves.TERA_BLAST); @@ -78,7 +78,7 @@ describe("Moves - Tera Blast", () => { await game.startBattle(); const playerPokemon = game.scene.getPlayerPokemon()!; - playerPokemon.teraType = Type.STELLAR; + playerPokemon.teraType = PokemonType.STELLAR; playerPokemon.isTerastallized = true; const enemyPokemon = game.scene.getEnemyPokemon()!; @@ -178,7 +178,7 @@ describe("Moves - Tera Blast", () => { await game.startBattle(); const playerPokemon = game.scene.getPlayerPokemon()!; - playerPokemon.teraType = Type.STELLAR; + playerPokemon.teraType = PokemonType.STELLAR; playerPokemon.isTerastallized = true; game.move.select(Moves.TERA_BLAST); diff --git a/test/moves/tera_starstorm.test.ts b/test/moves/tera_starstorm.test.ts index 219a64b4ecc..9e2a06c7f0f 100644 --- a/test/moves/tera_starstorm.test.ts +++ b/test/moves/tera_starstorm.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -44,7 +44,7 @@ describe("Moves - Tera Starstorm", () => { game.move.select(Moves.TERA_STARSTORM); await game.phaseInterceptor.to("TurnEndPhase"); - expect(terapagos.getMoveType).toHaveReturnedWith(Type.STELLAR); + expect(terapagos.getMoveType).toHaveReturnedWith(PokemonType.STELLAR); }); it("targets both opponents in a double battle when used by Terapagos in its Stellar Form", async () => { @@ -95,7 +95,7 @@ describe("Moves - Tera Starstorm", () => { // Fusion and terastallized expect(fusionedMon.isFusion()).toBe(true); // Move effects should be applied - expect(fusionedMon.getMoveType).toHaveReturnedWith(Type.STELLAR); + expect(fusionedMon.getMoveType).toHaveReturnedWith(PokemonType.STELLAR); expect(game.scene.getEnemyField().every(pokemon => pokemon.isFullHp())).toBe(false); }); }); diff --git a/test/moves/toxic.test.ts b/test/moves/toxic.test.ts index 8e66fefe6ff..4fea079638a 100644 --- a/test/moves/toxic.test.ts +++ b/test/moves/toxic.test.ts @@ -5,7 +5,7 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { StatusEffect } from "#enums/status-effect"; import { BattlerIndex } from "#app/battle"; -import { allMoves } from "#app/data/move"; +import { allMoves } from "#app/data/moves/move"; describe("Moves - Toxic", () => { let phaserGame: Phaser.Game; diff --git a/test/moves/trick_or_treat.test.ts b/test/moves/trick_or_treat.test.ts index 2efd1b76d1a..927d625fbb8 100644 --- a/test/moves/trick_or_treat.test.ts +++ b/test/moves/trick_or_treat.test.ts @@ -1,7 +1,7 @@ import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -38,10 +38,10 @@ describe("Moves - Trick Or Treat", () => { const enemyPokemon = game.scene.getEnemyPokemon(); game.move.select(Moves.FORESTS_CURSE); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemyPokemon!.summonData.addedType).toBe(Type.GRASS); + expect(enemyPokemon!.summonData.addedType).toBe(PokemonType.GRASS); game.move.select(Moves.TRICK_OR_TREAT); await game.phaseInterceptor.to("TurnEndPhase"); - expect(enemyPokemon?.summonData.addedType).toBe(Type.GHOST); + expect(enemyPokemon?.summonData.addedType).toBe(PokemonType.GHOST); }); }); diff --git a/test/moves/triple_arrows.test.ts b/test/moves/triple_arrows.test.ts index 9aa08d7b670..11926b4066d 100644 --- a/test/moves/triple_arrows.test.ts +++ b/test/moves/triple_arrows.test.ts @@ -1,4 +1,4 @@ -import { allMoves, FlinchAttr, StatStageChangeAttr } from "#app/data/move"; +import { allMoves, FlinchAttr, StatStageChangeAttr } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/moves/whirlwind.test.ts b/test/moves/whirlwind.test.ts index 8637b6ec02c..7bf99f0ff21 100644 --- a/test/moves/whirlwind.test.ts +++ b/test/moves/whirlwind.test.ts @@ -1,6 +1,6 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { Challenges } from "#enums/challenges"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { MoveResult } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; @@ -86,7 +86,7 @@ describe("Moves - Whirlwind", () => { it("should not force a switch to a challenge-ineligible Pokemon", async () => { // Mono-Water challenge, Eevee is ineligible - game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, Type.WATER + 1, 0); + game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, PokemonType.WATER + 1, 0); await game.challengeMode.startBattle([ Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA ]); const [ lapras, eevee, toxapex, primarina ] = game.scene.getPlayerParty(); diff --git a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index 799e26ea271..2f690a1d990 100644 --- a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -29,7 +29,7 @@ import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type"; import { BerryType } from "#enums/berry-type"; import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { CommandPhase } from "#app/phases/command-phase"; import { MovePhase } from "#app/phases/move-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; @@ -350,15 +350,15 @@ describe("Clowning Around - Mystery Encounter", () => { const thirdTypesAfter = scene.getPlayerParty()[2].getTypes(); expect(leadTypesAfter.length).toBe(2); - expect(leadTypesAfter[0]).toBe(Type.WATER); - expect([ Type.WATER, Type.ICE ].includes(leadTypesAfter[1])).toBeFalsy(); + expect(leadTypesAfter[0]).toBe(PokemonType.WATER); + expect([ PokemonType.WATER, PokemonType.ICE ].includes(leadTypesAfter[1])).toBeFalsy(); expect(secondaryTypesAfter.length).toBe(2); - expect(secondaryTypesAfter[0]).toBe(Type.GHOST); - expect([ Type.GHOST, Type.POISON ].includes(secondaryTypesAfter[1])).toBeFalsy(); - expect([ Type.GRASS, Type.ELECTRIC ].includes(secondaryTypesAfter[1])).toBeTruthy(); + expect(secondaryTypesAfter[0]).toBe(PokemonType.GHOST); + expect([ PokemonType.GHOST, PokemonType.POISON ].includes(secondaryTypesAfter[1])).toBeFalsy(); + expect([ PokemonType.GRASS, PokemonType.ELECTRIC ].includes(secondaryTypesAfter[1])).toBeTruthy(); expect(thirdTypesAfter.length).toBe(2); - expect(thirdTypesAfter[0]).toBe(Type.PSYCHIC); - expect(secondaryTypesAfter[1]).not.toBe(Type.PSYCHIC); + expect(thirdTypesAfter[0]).toBe(PokemonType.PSYCHIC); + expect(secondaryTypesAfter[1]).not.toBe(PokemonType.PSYCHIC); }); it("should leave encounter without battle", async () => { diff --git a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts index 96fac78d872..a49cadb5549 100644 --- a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts +++ b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts @@ -13,7 +13,7 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRu import { Moves } from "#enums/moves"; import type BattleScene from "#app/battle-scene"; import { AttackTypeBoosterModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { Status } from "#app/data/status-effect"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -211,8 +211,8 @@ describe("Fiery Fallout - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2); - const burnablePokemon = party.filter((pkm) => pkm.isAllowedInBattle() && !pkm.getTypes().includes(Type.FIRE)); - const notBurnablePokemon = party.filter((pkm) => !pkm.isAllowedInBattle() || pkm.getTypes().includes(Type.FIRE)); + const burnablePokemon = party.filter((pkm) => pkm.isAllowedInBattle() && !pkm.getTypes().includes(PokemonType.FIRE)); + const notBurnablePokemon = party.filter((pkm) => !pkm.isAllowedInBattle() || pkm.getTypes().includes(PokemonType.FIRE)); expect(scene.currentBattle.mysteryEncounter?.dialogueTokens["burnedPokemon"]).toBe(i18next.t("pokemon:gengar")); burnablePokemon.forEach((pkm) => { expect(pkm.hp, `${pkm.name} should have received 20% damage: ${pkm.hp} / ${pkm.getMaxHp()} HP`).toBe(pkm.getMaxHp() - Math.floor(pkm.getMaxHp() * 0.2)); diff --git a/test/mystery-encounter/mystery-encounter-utils.test.ts b/test/mystery-encounter/mystery-encounter-utils.test.ts index 6b467b9fa81..25981b444a4 100644 --- a/test/mystery-encounter/mystery-encounter-utils.test.ts +++ b/test/mystery-encounter/mystery-encounter-utils.test.ts @@ -4,7 +4,7 @@ import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { getEncounterText, queueEncounterMessage, showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { getHighestLevelPlayerPokemon, getLowestLevelPlayerPokemon, getRandomPlayerPokemon, getRandomSpeciesByStarterCost, koPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { MessagePhase } from "#app/phases/message-phase"; import GameManager from "#test/testUtils/gameManager"; import { Species } from "#enums/species"; @@ -231,7 +231,7 @@ describe("Mystery Encounter Utils", () => { it("gets species of specified types", () => { // Only 9 tiers are: Kyogre, Groudon, Rayquaza, Arceus, Zacian, Koraidon, Miraidon, Terapagos - const result = getRandomSpeciesByStarterCost(9, undefined, [ Type.GROUND ]); + const result = getRandomSpeciesByStarterCost(9, undefined, [ PokemonType.GROUND ]); const pokeSpecies = getPokemonSpecies(result); expect(pokeSpecies.speciesId).toBe(Species.GROUDON); }); diff --git a/test/phases/form-change-phase.test.ts b/test/phases/form-change-phase.test.ts index 10287cd2046..92b956d6531 100644 --- a/test/phases/form-change-phase.test.ts +++ b/test/phases/form-change-phase.test.ts @@ -4,7 +4,7 @@ import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { Type } from "#enums/type"; +import { PokemonType } from "#enums/pokemon-type"; import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { modifierTypes } from "#app/modifier/modifier-type"; @@ -40,7 +40,7 @@ describe("Form Change Phase", () => { // Before the form change: Should be Hero form const zacian = game.scene.getPlayerParty()[0]; expect(zacian.getFormKey()).toBe("hero-of-many-battles"); - expect(zacian.getTypes()).toStrictEqual([ Type.FAIRY ]); + expect(zacian.getTypes()).toStrictEqual([ PokemonType.FAIRY ]); expect(zacian.calculateBaseStats()).toStrictEqual([ 92, 120, 115, 80, 115, 138 ]); // Give Zacian a Rusted Sword @@ -54,7 +54,7 @@ describe("Form Change Phase", () => { // After the form change: Should be Crowned form expect(game.phaseInterceptor.log.includes("FormChangePhase")).toBe(true); expect(zacian.getFormKey()).toBe("crowned"); - expect(zacian.getTypes()).toStrictEqual([ Type.FAIRY, Type.STEEL ]); + expect(zacian.getTypes()).toStrictEqual([ PokemonType.FAIRY, PokemonType.STEEL ]); expect(zacian.calculateBaseStats()).toStrictEqual([ 92, 150, 115, 80, 115, 148 ]); }); }); diff --git a/test/testUtils/gameManager.ts b/test/testUtils/gameManager.ts index 436c97a6967..d245a74d11e 100644 --- a/test/testUtils/gameManager.ts +++ b/test/testUtils/gameManager.ts @@ -1,7 +1,7 @@ import { updateUserInfo } from "#app/account"; import { BattlerIndex } from "#app/battle"; import BattleScene from "#app/battle-scene"; -import { getMoveTargets } from "#app/data/move"; +import { getMoveTargets } from "#app/data/moves/move"; import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import Trainer from "#app/field/trainer"; import { GameModes, getGameMode } from "#app/game-mode"; diff --git a/test/vitest.setup.ts b/test/vitest.setup.ts index bc7db8ea591..5dc5a69ce73 100644 --- a/test/vitest.setup.ts +++ b/test/vitest.setup.ts @@ -5,7 +5,7 @@ import { initAbilities } from "#app/data/ability"; import { initBiomes } from "#app/data/balance/biomes"; import { initEggMoves } from "#app/data/balance/egg-moves"; import { initPokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import { initMoves } from "#app/data/move"; +import { initMoves } from "#app/data/moves/move"; import { initMysteryEncounters } from "#app/data/mystery-encounters/mystery-encounters"; import { initPokemonForms } from "#app/data/pokemon-forms"; import { initSpecies } from "#app/data/pokemon-species"; From c977bc86c1b6bfa33ca2efc78eeb0b266ca83d95 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 7 Mar 2025 17:20:08 -0800 Subject: [PATCH 18/19] [Misc] Add some pre-defined imports to `overrides.ts` (#5492) --- src/overrides.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/overrides.ts b/src/overrides.ts index d15370259fc..dc04f72049a 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -1,22 +1,33 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/consistent-type-imports */ import { type PokeballCounts } from "#app/battle-scene"; +import { EvolutionItem } from "#app/data/balance/pokemon-evolutions"; import { Gender } from "#app/data/gender"; +import { FormChangeItem } from "#app/data/pokemon-forms"; import { Variant } from "#app/data/variant"; import { type ModifierOverride } from "#app/modifier/modifier-type"; import { Unlockables } from "#app/system/unlockables"; import { Abilities } from "#enums/abilities"; +import { BerryType } from "#enums/berry-type"; import { Biome } from "#enums/biome"; import { EggTier } from "#enums/egg-type"; import { Moves } from "#enums/moves"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PokeballType } from "#enums/pokeball"; +import { PokemonType } from "#enums/pokemon-type"; import { Species } from "#enums/species"; +import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { TimeOfDay } from "#enums/time-of-day"; import { VariantTier } from "#enums/variant-tier"; import { WeatherType } from "#enums/weather-type"; +/** + * This comment block exists to prevent IDEs from automatically removing unused imports + * {@linkcode BerryType}, {@linkcode EvolutionItem}, {@linkcode FormChangeItem} + * {@linkcode Stat}, {@linkcode PokemonType} + */ /** * Overrides that are using when testing different in game situations * From 74553608244d626cd92c11a8d6ea86a3f14a08a6 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sat, 8 Mar 2025 21:31:36 -0600 Subject: [PATCH 19/19] [Misc] Add Wlowscha and SirzBenjie to credits (#5498) --- CREDITS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CREDITS.md b/CREDITS.md index 099d410417e..6d884c8fd60 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -364,11 +364,13 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki. - Opaquer - OrangeRed - Sam aka Flashfyre (initial developer, started PokéRogue) +- SirzBenjie - sirzento - SN34KZ - Swain aka torranx - Temp aka Tempo-anon - Walker +- Wlowscha (aka Curbio) - Xavion ## Bug/Issue Managers